linux/drivers/usb/host
David Brownell 4f6676274f USB: ehci: qh_completions cleanup and bugfix
Simplify processing of completed qtds, and correct handling of short
reads, by removing two state variables:

 - "qtd_status" wasn't needed.  The current URB's status is either
   OK (-EINPROGRESS) or some fault status.  Once a fault appears,
   the queue halts and any later QTDs are immediately removed, so
   no temporary status is needed.  (Or for typical short reads,
   it's not treated as a fault, so no queue halt is needed.)

 - "do_status" was erroneous.  Because of how the queue is set up,
   short control reads can (and should!) be treated like full size
   reads, and cleaned up the usual way.  The status stage will be
   executed transparently, and usbcore handles the choice of whether
   to report this status as unexected.
 
The "do_status" problem caused a rather perplexing timing-dependent
problem with usbtest case 10.  Sometimes it would make the controller
skip a dozen transactions while (wrongly) trying to clean up after a
short transfer.  Fortunately, removing a dcache contention issue made
this become trivial to reproduce (on one test rig), so enough clues
finally presented themselves ... I think this has been around for a
very long time, but was worsened by recent urb->status changes.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-04-24 21:16:53 -07:00
..
ehci-au1xxx.c USB: ehci minor SOC bus glue fixes 2008-04-24 21:16:35 -07:00
ehci-dbg.c USB: remove dev->power.power_state 2008-04-24 21:16:41 -07:00
ehci-fsl.c USB: ehci minor SOC bus glue fixes 2008-04-24 21:16:35 -07:00
ehci-fsl.h ehci-fsl: fix cache coherency problem on system with large memory 2007-05-23 20:14:15 -07:00
ehci-hcd.c USB: ehci shutdown refactored 2008-04-24 21:16:49 -07:00
ehci-hub.c USB: HCDs use the do_remote_wakeup flag 2008-04-24 21:16:53 -07:00
ehci-ixp4xx.c USB: ehci minor SOC bus glue fixes 2008-04-24 21:16:35 -07:00
ehci-mem.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci-orion.c plat-orion: make ehci-orion available for all Orion families 2008-03-27 14:51:40 -04:00
ehci-pci.c USB: HCDs use the do_remote_wakeup flag 2008-04-24 21:16:53 -07:00
ehci-ppc-of.c USB: add ehci-ppc-of bus glue (device-tree aware) 2008-02-01 14:35:01 -08:00
ehci-ppc-soc.c USB: ehci minor SOC bus glue fixes 2008-04-24 21:16:35 -07:00
ehci-ps3.c USB: remove dev->power.power_state 2008-04-24 21:16:41 -07:00
ehci-q.c USB: ehci: qh_completions cleanup and bugfix 2008-04-24 21:16:53 -07:00
ehci-sched.c USB: minor ehci xITD simplifications 2008-04-24 21:16:38 -07:00
ehci.h usb: ehci should use u16 for isochronous intervals 2008-02-01 14:35:06 -08:00
isp116x-hcd.c USB: HCDs use the do_remote_wakeup flag 2008-04-24 21:16:53 -07:00
isp116x.h USB: isp116x: fix enumeration on boot 2008-03-04 14:57:43 -08:00
Kconfig USB: r8a66597-hcd: Add support for SH7366 USB host 2008-04-24 21:16:49 -07:00
Makefile USB: r8a66597-hcd: host controller driver for R8A66597 2007-07-12 16:29:45 -07:00
ohci-at91.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-au1xxx.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-dbg.c USB: remove dev->power.power_state 2008-04-24 21:16:41 -07:00
ohci-ep93xx.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-hcd.c USB: ohci: fix 2 timers to fire at jiffies + 1s 2008-04-02 15:06:09 -07:00
ohci-hub.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-lh7a404.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-mem.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-omap.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pci.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pnx4008.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pnx8550.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ppc-of.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ppc-soc.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ps3.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pxa27x.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-q.c USB: ohci: fix 2 timers to fire at jiffies + 1s 2008-04-02 15:06:09 -07:00
ohci-s3c2410.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-sa1111.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-sh.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-sm501.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ssb.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci.h USB: convert ohci debug files to use debugfs instead of sysfs 2008-02-01 14:34:52 -08:00
pci-quirks.c PCI: use dev_printk in quirk messages 2008-02-01 15:04:26 -08:00
pci-quirks.h [PATCH] USB: pci-quirks.c: proper prototypes 2006-04-14 11:12:20 -07:00
r8a66597-hcd.c USB: r8a66597-hcd: Add support for SH7366 USB host 2008-04-24 21:16:49 -07:00
r8a66597.h USB: r8a66597-hcd: Add support for SH7366 USB host 2008-04-24 21:16:49 -07:00
sl811_cs.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
sl811-hcd.c USB: remove dev->power.power_state 2008-04-24 21:16:41 -07:00
sl811.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
u132-hcd.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
uhci-debug.c USB: add urb->unlinked field 2007-10-12 14:55:19 -07:00
uhci-hcd.c USB: HCDs use the do_remote_wakeup flag 2008-04-24 21:16:53 -07:00
uhci-hcd.h USB: Eliminate urb->status usage! 2007-10-12 14:55:23 -07:00
uhci-hub.c UHCI: fix port resume problem 2007-03-09 19:52:23 -08:00
uhci-q.c USB: fix scheduling of Iso URBs in uhci-hcd 2007-10-25 12:18:43 -07:00