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

Dongwoo Lee dwoo08.lee at samsung.com
Mon Nov 28 07:15:12 CET 2016


On 11/26/2016 03:25 AM, Marek Vasut wrote:
> On 11/22/2016 03:42 AM, Dongwoo Lee wrote:
>> 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.  
> 
> Can we update the driver ?
> 

Yes, I agree. 
I think also updating driver is more reasonable.

Though I think it takes some time since I just started xhci, I will
prepare a patch for enabling multiple ring segments for the driver.






More information about the U-Boot mailing list