Hello experts,
we are using the EtherNet/IP adapter v1.0.3.4 on our hardware platform using a AM4376 CPU.
After initialization of the ICSS_EMAC and the PRU firmware a link is successfully detected on one external port and an interrupt is being issued. The ISR informs the ICSS_EmacLinkISR and the application about the changed link status.The application then sets-up a static IP address and then sends a broadcast ARP request to inform the network.
This first ARP request is not being transmitted on the Ethernet bus. On each following link loss and link up, always the first packet is being not transmitted.
- At the point of time where ICSS_EmacTxPacket is issued, ICSS_EMacOsLinkTaskFnc has already updated the status of both PHYs (ICSS_EmacUpdatePhyStatus). Thus, the Ports should have been enabled and the packet should be transmitted.
- When adding a breakpoint somewhere between the link interrupt (ISR) and ICSS_EmacTxPacket, the ARP is being sent, successfully.
- Adding a delay of ~100 ms before calling ICSS_EmacTxPacket the first time, the ARP is being sent on the Ethernet bus.
So I assume, that the EMAC needs an amount of time after link-up before it is ready for transmission. Unfortunately, I could not find any hint in the documentation or in the example implementation (NIMU, NIMU_ICSS, etc.) concerning the need for a special delay.
How much time does the ICSS_EMAC need after link-up before it it ready for transmission on 100 MBit/s and 10 MBit/s?
If the delay is not constant, how can I poll the ready for transmission status?
Best regards
Stefan