On 05/22/2017 04:09 PM, Andrew Lunn wrote: > Are you using interrupts? Or polling?
adpt->phydev->irq = PHY_IGNORE_INTERRUPT; ret = phy_connect_direct(netdev, adpt->phydev, emac_adjust_link, PHY_INTERFACE_MODE_SGMII); Technically it's polling, except that it's my NIC's hardware that is polling the MDIO bus, and then generating an interrupt when there's a link state change. When the link state changes, I call phy_mac_interrupt() if (status & ISR_GPHY_LINK) phy_mac_interrupt(adpt->phydev, !!(status & GPHY_LINK_UP_INT)); > If polling, it should come back again 1 second later and see if > auto-neg has completed. Hopefully the SGMII side comes up eventually. > > If you are using interrupts, you need another interrupt when the SGMII > side comes up, otherwise i think the state machine is stuck waiting. I'll have to test this, but what do I do if I don't get another interrupt? I have a suspicion that the link is actually okay, and that the error is bogus. -- Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.