linux/drivers/usb/musb
Sergei Shtylyov a2fd814e6a USB: musb: fix urb_dequeue() method
The urb_dequeue() method forgets to unlink 'struct musb_qh' from the
control or bulk schedules when the URB being cancelled is the only
one queued to its endpoint.  That will cause musb_advance_schedule()
to block once it reaches 'struct musb_qh' with now empty URB list, so
URBs queued for other endpoints after the one being dequeued will not
be served.

Fix by unlinking the QH from the list except when it's already being
handled (typically by musb_giveback).  Since a QH with an empty URB
list is now supposed to be freed, do that.  And remove a now-useless
check from musb_advance_schedule().

[ dbrownell@users.sourceforge.net: update patch description,
  and fold in a dequeue() comment patch ]

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: Felipe Balbi <felipe.balbi@nokia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-27 14:40:51 -08:00
..
blackfin.c USB: musb: Kill some compiling warning in musb Blackfin part 2009-01-07 10:00:08 -08:00
blackfin.h USB: musb: add Blackfin driver to MUSB framework (v2) 2009-01-07 10:00:07 -08:00
cppi_dma.c USB: musb cppi dma fix 2009-01-27 16:15:35 -08:00
cppi_dma.h usb: musb_hdrc build fixes 2008-10-17 14:40:59 -07:00
davinci.c usb: musb: make Davinci *work* in mainline 2009-02-27 14:40:51 -08:00
davinci.h USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00
Kconfig USB: musb: Kconfig fix 2009-01-27 16:15:35 -08:00
Makefile USB: musb: add Blackfin Kconfig options and Makefile 2009-01-07 10:00:08 -08:00
musb_core.c usb: musb: make Davinci *work* in mainline 2009-02-27 14:40:51 -08:00
musb_core.h USB: musb: add Blackfin specific configuration to MUSB 2009-01-07 10:00:07 -08:00
musb_debug.h usb: musb: fix debug global variable name 2008-11-13 14:45:01 -08:00
musb_dma.h USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00
musb_gadget_ep0.c usb: musb: do not mess up count number and CSR0 register value 2008-10-17 14:40:59 -07:00
musb_gadget.c USB: musb: be careful with 64K+ transfer lengths (gadget side) 2009-02-27 14:40:51 -08:00
musb_gadget.h USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00
musb_host.c USB: musb: fix urb_dequeue() method 2009-02-27 14:40:51 -08:00
musb_host.h usb: musb: fix BULK request on different available endpoints 2008-11-13 14:45:01 -08:00
musb_io.h USB: musb: Blackfin provides read/write I/O accessor in header files 2009-01-07 10:00:08 -08:00
musb_regs.h USB: musb: add Blackfin specific configuration to MUSB 2009-01-07 10:00:07 -08:00
musb_virthub.c USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00
musbhsdma.c USB: musb: enable low level DMA operation for Blackfin 2009-01-07 10:00:07 -08:00
musbhsdma.h USB: musb: enable low level DMA operation for Blackfin 2009-01-07 10:00:07 -08:00
omap2430.c USB: musb: minor locking fix 2009-01-07 09:59:59 -08:00
omap2430.h usb: musb: fix include path 2008-09-23 13:58:08 -07:00
tusb6010_omap.c USB: musb: tusb6010 buildfix 2009-01-27 16:15:33 -08:00
tusb6010.c USB: musb: sysfs mode updates 2009-01-07 09:59:58 -08:00
tusb6010.h usb: musb: pass configuration specifics via pdata 2008-08-13 17:33:01 -07:00