usb: gadget: uvc: use on returned header len in video_encode_isoc_sg
authorMichael Grzeschik <m.grzeschik@pengutronix.de>
Fri, 22 Oct 2021 09:32:22 +0000 (11:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Oct 2021 07:20:08 +0000 (09:20 +0200)
The function uvc_video_encode_header function returns the number of
bytes used for the header. We change the video_encode_isoc_sg function
to use the returned header_len rather than UVCG_REQUEST_HEADER_LEN and
make the encode function more flexible.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Link: https://lore.kernel.org/r/20211022093223.26493-1-m.grzeschik@pengutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/uvc_video.c

index 7bc865e..2a9ab54 100644 (file)
@@ -104,22 +104,22 @@ uvc_video_encode_isoc_sg(struct usb_request *req, struct uvc_video *video,
        unsigned int len = video->req_size;
        unsigned int sg_left, part = 0;
        unsigned int i;
-       int ret;
+       int header_len;
 
        sg = ureq->sgt.sgl;
        sg_init_table(sg, ureq->sgt.nents);
 
        /* Init the header. */
-       ret = uvc_video_encode_header(video, buf, ureq->header,
+       header_len = uvc_video_encode_header(video, buf, ureq->header,
                                      video->req_size);
-       sg_set_buf(sg, ureq->header, UVCG_REQUEST_HEADER_LEN);
-       len -= ret;
+       sg_set_buf(sg, ureq->header, header_len);
+       len -= header_len;
 
        if (pending <= len)
                len = pending;
 
        req->length = (len == pending) ?
-               len + UVCG_REQUEST_HEADER_LEN : video->req_size;
+               len + header_len : video->req_size;
 
        /* Init the pending sgs with payload */
        sg = sg_next(sg);
@@ -148,7 +148,7 @@ uvc_video_encode_isoc_sg(struct usb_request *req, struct uvc_video *video,
        req->num_sgs = i + 1;
 
        req->length -= len;
-       video->queue.buf_used += req->length - UVCG_REQUEST_HEADER_LEN;
+       video->queue.buf_used += req->length - header_len;
 
        if (buf->bytesused == video->queue.buf_used || !buf->sg) {
                video->queue.buf_used = 0;