Commit b89ee19a authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: remove short initial timeout for device descriptor fetch

This patch (as905) removes a micro-optimization from the hub port
initialization code.  Previously we had been using a short timeout on
the first attempt the read the device descriptor; now we will use the
standard timeout length.

It's not clear that the short timeout ever provided any benefit.  And
now we know of one case where it actually hurts: The device can't meet
the short timeout and then it gets terminally confused.

This fixes Bugzilla #8444.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent d984abc9
...@@ -2201,14 +2201,9 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, ...@@ -2201,14 +2201,9 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1,
continue; continue;
} }
/* Use a short timeout the first time through, /* Retry on all errors; some devices are flakey.
* so that recalcitrant full-speed devices with * 255 is for WUSB devices, we actually need to use
* 8- or 16-byte ep0-maxpackets won't slow things * 512 (WUSB1.0[4.8.1]).
* down tremendously by NAKing the unexpectedly
* early status stage. Also, retry on all errors;
* some devices are flakey.
* 255 is for WUSB devices, we actually need to use 512.
* WUSB1.0[4.8.1].
*/ */
for (j = 0; j < 3; ++j) { for (j = 0; j < 3; ++j) {
buf->bMaxPacketSize0 = 0; buf->bMaxPacketSize0 = 0;
...@@ -2216,7 +2211,7 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, ...@@ -2216,7 +2211,7 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1,
USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
USB_DT_DEVICE << 8, 0, USB_DT_DEVICE << 8, 0,
buf, GET_DESCRIPTOR_BUFSIZE, buf, GET_DESCRIPTOR_BUFSIZE,
(i ? USB_CTRL_GET_TIMEOUT : 1000)); USB_CTRL_GET_TIMEOUT);
switch (buf->bMaxPacketSize0) { switch (buf->bMaxPacketSize0) {
case 8: case 16: case 32: case 64: case 255: case 8: case 16: case 32: case 64: case 255:
if (buf->bDescriptorType == if (buf->bDescriptorType ==
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment