One of my clients is experiencing problems with a SMSC LAN8710A PHY that is connected to a Xilinx FPGA. The Ethernet link works perfectly when the board is connected to my MacBook or to my office router, but fails with other partners such as USB-Ethernet adapters. In that case, the auto-negotiation succeeds but the link does not go up and the PHY reports symbol errors through its SYM_ERR_CNT register.
I'm suspecting a signal integrity issue on the board. Is there anything else that could explain this behavior? Any advice about how to debug issues like these?
Update: the symbol errors (there are usually one or two of them) seem to happen shortly after the link goes up. When auto-negotiation is OFF, the symbol error count remains at 1 or 2 and the link works fine. When ON, auto-negotiation re-starts every second or so and the symbol error counter gets incremented every time.