/** * \fn wlanDrvIf_SetupNetif * \brief Setup driver network interface * * Called in driver creation process. * Setup driver network interface. * * \note * \param drv - The driver object handle * \return 0 - OK, else - failure * \sa */ static int wlanDrvIf_SetupNetif (TWlanDrvIfObj *drv) { struct net_device *dev; int res; /* Allocate network interface structure for the driver */ dev = alloc_etherdev (0); if (dev == NULL) { ti_dprintf (TIWLAN_LOG_ERROR, "alloc_etherdev() failed\n"); return -ENOMEM; } /* Setup the network interface */ ether_setup (dev); NETDEV_SET_PRIVATE(dev,drv); drv->netdev = dev; strcpy (dev->name, TIWLAN_DRV_IF_NAME); netif_carrier_off (dev); #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 31)) #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23) dev->validate_addr = NULL; #endif /* the following is required on at least BSP 23.8 and higher. Without it, the Open function of the driver will not be called when trying to 'ifconfig up' the interface */ dev->open = wlanDrvIf_Open; dev->stop = wlanDrvIf_Release; dev->hard_start_xmit = wlanDrvIf_Xmit; dev->get_stats = wlanDrvIf_NetGetStat; dev->do_ioctl = NULL; #else dev->netdev_ops = &tiwlan_ops_pri; #endif dev->tx_queue_len = 100; /* Initialize Wireless Extensions interface (WEXT) */ wlanDrvWext_Init (dev); res = register_netdev (dev); if (res != 0) { ti_dprintf (TIWLAN_LOG_ERROR, "register_netdev() failed : %d\n", res); kfree (dev); return res; } /* Setup power-management callbacks */ hPlatform_SetupPm(SuspendCb, ResumeCb, pDrvStaticHandle); /* On the latest Kernel there is no more support for the below macro. */ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) SET_MODULE_OWNER (dev); #endif return 0; }
/** * \fn wlanDrvIf_SetupNetif * \brief Setup driver network interface * * Called in driver creation process. * Setup driver network interface. * * \note * \param drv - The driver object handle * \return 0 - OK, else - failure * \sa */ static int wlanDrvIf_SetupNetif (TWlanDrvIfObj *drv) { struct net_device *dev; int res; /* Allocate network interface structure for the driver */ dev = alloc_etherdev (0); if (dev == NULL) { ti_dprintf (TIWLAN_LOG_ERROR, "alloc_etherdev() failed\n"); return -ENOMEM; } /* Setup the network interface */ ether_setup (dev); /* the following is required on at least BSP 23.8 and higher. Without it, the Open function of the driver will not be called when trying to 'ifconfig up' the interface */ //#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23) // dev->validate_addr = NULL; //#endif NETDEV_SET_PRIVATE(dev,drv); drv->netdev = dev; strcpy (dev->name, TIWLAN_DRV_IF_NAME); netif_carrier_off (dev); /* #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) dev->open = wlanDrvIf_Start; dev->stop = wlanDrvIf_Stop; #else dev->open = wlanDrvIf_Open; dev->stop = wlanDrvIf_Release; #endif */ /*dev->hard_start_xmit = wlanDrvIf_XmitDummy;*/ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29) dev->netdev_ops = &tiwlan_netdev_ops; #else dev->open = wlanDrvIf_Start; dev->stop = wlanDrvIf_Stop; dev->hard_start_xmit = wlanDrvIf_Xmit; dev->addr_len = MAC_ADDR_LEN; dev->get_stats = wlanDrvIf_NetGetStat; dev->tx_queue_len = 100; dev->do_ioctl = NULL; #endif /* Initialize Wireless Extensions interface (WEXT) */ wlanDrvWext_Init (dev); res = register_netdev (dev); if (res != 0) { ti_dprintf (TIWLAN_LOG_ERROR, "register_netdev() failed : %d\n", res); kfree (dev); return res; } #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) #if defined HOST_PLATFORM_OMAP3430 || defined HOST_PLATFORM_ZOOM2 || defined HOST_PLATFORM_ZOOM1 || defined HOST_PLATFORM_MX25 sdioDrv_register_pm(wlanDrvIf_pm_resume, wlanDrvIf_pm_suspend); #endif #else #ifdef CONFIG_PM sdioDrv_register_pm(wlanDrvIf_pm_resume, wlanDrvIf_pm_suspend); #endif #endif /* On the latest Kernel there is no more support for the below macro. */ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) SET_MODULE_OWNER (dev); #endif return 0; }