On Wed, 25 Jul 2007, Mike Nuss wrote:

> 2. The logic is too naive. The quirk assumes that if HeadP and DoneP
> remain equal (meaning that the HC's queue is empty) for at least one
> frame, but the HCD still sees an outstanding TD, then that TD must be
> lost. But it may be that even though the queue is still empty, there
> were intervening transactions in the meantime (it was momentarily
> nonempty, but is now empty again). In that case, I could fix it by
> verifying that the second time around, if HeadP and TailP are still
> equal, they point to a *different* dummy than they did before. I don't
> know how that comparison would be done - a simple address check may not
> be sufficient, because the DMA allocation code will give out the same
> addresses for new TDs after the old ones are retired.

Surely the correct way to do this is to look for cases where a TD isn't 
on the donelist but its ED's HeadP has pointed to a later TD for at 
least one frame.  It doesn't matter whether HeadP == TailP or not; what 
matters is that the queue pointer passed beyond the TD in question 
sufficiently long ago.

Alan Stern


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to