On Tue, 6 Sep 2005, Franck wrote: > > > well, the feature allows the hardware to automatically restart a > > > transaction when the function previously handshaked it with a NAK. If > > > the function is a hub and the transaction is used to poll its endpoint > > > 1...the hub will send NAK as long as there's no change on its ports. > > > Therefore the hardware will be busy to restart the transaction until > > > there's a change on the hub's ports...That's why I said that I could > > > not use this feature for interrupt polling. > > > > But _when_ does the hardware restart the transaction? Does it restart > > right away? Does it try to do all the remaining transactions for this > > frame and then restart? Does it wait until the next frame? Or does it > > wait until the next interrupt period (if this is an interrupt > > transaction)? > > > > seems to be rigth away...from the shitty documentation : > "When this bit is cleared NAKed transactions will be retried in hardware" > As you see, it's quite short for an explanation. I expect that it will > retry transaction until the next frame because I could stop the > transaction during the "start of frame" interrupt.
Maybe you should try doing some experiments to see if the hardware really does behave that way. > > And if it restarts right away, how many times does it restart? If the > > device keeps sending NAK, will the hardware continue to restart the > > transaction until it reaches the end of the frame, without trying any of > > the other transactions remaining in the frame? (Note that this would > > violate the USB protocol, making the restart feature pretty useless.) > > > > yeah, that's why I said that it's pretty useless for periodic transfers.... It's also not so good for control or bulk transfers. A NAK response would starve all the other endpoints waiting for service. > Is it the function driver that will resubmit the interrupt transaction > or is it automatically rescheduled by the hcd ? If an interrupt transaction doesn't complete because of a NAK response, the HCD just leaves it on the schedule -- so it doesn't have to be "rescheduled". If it does complete, either successfully or with an error, then it is removed from the schedule and is not automatically rescheduled. Alan Stern ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ [email protected] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
