usb: gadget: uvc: fix dropped frame after missed isoc
authorDan Vacura <w36195@motorola.com>
Tue, 18 Oct 2022 21:50:37 +0000 (16:50 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 22 Oct 2022 10:30:34 +0000 (12:30 +0200)
With the re-use of the previous completion status in 0d1c407b1a749
("usb: dwc3: gadget: Return proper request status") it could be possible
that the next frame would also get dropped if the current frame has a
missed isoc error. Ensure that an interrupt is requested for the start
of a new frame.

Fixes: fc78941d8169 ("usb: gadget: uvc: decrease the interrupt load to a quarter")
Cc: <stable@vger.kernel.org>
Signed-off-by: Dan Vacura <w36195@motorola.com>
Link: https://lore.kernel.org/r/20221018215044.765044-2-w36195@motorola.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/uvc_video.c

index bb037fcc90e69eeeee5ca930935c57f7ab7e614e..323977716f5a49c95fcd1e91981946dd1307c97b 100644 (file)
@@ -431,7 +431,8 @@ static void uvcg_video_pump(struct work_struct *work)
 
                /* Endpoint now owns the request */
                req = NULL;
-               video->req_int_count++;
+               if (buf->state != UVC_BUF_STATE_DONE)
+                       video->req_int_count++;
        }
 
        if (!req)