USB: usbnet reports minidriver name through ethtool
authorDavid Brownell <david-b@pacbell.net>
Tue, 17 Apr 2007 23:10:10 +0000 (16:10 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 27 Apr 2007 20:28:40 +0000 (13:28 -0700)
Update "usbnet" so that ethtool reports the name of the minidriver in use
(e.g. asix, cdc_ether, dm9601, rndis_host) instead of "usbnet".  This is a
better match to how other network drivers work, resolving a minor open issue.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/net/usbnet.c
drivers/usb/net/usbnet.h

index 0c5465a7909b15449625cbc1787d13bfef784fc9..f9cd42d058b042c7d68949fa1cfe985444189f1f 100644 (file)
@@ -734,8 +734,7 @@ void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info)
 {
        struct usbnet *dev = netdev_priv(net);
 
-       /* REVISIT don't always return "usbnet" */
-       strncpy (info->driver, driver_name, sizeof info->driver);
+       strncpy (info->driver, dev->driver_name, sizeof info->driver);
        strncpy (info->version, DRIVER_VERSION, sizeof info->version);
        strncpy (info->fw_version, dev->driver_info->description,
                sizeof info->fw_version);
@@ -1115,10 +1114,12 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
        struct driver_info              *info;
        struct usb_device               *xdev;
        int                             status;
+       const char                      *name;
 
+       name = udev->dev.driver->name;
        info = (struct driver_info *) prod->driver_info;
        if (!info) {
-               dev_dbg (&udev->dev, "blacklisted by %s\n", driver_name);
+               dev_dbg (&udev->dev, "blacklisted by %s\n", name);
                return -ENODEV;
        }
        xdev = interface_to_usbdev (udev);
@@ -1138,6 +1139,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
        dev = netdev_priv(net);
        dev->udev = xdev;
        dev->driver_info = info;
+       dev->driver_name = name;
        dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV
                                | NETIF_MSG_PROBE | NETIF_MSG_LINK);
        skb_queue_head_init (&dev->rxq);
index 07c70abbe0ecaa5c3df76e488239e79e0f7ebbcf..cbb53e065d6c198626151f3a9f4235263bd79aa8 100644 (file)
@@ -29,6 +29,7 @@ struct usbnet {
        /* housekeeping */
        struct usb_device       *udev;
        struct driver_info      *driver_info;
+       const char              *driver_name;
        wait_queue_head_t       *wait;
        struct mutex            phy_mutex;