]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: dsa: lantiq_gswip: deduplicate dsa_switch_ops
authorDaniel Golle <daniel@makrotopia.org>
Fri, 22 Aug 2025 16:11:30 +0000 (17:11 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 25 Aug 2025 22:15:45 +0000 (15:15 -0700)
The two instances of struct dsa_switch_ops differ only by their
.phylink_get_caps op. Instead of having two instances of dsa_switch_ops,
rather just have a pointer to the phylink_get_caps function in
struct gswip_hw_info.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://patch.msgid.link/03d72eceeb3faecdbe03ce58aab40861cf6b77c1.1755878232.git.daniel@makrotopia.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/lantiq_gswip.c

index ba080b71944c97ca5fb1e1f8ce05c92fb2c6f92d..a9e5bddee21c1694089572988feb7cbe24983364 100644 (file)
 struct gswip_hw_info {
        int max_ports;
        int cpu_port;
-       const struct dsa_switch_ops *ops;
+       void (*phylink_get_caps)(struct dsa_switch *ds, int port,
+                                struct phylink_config *config);
 };
 
 struct xway_gphy_match_data {
@@ -1554,6 +1555,14 @@ static void gswip_xrx300_phylink_get_caps(struct dsa_switch *ds, int port,
                MAC_10 | MAC_100 | MAC_1000;
 }
 
+static void gswip_phylink_get_caps(struct dsa_switch *ds, int port,
+                                  struct phylink_config *config)
+{
+       struct gswip_priv *priv = ds->priv;
+
+       priv->hw_info->phylink_get_caps(ds, port, config);
+}
+
 static void gswip_port_set_link(struct gswip_priv *priv, int port, bool link)
 {
        u32 mdio_phy;
@@ -1826,30 +1835,7 @@ static const struct phylink_mac_ops gswip_phylink_mac_ops = {
        .mac_link_up    = gswip_phylink_mac_link_up,
 };
 
-static const struct dsa_switch_ops gswip_xrx200_switch_ops = {
-       .get_tag_protocol       = gswip_get_tag_protocol,
-       .setup                  = gswip_setup,
-       .port_enable            = gswip_port_enable,
-       .port_disable           = gswip_port_disable,
-       .port_bridge_join       = gswip_port_bridge_join,
-       .port_bridge_leave      = gswip_port_bridge_leave,
-       .port_fast_age          = gswip_port_fast_age,
-       .port_vlan_filtering    = gswip_port_vlan_filtering,
-       .port_vlan_add          = gswip_port_vlan_add,
-       .port_vlan_del          = gswip_port_vlan_del,
-       .port_stp_state_set     = gswip_port_stp_state_set,
-       .port_fdb_add           = gswip_port_fdb_add,
-       .port_fdb_del           = gswip_port_fdb_del,
-       .port_fdb_dump          = gswip_port_fdb_dump,
-       .port_change_mtu        = gswip_port_change_mtu,
-       .port_max_mtu           = gswip_port_max_mtu,
-       .phylink_get_caps       = gswip_xrx200_phylink_get_caps,
-       .get_strings            = gswip_get_strings,
-       .get_ethtool_stats      = gswip_get_ethtool_stats,
-       .get_sset_count         = gswip_get_sset_count,
-};
-
-static const struct dsa_switch_ops gswip_xrx300_switch_ops = {
+static const struct dsa_switch_ops gswip_switch_ops = {
        .get_tag_protocol       = gswip_get_tag_protocol,
        .setup                  = gswip_setup,
        .port_enable            = gswip_port_enable,
@@ -1866,7 +1852,7 @@ static const struct dsa_switch_ops gswip_xrx300_switch_ops = {
        .port_fdb_dump          = gswip_port_fdb_dump,
        .port_change_mtu        = gswip_port_change_mtu,
        .port_max_mtu           = gswip_port_max_mtu,
-       .phylink_get_caps       = gswip_xrx300_phylink_get_caps,
+       .phylink_get_caps       = gswip_phylink_get_caps,
        .get_strings            = gswip_get_strings,
        .get_ethtool_stats      = gswip_get_ethtool_stats,
        .get_sset_count         = gswip_get_sset_count,
@@ -2128,7 +2114,7 @@ static int gswip_probe(struct platform_device *pdev)
        priv->ds->dev = dev;
        priv->ds->num_ports = priv->hw_info->max_ports;
        priv->ds->priv = priv;
-       priv->ds->ops = priv->hw_info->ops;
+       priv->ds->ops = &gswip_switch_ops;
        priv->ds->phylink_mac_ops = &gswip_phylink_mac_ops;
        priv->dev = dev;
        mutex_init(&priv->pce_table_lock);
@@ -2229,13 +2215,13 @@ static void gswip_shutdown(struct platform_device *pdev)
 static const struct gswip_hw_info gswip_xrx200 = {
        .max_ports = 7,
        .cpu_port = 6,
-       .ops = &gswip_xrx200_switch_ops,
+       .phylink_get_caps = gswip_xrx200_phylink_get_caps,
 };
 
 static const struct gswip_hw_info gswip_xrx300 = {
        .max_ports = 7,
        .cpu_port = 6,
-       .ops = &gswip_xrx300_switch_ops,
+       .phylink_get_caps = gswip_xrx300_phylink_get_caps,
 };
 
 static const struct of_device_id gswip_of_match[] = {