Hello, I am working with @s.hall on this issue and have more context and details to provide following further investigation. Note that we are regular customers and ship production units with NVIDIA Jetson products.
We have a custom carrier board we are trialling for our Xavier NX which is heavily based on the Antmicro Jetson Baseboard (GitHub - antmicro/jetson-nano-baseboard: Antmicro's open hardware baseboard for the NVIDIA Jetson Nano, TX2 NX and Xavier NX) which breaks out 2-pair ethernet and gigabit ethernet separately. We need to deploy in an integrated system where only the 2-pair ethernet is connected at 100Mbs through an embedded router, and gigabit is not an option.
Currently when we boot the Xavier in this setup, it autonegotiates full duplex gigabit ethernet, even though the gigabit pairs are not connected. It can’t be pinged via its static IP address, and the router doesn’t show it as a connected client. The following is output from ethtool:

And the following is output from ifconfig:

We can replicate similar failure behaviour in bench testing (no integrated system involved) by connecting only the 2-pair ethernet from the carrier board through a simple network switch. Again, gigabit is autonegotiated for some reason, and it cannot be communicated with. It has the following output from ethtool:

And the following ifconfig output:

If we force 100Mbs ethernet with “sudo ethtool -s eth0 autoneg off speed 100” in bench testing, the issue is resolved and 100Mbs works, and we can communicate with the board. We can even automate the ethtool commands using a networkd-dispatcher script. The following is the output from ethtool after the change:

And the following is ifconfig output after the change:

However, when we try this forced 100Mbs fix in the integrated router setup, it is unsuccessful. It has the following output from ethtool:

And the following output from ifconfig:

Output from dmesg indicates the link is repeatedly up and down:

Every time the link tries to go up, the orange LED on the carrier board flashes once, and this occurs every few seconds. If you catch ifconfig at the right time, you can see the static IP has been assigned, but the majority of the time it is not.
When we try the exact same setups and carrier board, but use a Xavier NX flashed with Jetpack 4.6.1, the connection is fine and we can ping and ssh the board. We noticed that ethtool reports the driver for 4.6.1 being eqos whereas it is nvethernet for Jetpack 5.1.
Note that the system works fine and can be pinged when the gigabit lines are connected.
The following is the netplan config used in these tests:

We are preparing an integrated system for a demonstration and need to resolve this quite urgently. We would appreciate any ideas on this one.