aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/net
diff options
context:
space:
mode:
authorPete Zaitcev <zaitcev@redhat.com>2006-09-19 01:49:02 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-27 14:59:00 -0400
commit38e2bfc94e95dd6005fdaf40dfec0157396741da (patch)
tree1cc927239e3369ec7ce4920b1347dd8bc504bb2d /drivers/usb/net
parentec17cf1cfe0b557210b27313bd584e9b5187d4ca (diff)
USB: Dealias -110 code (more complete)
The purpose of this patch is to split off the case when a device does not reply on the lower level (which is reported by HC hardware), and a case when the device accepted the request, but does not reply at upper level. This redefinition allows to diagnose issues easier, without asking the user if the -110 happened "immediately". The usbmon splits such cases already thanks to its timestamp, but it's not always available. I adjusted all drivers which I found affected (by searching for "urb"). Out of tree drivers may suffer a little bit, but I do not expect much breakage. At worst they may print a few messages. Signed-off-by: Pete Zaitcev <zaitcev@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/net')
-rw-r--r--drivers/usb/net/pegasus.c2
-rw-r--r--drivers/usb/net/rtl8150.c2
-rw-r--r--drivers/usb/net/usbnet.c12
3 files changed, 8 insertions, 8 deletions
diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c
index ab21f960d255..b8e25af13f02 100644
--- a/drivers/usb/net/pegasus.c
+++ b/drivers/usb/net/pegasus.c
@@ -619,7 +619,7 @@ static void read_bulk_callback(struct urb *urb, struct pt_regs *regs)
619 switch (urb->status) { 619 switch (urb->status) {
620 case 0: 620 case 0:
621 break; 621 break;
622 case -ETIMEDOUT: 622 case -ETIME:
623 if (netif_msg_rx_err(pegasus)) 623 if (netif_msg_rx_err(pegasus))
624 pr_debug("%s: reset MAC\n", net->name); 624 pr_debug("%s: reset MAC\n", net->name);
625 pegasus->flags &= ~PEGASUS_RX_BUSY; 625 pegasus->flags &= ~PEGASUS_RX_BUSY;
diff --git a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c
index a72685b96061..2364c2099387 100644
--- a/drivers/usb/net/rtl8150.c
+++ b/drivers/usb/net/rtl8150.c
@@ -438,7 +438,7 @@ static void read_bulk_callback(struct urb *urb, struct pt_regs *regs)
438 break; 438 break;
439 case -ENOENT: 439 case -ENOENT:
440 return; /* the urb is in unlink state */ 440 return; /* the urb is in unlink state */
441 case -ETIMEDOUT: 441 case -ETIME:
442 warn("may be reset is needed?.."); 442 warn("may be reset is needed?..");
443 goto goon; 443 goto goon;
444 default: 444 default:
diff --git a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c
index 8e8e74d40530..98a522f1e264 100644
--- a/drivers/usb/net/usbnet.c
+++ b/drivers/usb/net/usbnet.c
@@ -425,9 +425,9 @@ static void rx_complete (struct urb *urb, struct pt_regs *regs)
425 // we get controller i/o faults during khubd disconnect() delays. 425 // we get controller i/o faults during khubd disconnect() delays.
426 // throttle down resubmits, to avoid log floods; just temporarily, 426 // throttle down resubmits, to avoid log floods; just temporarily,
427 // so we still recover when the fault isn't a khubd delay. 427 // so we still recover when the fault isn't a khubd delay.
428 case -EPROTO: // ehci 428 case -EPROTO:
429 case -ETIMEDOUT: // ohci 429 case -ETIME:
430 case -EILSEQ: // uhci 430 case -EILSEQ:
431 dev->stats.rx_errors++; 431 dev->stats.rx_errors++;
432 if (!timer_pending (&dev->delay)) { 432 if (!timer_pending (&dev->delay)) {
433 mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES); 433 mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES);
@@ -821,9 +821,9 @@ static void tx_complete (struct urb *urb, struct pt_regs *regs)
821 821
822 // like rx, tx gets controller i/o faults during khubd delays 822 // like rx, tx gets controller i/o faults during khubd delays
823 // and so it uses the same throttling mechanism. 823 // and so it uses the same throttling mechanism.
824 case -EPROTO: // ehci 824 case -EPROTO:
825 case -ETIMEDOUT: // ohci 825 case -ETIME:
826 case -EILSEQ: // uhci 826 case -EILSEQ:
827 if (!timer_pending (&dev->delay)) { 827 if (!timer_pending (&dev->delay)) {
828 mod_timer (&dev->delay, 828 mod_timer (&dev->delay,
829 jiffies + THROTTLE_JIFFIES); 829 jiffies + THROTTLE_JIFFIES);