On Wednesday 16 October 2013 15:29:53, Alan Stern wrote: > > > > I'm experiencing problems with our USB-CAN-hardware in a test scenario > > > > only when being attached to the ehci root-hub. > > > > When the device is enumerated and has its USB address the driver is > > > > bound and the can interface is started. So far so good. If there is a > > > > status request timeout the module firmware disconnects itself from the > > > > bus, thus reattaching to the bus, getting a new USB device address and > > > > so on... > > > > Doing this in a loops lead eventually to this error messages: > > > > > > Do you have any idea why a status request timeout would occur? Can you > > > capture a usbmon trace showing one of these timeouts and the following > > > errors? > > > > I hope status request timeout does not interfere with some USB > > standard stuff. In my case this is a safety mechanism in case the > > host driver could not get the current status from the device. So the > > driver needs to poll from a specific endpoint once a second. > > I see. So the device itself forces the disconnect if it doesn't > receive this status poll sufficiently often, right?
Exactly! > > There is no need for usbmon trace. This timeout is intentionally > > triggered within the test loop by simply removing the device driver > > without shutting down the CAN interfaces. Those dis-/reconnects are > > part of the problem I described. > > > > BTW: There is no shutdown callback for USB device drivers so this > > 'problem' even occurs during system reboot when the CAN interface is > > not shutdown beforehand. > > That's true. We could add a shutdown callback, if necessary. Or just > unbind all the drivers. > > > > > So the problem seems to occur only when the hub is connected with > > > > high-speed to any hub on an ehci bus. > > > > Has somebody an idea what might have gone wrong here? It seems the > > > > internal hub has problems with Transaction Translators. But why does > > > > this only happen when attached to ehci? Is this maybe a driver problem? > > > > I did some tests on 3.11.4 and some on 3.10.7 and both showed same > > > > results. > > > > > > I doubt that it is a driver problem. Much more likely is a bug in the > > > internal hub, as you guessed. > > > > > > This doesn't explain why it works under xHCI but not under EHCI. Do > > > you not get any status request timeouts under xHCI? > > > > Those timeouts are provoked on purpose, so, yes, there also exist in the > > xHCI case. > > But with xHCI and OHCI, the reconnect succeeds whereas with EHCI it > fails? Yep. But it even works on EHCI if there is a full-speed-hub somewhere before that device. > It's hard to guess why. The behavior under xHCI is slightly different > from the other two, which behave the same. You can force EHCI and OHCI > to work more like xHCI by doing: > > echo 1 >/sys/module/usbcore/parameters/old_scheme_first I tried that but there wasn't any difference. > Maybe it's a data toggle issue involving the internal hub, but the only > way to find out for sure is to use a bus analyzer. We tried that but didn't see any USB traffic for those USB device numbers where enumeration failed. One thing about the error log: [249741.159104] usb 2-1.6.1: new full-speed USB device number 109 using ehci-pci [249751.565047] usb 2-1.6.1: device not accepting address 109, error -110 [249751.638197] usb 2-1.6.1: new full-speed USB device number 110 using ehci-pci [249762.044199] usb 2-1.6.1: device not accepting address 110, error -110 [249762.117273] usb 2-1.6.1: new full-speed USB device number 111 using ehci-pci [249777.196292] usb 2-1.6.1: device descriptor read/64, error -110 [249792.376349] usb 2-1.6.1: device descriptor read/64, error -110 [249792.550467] usb 2-1.6.1: new full-speed USB device number 112 using ehci-pci [249807.629330] usb 2-1.6.1: device descriptor read/64, error -110 [249822.809391] usb 2-1.6.1: device descriptor read/64, error -110 [249822.910435] hub 2-1.6:1.0: unable to enumerate USB device on port 1 There are different errors "device not accepting address xxx" and "device descriptor read/64, error -110". Does that mean that reading the device descriptor succeeded when the USB device address shall be set? Alexander -- 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