linux/drivers/usb/host
Alan Stern ba516de332 USB: EHCI: check for STALL before other errors
This patch (as1257) revises the way ehci-hcd detects STALLs.  The
logic is a little peculiar because there's no hardware status bit
specifically meant to indicate a STALL.  You just have to guess that a
STALL was received if the BABBLE bit (which is fatal) isn't set and
the transfer stopped before all its retries were used up.

The existing code doesn't do this properly, because it tests for MMF
(Missed MicroFrame) and DBE (Data Buffer Error) before testing the
retry counter.  Thus, if a transaction gets either MMF or DBE the
corresponding flag is set and the transaction is retried.  If the
second attempt receives a STALL then -EPIPE is the correct return
value.  But the existing code would see the MMF or DBE flag instead
and return -EPROTO, -ENOSR, or -ECOMM.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-07-12 15:16:39 -07:00
..
whci USB: whci-hcd: check return value of usb_hcd_link_urb_to_ep() 2009-04-17 10:50:27 -07:00
ehci-au1xxx.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-dbg.c USB: clean up redundant tests on unsigned 2009-01-07 09:59:49 -08:00
ehci-fsl.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-fsl.h
ehci-hcd.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-hub.c USB: EHCI: create sysfs companion files directly in the controller device 2009-06-15 21:44:43 -07:00
ehci-ixp4xx.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-mem.c USB: EHCI: slow down ITD reuse 2009-02-27 14:40:50 -08:00
ehci-orion.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-pci.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-ppc-of.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-ps3.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-q.c USB: EHCI: check for STALL before other errors 2009-07-12 15:16:39 -07:00
ehci-sched.c USB: EHCI: stagger frames for interrupt transfers 2009-06-15 21:44:46 -07:00
ehci.h USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
fhci-dbg.c USB: FHCI: use the new usb debugfs directory 2009-06-15 21:44:43 -07:00
fhci-hcd.c USB: FHCI: use dev_name() in place of bus_id. 2009-03-24 16:38:23 -07:00
fhci-hub.c USB: Driver for Freescale QUICC Engine USB Host Controller 2009-01-27 16:15:38 -08:00
fhci-mem.c USB: Driver for Freescale QUICC Engine USB Host Controller 2009-01-27 16:15:38 -08:00
fhci-q.c USB: Driver for Freescale QUICC Engine USB Host Controller 2009-01-27 16:15:38 -08:00
fhci-sched.c USB: fhci: mutually exclusive port_status 2009-07-12 15:16:36 -07:00
fhci-tds.c USB: Driver for Freescale QUICC Engine USB Host Controller 2009-01-27 16:15:38 -08:00
fhci.h USB: Driver for Freescale QUICC Engine USB Host Controller 2009-01-27 16:15:38 -08:00
hwa-hc.c wusb: hwa-hc: Drop unused pci_suspend/resume hooks. 2009-06-15 21:44:44 -07:00
isp116x-hcd.c USB: make transfer_buffer_lengths in struct urb field u32 2009-03-24 16:20:36 -07:00
isp116x.h USB: add missing KERN_* constants to printks 2009-03-24 16:20:30 -07:00
isp1760-hcd.c USB: isp1760: urb_dequeue doesn't always find the urbs 2009-05-28 13:54:43 -07:00
isp1760-hcd.h USB: Make the isp1760_register function prototype more generic 2009-03-24 16:20:31 -07:00
isp1760-if.c USB: isp1760: use __devexit_p() for remove function 2009-07-12 15:16:36 -07:00
Kconfig USB: buildfix ppc randconfig 2009-07-12 15:16:37 -07:00
Makefile USB: xhci: Add Makefile, MAINTAINERS, and Kconfig entries. 2009-06-15 21:44:51 -07:00
ohci-at91.c [ARM] 5446/1: ohci-at91: Limit vbus_pin assignment to the size of the array 2009-04-08 20:36:18 +01:00
ohci-au1xxx.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-dbg.c USB: OHCI: use the ohci structure directly in debugfs files. 2009-06-15 21:44:43 -07:00
ohci-ep93xx.c [ARM] 5526/1: ep93xx: usb driver cleanup 2009-05-29 20:16:29 +01:00
ohci-hcd.c USB: OHCI: use the new usb debugfs directory 2009-06-15 21:44:43 -07:00
ohci-hub.c USB: OHCI: fix endless polling behavior 2008-10-17 14:41:04 -07:00
ohci-lh7a404.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-mem.c
ohci-omap.c [ARM] omap: ensure OMAP drivers pass a struct device to clk_get() 2009-01-24 11:41:16 +00:00
ohci-pci.c USB: new flag for resume-from-hibernation 2009-06-15 21:44:44 -07:00
ohci-pnx4008.c USB: Convert ohci-pnx4008 to a new-style i2c driver 2009-01-07 09:59:53 -08:00
ohci-pnx8550.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-ppc-of.c USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3] 2009-01-07 09:59:52 -08:00
ohci-ppc-soc.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-ps3.c usb/ps3: Add missing annotations 2009-06-16 14:17:32 +10:00
ohci-pxa27x.c [ARM] pxa: don't pass a consumer clock name for devices with unique clocks 2008-11-27 12:38:23 +00:00
ohci-q.c USB: quirk PLL power down mode 2008-08-13 17:32:58 -07:00
ohci-s3c2410.c USB: S3C: Move usb-control.h to platform include 2009-03-24 16:20:45 -07:00
ohci-sa1111.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-sh.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-sm501.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-ssb.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
ohci-tmio.c usb: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-07 09:59:52 -08:00
ohci.h usb: remove code associated with !CONFIG_PPC_MERGE 2008-10-17 14:40:57 -07:00
oxu210hp-hcd.c USB: host: fix sparse warning: Using plain integer as NULL pointer 2009-03-24 16:20:44 -07:00
oxu210hp.h USB: replace uses of __constant_{endian} 2009-03-24 16:20:33 -07:00
pci-quirks.c USB: xhci: BIOS handoff and HW initialization. 2009-06-15 21:44:48 -07:00
pci-quirks.h
r8a66597-hcd.c USB: r8a66597-hcd: use platform_data instead of module_param 2009-06-15 21:44:46 -07:00
r8a66597.h USB: r8a66597-hcd: use platform_data instead of module_param 2009-06-15 21:44:46 -07:00
sl811-hcd.c USB: make transfer_buffer_lengths in struct urb field u32 2009-03-24 16:20:36 -07:00
sl811.h Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
sl811_cs.c pcmcia: encapsulate ioaddr_t 2008-08-29 09:43:14 +02:00
u132-hcd.c USB: automatically enable RHSC interrupts 2008-08-21 10:26:38 -07:00
uhci-debug.c USB: uhci: don't use pseudo negative values 2009-03-24 16:20:36 -07:00
uhci-hcd.c USB: new flag for resume-from-hibernation 2009-06-15 21:44:44 -07:00
uhci-hcd.h USB: replace uses of __constant_{endian} 2009-03-24 16:20:33 -07:00
uhci-hub.c USB: uhci: mark root_hub_hub_des[] as const 2008-07-21 15:16:30 -07:00
uhci-q.c USB: UHCI queue: use usb_endpoint_type() 2009-06-15 21:44:42 -07:00
xhci-dbg.c USB: xhci: Remove packed attribute from structures. 2009-06-15 21:44:51 -07:00
xhci-ext-caps.h USB: xhci: Support xHCI host controllers and USB 3.0 devices. 2009-06-15 21:44:48 -07:00
xhci-hcd.c USB: xhci: Respect critical sections. 2009-06-15 21:44:51 -07:00
xhci-hub.c USB: xhci: Root hub support. 2009-06-15 21:44:48 -07:00
xhci-mem.c USB: xhci: Respect critical sections. 2009-06-15 21:44:51 -07:00
xhci-pci.c USB: xhci: Bandwidth allocation support 2009-06-15 21:44:49 -07:00
xhci-ring.c usb; xhci: Fix TRB offset calculations. 2009-06-15 21:44:51 -07:00
xhci.h USB: xhci: Respect critical sections. 2009-06-15 21:44:51 -07:00