eeb1b2a4a9
This patch fixes one infinite hang of bulk IN transfer in double buffer case, the hang can be observed easily by test #6 of usbtest if musb is configured as g_zero and fifo mode 3 is taken to enable double fifo. In fact, the patch only removes the check for non-empty fifo before loading data from new request into fifo since the check is not correct: -in double buffer case, fifo may accommodate more than one packet, even though it has contained one packet already and is non-empty -since last DMA is completed before calling musb_g_tx, it is sure that fifo may accommodate at least one packet Without applying the patch, new requst enqueued from .complte may not have a chance to be loaded into fifo, then will never be completed and cause infinite hangs. With the patch, on my beagle B5, test#6(queued bulk in) can be passed and test result may go beyond 33Mbyte/s if musb is configured as g_zero and fifo mode 3 is taken, follows the test command: #testusb -D DEV_NAME -c 1024 -t 6 -s 32768 -g 8 [1] [1], -source of testusb : tools/usb/testusb.c under linux kernel; Signed-off-by: Ming Lei <tom.leiming@gmail.com> Acked-by: Anand Gadiyar <gadiyar@ti.com> Cc: David Brownell <dbrownell@users.sourceforge.net> Cc: Anand Gadiyar <gadiyar@ti.com> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
||
---|---|---|
.. | ||
blackfin.c | ||
blackfin.h | ||
cppi_dma.c | ||
cppi_dma.h | ||
davinci.c | ||
davinci.h | ||
Kconfig | ||
Makefile | ||
musb_core.c | ||
musb_core.h | ||
musb_debug.h | ||
musb_debugfs.c | ||
musb_dma.h | ||
musb_gadget_ep0.c | ||
musb_gadget.c | ||
musb_gadget.h | ||
musb_host.c | ||
musb_host.h | ||
musb_io.h | ||
musb_regs.h | ||
musb_virthub.c | ||
musbhsdma.c | ||
musbhsdma.h | ||
omap2430.c | ||
omap2430.h | ||
tusb6010_omap.c | ||
tusb6010.c | ||
tusb6010.h |