About xavier EQOS MAC to MAC

we want to connect a switch chip to replace PHY with xavier, working at MAC to MAC mode.
i saw a lot of parameters for PHY mode for EQOS in

hardware/nvidia/platform/t19x/common/kernel-dts/t19x-common-platforms/tegra194-platforms-eqos.dtsi

when in MAC to MAC mode, i add fixed-link to tegra194-platforms-eqos.dtsi, like this:

    fixed-link {
        speed = <1000>;
        full-duplex;
    };

do i need to change parameters of tegra186-soc-eqos.dtsi, or keep default in

hardware/nvidia/soc/t18x/kernel-dts/tegra186-soc/tegra186-soc-eqos.dtsi

the problem i faced is: switch(MV88E6321) port registers works well (checked over the registers), but it can not ping with other computer. so i want to know how to set EQOS work in MAC to MAC, maybe it need some configurations.
thanks.

Hi,

Only need to configure the t194 one. T186 is for TX2.

Also, the parameters you could configure in DT could be refer to this document.

kernel/nvidia/Documentation/devicetree/bindings/platform/tegra/tegra-eqos.txt

sorry for my fault, it should be tegra194-soc-eqos.dtsi, and

hardware/nvidia/soc/t19x/kernel-dts/tegra194-soc/tegra194-soc-eqos.dtsi

thanks for reply, i had read the doc:

kernel/nvidia/Documentation/devicetree/bindings/platform/tegra/tegra-eqos.txt

and there isn’t anything about MAC to MAC.
is there some other docs or Design Guide about xavier EQOS MAC to MAC?

Hi,

In case of MAC to MAC configuration - no other parameters need to be modified except adding fix-link node in corresponding platform DT.

One point to be noted is other end of MAC should provide the Rx Clock to EQOS HW. In your case, this clock need to be provided by switch MV88E6321.

In normal cases PHY will give Rx clock to EQOS.

Also please help us in getting the below logs

  • Dmesg logs
  • Ifconfig output
  • “ethtool -S eth0” output

eth0 in DHCP mode.
i’ve changed eqos from built-in to module in kernel source, after insert module eqos:

sudo modprobe eqos

$ dmesg
[5月23 09:36] eqos 2490000.ether_qos: Setting local MAC: 0 4 4b e5 79 bb
[ +0.001103] libphy: dwc_phy: probed
[ +0.000029] mdio_bus dwc_phy-1:00: mdio_device_register
[ +0.000159] mdio_bus dwc_phy-1: registered mdio device switch0 at address 0
[ +0.089679] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ +0.011674] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ +1.014820] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control off
[ +0.000104] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::4c2b:543d:93b4:2b9b prefixlen 64 scopeid 0x20
ether 00:04:4b:e5:79:bb txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21 bytes 3776 (3.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 40

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback)
RX packets 799 bytes 51051 (51.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 799 bytes 51051 (51.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

rndis0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether c6:c0:ed:01:43:c5 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

usb0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether c6:c0:ed:01:43:c7 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

$ ethtool -S eth0
NIC statistics:
mmc_tx_octetcount_gb: 7548
mmc_tx_framecount_gb: 42
mmc_tx_broadcastframe_g: 9
mmc_tx_multicastframe_g: 33
mmc_tx_64_octets_gb: 0
mmc_tx_65_to_127_octets_gb: 19
mmc_tx_128_to_255_octets_gb: 14
mmc_tx_256_to_511_octets_gb: 9
mmc_tx_512_to_1023_octets_gb: 0
mmc_tx_1024_to_max_octets_gb: 0
mmc_tx_unicast_gb: 0
mmc_tx_multicast_gb: 33
mmc_tx_broadcast_gb: 9
mmc_tx_underflow_error: 0
mmc_tx_singlecol_g: 0
mmc_tx_multicol_g: 0
mmc_tx_deferred: 0
mmc_tx_latecol: 0
mmc_tx_exesscol: 0
mmc_tx_carrier_error: 0
mmc_tx_octetcount_g: 7548
mmc_tx_framecount_g: 42
mmc_tx_excessdef: 0
mmc_tx_pause_frame: 0
mmc_tx_vlan_frame_g: 0
mmc_rx_framecount_gb: 0
mmc_rx_octetcount_gb: 0
mmc_rx_octetcount_g: 0
mmc_rx_broadcastframe_g: 0
mmc_rx_multicastframe_g: 0
mmc_rx_crc_errror: 0
mmc_rx_align_error: 0
mmc_rx_run_error: 0
mmc_rx_jabber_error: 0
mmc_rx_undersize_g: 0
mmc_rx_oversize_g: 0
mmc_rx_64_octets_gb: 0
mmc_rx_65_to_127_octets_gb: 0
mmc_rx_128_to_255_octets_gb: 0
mmc_rx_256_to_511_octets_gb: 0
mmc_rx_512_to_1023_octets_gb: 0
mmc_rx_1024_to_max_octets_gb: 0
mmc_rx_unicast_g: 0
mmc_rx_length_error: 0
mmc_rx_outofrangetype: 0
mmc_rx_pause_frames: 0
mmc_rx_fifo_overflow: 0
mmc_rx_vlan_frames_gb: 0
mmc_rx_watchdog_error: 0
mmc_rx_ipc_intr_mask: 1073692671
mmc_rx_ipc_intr: 0
mmc_rx_ipv4_gd: 0
mmc_rx_ipv4_hderr: 0
mmc_rx_ipv4_nopay: 0
mmc_rx_ipv4_frag: 0
mmc_rx_ipv4_udsbl: 0
mmc_rx_ipv6_gd_octets: 0
mmc_rx_ipv6_hderr_octets: 0
mmc_rx_ipv6_nopay_octets: 0
mmc_rx_udp_gd: 0
mmc_rx_udp_err: 0
mmc_rx_tcp_gd: 0
mmc_rx_tcp_err: 0
mmc_rx_icmp_gd: 0
mmc_rx_icmp_err: 0
mmc_rx_ipv4_gd_octets: 0
mmc_rx_ipv4_hderr_octets: 0
mmc_rx_ipv4_nopay_octets: 0
mmc_rx_ipv4_frag_octets: 0
mmc_rx_ipv4_udsbl_octets: 0
mmc_rx_ipv6_gd: 0
mmc_rx_ipv6_hderr: 0
mmc_rx_ipv6_nopay: 0
mmc_rx_udp_gd_octets: 0
mmc_rx_udp_err_octets: 0
mmc_rx_tcp_gd_octets: 0
mmc_rx_tcp_err_octets: 0
mmc_rx_icmp_gd_octets: 0
mmc_rx_icmp_err_octets: 0
q_re_alloc_rx_buf_failed[0]: 0
q_re_alloc_rx_buf_failed[1]: 0
q_re_alloc_rx_buf_failed[2]: 0
q_re_alloc_rx_buf_failed[3]: 0
q_re_alloc_rx_buf_failed[4]: 0
q_re_alloc_rx_buf_failed[5]: 0
q_re_alloc_rx_buf_failed[6]: 0
q_re_alloc_rx_buf_failed[7]: 0
tx_process_stopped_irq_n[0]: 0
tx_process_stopped_irq_n[1]: 0
tx_process_stopped_irq_n[2]: 0
tx_process_stopped_irq_n[3]: 0
tx_process_stopped_irq_n[4]: 0
tx_process_stopped_irq_n[5]: 0
tx_process_stopped_irq_n[6]: 0
tx_process_stopped_irq_n[7]: 0
rx_process_stopped_irq_n[0]: 0
rx_process_stopped_irq_n[1]: 0
rx_process_stopped_irq_n[2]: 0
rx_process_stopped_irq_n[3]: 0
rx_process_stopped_irq_n[4]: 0
rx_process_stopped_irq_n[5]: 0
rx_process_stopped_irq_n[6]: 0
rx_process_stopped_irq_n[7]: 0
tx_buf_unavailable_irq_n[0]: 0
tx_buf_unavailable_irq_n[1]: 0
tx_buf_unavailable_irq_n[2]: 0
tx_buf_unavailable_irq_n[3]: 0
tx_buf_unavailable_irq_n[4]: 0
tx_buf_unavailable_irq_n[5]: 0
tx_buf_unavailable_irq_n[6]: 0
tx_buf_unavailable_irq_n[7]: 0
rx_buf_unavailable_irq_n[0]: 0
rx_buf_unavailable_irq_n[1]: 0
rx_buf_unavailable_irq_n[2]: 0
rx_buf_unavailable_irq_n[3]: 0
rx_buf_unavailable_irq_n[4]: 0
rx_buf_unavailable_irq_n[5]: 0
rx_buf_unavailable_irq_n[6]: 0
rx_buf_unavailable_irq_n[7]: 0
rx_watchdog_irq_n: 0
fatal_bus_error_irq_n: 0
pmt_irq_n: 0
tx_normal_irq_n[0]: 42
tx_normal_irq_n[1]: 0
tx_normal_irq_n[2]: 0
tx_normal_irq_n[3]: 0
tx_normal_irq_n[4]: 0
tx_normal_irq_n[5]: 0
tx_normal_irq_n[6]: 0
tx_normal_irq_n[7]: 0
rx_normal_irq_n[0]: 0
rx_normal_irq_n[1]: 0
rx_normal_irq_n[2]: 0
rx_normal_irq_n[3]: 0
rx_normal_irq_n[4]: 0
rx_normal_irq_n[5]: 0
rx_normal_irq_n[6]: 0
rx_normal_irq_n[7]: 0
napi_poll_n: 0
tx_clean_n[0]: 42
tx_clean_n[1]: 0
tx_clean_n[2]: 0
tx_clean_n[3]: 0
tx_clean_n[4]: 0
tx_clean_n[5]: 0
tx_clean_n[6]: 0
tx_clean_n[7]: 0
tx_path_in_lpi_mode_irq_n: 0
tx_path_exit_lpi_mode_irq_n: 0
rx_path_in_lpi_mode_irq_n: 0
rx_path_exit_lpi_mode_irq_n: 0
tx_pkt_n: 42
rx_pkt_n: 0
tx_vlan_pkt_n: 0
rx_vlan_pkt_n: 0
tx_timestamp_captured_n: 0
rx_timestamp_captured_n: 0
tx_tso_pkt_n: 0
q_tx_pkt_n[0]: 42
q_tx_pkt_n[1]: 0
q_tx_pkt_n[2]: 0
q_tx_pkt_n[3]: 0
q_tx_pkt_n[4]: 0
q_tx_pkt_n[5]: 0
q_tx_pkt_n[6]: 0
q_tx_pkt_n[7]: 0
q_rx_pkt_n[0]: 0
q_rx_pkt_n[1]: 0
q_rx_pkt_n[2]: 0
q_rx_pkt_n[3]: 0
q_rx_pkt_n[4]: 0
q_rx_pkt_n[5]: 0
q_rx_pkt_n[6]: 0
q_rx_pkt_n[7]: 0
link_disconnect_count: 0
link_connect_count: 1

Hi,

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::4c2b:543d:93b4:2b9b prefixlen 64 scopeid 0x20
ether 00:04:4b:e5:79:bb txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21 bytes 3776 (3.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 40

Based on the above log, we see that EQOS is able to send the packets, but it doesn’t received any packets. No other suspicious logs from our side.

Further questions we need to ask are

  • Does other end (i.e Switch) received the packets?
  • Check on the counters from the switch side and see if tx and rx counters are getting incremented.
  • Check if you can validate switch port loopback at the switch side to confirm on both tx and rx side working.

Hi liu,jaliu,

Have you managed to get issue resolved? Any result can be shared?

according to the 88E6321 datasheet, set xavier eqos to “rgmii”, and 6321 to be “rgmii-id”, it works at last.

1 Like