summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Grzeschik <m.grzeschik@pengutronix.de>2024-02-14 02:37:54 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-02-17 19:08:45 +0300
commitab9ffa51d5a2f3145839ca59354b3f74d18f7e85 (patch)
tree549480cf25c5cae3e8a13b646630d40f5f4da8cd
parent58da4e57cb2980c9405575c8de937ebe4ed02202 (diff)
downloadlinux-ab9ffa51d5a2f3145839ca59354b3f74d18f7e85.tar.xz
usb: gadget: uvc: dont drop frames if zero length packages are late
If the request that was missed was zero bytes long, it is likely that the overall transferred frame was not affected. So don't flag the frame incomplete in that case. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Link: https://lore.kernel.org/r/20240214-uvc-error-tag-v1-1-37659a3877fe@pengutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/gadget/function/uvc_video.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
index ff7c1fa5c48f..d677d7daa187 100644
--- a/drivers/usb/gadget/function/uvc_video.c
+++ b/drivers/usb/gadget/function/uvc_video.c
@@ -398,7 +398,8 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
case -EXDEV:
uvcg_dbg(&video->uvc->func, "VS request missed xfer.\n");
- queue->flags |= UVC_QUEUE_DROP_INCOMPLETE;
+ if (req->length != 0)
+ queue->flags |= UVC_QUEUE_DROP_INCOMPLETE;
break;
case -ESHUTDOWN: /* disconnect from host. */