Hi Laurent, On 18/09/18 11:35, Laurent Pinchart wrote: > When USB requests for video data fail to be submitted, the driver > signals a problem to the host by halting the video streaming endpoint. > This is only valid in bulk mode, as isochronous transfers have no > handshake phase and can't thus report a stall. The usb_ep_set_halt() > call returns an error when using isochronous endpoints, which we happily > ignore, but some UDCs complain in the kernel log. Fix this by only > trying to halt the endpoint in bulk mode. > Agreed, > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Reviewed-by: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx> > --- > drivers/usb/gadget/function/uvc_video.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c > index a95c8e2364ed..2c9821ec836e 100644 > --- a/drivers/usb/gadget/function/uvc_video.c > +++ b/drivers/usb/gadget/function/uvc_video.c > @@ -132,7 +132,9 @@ static int uvcg_video_ep_queue(struct uvc_video *video, struct usb_request *req) > ret = usb_ep_queue(video->ep, req, GFP_ATOMIC); > if (ret < 0) { > printk(KERN_INFO "Failed to queue request (%d).\n", ret); > - usb_ep_set_halt(video->ep); > + /* Isochronous endpoints can't be halted. */ > + if (usb_endpoint_xfer_bulk(video->ep->desc)) > + usb_ep_set_halt(video->ep); > } > > return ret; > -- Regards -- Kieran