diff options
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 7c0fc11e972a..35a41e60f541 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -554,6 +554,11 @@ static void hid_io_error(struct hid_device *hid) | |||
554 | if (usb_get_intfdata(usbhid->intf) == NULL) | 554 | if (usb_get_intfdata(usbhid->intf) == NULL) |
555 | goto done; | 555 | goto done; |
556 | 556 | ||
557 | /* If it has been a while since the last error, we'll assume | ||
558 | * this a brand new error and reset the retry timeout. */ | ||
559 | if (time_after(jiffies, usbhid->stop_retry + HZ/2)) | ||
560 | usbhid->retry_delay = 0; | ||
561 | |||
557 | /* When an error occurs, retry at increasing intervals */ | 562 | /* When an error occurs, retry at increasing intervals */ |
558 | if (usbhid->retry_delay == 0) { | 563 | if (usbhid->retry_delay == 0) { |
559 | usbhid->retry_delay = 13; /* Then 26, 52, 104, 104, ... */ | 564 | usbhid->retry_delay = 13; /* Then 26, 52, 104, 104, ... */ |