AnsweredAssumed Answered

iMX6 fec udp packet lost

Question asked by XIJUN GAN on Aug 14, 2017



   I have a customized board (CPU: iMX6Q, Fec+ar8031). I made a UDP test with iperf command:

    * A PC (I7+1G Ethernet) acting as server: iperf -s -u -i 1

    * The board Ethernet (linux, fec+ar8031) acting as client: iperf -c -u -i 1 -b 20M -l 64 -t 10000

    * During the test, every few seconds I execute 'mii-tool -r eth0' on PC, or just unplug and immediately plug-in cable.


   Statistics printed on server side every one second(-i 1), that include band width, packet numbers, and packet lost percentage. Each time after the command 'mii-tool -r eth0' or 'unplug and plug-in cable' executed (I call it reset), the Ethernet will link-down and then link-up,the following auto-negotiation always results in "1000M/Full" on both sides. But the packet lost statistics(num and percentage), are variable between resets.

    Please check the attached picture, its a screen shot of server PC.

    * The packet lost percentage is 7.x% at the beginning.

    * After a reset, it changed to 1.x% ~ 2.x%.

    * After another reset, it changed to 0%.


   The questions are:

   * The bandwidth(20Mbps) is not critical, so the packet lost percentage should always be 0%.

   * The packet lost percentage should not change between resets, it should be 0% whatever resets raised.


   * I made the test with different kernels (Linux kernel of iMX6):

     > 3.0.35 works perfect, no packet lost after reset, percentage always be 0% after every reset (tried > 50 times).

     > 3.10.17, percentage variable between resets.

     > 3.14.52, percentage variable between resets.

     > 4.1.15_2.0.0_ga, percentage variable between resets.

     > 4.1.33_7ulp_beta, percentage variable between resets.


  This issue is discovered by customer with a network analyzer, I repeated it with iperf command.

   I have no idea now. Porting kernel to 3.0.35 is not acceptable for our customer.

   Anyone there can give me some advice? Thanks!


Best Regards,