From: Yasushi Asano <yasano@xxxxxxxxxxxxxx> Dear Alan Thank you very much for providing the patch. I really appreciate your kindness. When I added a pseudo error code and checked it, the for statement of the "operation" in the new scheme runs unconditionally three times. Therefore It doesn't seem to meet the requirements (30seconds). After applying your patch, I added a patch that can change the loop number of "operation" as shown below, and it worked fine in the pseudo error environment. Is this modification acceptable? If it is good, I'll add this patch and test it. Since the PET tool is only in the customer, I will ask the customer to test it. I will report the result when I receive the results. Signed-off-by: Yasushi Asano <yasano@xxxxxxxxxxxxxx> --- drivers/usb/core/hub.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 61effd5..2f07f7c 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -2709,12 +2709,14 @@ static unsigned hub_is_wusb(struct usb_hub *hub) #define PORT_RESET_TRIES 2 #define SET_ADDRESS_TRIES 1 #define GET_DESCRIPTOR_TRIES 1 +#define GET_DESCRIPTOR_OPERATIONS 1 #define PORT_INIT_TRIES 5 #else #define PORT_RESET_TRIES 5 #define SET_ADDRESS_TRIES 2 #define GET_DESCRIPTOR_TRIES 2 +#define GET_DESCRIPTOR_OPERATIONS 3 #define PORT_INIT_TRIES 4 #endif /* CONFIG_USB_FEW_INIT_RETRIES */ @@ -4699,7 +4701,7 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1, * 255 is for WUSB devices, we actually need to use * 512 (WUSB1.0[4.8.1]). */ - for (operations = 0; operations < 3; ++operations) { + for (operations = 0; operations < GET_DESCRIPTOR_OPERATIONS; ++operations) { buf->bMaxPacketSize0 = 0; r = usb_control_msg(udev, usb_rcvaddr0pipe(), USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, -- 2.7.4