This is a semi-experimental patch against 2.4.17 that teaches the usb-storage driver to use bulk queueing, rather than forcing a schedule between each URB. Using bulk queuing is an #ifdef option, which defaults here to being enabled.
I say "semi-experimental" because although it works with OHCI as-is, and with EHCI after a patch I'm also posting, I've neither tested with UHCI (either driver) nor stressed the error handling at all. Also, I'd like to see this reduce the IRQ rate more than it does. No performance measurements yet, sorry, although with EHCI I've certainly noticed that on a slowish box the results for 128KB I/Os (what "cp" does, also DD with that block size) are streaming in while requests are still getting queued, and that it feels as quick as the IDE disk on that machine. - Dave
storage-0104.patch
Description: Binary data