int zfLnxVapOpen(struct net_device *dev) { u16_t vapId; vapId = zfLnxGetVapId(dev); if (vap[vapId].openFlag == 0) { vap[vapId].openFlag = 1; printk("zfLnxVapOpen : device name=%s, vap ID=%d\n", dev->name, vapId); zfiWlanSetSSID(dev, "vap1", 4); zfiWlanEnable(dev); netif_start_queue(dev); } else { printk("VAP opened error : vap ID=%d\n", vapId); } return 0; }
int zfLnxVapClose(struct net_device *dev) { u16_t vapId; vapId = zfLnxGetVapId(dev); if (vapId != 0xffff) { if (vap[vapId].openFlag == 1) { printk("zfLnxVapClose: device name=%s, vap ID=%d\n", dev->name, vapId); netif_stop_queue(dev); vap[vapId].openFlag = 0; } else { printk("VAP port was not opened : vap ID=%d\n", vapId); } } return 0; }
int zfLnxVapXmitFrame(struct sk_buff *skb, struct net_device *dev) { int notify_stop = FALSE; struct usbdrv_private *macp = dev->ml_priv; u16_t vapId; vapId = zfLnxGetVapId(dev); //printk("zfLnxVapXmitFrame: vap ID=%d\n", vapId); //printk("zfLnxVapXmitFrame(), skb=%lxh\n", (u32_t)skb); if (vapId >= ZM_VAP_PORT_NUMBER) { dev_kfree_skb_irq(skb); return NETDEV_TX_OK; } #if 1 if (vap[vapId].openFlag == 0) { dev_kfree_skb_irq(skb); return NETDEV_TX_OK; } #endif zfiTxSendEth(dev, skb, 0x1); macp->drv_stats.net_stats.tx_bytes += skb->len; macp->drv_stats.net_stats.tx_packets++; //dev_kfree_skb_irq(skb); if (notify_stop) { netif_carrier_off(dev); netif_stop_queue(dev); } return NETDEV_TX_OK; }
/* Simply return 0xffff if VAP function is not supported */ u16_t zfwGetVapId(zdev_t* dev) { return zfLnxGetVapId(dev); }