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