> Would I be correct in saying that the urb->complete routine for a bulk or
> control request is called while doing periodic processing ?

No ...  the "bottom half" tasklet is going to be processing either the
async schedule (bulk and control transfers) or else the periodic
schedule (interrupt and iso transfers).  But never both at the same
time.  They're different hardware data structures, so when it's doing
periodic processing it never sees the async endpoints.

BUT:  for all urbs, urb->complete() gets called when the data has
been transferred (or on error).  You'd be correct to say that the
call is made _directly_ by ehci-hcd only for interrupt transfers that
are being resubmitted ... which is one kind of periodic processing.


> I am looking through the ehci-hcd code and it 
> seems that completion routines are called when qh_completions(,,freeing=0)
> is called, i.e.  periodic processing.

I hope you're looking at the current version -- 2.5.11, Marcelo's tree
is mostly from late last year.  (Though I hope 2.4.19-final will have
some important updates, when it arrives...)

What you're seeing is that the hardware uses the same code to work
with QH/QTD data structures whether they're used for interrupt, bulk,
or control endpoints.

Most of the special-case logic for interrupt transfers comes from the
"automagic URB resubmit" model.  It could -- IMO should! -- be more
simple, but I'd rather start that cleanup is higher up in the USB stack.

- Dave



_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to