> What's the difference between queuing URBs with the USB_QUEUE_BULK flag or
> with the next pointer?

I think QUEUE_BULK is the only way to queue bulk URBs,
and the "next" pointer is only for scheduling rings of ISO urbs.


> If I queue a bunch of URBs for a bulk endpoint, and one of them in the
> middle STALLs, what happens?  Do all the queued ones stop, or are they all
> attempted?  What about a short packet?

I'd certainly hope that no more traffic goes to that endpoint until
the driver unstalls it.  I could imagine drivers wanting to unlink
the bulk urbs that are queued behind the stalled one ... since stalls
normally happen on some sort of fault, which could mean that the
queued I/Os aren't meaningful any more.


> That question may make more sense after this one: Can I queue URBs for
> different endpoints?  

Yes, but endpoint queues would be serviced independently.  Synchronizing
between queues sure seems like driver-specific functionality to me (for any
number of queues/endpoints/devices).


>    That is, I want to move several URBs for one
> endpoint, and _when_they_are_done_, I want to move an URB for another
> endpoint.  And, it doesn't matter how the beginning URBs end, I still want
> to move the last one.

So far as I know, the only way to make that happen is to have the
completion function(s) for that first endpoint trigger the behavior
you want (by submitting urbs for the other endpoint).

- Dave



_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to