提交 5fc49d8b 编写于 作者: M Michael Grzeschik 提交者: Greg Kroah-Hartman

usb: gadget: uvc: only schedule stream in streaming state

This patch ensures that the video pump thread will only be scheduled if
the uvc is really in streaming state. This way the worker will not have
to run on an empty queue.
Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: NPaul Elder <paul.elder@ideasonboard.com>
Signed-off-by: NMichael Grzeschik <m.grzeschik@pengutronix.de>
Link: https://lore.kernel.org/r/20211017215017.18392-5-m.grzeschik@pengutronix.deSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 38db3716
...@@ -169,7 +169,8 @@ uvc_v4l2_qbuf(struct file *file, void *fh, struct v4l2_buffer *b) ...@@ -169,7 +169,8 @@ uvc_v4l2_qbuf(struct file *file, void *fh, struct v4l2_buffer *b)
if (ret < 0) if (ret < 0)
return ret; return ret;
schedule_work(&video->pump); if (uvc->state == UVC_STATE_STREAMING)
schedule_work(&video->pump);
return ret; return ret;
} }
......
...@@ -216,6 +216,7 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req) ...@@ -216,6 +216,7 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
struct uvc_request *ureq = req->context; struct uvc_request *ureq = req->context;
struct uvc_video *video = ureq->video; struct uvc_video *video = ureq->video;
struct uvc_video_queue *queue = &video->queue; struct uvc_video_queue *queue = &video->queue;
struct uvc_device *uvc = video->uvc;
unsigned long flags; unsigned long flags;
switch (req->status) { switch (req->status) {
...@@ -238,7 +239,8 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req) ...@@ -238,7 +239,8 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
list_add_tail(&req->list, &video->req_free); list_add_tail(&req->list, &video->req_free);
spin_unlock_irqrestore(&video->req_lock, flags); spin_unlock_irqrestore(&video->req_lock, flags);
schedule_work(&video->pump); if (uvc->state == UVC_STATE_STREAMING)
schedule_work(&video->pump);
} }
static int static int
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册