2017-07-10 06:44:26

by Jim Lin

[permalink] [raw]
Subject: [PATCH 1/1 V2] media: usb: uvc: Fix incorrect timeout for Get Request

Section 9.2.6.4 of USB 2.0/3.x specification describes that
"device must be able to return the first data packet to host within
500 ms of receipt of the request. For subsequent data packet, if any,
the device must be able to return them within 500 ms".

This is to fix incorrect timeout and change it from 300 ms to 500 ms
to meet the timing specified by specification for Get Request.

Signed-off-by: Jim Lin <[email protected]>
---
V2: Change patch description

drivers/media/usb/uvc/uvcvideo.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index 15e415e..296b69b 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -166,7 +166,7 @@
/* Maximum status buffer size in bytes of interrupt URB. */
#define UVC_MAX_STATUS_SIZE 16

-#define UVC_CTRL_CONTROL_TIMEOUT 300
+#define UVC_CTRL_CONTROL_TIMEOUT 500
#define UVC_CTRL_STREAMING_TIMEOUT 5000

/* Maximum allowed number of control mappings per device */
--
2.7.4


2017-07-10 19:47:27

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH 1/1 V2] media: usb: uvc: Fix incorrect timeout for Get Request

Hi Jim,

Thank you for the patch.

On Monday 10 Jul 2017 14:43:49 Jim Lin wrote:
> Section 9.2.6.4 of USB 2.0/3.x specification describes that
> "device must be able to return the first data packet to host within
> 500 ms of receipt of the request. For subsequent data packet, if any,
> the device must be able to return them within 500 ms".
>
> This is to fix incorrect timeout and change it from 300 ms to 500 ms
> to meet the timing specified by specification for Get Request.
>
> Signed-off-by: Jim Lin <[email protected]>

The patch looks good to me, so

Reviewed-by: Laurent Pinchart <[email protected]>

but I'm curious, have you noticed issues with some devices in practice ?

> ---
> V2: Change patch description
>
> drivers/media/usb/uvc/uvcvideo.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/usb/uvc/uvcvideo.h
> b/drivers/media/usb/uvc/uvcvideo.h index 15e415e..296b69b 100644
> --- a/drivers/media/usb/uvc/uvcvideo.h
> +++ b/drivers/media/usb/uvc/uvcvideo.h
> @@ -166,7 +166,7 @@
> /* Maximum status buffer size in bytes of interrupt URB. */
> #define UVC_MAX_STATUS_SIZE 16
>
> -#define UVC_CTRL_CONTROL_TIMEOUT 300
> +#define UVC_CTRL_CONTROL_TIMEOUT 500
> #define UVC_CTRL_STREAMING_TIMEOUT 5000
>
> /* Maximum allowed number of control mappings per device */

--
Regards,

Laurent Pinchart

2017-07-14 02:11:57

by Jim Lin

[permalink] [raw]
Subject: Re: [PATCH 1/1 V2] media: usb: uvc: Fix incorrect timeout for Get Request

On 2017年07月11日 03:47, Laurent Pinchart wrote:
> Hi Jim,
>
> Thank you for the patch.
>
> On Monday 10 Jul 2017 14:43:49 Jim Lin wrote:
>> Section 9.2.6.4 of USB 2.0/3.x specification describes that
>> "device must be able to return the first data packet to host within
>> 500 ms of receipt of the request. For subsequent data packet, if any,
>> the device must be able to return them within 500 ms".
>>
>> This is to fix incorrect timeout and change it from 300 ms to 500 ms
>> to meet the timing specified by specification for Get Request.
>>
>> Signed-off-by: Jim Lin <[email protected]>
>
> The patch looks good to me, so
>
> Reviewed-by: Laurent Pinchart <[email protected]>
>
> but I'm curious, have you noticed issues with some devices in practice ?
>

Sometimes this device takes about 360 ms to respond.

usb 1-2: new high-speed USB device number 16
usb 1-2: New USB device found, idVendor=045e, idProduct=0772
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-2: Product: Microsoft�® LifeCam Studio(TM)
usb 1-2: Manufacturer: Microsoft
:
uvcvideo: Failed to query (GET_DEF) UVC control 2 on unit 4: -110 (exp. 2).

And it will be working well with correct timeout value.

--nvpublic

2017-07-14 07:34:21

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH 1/1 V2] media: usb: uvc: Fix incorrect timeout for Get Request

Hi Jim,

On Friday 14 Jul 2017 09:58:11 Jim Lin wrote:
> On 2017年07月11日 03:47, Laurent Pinchart wrote:
> > On Monday 10 Jul 2017 14:43:49 Jim Lin wrote:
> >> Section 9.2.6.4 of USB 2.0/3.x specification describes that
> >> "device must be able to return the first data packet to host within
> >> 500 ms of receipt of the request. For subsequent data packet, if any,
> >> the device must be able to return them within 500 ms".
> >>
> >> This is to fix incorrect timeout and change it from 300 ms to 500 ms
> >> to meet the timing specified by specification for Get Request.
> >>
> >> Signed-off-by: Jim Lin <[email protected]>
> >
> > The patch looks good to me, so
> >
> > Reviewed-by: Laurent Pinchart <[email protected]>
> >
> > but I'm curious, have you noticed issues with some devices in practice ?
>
> Sometimes this device takes about 360 ms to respond.
>
> usb 1-2: new high-speed USB device number 16
> usb 1-2: New USB device found, idVendor=045e, idProduct=0772
> usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> usb 1-2: Product: Microsoft�® LifeCam Studio(TM)
> usb 1-2: Manufacturer: Microsoft
>
> uvcvideo: Failed to query (GET_DEF) UVC control 2 on unit 4: -110 (exp. 2).
>
> And it will be working well with correct timeout value.

Thank you for the information.

I've applied the patch to my tree and will push it to v4.14.

--
Regards,

Laurent Pinchart