Re: Data toggles not reset on "set configuration" for ports handled by "xhci_hcd" driver

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

 



On 28.8.2020 18.55, Alan Stern wrote:
> On Fri, Aug 28, 2020 at 04:10:47PM +0300, Mathias Nyman wrote:
>>>> Thanks, that seems to work! (Judging by the absence of my original
>>>> issue with the xum1541 adapter; I haven't checked what's actually
>>>> happening on the bus).
>>>>
>>>> Martin
>>>>
>>>
>>> Great, thanks.
>>>
>>> Now this test code needs to be cleaned up a turned into a real patch
>>
>> Can you test one more round?
>> The code below is cleaned up but it also has a functional change.
>> This version issues separate commands for dropping and adding endpoints.
>> Previous code both did all on one command.
>>
>> If it works I'll send it forward.
>>
>> Thanks
>> -Mathias
>>
>> ---
>> From: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx>
>> Subject: [PATCH] usb: Fix out of sync data toggle if a configured device is
>>  reconfigured
>>
>> Userspace drivers that use a SetConfiguration() request to "lightweight"
>> reset a already configured usb device might cause data toggles to get out
>> of sync between the device and host, and the device becomes unusable.
>>
>> The xHCI host requires endpoints to be dropped and added back to reset the
>> toggle. USB core avoids these otherwise extra steps if the current active
>> configuration is the same as the new requested configuration.
>>
>> A SetConfiguration() request will reset the device side data toggles.
>> Make sure usb core drops and adds back the endpoints in this case.
>>
>> To avoid code duplication split the current usb_disable_device() function
>> and reuse the endpoint specific part.
>>
>> Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx>
> 
> This seems reasonable.  But can you add something to the kerneldoc for
> usb_reset_configuration() explaining that if the routine fails, the
> device will probablly be in an unusable state (endpoints disabled,
> interfaces only partially enabled)?
> 
> Alan Stern
> 

Good point, will add

Thanks
Mathias



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

  Powered by Linux