summaryrefslogtreecommitdiff
path: root/drivers/usb/cdns3
diff options
context:
space:
mode:
authorJayant Chowdhary <jchowdhary@google.com>2023-11-20 09:20:25 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-11-23 15:32:44 +0300
commit6acba0345b68772830582ca1ca369a2f45631275 (patch)
tree8d8c8e3df4f8d4714144c0890bd7bae62595192b /drivers/usb/cdns3
parentda324ffce34c521b239f319d4051260444a3eb4a (diff)
downloadlinux-6acba0345b68772830582ca1ca369a2f45631275.tar.xz
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>
Diffstat (limited to 'drivers/usb/cdns3')
0 files changed, 0 insertions, 0 deletions