On Mon, May 21, 2001, David Brownell <[EMAIL PROTECTED]> wrote:
> > 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.
"only" is incorrect. It can be used for any URB's.
The difference is performance. QUEUE_BULK on UHCI will setup the
schedule to execute the next URB in the same frame. ->next requires a
frame to pass.
Strictly performance.
Also, QUEUE_BULK is bulk only right now.
> > 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's what should happen. I'll double check my code to make sure it
does this correctly.
> > 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).
This could be done with ->next. Or you can do it in the completion
handler.
JE
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel