Re: [RFC PATCH 0/1] media: uvcvideo: reset interface on bulk stream stop

From: Henry Lin

Date: Tue May 26 2026 - 06:04:50 EST


Hi Alan,

> How does it send this request? By calling usb_clear_halt()? Or some
> other way?

Yes, it is using usb_clear_halt(). In uvc_video_stop_streaming(), the
single-altsetting bulk path builds the bulk pipe from
stream->header.bEndpointAddress and then calls:

usb_clear_halt(stream->dev->udev, pipe);

> Are you certain about this? The usb_clear_halt() routine has reset
> the endpoint state, including the sequence number, ever since commit
> 3444b26afa14 ("USB: add reset endpoint operations") was added in 2009.
>
> If uvcvideo isn't using usb_clear_halt(), the simplest solution might be
> to make it do so.

Michal pointed me to this xHCI fix:

25e531b422dc ("usb: xhci: Make usb_host_endpoint.hcpriv
survive endpoint_disable()")

I tested that change on the affected setup, and it fixes the issue.
With that patch applied, repeated stop/start cycles complete
successfully, and I no longer see:

uvcvideo: Non-zero status (-71) in video completion handler.

So my previous conclusion was incomplete. uvcvideo is already calling
usb_clear_halt(); the issue appears to be covered by the xHCI fix
above, and the uvcvideo workaround in this RFC is not needed.

Thanks,
Henry