Hello, I've been trying to wrap my head around Ethernet auto-negotiation, vs actual / real packets seen at the MAC layer. I found the relevant Wikipedia article to be fairly informative:
https://en.wikipedia.org/wiki/Autonegotiation The reason I care is that my Ethernet HW does not allow changing the flow control setting once the MAC has started (more specifically, once RX DMA has been enabled). In nb8800_open(), the code currently works in this order: nb8800_start_rx(dev); phy_start(phydev); The first line enables the MAC (and DMA). The second enables the PHY and starts auto-negotiation. This is a problem: I would like for PHY auto-negotiation to be /complete/ before I enable the MAC. What is the recommended way to wait for the PHY? AFAICT, the PHY layer calls back into the eth driver through the adjust_link() callback registered through of_phy_connect(). It seems like this might be a good place to enable the MAC? (When some other conditions are true.) Regards.