Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7732ca45c68f893689a8c0d8c6e2eb2bfefbc087
Commit:     7732ca45c68f893689a8c0d8c6e2eb2bfefbc087
Parent:     0681f989357416d7ef28ebaea4151ce70a6ae21c
Author:     Dan Williams <[EMAIL PROTECTED]>
AuthorDate: Fri May 25 13:13:25 2007 -0400
Committer:  John W. Linville <[EMAIL PROTECTED]>
CommitDate: Mon Jun 11 14:28:40 2007 -0400

    [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 <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
---
 drivers/net/wireless/libertas/decl.h   |    6 ++++--
 drivers/net/wireless/libertas/if_usb.c |   12 ++----------
 drivers/net/wireless/libertas/main.c   |    8 ++++++--
 3 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/libertas/decl.h 
b/drivers/net/wireless/libertas/decl.h
index d6fcb33..40f56bb 100644
--- a/drivers/net/wireless/libertas/decl.h
+++ b/drivers/net/wireless/libertas/decl.h
@@ -6,6 +6,8 @@
 #ifndef _WLAN_DECL_H_
 #define _WLAN_DECL_H_
 
+#include <linux/device.h>
+
 #include "defs.h"
 
 /** Function Prototype Declaration */
@@ -79,10 +81,10 @@ int libertas_init_fw(wlan_private * priv, char *fw_name);
 /* main.c */
 struct chan_freq_power *libertas_get_region_cfp_table(u8 region, u8 band,
                                                             int *cfp_no);
-wlan_private *libertas_add_card(void *card);
+wlan_private *libertas_add_card(void *card, struct device *dmdev);
 int libertas_activate_card(wlan_private *priv, char *fw_name);
 int libertas_remove_card(wlan_private *priv);
-int libertas_add_mesh(wlan_private *priv);
+int libertas_add_mesh(wlan_private *priv, struct device *dev);
 void libertas_remove_mesh(wlan_private *priv);
 
 
diff --git a/drivers/net/wireless/libertas/if_usb.c 
b/drivers/net/wireless/libertas/if_usb.c
index d25e3b5..6433be6 100644
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -207,15 +207,10 @@ static int if_usb_probe(struct usb_interface *intf,
                }
        }
 
-
-       /* At this point libertas_add_card() will be called.  Don't worry
-        * about keeping pwlanpriv around since it will be set on our
-        * usb device data in -> add() -> hw_register_dev() -> 
if_usb_register_dev.
-        */
-       if (!(priv = libertas_add_card(cardp)))
+       if (!(priv = libertas_add_card(cardp, &udev->dev)))
                goto dealloc;
 
-       if (libertas_add_mesh(priv))
+       if (libertas_add_mesh(priv, &udev->dev))
                goto err_add_mesh;
 
        priv->hw_register_dev = if_usb_register_dev;
@@ -806,9 +801,6 @@ static int if_usb_register_dev(wlan_private * priv)
        cardp->eth_dev = priv->dev;
        priv->hotplug_device = &(cardp->udev->dev);
 
-       SET_NETDEV_DEV(cardp->eth_dev, &(cardp->udev->dev));
-       SET_NETDEV_DEV(priv->mesh_dev, &(cardp->udev->dev));
-
        lbs_deb_usbd(&cardp->udev->dev, "udev pointer is at %p\n",
                    cardp->udev);
 
diff --git a/drivers/net/wireless/libertas/main.c 
b/drivers/net/wireless/libertas/main.c
index 0c39bcd..b05a6f9 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
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to