usb:gadget:uvc Do not use worker thread to pump isoc usb requests
When we use an async work queue to perform the function of pumping usb requests to the usb controller, it is possible that amongst other factors, thread scheduling affects at what cadence we're able to pump requests. This could mean isoc usb requests miss their uframes - resulting in video stream flickers on the host device. To avoid this, we make the async_wq thread only produce isoc usb_requests with uvc buffers encoded into them. The process of queueing to the endpoint is done by the uvc_video_complete() handler. In case no usb_requests are ready with encoded information, we just queue a zero length request to the endpoint from the complete handler. For bulk endpoints the async_wq thread still queues usb requests to the endpoint. Signed-off-by:Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by:
Jayant Chowdhary <jchowdhary@google.com> Suggested-by:
Avichal Rakesh <arakesh@google.com> Suggested-by:
Alan Stern <stern@rowland.harvard.edu> Link: https://lore.kernel.org/r/20231120062026.3759463-1-jchowdhary@google.com Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Loading
-
mentioned in commit 2ff73822
-
mentioned in commit e7170572
-
mentioned in commit 6380a43d
-
mentioned in commit aabd368e
-
mentioned in commit 6fe6e2f7
-
mentioned in commit 03d375b2
-
mentioned in commit 60a94adf
-
mentioned in commit a73b2fce
-
mentioned in commit d9d01f00
-
mentioned in commit 79bdd9cd
-
mentioned in commit 1bbb5a3a
-
mentioned in commit 5494c933
-
mentioned in commit d6f794bc
-
mentioned in commit d8fc90f7
-
mentioned in commit 96199e50
-
mentioned in commit 6f8ac662
-
mentioned in commit 865d0a22
-
mentioned in commit 2a9ec0ce
-
mentioned in commit c9395ddb
-
mentioned in commit cf1268f6
-
mentioned in commit bd77c97c
-
mentioned in commit 427210e4
Please sign in to comment