• Vladimir Oltean's avatar
    net: pcs: xpcs: export xpcs_do_config and xpcs_link_up · a853c68e
    Vladimir Oltean authored
    The sja1105 hardware has a quirk in that some changes require a switch
    reset, which loses all configuration. When the reset is initiated,
    everything needs to be reprogrammed, including the MACs and the PCS.
    This is currently done in sja1105_static_config_reload() - we manually
    call sja1105_adjust_port_config(), sja1105_sgmii_pcs_config() and
    sja1105_sgmii_pcs_force_speed() which are all internal functions.
    
    There is a desire for sja1105 to use the common xpcs driver, and that
    means that the equivalents of those functions, xpcs_do_config() and
    xpcs_link_up() respectively, will no longer be local functions.
    
    Forcing phylink to retrigger a resolve somehow, say by doing dev_close()
    followed by dev_open() is not really an option, because the CPU port
    might have a PCS as well, and there is no net device which we can close
    and reopen for that. Additionally, the dev_close/dev_open sequence might
    force a renegotiation of the copper-side link for SGMII ports connected
    to a PHY, and this is undesirable as well, because the switch reset is
    much quicker than a PHY autoneg, so we would have a lot more downtime.
    
    The only solution I see is for the sja1105 driver to keep doing what
    it's doing, and that means we need to export the equivalents from xpcs
    for sja1105_sgmii_pcs_config and sja1105_sgmii_pcs_force_speed, and call
    them directly in sja1105_static_config_reload(). This will be done
    during the conversion patch.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a853c68e
pcs-xpcs.c 27.1 KB