On Mon, 13 Aug 2007, Alan Stern wrote:
> This patch is the wrong way to do it. You should try this patch
> instead.
>
> Alan Stern
>
>
> Index: 2.6.22/drivers/usb/core/message.c
> ===================================================================
> --- 2.6.22.orig/drivers/usb/core/message.c
> +++ 2.6.22/drivers/usb/core/message.c
> @@ -623,12 +623,12 @@ int usb_get_descriptor(struct usb_device
> memset(buf,0,size); // Make sure we parse really received data
>
> for (i = 0; i < 3; ++i) {
> - /* retry on length 0 or stall; some devices are flakey */
> + /* retry on length 0 or error; some devices are flakey */
> result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
> USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
> (type << 8) + index, 0, buf, size,
> USB_CTRL_GET_TIMEOUT);
> - if (result == 0 || result == -EPIPE)
> + if (result <= 0)
> continue;
On further thought, perhaps we shouldn't retry on -ETIMEDOUT errors.
- if (result == 0 || result == -EPIPE)
+ if (result <= 0 && result != -ETIMEDOUT)
Alan Stern
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel