• Vladimir Oltean's avatar
    net: dsa: felix: delete .phylink_mac_an_restart code · b4c23545
    Vladimir Oltean authored
    Phylink uses the .mac_an_restart method to offer the user an
    implementation of the "ethtool -r" behavior, when the media-side auto
    negotiation can be restarted by the local MAC PCS. This is the case for
    fiber modes 1000Base-X and 2500Base-X (IEEE clause 37) that don't have
    an Ethernet PHY connected locally, and the media is connected to the MAC
    PCS directly.
    
    On the other hand, the Cisco SGMII and USXGMII standards also have an
    auto negotiation mechanism based on IEEE 802.3 clause 37 (their
    respective specs require a MAC PCS and a PHY PCS to implement the same
    state machine, which is described in IEEE 802.3 "Auto-Negotiation Figure
    37-6"), so the ability to restart auto-negotiation is intrinsically
    symmetrical (the MAC PCS can do it too).
    
    However, it appears that not all SGMII/USXGMII PHYs have logic to
    restart the MDI-side auto-negotiation process when they detect a
    transition of the SGMII link from data mode to configuration mode.
    Some do (VSC8234) and some don't (AR8033, MV88E1111). IEEE and/or Cisco
    specification wordings to not help to prove whether propagating the "AN
    restart" event from MII side ("mr_restart_an") to MDI side
    ("mr_restart_negotiation") is required behavior - neither of them
    specifies any mandatory interaction between the clause 37 AN state
    machine from Figure 37-6 and the clause 28 AN state machine from Figure
    28-18.
    
    Therefore, even if a certain behavior could be proven as being required,
    real-life SGMII/USXGMII PHYs are inconsistent enough that a clause 37 AN
    restart cannot be used by phylink to reliably trigger a media-side
    renegotiation, when the user requests it via ethtool.
    
    The only remaining use that the .mac_an_restart callback might possibly
    have, given what we know now, is to implement some silicon quirks, but
    so far that has proven to not be necessary.
    
    So remove this code for now, since it never gets called and we don't
    foresee any circumstance in which it might be, either.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b4c23545
felix.h 1.72 KB