• Antoine Tenart's avatar
    net: mvpp2: let phylink manage the carrier state · 41948ccb
    Antoine Tenart authored
    Net drivers using phylink shouldn't mess with the link carrier
    themselves and should let phylink manage it. The mvpp2 driver wasn't
    following this best practice as the mac_config() function made calls to
    change the link carrier state. This led to wrongly reported carrier link
    state which then triggered other issues. This patch fixes this
    behaviour.
    
    But the PPv2 driver relied on this misbehaviour in two cases: for fixed
    links and when not using phylink (ACPI mode). The later was fixed by
    adding an explicit call to link_up(), which when the ACPI mode will use
    phylink should be removed.
    
    The fixed link case was relying on the mac_config() function to set the
    link up, as we found an issue in phylink_start() which assumes the
    carrier is off. If not, the link_up() function is never called. To fix
    this, a call to netif_carrier_off() is added just before phylink_start()
    so that we do not introduce a regression in the driver.
    
    Fixes: 4bb04326 ("net: mvpp2: phylink support")
    Reported-by: default avatarRussell King <linux@armlinux.org.uk>
    Signed-off-by: default avatarAntoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    41948ccb
mvpp2_main.c 143 KB