/* * --------------------------------------------------------------------------- * uf_register_netdev * * Registers the network interface, installes the qdisc, * and registers the inet handler. * In the porting exercise, register the driver to the network * stack if necessary. * * Arguments: * priv Pointer to driver context. * * Returns: * O on success, non-zero otherwise. * * Notes: * We will only unregister when the card is ejected, so we must * only do it once. * --------------------------------------------------------------------------- */ int uf_register_netdev(unifi_priv_t *priv, int interfaceTag) { int r; netInterface_priv_t *interfacePriv = priv->interfacePriv[interfaceTag]; if (interfaceTag >= CSR_WIFI_NUM_INTERFACES) { unifi_error(priv, "uf_register_netdev bad interfaceTag\n"); return -EINVAL; } /* * Allocates a device number and registers device with the network * stack. */ unifi_trace(priv, UDBG5, "uf_register_netdev: netdev %d - 0x%p\n", interfaceTag, priv->netdev[interfaceTag]); r = register_netdev(priv->netdev[interfaceTag]); if (r) { unifi_error(priv, "Failed to register net device\n"); return -EINVAL; } /* The device is registed */ interfacePriv->netdev_registered = 1; #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) #ifdef CONFIG_NET_SCHED /* * IMPORTANT: * uf_install_qdisc() holds the network device lock, we can not * install the qdisk before the network device is registered. */ r = uf_install_qdisc(priv->netdev[interfaceTag]); if (r) { unifi_error(priv, "Failed to install qdisc\n"); return r; } #endif /* CONFIG_NET_SCHED */ #endif /* LINUX_VERSION_CODE */ #ifdef CSR_SUPPORT_SME /* * Register the inet handler; it notifies us for changes in the IP address. */ uf_register_inet_notifier(); #endif /* CSR_SUPPORT_SME */ unifi_notice(priv, "unifi%d is %s\n", priv->instance, priv->netdev[interfaceTag]->name); return 0; } /* uf_register_netdev */
/* * --------------------------------------------------------------------------- * uf_register_netdev * * Registers the network interface, installes the qdisc, * and registers the inet handler. * In the porting exercise, register the driver to the network * stack if necessary. * * Arguments: * priv Pointer to driver context. * * Returns: * O on success, non-zero otherwise. * * Notes: * We will only unregister when the card is ejected, so we must * only do it once. * --------------------------------------------------------------------------- */ int uf_register_netdev(unifi_priv_t *priv, int interfaceTag) { int r; netInterface_priv_t *interfacePriv = priv->interfacePriv[interfaceTag]; if (interfaceTag >= CSR_WIFI_NUM_INTERFACES) { unifi_error(priv, "uf_register_netdev bad interfaceTag\n"); return -EINVAL; } /* * Allocates a device number and registers device with the network * stack. */ unifi_trace(priv, UDBG5, "uf_register_netdev: netdev %d - 0x%p\n", interfaceTag, priv->netdev[interfaceTag]); r = register_netdev(priv->netdev[interfaceTag]); if (r) { unifi_error(priv, "Failed to register net device\n"); return -EINVAL; } /* The device is registed */ interfacePriv->netdev_registered = 1; #ifdef CSR_SUPPORT_SME /* * Register the inet handler; it notifies us for changes in the IP address. */ uf_register_inet_notifier(); #endif /* CSR_SUPPORT_SME */ unifi_notice(priv, "unifi%d is %s\n", priv->instance, priv->netdev[interfaceTag]->name); return 0; } /* uf_register_netdev */