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;