/* ======================================================================== Routine Description: Ikanos LAN --> WLAN transmit fast path function. Arguments: skb - the transmitted packet (SKB packet format) netdev - our WLAN network device Return Value: Note: ======================================================================== */ INT32 IKANOS_DataFramesTx(struct sk_buff *pSkb, struct net_device *pNetDev) { PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pNetDev->priv; IkanosWlanTxCbFuncP *fp = &IKANOS_WlanDataFramesTx; pSkb->apFlowData.txDev = pNetDev; pSkb->apFlowData.txApId = IKANOS_PERAP_ID; pAd->IkanosTxInfo.netdev = pNetDev; pAd->IkanosTxInfo.fp = fp; pSkb->apFlowData.txHandle = &(pAd->IkanosTxInfo); ap2apFlowProcess(pSkb, pNetDev); #ifdef IKANOS_DEBUG printk("ikanos> tx no fp\n"); /* debug use */ #endif /* IKANOS_DEBUG */ return rt28xx_send_packets(pSkb, pNetDev); }
int ifx_ra_start_xmit(struct net_device *rx_dev, struct net_device *tx_dev, struct sk_buff *skb, int len) { if(tx_dev != NULL) { SET_OS_PKT_NETDEV(skb, tx_dev); rt28xx_send_packets(skb, tx_dev); } else if(rx_dev != NULL) { skb->protocol = eth_type_trans(skb, skb->dev); netif_rx(skb); } else { dev_kfree_skb_any(skb); } return 0; }
void mac_data_xmit(struct pbuf *skb) { #ifdef DEBUG static int first_pkg = 1; #endif struct pbuf *q; char *p802x_hdr; int if_type; if(!is_hw_ok()) return; tx_skb = alloc_skb(skb->tot_len, 0); if(tx_skb == 0) return; p802x_hdr = (char*)tx_skb->data; for(q = skb; q != NULL; q = q->next) { memcpy(p802x_hdr, q->payload, q->len); p802x_hdr += q->len; } tx_skb->len = skb->tot_len; p802x_hdr = (char*)tx_skb->data; //dump_hex("s", tx_skb->data, tx_skb->len); if_type = get_if_type(p_ad); INC_MONITOR_ITEM_VALUE(send_packets_cnt); if(if_type == INT_APCLI){ tx_skb->dev = p_ad->ApCfg.ApCliTab[0].dev; ApCli_VirtualIF_PacketSend(tx_skb, tx_skb->dev); }else if(if_type == INT_MAIN){ tx_skb->dev = p_ad->net_dev; rt28xx_send_packets(tx_skb, tx_skb->dev); } return; }
/* ======================================================================== Routine Description: Ikanos LAN --> WLAN transmit fast path function. Arguments: _pAdBuf - the transmitted packet (Ikanos packet format) netdev - our WLAN network device Return Value: Note: ======================================================================== */ static INT32 IKANOS_WlanDataFramesTx(void *_pAdBuf, struct net_device *pNetDev) { apPreHeader_t *pApBuf = (apPreHeader_t *)_pAdBuf; struct sk_buff *sk = NULL; sk = (struct sk_buff *)translateApbuf2Mbuf(pApBuf); if (sk == NULL) { printk("ikanos> translateApbuf2Mbuf returned NULL!\n"); return 1; } sk->apFlowData.flags2 = 0; sk->apFlowData.wlanFlags = 0; sk->protocol = ETH_P_IP; sk->dev = pNetDev; sk->priority = 0; return rt28xx_send_packets(sk, pNetDev); }