RE: Query: xhci: isoc in test: Wrong sequence number in ACK token

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

 



> From: linux-usb-owner@xxxxxxxxxxxxxxx [mailto:linux-usb-owner@xxxxxxxxxxxxxxx] On Behalf Of Pratyush Anand
> Sent: Thursday, October 04, 2012 11:03 PM

< snip >

> So, basically I am trying to transfer 3 * 9 * 1024 = 27 KBytes/125 us.
> 
> I run following command at host PC.
> 
> ./testusb -a -c 1000 -t 16 -s 55296 -g 1
> 
> Now what I see, that some time host is not sending correct seq number in
> the ACK token. See attached snapshot. For the second burst host sends
> ACK with sequence number 9 which is correct and device responds with 9
> packets of 1024 bytes. Now device was expecting ACK with seq number 18.
> But, it sends ACK with seq no '0', which is not expected.
> However, most of the time host does send correct seq number.
> 
> In the dmesg I see, lot of
> [  307.554169] xhci_hcd 0000:30:00.0: WARN: HC couldn't access mem fast
> enough
> 
> My embedded evaluation board has PCIe host too. So I used same
> PCIetoUSb3.0 host (which I used with test PC) with my eval board and
> used it as a host. Ran same test and I do not see any such error here.
> It runs perfectly. But, here I have kernel version 2.6.37
> 
> So my question is :
> 
> 1. Is is possible that kernel version 3.5.4 has a bug but 2.6.37 does not?
> 
> or
> 
> 2. My Test PC is slower than my embedded eval board? However, it seems
> least likely..my host PC is Pentium(R) Dual Core E5400 @ 2.70 GHz and
> eval board is CortexA9 Dual Core @ 600MHz

Hi Pratyush,

It's probably your hardware not keeping up with the transfer rate. If you
look at the timestamps in the trace, you will see the device is sending a
1K packet every 2.184 us. That is a transfer rate of over 468 MB/s.

If the host controller in your PC is not connected thru a PCIe bridge
with multiple lanes, the connection will not be fast enough to support
that high of a transfer rate. And maybe on your eval board the host
controller has a direct connection to the memory controller? Just a
guess.

A faster CPU doesn't help if the hardware cannot keep up.

One thing you could do is try with a higher value for '-g' on the test
command line. That will make the usbtest driver use more scatter-
gather entries when it does the DMA. Perhaps that will help.

-- 
Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

  Powered by Linux