aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci.h
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2009-02-10 10:16:58 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2009-03-24 19:20:31 -0400
commita2c2706e1043c17139c2dafd171c4a5cf008ef7e (patch)
tree59d6519004eb562ebee5df5f1a4394290dec16ff /drivers/usb/host/ehci.h
parent1f4159c1620f74377e26d8a569d10ca5907ef475 (diff)
USB: EHCI: add software retry for transaction errors
This patch (as1204) adds a software retry mechanism to ehci-hcd. It gets invoked when the driver encounters transaction errors on an asynchronous endpoint. On many systems, hardware deficiencies cause such errors to occur if one device is unplugged while the host is communicating with another device. With the patch, the failed transactions are retried and generally succeed the second or third time through. This is based on code originally written by Koichiro Saito. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Tested by: Koichiro Saito <Saito.Koichiro@adniss.jp> CC: David Brownell <david-b@pacbell.net> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci.h')
-rw-r--r--drivers/usb/host/ehci.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 0042deb671dd..9aba560fd569 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -342,6 +342,9 @@ struct ehci_qh {
342#define QH_STATE_UNLINK_WAIT 4 /* LINKED and on reclaim q */ 342#define QH_STATE_UNLINK_WAIT 4 /* LINKED and on reclaim q */
343#define QH_STATE_COMPLETING 5 /* don't touch token.HALT */ 343#define QH_STATE_COMPLETING 5 /* don't touch token.HALT */
344 344
345 u8 xacterrs; /* XactErr retry counter */
346#define QH_XACTERR_MAX 32 /* XactErr retry limit */
347
345 /* periodic schedule info */ 348 /* periodic schedule info */
346 u8 usecs; /* intr bandwidth */ 349 u8 usecs; /* intr bandwidth */
347 u8 gap_uf; /* uframes split/csplit gap */ 350 u8 gap_uf; /* uframes split/csplit gap */