Re: Use of USB_CTRL_SET_TIMEOUT & USB_CTRL_GET_TIMEOUT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Muni Sekhar <munisekharrms@xxxxxxxxx> writes:
>>>>> #define USB_CTRL_GET_TIMEOUT    5000
>>>>>
>>>>> #define USB_CTRL_SET_TIMEOUT    5000
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Does the above mentioned timeouts will vary based on the packet length
>>>>> of control transfers (8, 16, 32 or 64 bytes)?
>>>>>
>>>>>
>>>>>
>>>>> I do have a USB Bluetooth device and it exposes the control endpoint
>>>>> for sending HCI commands.
>>>>>
>>>>>
>>>>>
>>>>> I’m not sure what will be the good value for the
>>>>> usb_control_msg()timeout for sending HCI commands, will it be safe to
>>>>> use USB_CTRL_SET_TIMEOUT?
>>>>
>>>> why wouldn't it? If your device doesn't respond to a control message in
>>>> 5 seconds, then you should really get that FW fixed or change your
>>>> device to something that works. 5 seconds to transfer a few bytes is a
>>>> really long time. Even for low-speed pipes (1.5Mbps), you can transfer
>>>> 960 kiB in 5 seconds if you saturate the bus. How big are your HCI
>>>> commands?
>>>
>>> HCI Command Packets with up to maximum of 255 bytes of data.
>>
>> then 5s is more than enough for you ;-)
>
> What usually triggers the usb_control_msg() call to return? Is it just
> an acknowledgement from the device that the command has been received?

No, it's completion of the entire thing. A control message is 2 or 3
phases. It goes like below (an oversimplification of reality):

2-phases
========

(timer starts)
-> Host sends SETUP token
-> Host sends 8-byte control
-> Peripheral sends ACK
-> Host sends STATUS token
-> Peripheral sends ACK
(timer ends)

3-phases
========

(timer starts)
-> Host sends SETUP
-> Host sends 8-byte control
-> Peripheral sends ACK
-> Host or Peripheral sends DATA bytes
-> Host or Peripheral sends ACK
-> Host sends STATUS token
-> Peripheral sends ACK
(timer ends)

As stated, this is an oversimplification of reality, but it's enough to
illustrate how this works.

-- 
balbi

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux