diff options
author | hselasky <hselasky@FreeBSD.org> | 2011-06-06 21:45:09 +0000 |
---|---|---|
committer | hselasky <hselasky@FreeBSD.org> | 2011-06-06 21:45:09 +0000 |
commit | 5f55faed0601b0486b09dd7ec3727f5312e33d5d (patch) | |
tree | 0b32799a28515b5c61e32d9d9a2ae9fedbba5065 /sys/dev/usb/usb_generic.c | |
parent | c8e197a2037e17686f997232419f8b02d1e61ffc (diff) | |
download | FreeBSD-src-5f55faed0601b0486b09dd7ec3727f5312e33d5d.zip FreeBSD-src-5f55faed0601b0486b09dd7ec3727f5312e33d5d.tar.gz |
Improve enumeration of Low- and Full-speed devices connected through a
High-speed USB HUB by resetting the transaction translator (TT)
before trying re-enumeration. Also when clear-stall fails multiple times
try a re-enumeration.
Suggested by: Trevor Blackwell
MFC after: 14 days
Diffstat (limited to 'sys/dev/usb/usb_generic.c')
-rw-r--r-- | sys/dev/usb/usb_generic.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/dev/usb/usb_generic.c b/sys/dev/usb/usb_generic.c index 714ee6f..d62f8f9 100644 --- a/sys/dev/usb/usb_generic.c +++ b/sys/dev/usb/usb_generic.c @@ -966,10 +966,8 @@ ugen_re_enumerate(struct usb_fifo *f) /* ignore any errors */ DPRINTFN(6, "no FIFOs\n"); } - if (udev->re_enumerate_wait == 0) { - udev->re_enumerate_wait = 1; - usb_needs_explore(udev->bus, 0); - } + /* start re-enumeration of device */ + usbd_start_re_enumerate(udev); return (0); } |