linux-stable/drivers/hid/usbhid
Alan Stern 5e2a55f25d USB HID: fix retry & reset logic
The USB HID driver fails to reset its error-retry timeout when there
has been a long time interval between I/O errors with no successful URB
completions in the meantime.  As a result, the very next error would
trigger an immediate reset, even if it was a chance event occurring
long after the previous error.

More USB keyboards and mice than one might expect end up getting I/O
errors. Almost always this results from hardware problems of one sort of
another. For example, people attach the device to a USB extension cable,
which degrades the signal.  Or they simply have poor quality cables to
begin with. Or they use a KVM switch which doesn't handle USB messages
correctly. Etc...

There have been reports from several users in which these I/O
errors would occur more or less randomly, at intervals ranging from
seconds to minutes.  The error-handling code in hid-core.c was originally
meant for situations where a single outage would persist for a few hundred
ms (electromagnetic interference, for example).  It didn't work right when
these more sporadic errors occurred, because of a flaw in the logic
which this patch fixes.

This patch (as873) fixes that oversight.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2007-04-11 10:36:02 +02:00
..
hid-core.c USB HID: fix retry & reset logic 2007-04-11 10:36:02 +02:00
hid-ff.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
hid-lgff.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
hid-pidff.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
hid-plff.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
hid-tmff.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
hid-zpff.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
hiddev.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
Kconfig USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
Makefile USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
usbhid.h USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
usbkbd.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00
usbmouse.c USB HID: move usbhid code from drivers/usb/input to drivers/hid/usbhid 2007-04-11 10:36:02 +02:00