Skip to content

Commit

Permalink
usb: gadget: uvc: use on returned header len in video_encode_isoc_sg
Browse files Browse the repository at this point in the history
commit f262ce6 upstream.

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
Cc: Dan Vacura <w36195@motorola.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
mgrzeschik authored and gregkh committed Oct 29, 2022
1 parent d80db2f commit 2f54ce7
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions drivers/usb/gadget/function/uvc_video.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 2f54ce7

Please sign in to comment.