USB: ehci completes high speed ISO URBs sooner
authorDavid Brownell <david-b@pacbell.net>
Mon, 7 Jan 2008 08:47:42 +0000 (00:47 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 1 Feb 2008 22:35:02 +0000 (14:35 -0800)
commit79592b722e7a8476680197d97352d2cc0f1bffd2
treef7900c1a6116414b5e0d81b4359d3601c23e4a19
parentaa16ca307ee2da304d3a5fc0fc5e50ef8047c9e9
USB: ehci completes high speed ISO URBs sooner

This has some bugfixes for the EHCI driver's ISO transfer scanning
logic.  It was leaving ITDs and SITDs on the schedule too long, for
a few different reasons, which caused trouble.

  (a) Look at all microframes for high speed transfers, not just
the ones we expect to have finished.  This way transfers
ending mid-frame will complete without needing another IRQ.
This also minimizes bogus scheduling underruns (e.g. EL2NSYNC).

  (b) When we encounter an ISO transfer (either speed, but this
hits mostly at full speed) that's not yet been completed,
immediately stop scanning; we've caught up to the hardware,
no matter what other indications might say.

  (c) Always clean up ITDs (for high speed transfers) when the HC
is no longer running.

I'm not sure whether the last one has been observed before, but both
the others have been reported with "real world" audio and video code.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ehci-sched.c