Re: requirements for suspend()

Oliver Neukum <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
Am Freitag, 4. Mai 2007 17:35 schrieb Alan Stern:
> On Fri, 4 May 2007, Oliver Neukum wrote:
 
> This isn't as bad as you think.  usbcore makes no guarantees about the 
> order of delivery of URBs for differing endpoints.  Neither does the USB 
> spec.

OK.

> All that matters is the order of URBs within each endpoint's queue.  There 
> you probably do want to kill them in reverse order of submission.  Right 
> now usb_hcd_endpoint_disable does it in the forward direction, but it 
> would be easy to change -- replace list_for_each_entry() with 
> list_for_each_entry_reverse().

Doable, but it doesn't help for ep0.

> When you unlink an URB, it's possible that some of the data might already 
> have been transmitted.  (The actual_length field will reflect this.)  So 
> you can't simply restart it when you want to resume.

This is news to me. :-( Bad news at that.
 
> A better approach would be to have a routine which would block until all 
> URBs on an anchor have completed.  With a timeout, so that they can be 
> killed if they take too long.

I can't follow your logic here. The partial completion case has to be
handled anyway, so what is gained waiting?

	Regards
		Oliver


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.