• Arınç ÜNAL's avatar
    net: dsa: mt7530: improve code path for setting up port 5 · 152f8e8e
    Arınç ÜNAL authored
    There're two code paths for setting up port 5:
    
    mt7530_setup()
    -> mt7530_setup_port5()
    
    mt753x_phylink_mac_config()
    -> mt753x_mac_config()
       -> mt7530_mac_config()
          -> mt7530_setup_port5()
    
    Currently mt7530_setup_port5() from mt7530_setup() always runs. If port 5
    is used as a CPU, DSA, or user port, mt7530_setup_port5() from
    mt753x_phylink_mac_config() won't run. That is because priv->p5_interface
    set on mt7530_setup_port5() will match state->interface on
    mt753x_phylink_mac_config() which will stop running mt7530_setup_port5()
    again.
    
    Therefore, mt7530_setup_port5() will never run from
    mt753x_phylink_mac_config().
    
    Address this by not running mt7530_setup_port5() from mt7530_setup() if
    port 5 is used as a CPU, DSA, or user port. This driver isn't in the
    dsa_switches_apply_workarounds[] array so phylink will always be present.
    
    To keep the cases where port 5 isn't controlled by phylink working as
    before, preserve the mt7530_setup_port5() call from mt7530_setup().
    
    Do not set priv->p5_intf_sel to P5_DISABLED. It is already set to that when
    "priv" is allocated.
    
    Move setting the interface to a more specific location. It's supposed to be
    overwritten if PHY muxing is detected.
    
    Improve the comment which explains the process.
    Signed-off-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
    Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Link: https://lore.kernel.org/r/20240122-for-netnext-mt7530-improvements-1-v3-5-042401f2b279@arinc9.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    152f8e8e
mt7530.c 80.9 KB