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/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel