Hello I am testing a driver under 2.4.30, that originates from Philips, for their 1761 OTG high-speed chip. I was verifying drivers behaviour in error-cases, for which I connecetd a high-speed memory stick over a looooong cable and a USB analyser. Now, I can pretty easily bring the controller to a state when it sets the HALT bit in its queue-head. The driver sends -EPIPE back, calls usb_endpoint_halt(), does various cleanup, everything seems ok, then the (usb-storage?) driver sends BULK_RESET, the setup packet is ok, but the IN packet is NAKed infinitely. Now, that is actually my question. Originally, the driver would just re-validate the transfer descriptor, waiting for the device to eventually stop NAKing, but this never happens. So, the driver just spins there, until SCSI / storage aborts with a timeout. I tried putting a counter for NAK-revalidation attempts, and completing the URB with an error if the device doesn't response - but then the higher level retries - and this _forever_. So, the question is - what is the correct behaviour? Should the driver really just spin retrying NAKs and wait for higher level timeout (that works, btw), or should it complete the URB, but there's a bug in storage / SCSI that takes it to the endless loop?
Thanks Guennadi --------------------------------- Guennadi Liakhovetski, Ph.D. DSA Daten- und Systemtechnik GmbH Pascalstr. 28 D-52076 Aachen Germany ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel