On 03/22/2012 05:31 PM, Sarah Sharp wrote:
Larry, if the driver doesn't cancel an URB that the device doesn't respond to, then it will just be left on the endpoint ring. If the driver then tries to queue new transfers to that same endpoint, but the device keeps NAKing the uncancelled transfer, then the endpoint ring would fill up with unanswered transfers. Perhaps some userspace or kernel portion is forgetting to cancel URBs before moving onto the next thing? You said you moved to asynchronous transfers, so maybe the problem lies there?
The writes have always been asynchronous and reads are synchronous. The only change was to convert the firmware uploading writes from 32-bits at a time into block writes of 1000+ 32-bit words.
Would xhci be worse that ohci or ehci in terms of the device not responding to URBs? We only see problems with USB3.0 hubs, never with 2.0 or 1.1.
I am looking into changing the writes to be synchronous. That should clear up any problems.
Larry -- 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