On Sun, Apr 13, 2014 at 03:43:47PM +0800, vichy wrote:
> hi all:
> When I plug in usb3.0 device for stressing test, once
> usb_get_device_descriptor fail in hub_port_init.
> we will call hub_port_disable(hub, port1, 0);
>
> And usb3.0 device may not recover successfully only with below function
> retval = hub_port_reset(hub, port1, udev, delay, false);
> when we try to save back the device.
>
> in hub_port_connect_change
> --> for (i = 0; i < SET_CONFIG_TRIES; i++) {
> --> hub_port_init
> --> hub_port_reset(hub, port1, udev, delay, false);
> --> usb_get_device_descriptor
> (fail) --> hub_port_disable(hub, port1, 0);
>
> ( I list rough function calls flow like above)
>
> For covering this error handling, shall we add patch like below?
>
> diff --git drivers/usb/core/hub.c b/linux-3.8.2/drivers/usb/core/hub.c
> index 64af693..599de96 100644
> --- a/linux-3.8.2/drivers/usb/core/hub.c
> +++ b/linux-3.8.2/drivers/usb/core/hub.c
> @@ -4451,6 +4453,10 @@ static int hub_port_reset(struct usb_hub *hub, int
> port1,
> if (retval) {
> hub_port_disable(hub, port1, 0);
> update_devnum(udev, devnum); /* for disconnect processing
> */
> + if(udev->speed == USB_SPEED_SUPER)
> + hub_port_reset(hub, port1, udev,
> + HUB_BH_RESET_TIME, true);
> }
> mutex_unlock(&usb_address0_mutex);
> return retval;
>
>
Allways run your patches through checkpatch.pl so someone doesn't point
out the formatting issues in it when you send it to the mailing list :)
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html