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; Thanks for your kind help in advance, -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html