Hello TI forums,
I am experiencing some link instability when connecting to a customer provided ethernet switch that supports only up to 100 Mbps (100Base-T). We are utilizing a GEM controller within the Xilinx's ZynqMP SoC to implement this RGMII interface. We have no issues connecting to other ethernet switches that are rated 1Gbe/10Gbe, however, when we connect to this switch at 100Base-T, the link will cyclically drop and can never steadily hold a link up. We have used ethtool to try and force the link to 10/100 Full/Half Duplex Auto-Neg On/Off settings. Our end goal is to implement 100Base-T Auto-Neg On Full Duplex. We are able to achieve 10Base-T Auto-Neg On Full Duplex to work reliably, but not the throughput we need.
I have tried connecting the ethernet lane to a PC NIC forced to operate at 100Base-T, and experience no issues and receive expected throughput (11MB/s). We have verified external PHY strapping and dumped PHY registers in kernel space to verify PHY configurations. MDIO interface is working. We have briefly inspected Wire Shark traffic and see no bad frames or crc errors, so I am ruling out signal integrity issue. Clocks have been verified to be at the right frequencies.
I have noticed when the link drops, the register, Receiver Error Counter Register (RECR), Address 0x0015, will increment. How is this register being updated? Reviewing Linux PHY driver, this register is not being used. How do these errors bubble up to the higher OSI layers?
I would like to mention I can reliably ping across the switch but with 3-5% packet loss.
If there is any insight on connecting to 100Base-T ethernet switches would be greatly appreciated.