[U-Boot] [PATCH] usb: xhci: Limit transfer length in a single TD

Dongwoo Lee dwoo08.lee at samsung.com
Tue Nov 22 03:42:19 CET 2016


On 2016년 11월 18일 23:01, Marek Vasut wrote:
> On 11/18/2016 08:24 AM, Jaehoon Chung wrote:
>> Hi,
>>
>> Added Marek as USB maintainer.
>>
>> On 11/17/2016 01:21 PM, Dongwoo Lee wrote:
>>> The transfer request exceeding 4032KB (the maximum number of TRBs per
>>> TD * the maximum size of transfer buffer on TRB) fails on xhci host
>>> with timed out error or babble error state. This failure occurs when
>>> accessing large files on USB mass-storage. Currently with xhci as well
>>> as ehci host, the driver requests maximum 30MB (65536 blks * 512 byte)
>>> to storage at once. However, xhci cannot handle this request because
>>> of the reason mentioned above, even though ehci can handle this. Thus,
>>> transfer request larger than this size should be splitted in order to
>>> limit the length of data in a single TD.
>>>
>>> Even though the single request is splitted into multiple requests,
>>> the transfer speed has affected insignificantly in comparison with
>>> ehci host: 22.6 MB/s on ehci and 22.3 MB/s on xhci for 100MB tranfer.
>>
>> I don't have USB knowledge..So i wonder that this is correct way.
>> Have other guys ever seen the similar issue?
> 
> Is this a controller limitation ?
> 
> btw can you fix your mailer to NOT send HTML email to the list?
> 

If my understanding for xhci spec.(rev. 1.1) 4.9.2 is right, the controller 
has no limitation for transfer size because it can support a very large TRB 
ring with multiple Ring Segments. 

However, the xhci driver seems not to be implemented for supporting it; 
the TRB ring is comprised of only a single segment. As a result, it cannot 
handle the request exceeding 4032KB (TRB_MAX_BUFF_SIZE(64KB) * 
(TRBS_PER_SEGMENT(64) - link TRB(1)), thus the request should be divided.  

This issue can be reproduced by using the following command on Odroid-XU3/XU4
with USB mass-storage connected to xhci host:

	>fatload usb 0 40800000 {a file exceeding 4032KB}

About HTML email, I just mailed with git-send-email, but I will double-check 
the setting.


More information about the U-Boot mailing list