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.

PROCESSOR-SDK-AM335X: AM335x Gigabit ethernet lost package issue

Part Number: PROCESSOR-SDK-AM335X

Hi TI team

I met a Gigabit ethernet communtation issue when using  AM335x + DP83867 in my design and need TI team urgent support, the following are the details:

MPU:  MPU partnumber is AM3354BZCZD60, both emacs connecte with tow DP83867 thorugh RGMII interface

PHY:  PHY partnumber is DP83848IRRGZ and it conneccted with AM335x thourg RGMII, VDDA1P8 (pins 13 and 48) are not used and were left unconnected

Issue: Both ETHs can work ok in 100M speed, however, under 1000M speed, communication packet loss is very serious when test ping command with larg packet( 1500 bytes or 65500bytes )

Is this a AM335x BSP driver issue ? Did the TI Am335x demo board use the DP83867 for dual gigabit ethernet ports design ? Can you provide some suggestions for analyzing and solving this issue? Thank you!

  • Hello Lance,

    Are you using the TI_RTOS SDK on the AM335x, the Linux SDK, or something else? Which version of which SDK are you using?

    Regards,

    Nick

  • Hello Tony & Lance,

    Please provide the Linux SDK version that is being used.

    I am reassigning your thread to our Linux CPSW owner.

    Regards,

    Nick

  • Hi Nick,

    The Linux SDK version is: 06.03.00.106 and the following is the DT node related with ETH ports:

    &mac {
    pinctrl-names = "default","sleep";
    pinctrl-0 = <&cpsw_default>;
    pinctrl-1 = <&cpsw_sleep>;
    dual_emac = <1>;
    status = "okay";

    };

    &davinci_mdio {
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&davinci_mdio_default>;
    pinctrl-1 = <&davinci_mdio_sleep>;
    status = "okay";
    };

    &cpsw_emac0 {
    phy_id = <&davinci_mdio>, <0>;
    phy-mode = "rgmii-txid";
    dual_emac_res_vlan = <1>;
    };

    &cpsw_emac1 {
    phy_id = <&davinci_mdio>, <1>;
    phy-mode = "rgmii-txid";
    dual_emac_res_vlan = <2>;
    };


  • Hello Nick,

    any update or suggestions for analyzing/debugging this issue, thanks! 

  • Hello,

    The follow information is the output of the ifconfig and ethtool command when test packet loss issue with ping command (PC ping AM335x with 1500bytes packet size, almost 60~70% packet loss rate), no obvious error happened. However when I ping PC IP address from AM335x command line, it seems no packet lost.

    root@ES_Controller:~# ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 34:08:E1:B9:B4:DE
    inet addr:192.168.100.100 Bcast:192.168.100.255 Mask:255.255.255.0
    inet6 addr: fe80::3608:e1ff:feb9:b4de/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:3314 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3076 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:3187120 (3.0 MiB) TX bytes:3533678 (3.3 MiB)
    Interrupt:43

    root@ES_Controller:~# /ethtool -S eth0
    NIC statistics:
    Good Rx Frames: 4103
    Broadcast Rx Frames: 389
    Multicast Rx Frames: 984
    Pause Rx Frames: 0
    Rx CRC Errors: 0
    Rx Align/Code Errors: 0
    Oversize Rx Frames: 0
    Rx Jabbers: 0
    Undersize (Short) Rx Frames: 0
    Rx Fragments: 0
    Rx Octets: 3258058
    Good Tx Frames: 3036
    Broadcast Tx Frames: 0
    Multicast Tx Frames: 34
    Pause Tx Frames: 0
    Deferred Tx Frames: 0
    Collisions: 0
    Single Collision Tx Frames: 0
    Multiple Collision Tx Frames: 0
    Excessive Collisions: 0
    Late Collisions: 0
    Tx Underrun: 0
    Carrier Sense Errors: 0
    Tx Octets: 3517162
    Rx + Tx 64 Octet Frames: 482
    Rx + Tx 65-127 Octet Frames: 1972
    Rx + Tx 128-255 Octet Frames: 325
    Rx + Tx 256-511 Octet Frames: 72
    Rx + Tx 512-1023 Octet Frames: 8
    Rx + Tx 1024-Up Octet Frames: 4280
    Net Octets: 6784436
    Rx Start of Frame Overruns: 0
    Rx Middle of Frame Overruns: 0
    Rx DMA Overruns: 0
    Rx DMA chan 0: head_enqueue: 1
    Rx DMA chan 0: tail_enqueue: 5253
    Rx DMA chan 0: pad_enqueue: 0
    Rx DMA chan 0: misqueued: 0
    Rx DMA chan 0: desc_alloc_fail: 0
    Rx DMA chan 0: pad_alloc_fail: 0
    Rx DMA chan 0: runt_receive_buf: 0
    Rx DMA chan 0: runt_transmit_bu: 0
    Rx DMA chan 0: empty_dequeue: 0
    Rx DMA chan 0: busy_dequeue: 1168
    Rx DMA chan 0: good_dequeue: 3206
    Rx DMA chan 0: requeue: 0
    Rx DMA chan 0: teardown_dequeue: 0
    Tx DMA chan 0: head_enqueue: 777
    Tx DMA chan 0: tail_enqueue: 2259
    Tx DMA chan 0: pad_enqueue: 0
    Tx DMA chan 0: misqueued: 111
    Tx DMA chan 0: desc_alloc_fail: 0
    Tx DMA chan 0: pad_alloc_fail: 0
    Tx DMA chan 0: runt_receive_buf: 0
    Tx DMA chan 0: runt_transmit_bu: 666
    Tx DMA chan 0: empty_dequeue: 777
    Tx DMA chan 0: busy_dequeue: 1198
    Tx DMA chan 0: good_dequeue: 3036
    Tx DMA chan 0: requeue: 754
    Tx DMA chan 0: teardown_dequeue: 0

  • Schuyler,

    PHY team checked PHY status and confirmed there is no error in PHY status registers as below post:

    https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1137315/dp83867ir-lost-package-issue-when-work-at-1000m-speed

    Any suggestion to check from AM335x MAC side?

  • Schuyler,

    Customer made modification on core PLL setting  CM_CLKSEL_DPLL from 0x3E817 to 0x3E9170x3EC17, change M from 1000 to 1001-1004, the RGMII clock should adjust to 125.125 to 125.5MHz. now no package drop.

    Does it make sense?