• Russell King (Oracle)'s avatar
    net: phylib: do not disable autoneg for fixed speeds >= 1G · 6ff3cddc
    Russell King (Oracle) authored
    We have an increasing number of drivers that are forcing
    auto-negotiation to be enabled for speeds of 1G or faster.
    
    It would appear that auto-negotiation is mandatory for speeds above
    100M. In 802.3, Annex 40C's state diagrams seems to imply that
    mr_autoneg_enable (BMCR AN ENABLE) doesn't affect whether or not the
    AN state machines work for 1000base-T, and some PHY datasheets (e.g.
    Marvell Alaska) state that disabling mr_autoneg_enable leaves AN
    enabled but forced to 1G full duplex.
    
    Other PHY datasheets imply that BMCR AN ENABLE should not be cleared
    for >= 1G.
    
    Thus, this should be handled in phylib rather than in each driver.
    
    Rather than erroring out, arrange to implement the Marvell Alaska
    solution but in software for all PHYs: generate an appropriate
    single-speed advertisement for the requested speed, and keep AN
    enabled to the PHY driver. However, to avoid userspace API breakage,
    continue to report to userspace that we have AN disabled.
    Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6ff3cddc
phy_device.c 101 KB