示例#1
0
/*
========================================================================
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);
}
示例#2
0
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;
}
示例#3
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;
}
示例#4
0
/*
========================================================================
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);
}