# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.369.105.16 -> 1.369.105.17 # drivers/usb/net/usbnet.c 1.18 -> 1.19 # drivers/usb/net/rtl8150.c 1.3 -> 1.4 # drivers/usb/net/catc.c 1.12 -> 1.13 # drivers/usb/net/pegasus.c 1.22 -> 1.23 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/04/09 david-b@pacbell.net 1.369.105.17 # [PATCH] USB net drivers, ethtool bus_info # # USB net drivers, ethtool bus_info # # This patch makes the USB network drivers that have ethtool support # expose only those stable IDs ... no more references to unstable values # like dev->bus->busnum (changes depending on order of modprobe) # or dev->devnum (assigned not quite randomly during enumeration :). # # This supports more intelligent policies for user mode tools, such # as "always assign this address to the device on that port", as well # as making troubleshooting more practical when there are multiple # devices (of a given type) present ... you can tell which is which. # -------------------------------------------- # diff -Nru a/drivers/usb/net/catc.c b/drivers/usb/net/catc.c --- a/drivers/usb/net/catc.c Tue Apr 16 11:36:04 2002 +++ b/drivers/usb/net/catc.c Tue Apr 16 11:36:04 2002 @@ -655,7 +655,6 @@ { struct catc *catc = dev->priv; u32 cmd; - char tmp[40]; if (get_user(cmd, (u32 *)useraddr)) return -EFAULT; @@ -666,8 +665,7 @@ struct ethtool_drvinfo info = {ETHTOOL_GDRVINFO}; strncpy(info.driver, SHORT_DRIVER_DESC, ETHTOOL_BUSINFO_LEN); strncpy(info.version, DRIVER_VERSION, ETHTOOL_BUSINFO_LEN); - sprintf(tmp, "usb%d:%d", catc->usbdev->bus->busnum, catc->usbdev->devnum); - strncpy(info.bus_info, tmp,ETHTOOL_BUSINFO_LEN); + usb_make_path (catc->usbdev, info.bus_info, sizeof info.bus_info); if (copy_to_user(useraddr, &info, sizeof(info))) return -EFAULT; return 0; @@ -909,9 +907,9 @@ f5u011_rxmode(catc, catc->rxmode); } dbg("Init done."); - printk(KERN_INFO "%s: %s USB Ethernet at usb%d:%d.%d, ", + printk(KERN_INFO "%s: %s USB Ethernet at usb-%s-%s/%d, ", netdev->name, (catc->is_f5u011) ? "Belkin F5U011" : "CATC EL1210A NetMate", - usbdev->bus->busnum, usbdev->devnum, ifnum); + usbdev->bus->bus_name, usbdev->devpath, ifnum); for (i = 0; i < 5; i++) printk("%2.2x:", netdev->dev_addr[i]); printk("%2.2x.\n", netdev->dev_addr[i]); return catc; diff -Nru a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c --- a/drivers/usb/net/pegasus.c Tue Apr 16 11:36:04 2002 +++ b/drivers/usb/net/pegasus.c Tue Apr 16 11:36:04 2002 @@ -798,7 +798,6 @@ { pegasus_t *pegasus; int cmd; - char tmp[128]; pegasus = net->priv; if (get_user(cmd, (int *)uaddr)) @@ -808,9 +807,7 @@ struct ethtool_drvinfo info = {ETHTOOL_GDRVINFO}; strncpy(info.driver, DRIVER_DESC, ETHTOOL_BUSINFO_LEN); strncpy(info.version, DRIVER_VERSION, ETHTOOL_BUSINFO_LEN); - sprintf(tmp, "usb%d:%d", pegasus->usb->bus->busnum, - pegasus->usb->devnum); - strncpy(info.bus_info, tmp, ETHTOOL_BUSINFO_LEN); + usb_make_path (pegasus->usb, info.bus_info, sizeof info.bus_info); if (copy_to_user(uaddr, &info, sizeof(info))) return -EFAULT; return 0; diff -Nru a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c --- a/drivers/usb/net/rtl8150.c Tue Apr 16 11:36:04 2002 +++ b/drivers/usb/net/rtl8150.c Tue Apr 16 11:36:04 2002 @@ -552,7 +552,6 @@ { rtl8150_t *dev; int cmd; - char tmp[128]; dev = netdev->priv; if (get_user(cmd, (int *)uaddr)) @@ -564,9 +563,7 @@ strncpy(info.driver, DRIVER_DESC, ETHTOOL_BUSINFO_LEN); strncpy(info.version, DRIVER_VERSION, ETHTOOL_BUSINFO_LEN); - sprintf(tmp, "usb%d:%d", dev->udev->bus->busnum, - dev->udev->devnum); - strncpy(info.bus_info, tmp, ETHTOOL_BUSINFO_LEN); + usb_make_path (dev->udev, info.bus_info, sizeof info.bus_info); if (copy_to_user(uaddr, &info, sizeof(info))) return -EFAULT; return 0; diff -Nru a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c --- a/drivers/usb/net/usbnet.c Tue Apr 16 11:36:04 2002 +++ b/drivers/usb/net/usbnet.c Tue Apr 16 11:36:04 2002 @@ -834,10 +834,10 @@ static inline void nc_dump_usbctl (struct usbnet *dev, u16 usbctl) { #ifdef DEBUG - devdbg (dev, "net1080 %03d/%03d usbctl 0x%x:%s%s%s%s%s;" + devdbg (dev, "net1080 %s-%s usbctl 0x%x:%s%s%s%s%s;" " this%s%s;" " other%s%s; r/o 0x%x", - dev->udev->bus->busnum, dev->udev->devnum, + dev->udev->bus->bus_name, dev->udev->devpath, usbctl, (usbctl & USBCTL_ENABLE_LANG) ? " lang" : "", (usbctl & USBCTL_ENABLE_MFGR) ? " mfgr" : "", @@ -879,10 +879,10 @@ static inline void nc_dump_status (struct usbnet *dev, u16 status) { #ifdef DEBUG - devdbg (dev, "net1080 %03d/%03d status 0x%x:" + devdbg (dev, "net1080 %s-%s status 0x%x:" " this (%c) PKT=%d%s%s%s;" " other PKT=%d%s%s%s; unspec 0x%x", - dev->udev->bus->busnum, dev->udev->devnum, + dev->udev->bus->bus_name, dev->udev->devpath, status, // XXX the packet counts don't seem right @@ -917,8 +917,8 @@ static inline void nc_dump_ttl (struct usbnet *dev, u16 ttl) { #ifdef DEBUG - devdbg (dev, "net1080 %03d/%03d ttl 0x%x this = %d, other = %d", - dev->udev->bus->busnum, dev->udev->devnum, + devdbg (dev, "net1080 %s-%s ttl 0x%x this = %d, other = %d", + dev->udev->bus->bus_name, dev->udev->devpath, ttl, TTL_THIS (ttl), @@ -941,7 +941,8 @@ // nc_dump_registers (dev); if ((retval = nc_register_read (dev, REG_STATUS, vp)) < 0) { - dbg ("can't read dev %d status: %d", dev->udev->devnum, retval); + dbg ("can't read %s-%s status: %d", + dev->udev->bus->bus_name, dev->udev->devpath, retval); goto done; } status = *vp; @@ -1504,10 +1505,9 @@ // put into "known safe" state if (info->reset && (retval = info->reset (dev)) < 0) { - devinfo (dev, "open reset fail (%d) usbnet bus%d%s, %s", + devinfo (dev, "open reset fail (%d) usbnet usb-%s-%s, %s", retval, - // FIXME busnum is unstable - dev->udev->bus->busnum, dev->udev->devpath, + dev->udev->bus->bus_name, dev->udev->devpath, info->description); goto done; } @@ -1557,9 +1557,7 @@ strncpy (info.version, DRIVER_VERSION, sizeof info.version); strncpy (info.fw_version, dev->driver_info->description, sizeof info.fw_version); - snprintf (info.bus_info, sizeof info.bus_info, "USB bus%d%s", - /* FIXME busnums are bogus/unstable IDs */ - dev->udev->bus->busnum, dev->udev->devpath); + usb_make_path (dev->udev, info.bus_info, sizeof info.bus_info); if (copy_to_user (useraddr, &info, sizeof (info))) return -EFAULT; return 0; @@ -1847,9 +1845,8 @@ { struct usbnet *dev = (struct usbnet *) ptr; - devinfo (dev, "unregister usbnet bus%d%s, %s", - // FIXME busnum is unstable - udev->bus->busnum, udev->devpath, + devinfo (dev, "unregister usbnet usb-%s-%s, %s", + udev->bus->bus_name, udev->devpath, dev->driver_info->description); unregister_netdev (&dev->net); @@ -1938,9 +1935,8 @@ net->do_ioctl = usbnet_ioctl; register_netdev (&dev->net); - devinfo (dev, "register usbnet bus%d%s, %s", - // FIXME busnum is unstable - udev->bus->busnum, udev->devpath, + devinfo (dev, "register usbnet usb-%s-%s, %s", + udev->bus->bus_name, udev->devpath, dev->driver_info->description); // ok, it's ready to go.