This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6548: Large packet loss issue on cpsw2g ethernet

Part Number: AM6548

Our customized board use cpsw2g ethernet with a SMSC LAN8720 phy(connected with RMII), it worked, but we found it had a lot of packet loss when we ping with large packet sizes:

root@am65xx-evm:~# ping 192.168.100.1 -s 1500
PING 192.168.100.1 (192.168.100.1): 1500 data bytes
1508 bytes from 192.168.100.1: seq=1 ttl=64 time=1.077 ms
1508 bytes from 192.168.100.1: seq=3 ttl=64 time=0.913 ms
1508 bytes from 192.168.100.1: seq=4 ttl=64 time=0.938 ms
1508 bytes from 192.168.100.1: seq=7 ttl=64 time=0.934 ms
1508 bytes from 192.168.100.1: seq=13 ttl=64 time=0.978 ms
1508 bytes from 192.168.100.1: seq=15 ttl=64 time=0.933 ms
1508 bytes from 192.168.100.1: seq=31 ttl=64 time=0.932 ms
1508 bytes from 192.168.100.1: seq=32 ttl=64 time=0.948 ms
1508 bytes from 192.168.100.1: seq=33 ttl=64 time=0.904 ms
1508 bytes from 192.168.100.1: seq=34 ttl=64 time=0.920 ms
1508 bytes from 192.168.100.1: seq=36 ttl=64 time=0.925 ms
1508 bytes from 192.168.100.1: seq=40 ttl=64 time=0.924 ms
1508 bytes from 192.168.100.1: seq=42 ttl=64 time=0.920 ms
1508 bytes from 192.168.100.1: seq=43 ttl=64 time=1.092 ms
1508 bytes from 192.168.100.1: seq=44 ttl=64 time=0.917 ms
1508 bytes from 192.168.100.1: seq=45 ttl=64 time=0.937 ms
1508 bytes from 192.168.100.1: seq=47 ttl=64 time=0.850 ms
1508 bytes from 192.168.100.1: seq=48 ttl=64 time=0.912 ms
1508 bytes from 192.168.100.1: seq=52 ttl=64 time=0.923 ms
1508 bytes from 192.168.100.1: seq=54 ttl=64 time=0.902 ms
1508 bytes from 192.168.100.1: seq=57 ttl=64 time=0.939 ms
1508 bytes from 192.168.100.1: seq=58 ttl=64 time=0.927 ms
^C
--- 192.168.100.1 ping statistics ---
62 packets transmitted, 22 packets received, 64% packet loss
round-trip min/avg/max = 0.850/0.938/1.092 ms

Its related setting in DTS list as follow:

......
        mcu_cpsw1_pins_default: mcu_cpsw1_pins_default {
                pinctrl-single,pins = <
                        AM65X_WKUP_IOPAD(0x0058, PIN_INPUT, 1)  /* (N4) MCU_RGMII1_TX_CTL.MCU_RMII1_CRS_DV */
                        AM65X_WKUP_IOPAD(0x005c, PIN_INPUT, 1)  /* (N5) MCU_RGMII1_RX_CTL.MCU_RMII1_RX_ER */
                        AM65X_WKUP_IOPAD(0x0068, PIN_OUTPUT, 1) /* (M4) MCU_RGMII1_TD1.MCU_RMII1_TXD1 */
                        AM65X_WKUP_IOPAD(0x006c, PIN_OUTPUT, 1) /* (M5) MCU_RGMII1_TD0.MCU_RMII1_TXD0 */
                        AM65X_WKUP_IOPAD(0x0080, PIN_INPUT, 1)  /* (M6) MCU_RGMII1_RD1.MCU_RMII1_RXD1 */
                        AM65X_WKUP_IOPAD(0x0084, PIN_INPUT, 1)  /* (L6) MCU_RGMII1_RD0.MCU_RMII1_RXD0 */
                        AM65X_WKUP_IOPAD(0x0070, PIN_OUTPUT, 1) /* (N1) MCU_RGMII1_TXC.MCU_RMII1_TX_EN */
                        AM65X_WKUP_IOPAD(0x0074, PIN_INPUT, 1)  /* (M1) MCU_RGMII1_RXC.MCU_RMII1_REF_CLK */
                >;
        };

        mcu_mdio_pins_default: mcu-mdio1-pins-default {
                pinctrl-single,pins = <
                        AM65X_WKUP_IOPAD(0x008c, PIN_OUTPUT, 0) /* (L1) MCU_MDIO0_MDC */
                        AM65X_WKUP_IOPAD(0x0088, PIN_INPUT, 0) /* (L4) MCU_MDIO0_MDIO */
                >;
        };
......

&mcu_cpsw {
        pinctrl-names = "default";
        pinctrl-0 = <&mcu_cpsw1_pins_default &mcu_mdio_pins_default>;
};

&davinci_mdio {
        phy0: ethernet-phy@0 {
                reg = <0>;
                smsc,disable-energy-detect;
        };
};

&cpsw_port1 {
        phy-mode = "rmii";
        phy-handle = <&phy0>;
};

the boot info from DMESG lists as follow:

[ 2.388115] davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[ 2.395790] libphy: 46000f00.mdio: probed
[ 2.401841] davinci_mdio 46000f00.mdio: phy[0]: device 46000f00.mdio:00, driver SMSC LAN8710/LAN8720
[ 2.411120] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00102, cpsw version 0x6BA80102 Ports: 2 quirks:00000000
[ 2.425132] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
[ 2.432478] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
[ 2.439729] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
[ 2.446702] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0

Any suggestion about this loss?

Thanks

Kenn

  • Hi,

    The path of the ping packets need to be followed. The attached log is showing missing packets but where the packets are being dropped may not be related to the AM65x cpsw2g. Please post the results of the following commands:

    ifconfig -a 

    ethtool -S eth0

    ethtool eth0

    Please described the network topology.

    Best Regards,

    Schuyler

  • Hi,

    It connected with a router directly.

    and the results of follow commands:

    root@am65xx-evm:~# ifconfig -a
    can0: flags=128<NOARP>  mtu 16  metric 1
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
            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
            device interrupt 24
    
    can1: flags=128<NOARP>  mtu 16  metric 1
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
            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
            device interrupt 26
    
    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500  metric 1
            inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:24:c8:a0:ba  txqueuelen 0  (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
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1
            inet 192.168.100.73  netmask 255.255.255.0  broadcast 192.168.100.255
            inet6 fe80::32e2:83ff:feb4:782  prefixlen 64  scopeid 0x20<link>
            ether 30:e2:83:b4:07:82  txqueuelen 1000  (Ethernet)
            RX packets 56  bytes 4140 (4.0 KiB)
            RX errors 0  dropped 9  overruns 0  frame 0
            TX packets 51  bytes 6742 (6.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536  metric 1
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 82  bytes 6220 (6.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 82  bytes 6220 (6.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am65xx-evm:~# ethtool -S eth0
    NIC statistics:
         p0_rx_good_frames: 60
         p0_rx_broadcast_frames: 4
         p0_rx_multicast_frames: 33
         p0_rx_crc_errors: 0
         p0_rx_oversized_frames: 0
         p0_rx_undersized_frames: 0
         p0_ale_drop: 0
         p0_ale_overrun_drop: 0
         p0_rx_octets: 7746
         p0_tx_good_frames: 76
         p0_tx_broadcast_frames: 21
         p0_tx_multicast_frames: 40
         p0_tx_octets: 5766
         p0_tx_64B_frames: 72
         p0_tx_65_to_127B_frames: 45
         p0_tx_128_to_255B_frames: 10
         p0_tx_256_to_511B_frames: 9
         p0_tx_512_to_1023B_frames: 0
         p0_tx_1024B_frames: 0
         p0_net_octets: 13512
         p0_rx_bottom_fifo_drop: 0
         p0_rx_port_mask_drop: 0
         p0_rx_top_fifo_drop: 0
         p0_ale_rate_limit_drop: 0
         p0_ale_vid_ingress_drop: 0
         p0_ale_da_eq_sa_drop: 0
         p0_ale_block_drop: 0
         p0_ale_secure_drop: 0
         p0_ale_auth_drop: 0
         p0_ale_unknown_ucast: 0
         p0_ale_unknown_ucast_bytes: 0
         p0_ale_unknown_mcast: 0
         p0_ale_unknown_mcast_bytes: 0
         p0_ale_unknown_bcast: 0
         p0_ale_unknown_bcast_bytes: 0
         p0_ale_pol_match: 0
         p0_ale_pol_match_red: 0
         p0_ale_pol_match_yellow: 0
         p0_ale_mcast_sa_drop: 0
         p0_ale_dual_vlan_drop: 0
         p0_ale_len_err_drop: 0
         p0_ale_ip_next_hdr_drop: 0
         p0_ale_ipv4_frag_drop: 0
         p0_tx_mem_protect_err: 0
         p0_tx_pri0: 0
         p0_tx_pri1: 0
         p0_tx_pri2: 0
         p0_tx_pri3: 0
         p0_tx_pri4: 0
         p0_tx_pri5: 0
         p0_tx_pri6: 0
         p0_tx_pri7: 0
         p0_tx_pri0_bcnt: 0
         p0_tx_pri1_bcnt: 0
         p0_tx_pri2_bcnt: 0
         p0_tx_pri3_bcnt: 0
         p0_tx_pri4_bcnt: 0
         p0_tx_pri5_bcnt: 0
         p0_tx_pri6_bcnt: 0
         p0_tx_pri7_bcnt: 0
         p0_tx_pri0_drop: 0
         p0_tx_pri1_drop: 0
         p0_tx_pri2_drop: 0
         p0_tx_pri3_drop: 0
         p0_tx_pri4_drop: 0
         p0_tx_pri5_drop: 0
         p0_tx_pri6_drop: 0
         p0_tx_pri7_drop: 0
         p0_tx_pri0_drop_bcnt: 0
         p0_tx_pri1_drop_bcnt: 0
         p0_tx_pri2_drop_bcnt: 0
         p0_tx_pri3_drop_bcnt: 0
         p0_tx_pri4_drop_bcnt: 0
         p0_tx_pri5_drop_bcnt: 0
         p0_tx_pri6_drop_bcnt: 0
         p0_tx_pri7_drop_bcnt: 0
         rx_good_frames: 76
         rx_broadcast_frames: 21
         rx_multicast_frames: 40
         rx_pause_frames: 0
         rx_crc_errors: 4
         rx_align_code_errors: 1
         rx_oversized_frames: 0
         rx_jabber_frames: 0
         rx_undersized_frames: 0
         rx_fragments: 1
         ale_drop: 0
         ale_overrun_drop: 0
         rx_octets: 5766
         tx_good_frames: 60
         tx_broadcast_frames: 4
         tx_multicast_frames: 33
         tx_pause_frames: 0
         tx_deferred_frames: 0
         tx_collision_frames: 0
         tx_single_coll_frames: 0
         tx_mult_coll_frames: 0
         tx_excessive_collisions: 0
         tx_late_collisions: 0
         rx_ipg_error: 0
         tx_carrier_sense_errors: 0
         tx_octets: 7746
         tx_64B_frames: 76
         tx_65_to_127B_frames: 46
         tx_128_to_255B_frames: 10
         tx_256_to_511B_frames: 9
         tx_512_to_1023B_frames: 0
         tx_1024B_frames: 0
         net_octets: 13945
         rx_bottom_fifo_drop: 0
         rx_port_mask_drop: 6
         rx_top_fifo_drop: 0
         ale_rate_limit_drop: 0
         ale_vid_ingress_drop: 0
         ale_da_eq_sa_drop: 0
         ale_block_drop: 0
         ale_secure_drop: 0
         ale_auth_drop: 0
         ale_unknown_ucast: 15
         ale_unknown_ucast_bytes: 1862
         ale_unknown_mcast: 40
         ale_unknown_mcast_bytes: 2560
         ale_unknown_bcast: 21
         ale_unknown_bcast_bytes: 1344
         ale_pol_match: 0
         ale_pol_match_red: 0
         ale_pol_match_yellow: 0
         ale_mcast_sa_drop: 0
         ale_dual_vlan_drop: 0
         ale_len_err_drop: 0
         ale_ip_next_hdr_drop: 0
         ale_ipv4_frag_drop: 0
         iet_rx_assembly_err: 0
         iet_rx_assembly_ok: 0
         iet_rx_smd_err: 1
         iet_rx_frag: 0
         iet_tx_hold: 0
         iet_tx_frag: 0
         tx_mem_protect_err: 0
         tx_pri0: 60
         tx_pri1: 0
         tx_pri2: 0
         tx_pri3: 0
         tx_pri4: 0
         tx_pri5: 0
         tx_pri6: 0
         tx_pri7: 0
         tx_pri0_bcnt: 7746
         tx_pri1_bcnt: 0
         tx_pri2_bcnt: 0
         tx_pri3_bcnt: 0
         tx_pri4_bcnt: 0
         tx_pri5_bcnt: 0
         tx_pri6_bcnt: 0
         tx_pri7_bcnt: 0
         tx_pri0_drop: 0
         tx_pri1_drop: 0
         tx_pri2_drop: 0
         tx_pri3_drop: 0
         tx_pri4_drop: 0
         tx_pri5_drop: 0
         tx_pri6_drop: 0
         tx_pri7_drop: 0
         tx_pri0_drop_bcnt: 0
         tx_pri1_drop_bcnt: 0
         tx_pri2_drop_bcnt: 0
         tx_pri3_drop_bcnt: 0
         tx_pri4_drop_bcnt: 0
         tx_pri5_drop_bcnt: 0
         tx_pri6_drop_bcnt: 0
         tx_pri7_drop_bcnt: 0
    root@am65xx-evm:~# ethtool eth0
    Settings for eth0:
            Supported ports: [ TP    MII ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/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
            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
            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
            Auto-negotiation: on
            Port: Twisted Pair
            PHYAD: 0
            Transceiver: external
            MDI-X: Unknown
            Supports Wake-on: d
            Wake-on: d
            Current message level: 0x000020f7 (8439)
                                   drv probe link ifdown ifup rx_err tx_err hw
            Link detected: yes
    

  • Hi,

    Thanks for posting the data. These are issues to be looked :

    rx_crc_errors: 4
    rx_align_code_errors: 1

    These are packets on the receive side that were dropped at the mac interface due to hw packet receive issues. I would recommend a direct cable connect between your board and a link partner. You would need to use static ip addresses but this would be a method to see if there are tx packets being sent that are corrupted.

    Assuming a Linux based link partner is used you could use the ethtool -S command to look at the mac hw statistics. You would be looking for the rx crc errors and similar errors.

    Best Regards,

    Schuyler

  • Hi, Schuyler

    Our link partner was a small Huawei home router, we can't login this router.

    Later we will find a linux based device for testing, and will let you know its related info.

    Thanks

    Kenn