aboutsummaryrefslogtreecommitdiff
path: root/include/linux/usb
diff options
context:
space:
mode:
authorArvid Brodin2011-04-26 21:48:30 +0200
committerGreg Kroah-Hartman2011-05-02 17:03:50 -0700
commit71a9f9d268a5c2b0a80ae606cf8e502f3410a5df (patch)
treefd8c3512ff67b64e8a487eecabdfa7ff5131bcdb /include/linux/usb
parent22bea9cef810ec54abdb057de46cea04c972dc64 (diff)
usb/isp1760: Improve urb queueing, get rid of BUG():s in normal code paths
This patch replaces the code that handles qtds. Intead of directly allocating chip mem and chip slot, enqueue the transfer in a list of queue heads. Use a centralized function enqueue_qtds() to prioritize and enqueue transfers. This removes all of the interrupt context BUG() calls when out of chip mem or transfer slots. It also makes it possible to efficiently use the dual-port mem on the chip for double-buffered transfers, which improve transfer times to/from/between usb sticks by about 40 % on my HW. With this patch it should also be possible to handle qtd scheduling outside of the interrupt handler, for significantly improved kernel latency. I have not implemented this since there are some locking issues which I haven't had time to look at. Signed-off-by: Arvid Brodin <arvid.brodin@enea.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/usb')
0 files changed, 0 insertions, 0 deletions