aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2009-11-04 10:29:52 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-10 23:54:40 -0500
commit37e8273cd30592d3a82bcb70cbb1bdc4eaeb6b71 (patch)
tree079b4bc5a6450e06b6310c083fcb4ab5ee543452 /drivers/net/usb
parent8cbd9623da7e7a99c6bd0f0b7d21d17c233c6abb (diff)
usbnet: Set link down initially for drivers that update link state
Some usbnet drivers update link state while others do not due to hardware limitations. Add a flag to distinguish those that do, and set the link down initially for their devices. This is intended to fix this bug: http://bugs.debian.org/444043 Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb')
-rw-r--r--drivers/net/usb/asix.c12
-rw-r--r--drivers/net/usb/cdc_ether.c2
-rw-r--r--drivers/net/usb/dm9601.c2
-rw-r--r--drivers/net/usb/usbnet.c4
4 files changed, 11 insertions, 9 deletions
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index 6ce7f775bb74..1bef39a60a62 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -1327,7 +1327,7 @@ static const struct driver_info ax8817x_info = {
1327 .status = asix_status, 1327 .status = asix_status,
1328 .link_reset = ax88172_link_reset, 1328 .link_reset = ax88172_link_reset,
1329 .reset = ax88172_link_reset, 1329 .reset = ax88172_link_reset,
1330 .flags = FLAG_ETHER, 1330 .flags = FLAG_ETHER | FLAG_LINK_INTR,
1331 .data = 0x00130103, 1331 .data = 0x00130103,
1332}; 1332};
1333 1333
@@ -1337,7 +1337,7 @@ static const struct driver_info dlink_dub_e100_info = {
1337 .status = asix_status, 1337 .status = asix_status,
1338 .link_reset = ax88172_link_reset, 1338 .link_reset = ax88172_link_reset,
1339 .reset = ax88172_link_reset, 1339 .reset = ax88172_link_reset,
1340 .flags = FLAG_ETHER, 1340 .flags = FLAG_ETHER | FLAG_LINK_INTR,
1341 .data = 0x009f9d9f, 1341 .data = 0x009f9d9f,
1342}; 1342};
1343 1343
@@ -1347,7 +1347,7 @@ static const struct driver_info netgear_fa120_info = {
1347 .status = asix_status, 1347 .status = asix_status,
1348 .link_reset = ax88172_link_reset, 1348 .link_reset = ax88172_link_reset,
1349 .reset = ax88172_link_reset, 1349 .reset = ax88172_link_reset,
1350 .flags = FLAG_ETHER, 1350 .flags = FLAG_ETHER | FLAG_LINK_INTR,
1351 .data = 0x00130103, 1351 .data = 0x00130103,
1352}; 1352};
1353 1353
@@ -1357,7 +1357,7 @@ static const struct driver_info hawking_uf200_info = {
1357 .status = asix_status, 1357 .status = asix_status,
1358 .link_reset = ax88172_link_reset, 1358 .link_reset = ax88172_link_reset,
1359 .reset = ax88172_link_reset, 1359 .reset = ax88172_link_reset,
1360 .flags = FLAG_ETHER, 1360 .flags = FLAG_ETHER | FLAG_LINK_INTR,
1361 .data = 0x001f1d1f, 1361 .data = 0x001f1d1f,
1362}; 1362};
1363 1363
@@ -1367,7 +1367,7 @@ static const struct driver_info ax88772_info = {
1367 .status = asix_status, 1367 .status = asix_status,
1368 .link_reset = ax88772_link_reset, 1368 .link_reset = ax88772_link_reset,
1369 .reset = ax88772_link_reset, 1369 .reset = ax88772_link_reset,
1370 .flags = FLAG_ETHER | FLAG_FRAMING_AX, 1370 .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR,
1371 .rx_fixup = asix_rx_fixup, 1371 .rx_fixup = asix_rx_fixup,
1372 .tx_fixup = asix_tx_fixup, 1372 .tx_fixup = asix_tx_fixup,
1373}; 1373};
@@ -1378,7 +1378,7 @@ static const struct driver_info ax88178_info = {
1378 .status = asix_status, 1378 .status = asix_status,
1379 .link_reset = ax88178_link_reset, 1379 .link_reset = ax88178_link_reset,
1380 .reset = ax88178_link_reset, 1380 .reset = ax88178_link_reset,
1381 .flags = FLAG_ETHER | FLAG_FRAMING_AX, 1381 .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR,
1382 .rx_fixup = asix_rx_fixup, 1382 .rx_fixup = asix_rx_fixup,
1383 .tx_fixup = asix_tx_fixup, 1383 .tx_fixup = asix_tx_fixup,
1384}; 1384};
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 71d7ff3de99f..7ec24c9b2535 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -413,7 +413,7 @@ static int cdc_bind(struct usbnet *dev, struct usb_interface *intf)
413 413
414static const struct driver_info cdc_info = { 414static const struct driver_info cdc_info = {
415 .description = "CDC Ethernet Device", 415 .description = "CDC Ethernet Device",
416 .flags = FLAG_ETHER, 416 .flags = FLAG_ETHER | FLAG_LINK_INTR,
417 // .check_connect = cdc_check_connect, 417 // .check_connect = cdc_check_connect,
418 .bind = cdc_bind, 418 .bind = cdc_bind,
419 .unbind = usbnet_cdc_unbind, 419 .unbind = usbnet_cdc_unbind,
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index a2b30a10064f..3d406f9b2f29 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -611,7 +611,7 @@ static int dm9601_link_reset(struct usbnet *dev)
611 611
612static const struct driver_info dm9601_info = { 612static const struct driver_info dm9601_info = {
613 .description = "Davicom DM9601 USB Ethernet", 613 .description = "Davicom DM9601 USB Ethernet",
614 .flags = FLAG_ETHER, 614 .flags = FLAG_ETHER | FLAG_LINK_INTR,
615 .bind = dm9601_bind, 615 .bind = dm9601_bind,
616 .rx_fixup = dm9601_rx_fixup, 616 .rx_fixup = dm9601_rx_fixup,
617 .tx_fixup = dm9601_tx_fixup, 617 .tx_fixup = dm9601_tx_fixup,
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 378da8c938fe..04f3f289e87c 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1352,9 +1352,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
1352 // ok, it's ready to go. 1352 // ok, it's ready to go.
1353 usb_set_intfdata (udev, dev); 1353 usb_set_intfdata (udev, dev);
1354 1354
1355 // start as if the link is up
1356 netif_device_attach (net); 1355 netif_device_attach (net);
1357 1356
1357 if (dev->driver_info->flags & FLAG_LINK_INTR)
1358 netif_carrier_off(net);
1359
1358 return 0; 1360 return 0;
1359 1361
1360out3: 1362out3: