Skip to content
  • Florian Fainelli's avatar
    net: stmmac: Fix lack of link transition for fixed PHYs · c51e424d
    Florian Fainelli authored
    Commit 52f95bbf ("stmmac: fix adjust link call in case of a switch
    is attached") added some logic to avoid polling the fixed PHY and
    therefore invoking the adjust_link callback more than once, since this
    is a fixed PHY and link events won't be generated.
    
    This works fine the first time, because we start with phydev->irq =
    PHY_POLL, so we call adjust_link, then we set phydev->irq =
    PHY_IGNORE_INTERRUPT and we stop polling the PHY.
    
    Now, if we called ndo_close(), which calls both phy_stop() and does an
    explicit netif_carrier_off(), we end up with a link down. Upon calling
    ndo_open() again, despite starting the PHY state machine, we have
    PHY_IGNORE_INTERRUPT set, and we generate no link event at all, so the
    link is permanently down.
    
    Fixes: 52f95bbf
    
     ("stmmac: fix adjust link call in case of a switch is attached")
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Acked-by: default avatarGiuseppe Cavallaro <peppe.cavallaro@st.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c51e424d