diff options
author | Pete Zaitcev <zaitcev@redhat.com> | 2006-09-19 01:49:02 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-27 14:59:00 -0400 |
commit | 38e2bfc94e95dd6005fdaf40dfec0157396741da (patch) | |
tree | 1cc927239e3369ec7ce4920b1347dd8bc504bb2d /drivers/usb/net | |
parent | ec17cf1cfe0b557210b27313bd584e9b5187d4ca (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.c | 2 | ||||
-rw-r--r-- | drivers/usb/net/rtl8150.c | 2 | ||||
-rw-r--r-- | drivers/usb/net/usbnet.c | 12 |
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); |