/* ======================================================================== Routine Description: Send a packet to WLAN. Arguments: pPktSrc points to our adapter pDev which WLAN network interface Return Value: 0: transmit successfully otherwise: transmit fail Note: ======================================================================== */ int MBSS_VirtualIF_PacketSend( IN PNDIS_PACKET pPktSrc, IN PNET_DEV pDev) { MEM_DBG_PKT_ALLOC_INC(pPktSrc); if(!(RTMP_OS_NETDEV_STATE_RUNNING(pDev))) { /* the interface is down */ RELEASE_NDIS_PACKET(NULL, pPktSrc, NDIS_STATUS_FAILURE); return 0; } /* End of if */ return MBSS_PacketSend(pPktSrc, pDev, rt28xx_packet_xmit); } /* End of MBSS_VirtualIF_PacketSend */
/* ======================================================================== Routine Description: Send a packet to WLAN. Arguments: skb_p points to our adapter dev_p which WLAN network interface Return Value: 0: transmit successfully otherwise: transmit fail Note: ======================================================================== */ int P2P_VirtualIF_PacketSend( IN PNDIS_PACKET skb_p, IN PNET_DEV dev_p) { /*PRTMP_ADAPTER pAd; */ /*PAPCLI_STRUCT pApCli; */ MEM_DBG_PKT_ALLOC_INC(skb_p); if(!(RTMP_OS_NETDEV_STATE_RUNNING(dev_p))) { /* the interface is down */ RELEASE_NDIS_PACKET(NULL, skb_p, NDIS_STATUS_FAILURE); return 0; } return P2P_PacketSend(skb_p, dev_p, rt28xx_packet_xmit); } /* End of P2P_VirtualIF_PacketSend */
/* ======================================================================== Routine Description: Send a packet to WLAN. Arguments: skb_p points to our adapter dev_p which WLAN network interface Return Value: 0: transmit successfully otherwise: transmit fail Note: ======================================================================== */ static int rt28xx_send_packets( IN struct sk_buff *skb_p, IN struct net_device *net_dev) { RTMP_ADAPTER *pAd = NULL; GET_PAD_FROM_NET_DEV(pAd, net_dev); if (!(RTMP_OS_NETDEV_STATE_RUNNING(net_dev))) { RELEASE_NDIS_PACKET(pAd, (PNDIS_PACKET)skb_p, NDIS_STATUS_FAILURE); return 0; } NdisZeroMemory((PUCHAR)&skb_p->cb[CB_OFF], 15); RTMP_SET_PACKET_NET_DEVICE_MBSSID(skb_p, MAIN_MBSSID); MEM_DBG_PKT_ALLOC_INC(pAd); return rt28xx_packet_xmit(skb_p); }
static INT CFG80211_VirtualIF_PacketSend( struct sk_buff *skb, PNET_DEV dev_p) { struct wifi_dev *wdev; DBGPRINT(RT_DEBUG_INFO, ("%s ---> %d\n", __FUNCTION__, dev_p->ieee80211_ptr->iftype)); if(!(RTMP_OS_NETDEV_STATE_RUNNING(dev_p))) { /* the interface is down */ RELEASE_NDIS_PACKET(NULL, skb, NDIS_STATUS_FAILURE); return 0; } /* The device not ready to send packt. */ wdev = RTMP_OS_NETDEV_GET_WDEV(dev_p); ASSERT(wdev); if (!wdev) return -1; NdisZeroMemory((PUCHAR)&skb->cb[CB_OFF], 26); MEM_DBG_PKT_ALLOC_INC(skb); return CFG80211_PacketSend(skb, dev_p, rt28xx_packet_xmit); }