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

Reply via email to