summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_hub.h
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2014-01-24 07:48:52 +0000
committerhselasky <hselasky@FreeBSD.org>2014-01-24 07:48:52 +0000
commitf692196495136a8dd592a7f06a940e6fae03fd6d (patch)
tree839fc6ad65b9e949db26d1b71d21c9f0c50ef134 /sys/dev/usb/usb_hub.h
parent34792a80a8f08a81c382a8100ee6ff81820ed688 (diff)
downloadFreeBSD-src-f692196495136a8dd592a7f06a940e6fae03fd6d.zip
FreeBSD-src-f692196495136a8dd592a7f06a940e6fae03fd6d.tar.gz
MFC r260588 and r260589:
- Separate I/O errors from reception of STALL PID. - Implement better error recovery for Transaction Translators, TTs, found in High Speed USB HUBs which translate from High Speed USB into FULL or LOW speed USB. In some rare cases SPLIT transactions might get lost, which might leave the TT in an unknown state. Whenever we detect such an error try to issue either a clear TT buffer request, or if that is not possible reset the whole TT.
Diffstat (limited to 'sys/dev/usb/usb_hub.h')
-rw-r--r--sys/dev/usb/usb_hub.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/usb/usb_hub.h b/sys/dev/usb/usb_hub.h
index 4a48f74..dc8705a 100644
--- a/sys/dev/usb/usb_hub.h
+++ b/sys/dev/usb/usb_hub.h
@@ -35,6 +35,9 @@ struct usb_port {
#define USB_RESTART_MAX 5
uint8_t device_index; /* zero means not valid */
enum usb_hc_mode usb_mode; /* host or device mode */
+#if USB_HAVE_TT_SUPPORT
+ struct usb_device_request req_reset_tt __aligned(4);
+#endif
};
/*
@@ -44,6 +47,9 @@ struct usb_hub {
struct usb_device *hubudev; /* the HUB device */
usb_error_t (*explore) (struct usb_device *hub);
void *hubsoftc;
+#if USB_HAVE_TT_SUPPORT
+ struct usb_udev_msg tt_msg[2];
+#endif
usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX];
uint16_t portpower; /* mA per USB port */
uint8_t isoc_last_time;
OpenPOWER on IntegriCloud