]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: dsa: xrs700x: provide own phylink MAC operations
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 16 Apr 2024 10:19:08 +0000 (11:19 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 18 Apr 2024 01:29:49 +0000 (18:29 -0700)
Convert xrs700x to provide its own phylink MAC operations, thus
avoiding the shim layer in DSA's port.c. We need to provide stubs for
the mac_link_down() and mac_config() methods which are mandatory.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://lore.kernel.org/r/E1rwfu8-007531-TG@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/xrs700x/xrs700x.c

index 96db032b478fabdd5152760ebf4accd5552b16f9..6605fa44bcf0c3e02b9b6cda387ef2d683126528 100644 (file)
@@ -466,13 +466,25 @@ static void xrs700x_phylink_get_caps(struct dsa_switch *ds, int port,
        }
 }
 
-static void xrs700x_mac_link_up(struct dsa_switch *ds, int port,
-                               unsigned int mode, phy_interface_t interface,
+static void xrs700x_mac_config(struct phylink_config *config, unsigned int mode,
+                              const struct phylink_link_state *state)
+{
+}
+
+static void xrs700x_mac_link_down(struct phylink_config *config,
+                                 unsigned int mode, phy_interface_t interface)
+{
+}
+
+static void xrs700x_mac_link_up(struct phylink_config *config,
                                struct phy_device *phydev,
+                               unsigned int mode, phy_interface_t interface,
                                int speed, int duplex,
                                bool tx_pause, bool rx_pause)
 {
-       struct xrs700x *priv = ds->priv;
+       struct dsa_port *dp = dsa_phylink_to_port(config);
+       struct xrs700x *priv = dp->ds->priv;
+       int port = dp->index;
        unsigned int val;
 
        switch (speed) {
@@ -699,13 +711,18 @@ static int xrs700x_hsr_leave(struct dsa_switch *ds, int port,
        return 0;
 }
 
+static const struct phylink_mac_ops xrs700x_phylink_mac_ops = {
+       .mac_config             = xrs700x_mac_config,
+       .mac_link_down          = xrs700x_mac_link_down,
+       .mac_link_up            = xrs700x_mac_link_up,
+};
+
 static const struct dsa_switch_ops xrs700x_ops = {
        .get_tag_protocol       = xrs700x_get_tag_protocol,
        .setup                  = xrs700x_setup,
        .teardown               = xrs700x_teardown,
        .port_stp_state_set     = xrs700x_port_stp_state_set,
        .phylink_get_caps       = xrs700x_phylink_get_caps,
-       .phylink_mac_link_up    = xrs700x_mac_link_up,
        .get_strings            = xrs700x_get_strings,
        .get_sset_count         = xrs700x_get_sset_count,
        .get_ethtool_stats      = xrs700x_get_ethtool_stats,