Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> writes: > ffff8800da9be6c0 3444255124 S Ci:2:067:0 s 80 06 0100 0000 0012 18 < > ffff8800da9be6c0 3444255418 C Ci:2:067:0 0 18 = 12010002 00000008 f3048900 1300040e 0001 So you are successfully reading the device descriptor in hub_port_init() > ffff88020b7a76c0 3444255485 S Ci:2:067:0 s 80 06 0600 0000 000a 10 < > ffff88020b7a76c0 3444255548 C Ci:2:067:0 -32 0 > ffff88020b7a76c0 3444255612 S Ci:2:067:0 s 80 06 0600 0000 000a 10 < > ffff88020b7a76c0 3446360388 C Ci:2:067:0 -71 0 > ffff88020b7a76c0 3446360451 S Ci:2:067:0 s 80 06 0600 0000 000a 10 < > ffff88020b7a76c0 3446360539 C Ci:2:067:0 -71 0 Then you hit this part of hub_port_connect_change(): /* check for devices running slower than they could */ if (le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0200 && udev->speed == USB_SPEED_FULL && highspeed_hubs != 0) check_highspeed (hub, udev, port1); And check_highspeed() calls usb_get_descriptor() to get the USB_DT_DEVICE_QUALIFIER descriptor, but this device doesn't like that and stalls. usb_get_descriptor() still tries 3 times before giving up, but it looks like the stall isn't cleared like it should be? I assume you know much better than me why usb_get_descriptor() doesn't bail out on stall while usb_get_string() does. Looks kind of strange. But I guess this is done for historic and/or good reasons. And why does the device then start causing EPROTO? Is this expected? In any case, it seems the failure to get the USB_DT_DEVICE_QUALIFIER is screwing up this device, and is probably what makes the subsequent attempt to fetch USB_DT_CONFIG fail with EPROTO as well: > ffff88020b7a76c0 3446360611 S Ci:2:067:0 s 80 06 0200 0000 0009 9 < > ffff88020b7a76c0 3446360700 C Ci:2:067:0 -71 0 > ffff88020b7a76c0 3446360749 S Ci:2:067:0 s 80 06 0200 0000 0009 9 < > ffff88020b7a76c0 3446360859 C Ci:2:067:0 -71 0 > ffff88020b7a76c0 3446360908 S Ci:2:067:0 s 80 06 0200 0000 0009 9 < > ffff88020b7a76c0 3446360980 C Ci:2:067:0 -71 0 I guess you could try to comment out the call to check_highspeed(), and if that works then this could be food for another device specific quirk? Bjørn -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html