• Florian Fainelli's avatar
    net: phy: Check harder for errors in get_phy_id() · b2ffc75e
    Florian Fainelli authored
    Commit 02a6efca ("net: phy: allow scanning busses with missing
    phys") added a special condition to return -ENODEV in case -ENODEV or
    -EIO was returned from the first read of the MII_PHYSID1 register.
    
    In case the MDIO bus data line pull-up is not strong enough, the MDIO
    bus controller will not flag this as a read error. This can happen when
    a pluggable daughter card is not connected and weak internal pull-ups
    are used (since that is the only option, otherwise the pins are
    floating).
    
    The second read of MII_PHYSID2 will be correctly flagged an error
    though, but now we will return -EIO which will be treated as a hard
    error, thus preventing MDIO bus scanning loops to continue succesfully.
    
    Apply the same logic to both register reads, thus allowing the scanning
    logic to proceed.
    
    Fixes: 02a6efca ("net: phy: allow scanning busses with missing phys")
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b2ffc75e
phy_device.c 75.9 KB