summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/main.c
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-05-25 19:13:25 +0200
committerJohn W. Linville <linville@tuxdriver.com>2007-06-11 20:28:40 +0200
commit7732ca45c68f893689a8c0d8c6e2eb2bfefbc087 (patch)
treeb894177055e35cd426cf36d923adfd8985e4e9ed /drivers/net/wireless/libertas/main.c
parent[PATCH] libertas: fixed kernel oops on module/card removal (diff)
downloadlinux-7732ca45c68f893689a8c0d8c6e2eb2bfefbc087.tar.xz
linux-7732ca45c68f893689a8c0d8c6e2eb2bfefbc087.zip
[PATCH] libertas: call SET_NETDEV_DEV from common code
Move usage of SET_NETDEV_DEV into common code since it has nothing to do with bus-specific devices. Also fixes a bug where the mesh device was getting SET_NETDEV_DEV called after register_netdevice, resulting in no 'device' link in /sys/class/net/mshX/. Signed-off-by: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/main.c')
-rw-r--r--drivers/net/wireless/libertas/main.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
index 0c39bcdbd448..b05a6f99a1b2 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -763,7 +763,7 @@ static int wlan_service_main_thread(void *data)
* @param card A pointer to card
* @return A pointer to wlan_private structure
*/
-wlan_private *libertas_add_card(void *card)
+wlan_private *libertas_add_card(void *card, struct device *dmdev)
{
struct net_device *dev = NULL;
wlan_private *priv = NULL;
@@ -808,6 +808,8 @@ wlan_private *libertas_add_card(void *card)
dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
dev->set_multicast_list = wlan_set_multicast_list;
+ SET_NETDEV_DEV(dev, dmdev);
+
INIT_LIST_HEAD(&priv->adapter->cmdfreeq);
INIT_LIST_HEAD(&priv->adapter->cmdpendingq);
@@ -891,7 +893,7 @@ EXPORT_SYMBOL_GPL(libertas_activate_card);
* @param priv A pointer to the wlan_private structure
* @return 0 if successful, -X otherwise
*/
-int libertas_add_mesh(wlan_private *priv)
+int libertas_add_mesh(wlan_private *priv, struct device *dev)
{
struct net_device *mesh_dev = NULL;
int ret = 0;
@@ -918,6 +920,8 @@ int libertas_add_mesh(wlan_private *priv)
memcpy(mesh_dev->dev_addr, priv->dev->dev_addr,
sizeof(priv->dev->dev_addr));
+ SET_NETDEV_DEV(priv->mesh_dev, dev);
+
#ifdef WIRELESS_EXT
mesh_dev->wireless_handlers = (struct iw_handler_def *)&libertas_handler_def;
#endif