Hello,
We are using Imx6q for our custom product where we have USB to Ethernet (SMSC95xx) interface.
While testing using iperf above 20Mbps, and we connect disconnect device (USB cellular modem or Webcam etc) on any other USB ports, we see packet drops on iperf testing.
This drops are in incoming iperf flows (USB Rx) only and not on outgoing flow (USB Tx).
Can you advise what can be the issue?
I feel this could be USB interrupts handling issue so I tried to set smp_affinity for USB interrupts to all 4 CPUs but I can set only 1 CPU at a time.
We are very near to product launch.
Please advise if any errata (and workaround if any).
--
Thanks,
Hitesh
Hi Hitesh
one can test with i.MX6Q Sabre reference board to check if issue is caused by hardware,
also one can consider iperf measurements issues as described on
Extremely high packet loss with UDP test · Issue #296 · esnet/iperf · GitHub
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Thanks Igor for the prompt response!
It's not only ipoerf causes the issue, even our streaming application shows the drops in the packets.
And this is not the case in our old product where we have marvell switch instead of USB to Eth chip. So I believe that here issue might be due to USB Rx.
I don't have Sabre board but I will test on Wandboard. But if you know anything relates to our issue please advise us to do some experiments.
--
Thanks,
Hitesh
Hi Hitesh
if you this that reason is nxp usb module or its driver, according to our rules,
issue should be reproduced on nxp reference board with nxp official linux demo images on
Best regards
igor
Thanks Igor !
I will check if we can manage Sabre board and let you know results.
--
Thanks,
Hitesh
Dear Igor,
As I already mentioned in original post, Can you advise on Why I can't distributes USB interrupts (or any other interrupts) over multiple CPUs?
As I mentioned I tried to set smp_affinity for USB interrupts to all 4 CPUs but I can set only 1 CPU at a time. I can move interrupts from CPU0 to CPU3 using "echo 8 > /proc/irq/62/smp_affinity" where 62 is my 2184200.usb interrupts. I also tried using "echo f > /proc/irq/62/smp_affinity" which it supposed to distribute 2184200.usb interrupts over all 4 CPU cores but it doesn't work as expected.
Please advise if I need to fix anything in kernel or DTB to achieve this.
--
Thanks,
Hitesh