RE: [PATCH] usb: hub: try old enumeration scheme first for high speed devices

From: Zengtao (B)
Date: Thu Aug 16 2018 - 22:16:15 EST


Hi Roger:

>-----Original Message-----
>From: Roger Quadros [mailto:rogerq@xxxxxx]
>Sent: Thursday, August 16, 2018 7:14 PM
>To: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>; Alan Stern
><stern@xxxxxxxxxxxxxxxxxxx>
>Cc: gregkh@xxxxxxxxxxxxxxxxxxx; mathias.nyman@xxxxxxxxxxxxxxx;
>drinkcat@xxxxxxxxxxxx; felipe.balbi@xxxxxxxxxxxxxxx;
>drake@xxxxxxxxxxxx; mike.looijmans@xxxxxxxx; joe@xxxxxxxxxxx;
>linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>Subject: Re: [PATCH] usb: hub: try old enumeration scheme first for high
>speed devices
>
>On 16/08/18 13:59, Zengtao (B) wrote:
>> Hi Roger:
>>
>>> -----Original Message-----
>>> From: Roger Quadros [mailto:rogerq@xxxxxx]
>>> Sent: Thursday, August 16, 2018 3:17 PM
>>> To: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>; Alan Stern
>>> <stern@xxxxxxxxxxxxxxxxxxx>
>>> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; mathias.nyman@xxxxxxxxxxxxxxx;
>>> drinkcat@xxxxxxxxxxxx; felipe.balbi@xxxxxxxxxxxxxxx;
>>> drake@xxxxxxxxxxxx; mike.looijmans@xxxxxxxx; joe@xxxxxxxxxxx;
>>> linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>>> Subject: Re: [PATCH] usb: hub: try old enumeration scheme first for
>>> high speed devices
>>>
>>> On 16/08/18 09:21, Zengtao (B) wrote:
>>>> Hi alan:
>>>>
>>>>> -----Original Message-----
>>>>> From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx]
>>>>> Sent: Tuesday, August 14, 2018 10:40 PM
>>>>> To: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>
>>>>> Cc: Roger Quadros <rogerq@xxxxxx>; gregkh@xxxxxxxxxxxxxxxxxxx;
>>>>> mathias.nyman@xxxxxxxxxxxxxxx; drinkcat@xxxxxxxxxxxx;
>>>>> felipe.balbi@xxxxxxxxxxxxxxx; drake@xxxxxxxxxxxx;
>>>>> mike.looijmans@xxxxxxxx; joe@xxxxxxxxxxx;
>>>>> linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>>>>> Subject: RE: [PATCH] usb: hub: try old enumeration scheme first for
>>>>> high speed devices
>>>>>
>>>>> On Tue, 14 Aug 2018, Zengtao (B) wrote:
>>>>>
>>>>>> Hi alan:
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: linux-usb-owner@xxxxxxxxxxxxxxx
>>>>>>> [mailto:linux-usb-owner@xxxxxxxxxxxxxxx] On Behalf Of Alan Stern
>>>>>>> Sent: Friday, August 10, 2018 10:20 PM
>>>>>>> To: Roger Quadros <rogerq@xxxxxx>
>>>>>>> Cc: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>;
>>>>>>> gregkh@xxxxxxxxxxxxxxxxxxx; mathias.nyman@xxxxxxxxxxxxxxx;
>>>>>>> drinkcat@xxxxxxxxxxxx; felipe.balbi@xxxxxxxxxxxxxxx;
>>>>>>> drake@xxxxxxxxxxxx; mike.looijmans@xxxxxxxx;
>joe@xxxxxxxxxxx;
>>>>>>> linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>>>>>>> Subject: Re: [PATCH] usb: hub: try old enumeration scheme first
>>>>>>> for high speed devices
>>>>>>>
>>>>>>> On Fri, 10 Aug 2018, Roger Quadros wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> On 10/08/18 18:01, Zeng Tao wrote:
>>>>>>>>> The new scheme is required just to support legacy low and
>>>>>>>>> full-speed devices. For high speed devices, it will slower the
>>>>>>>>> enumeration
>>>>> speed.
>>>>>>>>> So in this patch we try the "old" enumeration scheme first for
>>>>>>>>> high speed devices.
>>>>>>>>
>>>>>>>> How slow does it get? Is it significant?
>>>>>>>> Do we risk breaking existing HS devices that work? I don't think
>>>>>>>> we can be sure till we run this through testing.
>>>>>>>
>>>>>>> Indeed. I am extremely skeptical about a patch like this, unless
>>>>>>> somebody can show that Windows uses the "old" scheme for
>>> high-speed
>>>>> devices.
>>>>>>
>>>>>> Yes, this is what the windows has done, you can refer to
>>>>>>
>>> https://blogs.msdn.microsoft.com/usbcoreblog/2013/04/11/usb-2-1-2-0-
>>>>>> 1- 1-device-enumeration-changes-in-windows-8/
>>>>>
>>>>> And that blog post is 5 years old!
>>>>>
>>>>> Okay, I think we can go ahead and make this change. However, you
>>>>> should update the patch description to mention what Microsoft did
>>>>> in Windows 8 and say that the new behavior matches theirs.
>>>>>
>>>> Okay, I will update it the change log in v2.
>>>>
>>>>> Also, as Roger mentioned, you should update the documentation to
>>>>> say that the old_scheme_first module parameter now applies only to
>>>>> low- and full-speed devices, since high- and SuperSpeed devices
>>>>> always use
>>> the old scheme first.
>>>>>
>>>>
>>>> Since we should have dedicated enumeration flow for SS, HIGH, low
>>>> and full speed devices, So I think the old_scheme_first and
>>>> use_both_schemes
>>> parameters should be removed.
>>>> What do you think about it?
>>>
>>> I think we should retain them as some host controllers can have
>>> issues and these parameters give some control to system integrators
>>> to workaround if required.
>>>
>>> I'm aware of one errata [1] that requires the old_scheme_first to be
>>> set in certain circumstances.
>>>
>>> [1] http://www.ti.com/lit/er/sprz429l/sprz429l.pdf
>>> Section i897
>>
>> I 'd rather to use a quirk to workaround.
>> And the main idea is to keep the enumeration flow as simple as possible.
>
>The workaround isn't always required. Only in certain circumstances
>decided by the user.
>How can a user set the quirk? Now it is as easy as setting it in the kernel
>command line.
>
>One option would be to use the old_scheme_first_port via sysfs.
>/sys/bus/usb/devices/.../(hub interface)/portX/quirks
>
>But that won't work if devices are hard-wired in the system and get
>enumerated before user gets access to sysfs. We need a way to force one
>type of scheme before devices are enumerated.
>

Okay, make sense, thank you for the explanation.

>--
>cheers,
>-roger
>
>Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
>Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki