AnsweredAssumed Answered

FEC ethernet packetloss

Question asked by Marek Vasut on Dec 5, 2013
Latest reply on Mar 19, 2014 by Yixing Kong
Branched to a new discussion


we have an issue here when communicating over FEC ethernet on the i.MX6. We would expect that if we run continuous stream of packets, the MX6 would be able to transfer them without dropping any of them. The problem is that we observe sporadic packet loss when both ends of the link operate in 1000 Mbps / full duplex mode. The packets are occasionally not transmitted FROM the FEC ethernet TOWARDS the host PC. We see first few dropped packets after roughly 5 hours of continuous transfer. After that, we see a few dropped packets every 2-3 hours. We produced exact steps to reproduce these packetloss issues, maybe someone has an idea? Thank you !


HOSTPC: We have Intel i7 820QM with Intel i82577LM ethernet (e1000e driver) && Intel i7 3970X with i82579LM (e1000e driver) ethernet.

TARGET: We have MX6Q SabreAuto , MX6Q SabreLite and two custom boards, one with MX6Solo and other with MX6Dual. All use FEC ethernet for this test.

Any combination of TARGET and HOSTPC above have these symptoms. For your convenience, you can try with SabreAuto as the TARGET platform.

1) Connect TARGET directly through a 50cm CAT6 ethernet cable with a HOSTPC.

2) Boot Freescale Linux 3.0.35-4.1.0 (in default imx6_defconfig configuration for sabreauto, in slightly modified configuration for the custom mx6dual and mx6solo boards) on TARGET.

3) Boot the TARGET into userland on SD card, install "iperf" tool.

4) Make sure the link is in 1000/FD mode on HOST:

$ ethtool -s eth0 speed 1000 duplex full

5) Make sure the link is in 1000/FD mode on TARGET:

$ ethtool -s eth0 speed 1000 duplex full

6) Disable any possibly interfering network managers etc. on both ends:

$ /etc/init.d/networking stop

$ /etc/init.d/network-manager stop

7) Bring up network interface on HOSTPC:

$ ifconfig eth0 netmask

8) Bring up network interface on TARGET:

$ ifconfig eth0 netmask

9) Start "iperf" on HOSTPC in UDP server mode:

$ iperf -u -s -l 4M -i 60

10) Start "iperf" on TARGET in UDP client mode:

$ iperf -u -c -t 28800 -b 1000M -i 60