diff mbox

[1/1,V2] media: usb: uvc: Fix incorrect timeout for Get Request

Message ID 1499669029-3412-1-git-send-email-jilin@nvidia.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jim Lin July 10, 2017, 6:43 a.m. UTC
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 <jilin@nvidia.com>
---
V2: Change patch description

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

Comments

Laurent Pinchart July 10, 2017, 7:47 p.m. UTC | #1
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 <jilin@nvidia.com>

The patch looks good to me, so

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

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 */
Jim Lin July 14, 2017, 2:11 a.m. UTC | #2
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 <jilin@nvidia.com>
>
> The patch looks good to me, so
>
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> 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
Laurent Pinchart July 14, 2017, 7:34 a.m. UTC | #3
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 <jilin@nvidia.com>
> > 
> > The patch looks good to me, so
> > 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > 
> > 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.
diff mbox

Patch

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 */