[U-Boot] [RFC PATCH v2] MLK-12883 usb: limit USB_MAX_XFER_BLK to 256
Schrempf Frieder
frieder.schrempf at kontron.de
Wed Apr 10 07:05:45 UTC 2019
On 10.04.19 08:25, Marcel Ziswiler wrote:
> Hi Lukasz
>
> On April 10, 2019 7:11:11 AM GMT+02:00, Lukasz Majewski <lukma at denx.de> wrote:
>> On Tue, 9 Apr 2019 17:14:26 -0400
>> Tom Rini <trini at konsulko.com> wrote:
>>
>>> On Tue, Apr 09, 2019 at 05:20:45PM +0200, Marcel Ziswiler wrote:
>>>
>>>> From: Peng Fan <peng.fan at nxp.com>
>>>>
>>>> For Some USB mass storage devices, such as:
>>>> "
>>>> - Kingston DataTraveler 2.0 001D7D06CF09B04199C7B3EA
>>>> - Class: (from Interface) Mass Storage
>>>> - PacketSize: 64 Configurations: 1
>>>> - Vendor: 0x0930 Product 0x6545 Version 1.16
>>>> "
>>>> When `usb read 0x80000000 0 0x2000`, we met
>>>> "EHCI timed out on TD - token=0x80008d80".
>>>>
>>>> The devices does not support scsi VPD page, we are not able
>>>> to get the maximum transfer length for READ(10)/WRITE(10).
>>>>
>>>> So we limit this to 256 blocks as READ(6).
>>>>
>>>> Signed-off-by: Peng Fan <peng.fan at nxp.com>
>>>> Acked-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>>>> (cherry picked from commit
>> df0052575b2bc9d66ae73584768e1a457ed5d914)
>>>>
>>>> ---
>>>> This comes from NXP's downstream and has proven to tremendously
>>>> improve the situation with those odd USB mass storage aka memory
>>>> sticks. This is why I post it here asking whether or not this may
>>>> be something benefiting more people. Any feedback and suggestions
>>>> are welcome.
>>>>
>>>> Changes in v2:
>>>> - Fixed spelling in comment as suggested by Igor.
>>>>
>>>> common/usb_storage.c | 6 +++++-
>>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/common/usb_storage.c b/common/usb_storage.c
>>>> index 8c889bb1a6..4e284645f5 100644
>>>> --- a/common/usb_storage.c
>>>> +++ b/common/usb_storage.c
>>>> @@ -949,7 +949,11 @@ static void usb_stor_set_max_xfer_blk(struct
>>>> usb_device *udev,
>>>> * there is enough free heap space left, but the SCSI
>>>> READ(10) and
>>>> * WRITE(10) commands are limited to 65535 blocks.
>>>> */
>>>> - blk = USHRT_MAX;
>>>> + /*
>>>> + * Some USB mass storage devices have issues, limiting
>>>> this to 256
>>
>> Could you name those devices?
>
> You mean all of them? The Kingston DataTraveler 2.0 is already mentioned in the commit message.
Only for reference I want to add a link to a discussion from some years
ago, that also names some devices that one of our customers found that
didn't work with USB_MAX_XFER_BLK = 65536, but only with lower values: [1].
There's also a post with some benchmarking to get an idea of the impact
on transfer speed when lowering USB_MAX_XFER_BLK: [2].
Regards,
Frieder
[1] https://lists.denx.de/pipermail/u-boot/2016-February/245893.html
[2] https://lists.denx.de/pipermail/u-boot/2016-February/246267.html
>
>>>> + * fixes this.
>>>> + */
>>>> + blk = 256;
>>>> #else
>>>> blk = 20;
>>>> #endif
>>>> --
>>>> 2.20.1
>>>
>>> Adding in Lukasz now that get_maintainers.pl shows this should be
>>> Cc'd to him as well, thanks!
>>>
>>
>>
>>
>>
>> Best regards,
>>
>> Lukasz Majewski
>>
>> --
>>
>> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
>> lukma at denx.de
>
> Cheers
>
> Marcel
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
>
More information about the U-Boot
mailing list