net: dsa: ocelot: convert to mac_select_pcs()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Fri, 25 Feb 2022 16:19:36 +0000 (16:19 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 26 Feb 2022 12:44:28 +0000 (12:44 +0000)
Convert the PCS selection to use mac_select_pcs, which allows the PCS
to perform any validation it needs, and removes the need to set the PCS
in the mac_config() callback, delving into the higher DSA levels to do
so.

Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/ocelot/felix.c

index a1a6ace..bfc756c 100644 (file)
@@ -798,16 +798,18 @@ static void felix_phylink_validate(struct dsa_switch *ds, int port,
                felix->info->phylink_validate(ocelot, port, supported, state);
 }
 
-static void felix_phylink_mac_config(struct dsa_switch *ds, int port,
-                                    unsigned int link_an_mode,
-                                    const struct phylink_link_state *state)
+static struct phylink_pcs *felix_phylink_mac_select_pcs(struct dsa_switch *ds,
+                                                       int port,
+                                                       phy_interface_t iface)
 {
        struct ocelot *ocelot = ds->priv;
        struct felix *felix = ocelot_to_felix(ocelot);
-       struct dsa_port *dp = dsa_to_port(ds, port);
+       struct phylink_pcs *pcs = NULL;
 
        if (felix->pcs && felix->pcs[port])
-               phylink_set_pcs(dp->pl, felix->pcs[port]);
+               pcs = felix->pcs[port];
+
+       return pcs;
 }
 
 static void felix_phylink_mac_link_down(struct dsa_switch *ds, int port,
@@ -1598,7 +1600,7 @@ const struct dsa_switch_ops felix_switch_ops = {
        .get_ts_info                    = felix_get_ts_info,
        .phylink_get_caps               = felix_phylink_get_caps,
        .phylink_validate               = felix_phylink_validate,
-       .phylink_mac_config             = felix_phylink_mac_config,
+       .phylink_mac_select_pcs         = felix_phylink_mac_select_pcs,
        .phylink_mac_link_down          = felix_phylink_mac_link_down,
        .phylink_mac_link_up            = felix_phylink_mac_link_up,
        .port_fast_age                  = felix_port_fast_age,