author | Ajay Kumar Gupta <ajay.gupta@ti.com> | |
Thu, 25 Nov 2010 12:55:47 +0000 (18:25 +0530) | ||
committer | Vaibhav Hiremath <hvaibhav@ti.com> | |
Mon, 23 Jan 2012 19:14:08 +0000 (00:44 +0530) | ||
commit | cf41b6504ec187995900edf1d42a2b9317c9f08a | |
tree | e4527d67f5223b00960dc7ad740e4660c4b1b7c5 | tree | snapshot (tar.xz tar.gz zip) |
parent | 1f93f2761ea4564c7a562db37436fd210595f2dd | commit | diff |
musb: Add workqueue for URB giveback
Current musb host driver does the giveback of completed urb first and
then start the next request. This is significantly affecting the streaming
from an USB camera wherein we observe huge delay between the two IN tokens
from musb host. This is due to the fact that UVC driver is doing decoding
and further processing in giveback context.
The patch tries to defer the giveback part to a workqueue and continues
with the start of new request in completion path.
the giveback workqueue has only succesfull completed URBs, it is safe to
giveback URBs without taking musb spinlocks.
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Sriramakrishnan A G <srk@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Current musb host driver does the giveback of completed urb first and
then start the next request. This is significantly affecting the streaming
from an USB camera wherein we observe huge delay between the two IN tokens
from musb host. This is due to the fact that UVC driver is doing decoding
and further processing in giveback context.
The patch tries to defer the giveback part to a workqueue and continues
with the start of new request in completion path.
the giveback workqueue has only succesfull completed URBs, it is safe to
giveback URBs without taking musb spinlocks.
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Sriramakrishnan A G <srk@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
drivers/usb/musb/musb_core.c | diff | blob | history | |
drivers/usb/musb/musb_core.h | diff | blob | history | |
drivers/usb/musb/musb_host.c | diff | blob | history | |
include/linux/usb.h | diff | blob | history |