
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.