David:
I've got a few questions about the API; these issues don't seem to be
mentioned in any detail in the kernel sources. They are about how
endpoint I/O queues are supposed to be handled. My current understanding
is summarized below; please indicate where any mistakes are.
Basically, all URBs destined for an endpoint go into a single queue, which
advances as the HC sees fit. When something abnormal happens:
If an URB terminates with an error, its queue is stopped until
the URB's completion handler returns. Note that an IN transfer
ending early because a short packet was received counts as an
error if and only if the URB_SHORT_NOT_OK flag is set.
If an URB is unlinked, its queue is stopped until the URB's
completion handler returns. Is this true even if the URB wasn't
at the head of its queue?
Queues for isochronous endpoints are handled differently, since
they advance at fixed times. Iso URBs don't terminate if they
get an error. What happens to the remaining members of a queue
when one is deleted? Does the queue stop? Do the following
members move forward in time to fill the gap, is the queue
simply left with a hole, or are there no guarantees at all?
The UHCI driver currently does not follow these rules exactly.
Alan Stern
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel