[iMX8] 10 MBit ethernet not working

Ethernet communication does not work between two boards with an iMX8M Plus Quad, when manually lowered to 10 MBit. It also does not work if just one verdin board is connected to a GBit network. It works without any issue (no Tx/Rx errors, ca. 95 MByte/s in GBit mode) when manually switched back to 1 GBit or 100 MBit.

1 GBit (works fine)

ethtool -s eth0 speed 1000 duplex full

100 MBit (works fine)

ethtool -s eth0 speed 100 duplex full

10 MBit (does not work anymore, no ping, no TCP, Linux just reports that the link is up)

ethtool -s eth0 speed 10 duplex full autoneg off
ethtool -s eth0 speed 10 duplex half autoneg off
ethtool -s eth0 speed 10 duplex full autoneg on
ethtool -s eth0 speed 10 duplex half autoneg on

According to the Ethernet PHY (KSZ9131) documentation 10 MBit should also be supported. ethtool also reports that 10baseT/Half 10baseT/Full are both supported. Anyone any idea what the issue could be?

1 Like

Hello @thomasstauffer ,

I have asked internally about this issue.
Meanwhile, how critical is having 10Mbit Ethernet to you?

Best regards,
Josep

At the moment not critical at all, more about how we advertise the devices we are going to sell. But in case there would be a workaround for the software or the hardware, we are still in a phase, where it would be less a problem to change someting (especially regarding the hardware).

Hello @thomasstauffer,
do you consider having 10Mbit Ethernet a requirement for your application? The reason that I ask is it seems to me that this speed is almost not used anymore these days.
Of course, we will be glad to know if there’s an application that requires it, as it will make it easier for us to prioritize the effort we put into trying to find a fix for this issue.

Thank you,
Rafael

Hello Rafael,

It’s not a strict requirement. For us, this has low priority.

Hello Rafael
We have the same issue. Our device implements the Verdin iMX8MP SoC and exposes ETH0. In our customers application 10Mbit Ethernet configuration is essential. Is there in the meantime a known fix for that issue?

BR
Simon

Hello @Simon2

We’re in contact with NXP about this. It may be impossible to support 10Mbit Ethernet on the Verdin iMX8MP because of the combination of an SoC errata and the PHY we include on the SoM.

We are still waiting for confirmation on this, and I’ll try to update the information here as soon as we get a result.

Hello @Simon2 ,

After some internal communication with NXP, we could find a workaround that requires some changes on an undocumented registry on the Microchip PHY chip.
Find a Patch file attached that you can use to work this issue around. You will also find more information on the comments of the file itself
Let us know if the issue is solved after this implementation.

10MBit_Eth_iMX8MP.patch (2.8 KB)

We could test the patch, but it is not working stable.
For around 10 minutes ethernet communication with 10MB is possible. But the connections breaks and Port1 is gone. Only a SoM reset resolves that Port 1 is reachable again.
Do you have any hint or can you show us where the patch was tested (which branch in the toradex git repo)?

Hi @Simon2 this is very unfortunate, we will test on our end and get back to you as soon as possible

Hello @Simon2,

did you see any error messages when the connection failed? Any output in dmesg?

I just started a new test today, with longer duration. So far, it has been running for more than 1 hour without any problems.

The setup is the Verdin iMX8MP in the Verdin Development Board, connected directly to a laptop via cable. I just installed Verdin-iMX8MP_Reference-Multimedia-Image 7.4.0+build.10, applied the patch and updated the kernel. After reboot, I forced the ethernet speed to 10baseT:

root@verdin-imx8mp-15007159:~# ethtool -s end0 speed 10
root@verdin-imx8mp-15007159:~# ethtool end0
Settings for end0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Full
                                100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 10Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: master
        Port: Twisted Pair
        PHYAD: 7
        Transceiver: external
        MDI-X: on (auto)
        Supports Wake-on: ug
        Wake-on: d
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes

Then I set up a static IP address on both the laptop and the Verdin, and started a ping test both ways.

I’ll leave the test running for longer,

Rafael

Hello @Simon2

is this is still an Issue on your side?

looking forward to hearing from you
best regards
Max