I noticed that Viro's "use alloc_etherdev" patch left a
small problem:  only "usbnet" did SET_NETDEV_DEV, and
that used the wrong driver model device.

This has all the usb network drivers use SET_NETDEV_DEV,
so the /sys/class/net/*/{device,driver} files link to the
relevant usb interface and to its device driver.

Please merge to Linus' tree, thanks in advance!

- Dave


--- 1.2/drivers/usb/net/ax8817x.c       Mon Jun 16 09:43:11 2003
+++ edited/drivers/usb/net/ax8817x.c    Mon Jul 14 18:45:35 2003
@@ -1208,6 +1208,7 @@
        net->init = ax8817x_net_init;
        net->priv = ax_info;
 
+       SET_NETDEV_DEV(net, &intf->dev);
        ret = register_netdev(net);
        if (ret < 0) {
                err("%s: Failed net init (%d)\n", __FUNCTION__, ret);
--- 1.27/drivers/usb/net/catc.c Mon Jun 16 07:51:29 2003
+++ edited/drivers/usb/net/catc.c       Mon Jul 14 18:46:03 2003
@@ -936,6 +936,7 @@
        printk("%2.2x.\n", netdev->dev_addr[i]);
        usb_set_intfdata(intf, catc);
 
+       SET_NETDEV_DEV(netdev, &intf->dev);
        if (register_netdev(netdev) != 0) {
                usb_set_intfdata(intf, NULL);
                usb_free_urb(catc->ctrl_urb);
--- 1.49/drivers/usb/net/kaweth.c       Tue Jun 24 21:07:24 2003
+++ edited/drivers/usb/net/kaweth.c     Mon Jul 14 18:46:43 2003
@@ -1123,8 +1123,9 @@
        if (dma_supported (&intf->dev, 0xffffffffffffffffULL))
                kaweth->net->features |= NETIF_F_HIGHDMA;
 
+       SET_NETDEV_DEV(netdev, &intf->dev);
        if (register_netdev(netdev) != 0) {
-               kaweth_err("Error calling init_etherdev.");
+               kaweth_err("Error registering netdev.");
                goto err_intfdata;
        }
 
--- 1.50/drivers/usb/net/pegasus.c      Mon Jun 16 07:51:29 2003
+++ edited/drivers/usb/net/pegasus.c    Mon Jul 14 18:44:22 2003
@@ -1262,7 +1262,6 @@
        }
        set_ethernet_addr(pegasus);
        fill_skb_pool(pegasus);
-       printk("%s: %s\n", net->name, usb_dev_id[dev_index].name);
        if (pegasus->features & PEGASUS_II) {
                info("setup Pegasus II specific registers");
                setup_pegasus_II(pegasus);
@@ -1273,9 +1272,11 @@
                pegasus->phy = 1;
        }
        usb_set_intfdata(intf, pegasus);
+       SET_NETDEV_DEV(net, &intf->dev);
        res = register_netdev(net);
        if (res)
                goto out4;
+       printk("%s: %s\n", net->name, usb_dev_id[dev_index].name);
        return 0;
 
 out4:
--- 1.28/drivers/usb/net/rtl8150.c      Mon Jun 16 07:51:29 2003
+++ edited/drivers/usb/net/rtl8150.c    Mon Jul 14 18:47:04 2003
@@ -830,6 +830,7 @@
        
        usb_set_intfdata(intf, dev);
 
+       SET_NETDEV_DEV(netdev, &intf->dev);
        if (register_netdev(netdev) != 0) {
                err("couldn't register the device");
                goto out2;
--- 1.58/drivers/usb/net/usbnet.c       Mon Jul  7 08:53:04 2003
+++ edited/drivers/usb/net/usbnet.c     Mon Jul 14 18:40:04 2003
@@ -2602,7 +2602,7 @@
 
        dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1);
        
-       SET_NETDEV_DEV(dev->net, &dev->udev->dev);
+       SET_NETDEV_DEV(dev->net, &udev->dev);
        status = register_netdev (dev->net);
        if (status)
                goto out3;

Reply via email to