AM6548: Do the am65x-sr2 firmware support ethernet half duplex mode (work together with linux cip kernel 6.12)?

Part Number: AM6548

Tool/software:

Hi TI Team,

We have encountered an issue where Ethernet half duplex mode is not functioning with the latest firmware version.

Test environment 

Test Steps:

       1. Setup ethernet of AM6548 to half duplex and disable auto negation

       2. Connect ethernet to a router (DHCP server is available) , AM6548 cannot obtain  IP.

      3. Connect AM6548 to a Linux host directly, setup AM6548 IP to 192.168.1.1, and setup linux host IP to 192.168.1.2

          - ping linux host from AM6548, failed, no response from linux. 

          - ping AM6548 from linux host, failed, no response from AM6548.

Questions:

  1. Does firmware v11.01.12 support Ethernet half duplex mode?
  2. If not, which firmware version is compatible with half duplex functionality when using Linux kernel v6.12?

We would appreciate your guidance on resolving this compatibility issue or recommendations for alternative firmware versions that support our requirements.

Thank you for your assistance.

  • Hello Chun Jiao Zhao, 

    Does firmware v11.01.12 support Ethernet half duplex mode?

    Your question implies that hald duplex mode had worked in a past firmware version. Is that correct? If so, can you share which past firmware version had half duplex functionality working?

    Have you also checked before setting up IP address and pinging that the link is up upon connecting your AM65x device and your Linux host PC?

    Are you testing with a AM65x TI EVM or a custom built board?

    -Daolin

  • Hi Ti Team:
    Yes, found that the versions older then 10.00.04 can work.

    We have been investigating this issue over the past few days. We are currently testing this issue on our own carrier board as known as IoT2050. Our carrier board uses AM6548 CPU with DP83867 PHY chip. The Linux kernel version is Linux 6.12.41-cip6. Currently, we preliminarily believe this issue is likely caused by the ti-pruss firmware. We tried adding debug logs in the driver to locate the problem. Through debugging, we found that when set to half duplex mode, the driver cannot send data to the PRU (or the PRU does not send the data out?). The following are the troubleshooting steps.

    Test step

    1. Install Linux CIP kernel 6.12.41-cip6 and ti-pruss firmware 11.01.12 on IoT2050

    2. Connect the IoT2050 ethernet port to a Linux partner device

    3. Configure IoT2050 IP address to 192.168.1.10/24 and Linux partner IP address to 192.168.1.1/24

    4. Ping IoT2050 from the Linux partner and ping the Linux partner from IoT2050 - both work correctly

    5. Configure IoT2050 ethernet to half duplex mode (e.g., ethtool -s eno2 speed 100 duplex half autoneg off)

    6. Ping IoT2050 from the Linux partner and ping the Linux partner from IoT2050 - both fail to work

    7. Check the ethernet card statistics on IoT2050: tx_bytes continuously increases while rx_bytes remains unchanged when pinging from IoT2050 (But peer does not receive any ICMP packet, only ARP packets from IoT2050 are received). Both tx_bytes and rx_bytes increase when pinging from the Linux partner (IoT2050 received ICMP packets and sent the ICMP reply packets to peer, but the peer did not receive any ICMP reply packet), and the following error logs appear in the debug UART port:

      [ 1839.481580] icssg-prueth icssg0-eth eno1: NETDEV WATCHDOG: CPU: 2: transmit queue 0 timed out 71400 ms
      [ 1845.369523] icssg-prueth icssg0-eth eno1: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 77288 ms
      [ 1850.233493] icssg-prueth icssg0-eth eno1: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 82152 ms
      [ 1855.353461] icssg-prueth icssg0-eth eno1: NETDEV WATCHDOG: CPU: 3: transmit queue 0 timed out 87272 ms
      [ 1860.217427] icssg-prueth icssg0-eth eno1: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 

    Conclusion

    IoT2050 can receive data in half duplex mode, but cannot send data.

    After testing several firmware versions, versions from 09.01.00.001 to 10.00.04 (inclusive) work correctly on Linux 6.12 with half duplex mode.

    The issue was introduced starting from version 10.00.07 (commit 1d8e2dd45df068df9b874d9b2e1be18df0ea15e7).

    Linux CIP 6.12 compatibility begins from version 09.01.00.001 (commit d48b64028f1e0085a736c92bb631162c04d146eb).

  • Hi Chun Jiao Zhao, 

    Apologies for the delayed response and thanks for sharing these details. I've looped in a team member who can speak more on the PRU firmware. Please kindly ping this thread if you have not heard back by tomorrow.

    -Daolin

  • Hi Chun Jiao, 

    Can you share the PRU ICSSG dump once the issue occurs (from start to end address mentioned below)? 
    As a next step I will try to rerun the test at my side. I will keep you posted. 

    PRU ICSSG-0

    start addr: 0x000B000000
    end addr: 0x000B03C0FF

    BR,
    JC