Re: XCHI bulk transaction latency, data lost, NAK stats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Aug 22, 2020 at 11:02:16AM -0700, yunhua li wrote:
> Hello all
> For USB Bulk transaction,
> 1. If there are NAK, and retransmit happens on a physical layer, does
> XHCI provide any statistical counter, e.g. how many retries for that
> URB, how can I get those counters or enable it for that TRB?

I'm not an expert on xHCI.  Still, as far as I know, there are no such 
counters.

> 2. If Data is lost, XHCI have to resend URB request?  how long it will
> take before it resend URB request?  Is that a configurable timeout on
> XHCI spec?

I believe it is not configurable.  It will depend on how much other 
traffic there is on the bus.  If the bus is only lightly loaded then the 
retry time should be much less than 1 ms, probably something like 10 us 
or so.  Maybe even smaller.

> The following are some  background of my question.
> I have a XHCI USB Host controller, there are 4 ports. I only connect
> one port to a USB 3.0 camera.  and running program keep reading data
> from device, guvcview -d /dev/video0,
> the camera keeps sending 30 frames/second, normal within each frame,

What is the communication speed of the camera?  480 Mb/s (USB-2), 5000 
Mb/s (USB-3) or something else?  And how much data does the camera send 
for each frame?

> XHCI driver sends URB request -> Device response URB, response time is
> about 10 ~ 200ms.
> Some times, the response time takes 20 000 ~ 200 000 ms, as a result,
> the image gets corrupted.

20 - 200 seconds?  That's an awfully long latency.  Much longer than you 
would expect from random fuctuations; it indicates that something is 
going badly wrong.

> From the USB device(Camera) firmware debugging tool, I can see that
> the Device actually did submit DMA in time, when this big latency
> happens firmware will complain, DMA buffer overflow.
> looks software works correctly on both sides.
> I'm trying to understand why the latency is not consistent?

It sounds like you need to use a USB bus analyzer to measure the 
packets on the wire.

> 3. I have 4 USB ports on the XHCI host controller, but only 1 device
> connects,  does other 3 empty port take any USB bandwidth?

They do not.

>  is there
> anything related to bandwidth allocation I should look at it?

It depends on what other devices are attached to the USB bus.  They may 
or may not require some reserved bandwidth.

> 4. anything related PCIe I should look at? I enabled PCIe error
> reporting, No error found?

It's hard to imagine that your long latencies are caused by PCIe.

Alan Stern



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux