Message ID | 20240403-uvc_request_length_by_interval-v4-1-ca22f334226e@pengutronix.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | usb: gadget: uvc: effectively fill the udc isoc pipeline with available video buffers | expand |
Hi Michael, Thank you for the patch. On Tue, Aug 13, 2024 at 11:09:25AM +0200, Michael Grzeschik wrote: > Since the uvc gadget is depending on the completion handler to > properly enqueue new data, we have to ensure that the requeue mechanism > is always working. To be safe we always create an interrupt > on zero length requests. What do you mean "to be safe" ? Either there's an issue, and then the commit message should describe it, or there's no issue, and this isn't needed. > Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> > > --- > v3 -> v4: - > v1 -> v3: new patch > --- > drivers/usb/gadget/function/uvc_video.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c > index d41f5f31dadd5..03bff39cd4902 100644 > --- a/drivers/usb/gadget/function/uvc_video.c > +++ b/drivers/usb/gadget/function/uvc_video.c > @@ -303,6 +303,7 @@ static int uvcg_video_usb_req_queue(struct uvc_video *video, > * between latency and interrupt load. > */ > if (list_empty(&video->req_free) || ureq->last_buf || > + !req->length || > !(video->req_int_count % > DIV_ROUND_UP(video->uvc_num_requests, 4))) { > video->req_int_count = 0;
diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c index d41f5f31dadd5..03bff39cd4902 100644 --- a/drivers/usb/gadget/function/uvc_video.c +++ b/drivers/usb/gadget/function/uvc_video.c @@ -303,6 +303,7 @@ static int uvcg_video_usb_req_queue(struct uvc_video *video, * between latency and interrupt load. */ if (list_empty(&video->req_free) || ureq->last_buf || + !req->length || !(video->req_int_count % DIV_ROUND_UP(video->uvc_num_requests, 4))) { video->req_int_count = 0;
Since the uvc gadget is depending on the completion handler to properly enqueue new data, we have to ensure that the requeue mechanism is always working. To be safe we always create an interrupt on zero length requests. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> --- v3 -> v4: - v1 -> v3: new patch --- drivers/usb/gadget/function/uvc_video.c | 1 + 1 file changed, 1 insertion(+)