Ethernet Connectivity Issue with Marvel 88x3310 PHY on AGX Orin

Hello Team,

We are currently working on a custom carrier board with the AGX Orin SOM, utilizing the Marvel 88x3310 Ethernet SFI PHY. but, we are facing an issue where the Ethernet is not detecting, and we are unable to obtain an IP address or establish an Internet connection.

I have attached the updated Device Tree (DT) node code for the 88x3310, and below is the relevant snippet from the dmesg log:

#include <dt-bindings/gpio/tegra234-gpio.h>

/ {
        /* MGBE - A */
        ethernet@6810000 {
                status = "okay";
                nvidia,mac-addr-idx = <0>;
                nvidia,max-platform-mtu = <16383>;
                /* 1=enable, 0=disable */
                nvidia,pause_frames = <1>;
                phy-handle = <&mgbe0_marvell_88x3310_phy>; // Reference to the PHY node
                phy-mode = "10gbase-r";
                /* 0:XFI 10G, 1:XFI 5G, 2:USXGMII 10G, 3:USXGMII 5G */
                nvidia,phy-iface-mode = <0>;
                nvidia,phy-reset-gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Y, 1) 0>;

                mdio {
                        compatible = "nvidia,eqos-mdio";
                        #address-cells = <1>;
                        #size-cells = <0>;

                        mgbe0_marvell_88x3310_phy: ethernet_phy@0 {
                                compatible = "marvell,88x3310";
                                reg = <0x0>;
                                nvidia,phy-rst-pdelay-msec = <150>; /* msec */
                                nvidia,phy-rst-duration-usec = <221000>; /* usec */
                                interrupt-parent = <&tegra_main_gpio>;
                                interrupts = <TEGRA234_MAIN_GPIO(Y, 3) IRQ_TYPE_LEVEL_LOW>;
                        };
                };
        };
};

In the dmesg logs, we observed the following:

orin@ubuntu:~$ sudo dmesg | grep -i "ethernet"
[    4.208962] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
[    4.235262] igb: Intel(R) Gigabit Ethernet Network Driver
[   11.620121] nvethernet 6810000.ethernet: Adding to iommu group 51
[   11.627180] nvethernet 6810000.ethernet: failed to read skip mac reset flag, default 0
[   11.635797] nvethernet 6810000.ethernet: failed to read MDIO address
[   11.642806] nvethernet 6810000.ethernet: setting to default DMA bit mask
[   11.650185] nvethernet 6810000.ethernet: failed to read UPHY GBE mode- default to 10G
[   12.044184] nvethernet 6810000.ethernet: Ethernet MAC address: 48:b0:2d:91:47:60
[   12.052713] nvethernet 6810000.ethernet: macsec param in DT is missing or disabled
[   12.061020] nvethernet 6810000.ethernet: Macsec not supported/Not enabled in DT
[   12.071105] nvethernet 6810000.ethernet: eth0 (HW ver: 31) created with 10 DMA channels
[   17.594640] using random self ethernet address
[   17.600137] using random host ethernet address
[   18.240988] using random self ethernet address
[   18.246151] using random host ethernet address
[   18.457414] mv88x3310 6810000.ethernet:00: Firmware version 0.3.7.0
[ 1027.130760] nvethernet 6810000.ethernet: [xpcs_lane_bring_up][470][type:0x4][loga-0x0] Failed to get PCS block lock
[ 1032.759357] nvethernet 6810000.ethernet: [xpcs_lane_bring_up][477][type:0x4][loga-0x0] PCS block lock SUCCESS
[ 1042.489198] nvethernet 6810000.ethernet: [xpcs_lane_bring_up][477][type:0x4][loga-0x0] PCS block lock SUCCESS
[ 1042.513122] nvethernet 6810000.ethernet: [xpcs_lane_bring_up][470][type:0x4][loga-0x0] Failed to get PCS block lock

dmesg.log (81.8 KB)

Settings for eth0:
        Supported ports: [ ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
                                10000baseT/Full 
                                2500baseT/Full 
                                5000baseT/Full 
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
                                10000baseT/Full 
                                2500baseT/Full 
                                5000baseT/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                             100baseT/Half 100baseT/Full 
                                             1000baseT/Full 
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off (auto)
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000000 (0)
                               
        Link detected: no

Any help or guidance regarding this issue would be greatly appreciated.

Thank you,
Parashuram

We don’t have direct support case for SFI but only XFI.

Hello Wayne,

Thank you for your reply.

My apologies for the mistake. I would like to let you know that we are using the XFI, and the IC part is 88X3310PA1-BUS4I000.

Thank you for your understanding.

Regards,
Parashuram

Which phy driver is in use here? I am not sure if the code base has the driver that matches your PHY.

I see that the driver utilized for the AGX Orin SOM is the mv88x3310.

orin@ubuntu:/sys/bus/mdio_bus/devices/6810000.ethernet:00$ sudo cat phy_has_fixups phy_id phy_interface uevent 
0
0x00000000
sgmii
DEVTYPE=PHY
DRIVER=mv88x3310
OF_NAME=ethernet_phy
OF_FULLNAME=/ethernet@6810000/mdio/ethernet_phy@0
OF_COMPATIBLE_0=ethernet-phy-ieee802.3-c45
OF_COMPATIBLE_N=1
MODALIAS=of:Nethernet_phyT(null)Cethernet-phy-ieee802.3-c45
orin@ubuntu:/sys/bus/mdio_bus/devices/6810000.ethernet:00$ sudo cat statistics/*
0
6640
6651
11

please remove below and see if it helps

interrupt-parent = <&tegra_main_gpio>;
interrupts = <TEGRA234_MAIN_GPIO(Y, 3) IRQ_TYPE_LEVEL_LOW>;

Also, is the firmware of this PHY properly flashed already?

the PHY firmware has been flashed successfully. Please find the flashed logs.

Download Utility Version 3.6 built using MTD API 3.0.1
Read C:\Users\ELMA LAB PC\Desktop\New folder\x33x0fw_0_3_11_0_11832.hdr, file size = 197784
Downloading to flash.
*************************
DOWNlOADING MDIO PORT 0
*************************
 
Read x3240flashdlslave_0_6_6_0_10673.hdr, file size = 11072
Downloading code to PHY RAM, please wait...
Processing section 0 at offset 0
.......... 5120 bytes
.......... 10240 bytes
.App code started section 0 on port 0.
 
Download of code to RAM complete. Time = 0 seconds
Slave will now erase/verify flash. This may take up to 30 seconds depending on flash type.
Flash program areas have been erased.
......... 4608 bytes
.......... 9728 bytes
.......... 14848 bytes
.......... 19968 bytes
.......... 25088 bytes
.......... 30208 bytes
.......... 35328 bytes
.......... 40448 bytes
.......... 45568 bytes
.......... 50688 bytes
.......... 55808 bytes
.......... 60928 bytes
.......... 66048 bytes
.......... 71168 bytes
.......... 76288 bytes
.......... 81408 bytes
.......... 86528 bytes
.......... 91648 bytes
.......... 96768 bytes
.......... 101888 bytes
.......... 107008 bytes
.......... 112128 bytes
.......... 117248 bytes
.......... 122368 bytes
.......... 127488 bytes
.......
Telling slave to save 130560 bytes of buffer 0. This can take up to 30 seconds, depends on flash type and size of buffer.
 
.... 2048 bytes
.......... 7168 bytes
.......... 12288 bytes
.......... 17408 bytes
.......... 22528 bytes
.......... 27648 bytes
.......... 32768 bytes
.......... 37888 bytes
.......... 43008 bytes
.......... 48128 bytes
.......... 53248 bytes
.......... 58368 bytes
.......... 63488 bytes
........
Telling slave to save 67224 bytes of last buffer. This can take up to 30 seconds, depends on flash type and size of buffer.
 
 
Time = 10 seconds
Flash type is 0xBF00
Flash programming complete. Verifying image via slave.
 
Flash image verified. Call mtdRemovePhyDownloadMode() or change strap and reboot to execute new code
Flash image had 1 sections
X3240DownloadUtility.exe: mtdUpdateFlashImage() succeeded.
X3240DownloadUtility.exe: Performing a chip reset to execute downloaded code.
X3240DownloadUtility.exe: Firmware version running is now 0.3.11.0
Press any key to continue . . .

Regards,
Parashuram

Hello Wayne,

We are waiting for your reply.
Could you please let us is there anything that needs to be verified?

Regards,
Parashuram

There is nothing we can check here as we don’t validate this kind of PHY.

Please check with vendor what info to check here. For example, PHY reg.

BTW, are you sure this PHY would work in 10G? It looks like ethtool result only gives 5G?

Hello Wayne,

Yes, the Marvell 88x3310 PHY does indeed support 10G. Please refer to the ethtool output below, which indicates support for 10baseT/Half, 10baseT/Full, up to 10000baseT/Full.

Regards,
Parashuram

We are currently exploring the implementation of a MAC Internal Loopback for a loopback test.
Is there any documentation or guidance available for implementing MAC Internal Loopback to facilitate a loopback test?

Hi,

I have some internal check with our ethernet team. For this situation, please make sure the link partner is configured for 10G and Auto negotiation happens at 10G first.

Your previous result shows it is running in 1G only.

Hello Wayne,

We are awaiting your response and would appreciate an update. Additionally, we are seeking guidance on performing an Internal MAC Loopback. If there is any documentation or guide available, we would greatly appreciate it.

Regards,
Parashuram

There is no document here. Even if there is, I won’t be able to post forum.

Please follow my previous suggestion and move to 10G connection first but not 1G.

Hello Wayne,

Thank you for your response.

I have cross-verified the link partner with the AGX Orin EV Kit, and it appears to be the same as ours. When checking the ethtool results on the EV Kit, they seem to match.
EVK ethtool result:

orin@ubuntu:~$ sudo ethtool eth0
[sudo] password for orin:
Settings for eth0:
        Supported ports: [ ]
        Supported link modes:   100baseT/Half 100baseT/Full
                                1000baseT/Full
                                1000baseKX/Full
                                10000baseT/Full
                                10000baseKX4/Full
                                10000baseKR/Full
                                2500baseT/Full
                                5000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  100baseT/Half 100baseT/Full
                                1000baseT/Full
                                1000baseKX/Full
                                10000baseT/Full
                                10000baseKX4/Full
                                10000baseKR/Full
                                2500baseT/Full
                                5000baseT/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
                                             1000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x00000000 (0)

        Link detected: yes

Here is the ethtool result for the 88x3310PA on our custom board:

parashuram@ubuntu:~$ sudo ethtool eth1
Settings for eth1:
        Supported ports: [ ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                10000baseT/Full
                                2500baseT/Full
                                5000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                10000baseT/Full
                                2500baseT/Full
                                5000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: on (auto)
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000000 (0)

        Link detected: no

The 10G Ethernet is not functioning on our board.

I observed an error in the log, which is mentioned below. Could you please provide some guidance on how to bring up the 10G Ethernet and resolve the issue?

[   43.155328] mv88x3310 6810000.ethernet:00: Downshift occurred from negotiated speed 1Gbps to actual speed 100Mbps, check cabling!
[   43.169427] nvethernet 6810000.ethernet: [xpcs_lane_bring_up][470][type:0x4][loga-0x0] Failed to get PCS block lock

Your support will be greatly appreciated.

Regards,
Parashuram

HI,

I don’t get what you are doing above. Could you explain it?

Why should you care about the issue on Orin AGX devkit?

My point here is please just use 10G connection on your case for now and that is just for debug. We want to see your board status connection with 10G first but not 1G.
You don’t need to care about anything on Orin AGX devkit…

What Orin AGX can achieve has no logical relationship with your board… The PHY, hardware, firmware could be different…

Hello Wayne,

Having performed an internal loopback, I can observe the following details for the network interface:

Interface Name: eth0
Interface Flags: 4099

Am I correct in understanding that the network interface is up? Please confirm.

Thank you,
Parashuram

I don’t know what does that mean. Looks up.

You could check from ethtool result or dmesg for exact situation.