From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Hans Yang <hansy@nvidia.com>
Cc: mchehab@kernel.org, linux-media@vger.kernel.org,
linux-kernel@vger.kernel.org,
Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Subject: Re: [PATCH resend] [media] uvcvideo: zero seq number when disabling stream
Date: Mon, 16 Oct 2017 18:08:12 +0300 [thread overview]
Message-ID: <2456831.iuhP316MQr@avalon> (raw)
In-Reply-To: <1505456871-12680-1-git-send-email-hansy@nvidia.com>
Hi Hans,
(CC'ing Guennadi Liakhovetski)
Thank you for the patch.
On Friday, 15 September 2017 09:27:51 EEST Hans Yang wrote:
> For bulk-based devices, when disabling the video stream,
> in addition to issue CLEAR_FEATURE(HALT), it is better to set
> alternate setting 0 as well or the sequnce number in host
> side will probably not reset to zero.
The USB 2.0 specificatin states in the description of the SET_INTERFACE
request that "If a device only supports a default setting for the specified
interface, then a STALL may be returned in the Status stage of the request".
The Linux implementation of usb_set_interface() deals with this by handling
STALL conditions and manually clearing HALT for all endpoints in the
interface, but I'm still concerned that this change could break existing bulk-
based cameras. Do you know what other operating systems do when disabling the
stream on bulk cameras ? According to a comment in the driver Windows calls
CLEAR_FEATURE(HALT), but the situation might have changed since that was
tested.
Guennadi, how do your bulk-based cameras handle this ?
> Then in next time video stream start, the device will expect
> host starts packet from 0 sequence number but host actually
> continue the sequence number from last transaction and this
> causes transaction errors.
Do you mean the DATA0/DATA1 toggle ? Why does the host continue toggling the
PID from the last transation ? The usb_clear_halt() function calls
usb_reset_endpoint() which should reset the DATA PID toggle.
> This commit fixes this by adding set alternate setting 0 back
> as what isoch-based devices do.
>
> Below error message will also be eliminated for some devices:
> uvcvideo: Non-zero status (-71) in video completion handler.
>
> Signed-off-by: Hans Yang <hansy@nvidia.com>
> ---
> drivers/media/usb/uvc/uvc_video.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_video.c
> b/drivers/media/usb/uvc/uvc_video.c index fb86d6af398d..ad80c2a6da6a 100644
> --- a/drivers/media/usb/uvc/uvc_video.c
> +++ b/drivers/media/usb/uvc/uvc_video.c
> @@ -1862,10 +1862,9 @@ int uvc_video_enable(struct uvc_streaming *stream,
> int enable)
>
> if (!enable) {
> uvc_uninit_video(stream, 1);
> - if (stream->intf->num_altsetting > 1) {
> - usb_set_interface(stream->dev->udev,
> + usb_set_interface(stream->dev->udev,
> stream->intfnum, 0);
> - } else {
> + if (stream->intf->num_altsetting == 1) {
> /* UVC doesn't specify how to inform a bulk-based device
> * when the video stream is stopped. Windows sends a
> * CLEAR_FEATURE(HALT) request to the video streaming
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2017-10-16 15:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-15 6:27 [PATCH resend] [media] uvcvideo: zero seq number when disabling stream Hans Yang
2017-10-16 15:08 ` Laurent Pinchart [this message]
2017-10-18 8:52 ` Guennadi Liakhovetski
2017-10-19 7:23 ` Hans Yang
2017-10-19 12:03 ` Laurent Pinchart
2018-08-06 22:12 ` Laurent Pinchart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2456831.iuhP316MQr@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=g.liakhovetski@gmx.de \
--cc=hansy@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.