Wouldn't this be better fixed in the USB storage driver?


Or rather, in the usb_sg_init() routine from the scatter-gather library. It could arrange to clear the URB_NO_INTERRUPT flag after every 10 ms worth of data or so, about 12 KB for a full-speed bus (see table 5-9 in the USB 2.0 spec). What do you think, David?

See the NOTE in usb_sg_wait() about UHCI. There's a second factor to consider: memory utilization can be high with UHCI and deep queues. I think there have been a few reports of folk having problems running out of TD memory under load.

Both of those issues are UHCI-specific.  So I think the fixes for
them would most naturally be in the UHCI driver.  All the fixes
that come quickly to my mind are ones where the HCD has a good
"queue per endpoint" data structure, so it can enforce policies
easily.  For example:  don't clear URB_NO_INTERRUPT (it's readonly
to the HCD!) ... but force an IRQ every so often, no matter what
it says.  Or:  don't allocate TDs until the URB is within about
10msec of the queue head, and recycle the previous TDs through a
list which is dedicated to that queue (until it empties).

- Dave



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to