Skip to content

Commit

Permalink
usb/isp1760: Improve urb queueing, get rid of BUG():s in normal code …
Browse files Browse the repository at this point in the history
…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>
  • Loading branch information
Arvid Brodin authored and Greg Kroah-Hartman committed May 3, 2011
1 parent 22bea9c commit 71a9f9d
Show file tree
Hide file tree
Showing 2 changed files with 679 additions and 699 deletions.
Loading

0 comments on commit 71a9f9d

Please sign in to comment.