net: dsa: microchip: update the ksz_phylink_get_caps
authorArun Ramadoss <arun.ramadoss@microchip.com>
Fri, 17 Jun 2022 08:42:52 +0000 (14:12 +0530)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 21 Jun 2022 13:26:45 +0000 (15:26 +0200)
This patch assigns the phylink_get_caps in ksz8795 and ksz9477 to
ksz_phylink_get_caps. And update their mac_capabilities in the
respective ksz_dev_ops.

Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/dsa/microchip/ksz8795.c
drivers/net/dsa/microchip/ksz9477.c
drivers/net/dsa/microchip/ksz_common.c
drivers/net/dsa/microchip/ksz_common.h

index 9721c55974beb77cc5a4a3f2275b3ebe7e1a2c97..440779a2cca6a801341f79e9b2f5ad57e2b463ee 100644 (file)
@@ -1348,13 +1348,9 @@ static int ksz8_setup(struct dsa_switch *ds)
        return ksz8_handle_global_errata(ds);
 }
 
-static void ksz8_get_caps(struct dsa_switch *ds, int port,
+static void ksz8_get_caps(struct ksz_device *dev, int port,
                          struct phylink_config *config)
 {
-       struct ksz_device *dev = ds->priv;
-
-       ksz_phylink_get_caps(ds, port, config);
-
        config->mac_capabilities = MAC_10 | MAC_100;
 
        /* Silicon Errata Sheet (DS80000830A):
@@ -1376,7 +1372,7 @@ static const struct dsa_switch_ops ksz8_switch_ops = {
        .setup                  = ksz8_setup,
        .phy_read               = ksz_phy_read16,
        .phy_write              = ksz_phy_write16,
-       .phylink_get_caps       = ksz8_get_caps,
+       .phylink_get_caps       = ksz_phylink_get_caps,
        .phylink_mac_link_down  = ksz_mac_link_down,
        .port_enable            = ksz_enable_port,
        .get_strings            = ksz_get_strings,
@@ -1458,6 +1454,7 @@ static const struct ksz_dev_ops ksz8_dev_ops = {
        .vlan_del = ksz8_port_vlan_del,
        .mirror_add = ksz8_port_mirror_add,
        .mirror_del = ksz8_port_mirror_del,
+       .get_caps = ksz8_get_caps,
        .shutdown = ksz8_reset_switch,
        .init = ksz8_switch_init,
        .exit = ksz8_switch_exit,
index fed16bbede0a9c45a705ba50b290a3b88c03b12c..c90a807610c006ad77f695ef1dedbaa4508a036d 100644 (file)
@@ -1068,11 +1068,9 @@ static void ksz9477_phy_errata_setup(struct ksz_device *dev, int port)
        ksz9477_port_mmd_write(dev, port, 0x1c, 0x20, 0xeeee);
 }
 
-static void ksz9477_get_caps(struct dsa_switch *ds, int port,
+static void ksz9477_get_caps(struct ksz_device *dev, int port,
                             struct phylink_config *config)
 {
-       ksz_phylink_get_caps(ds, port, config);
-
        config->mac_capabilities = MAC_10 | MAC_100 | MAC_1000FD |
                                   MAC_ASYM_PAUSE | MAC_SYM_PAUSE;
 }
@@ -1302,7 +1300,7 @@ static const struct dsa_switch_ops ksz9477_switch_ops = {
        .phy_read               = ksz_phy_read16,
        .phy_write              = ksz_phy_write16,
        .phylink_mac_link_down  = ksz_mac_link_down,
-       .phylink_get_caps       = ksz9477_get_caps,
+       .phylink_get_caps       = ksz_phylink_get_caps,
        .port_enable            = ksz_enable_port,
        .get_strings            = ksz_get_strings,
        .get_ethtool_stats      = ksz_get_ethtool_stats,
@@ -1400,6 +1398,7 @@ static const struct ksz_dev_ops ksz9477_dev_ops = {
        .vlan_del = ksz9477_port_vlan_del,
        .mirror_add = ksz9477_port_mirror_add,
        .mirror_del = ksz9477_port_mirror_del,
+       .get_caps = ksz9477_get_caps,
        .shutdown = ksz9477_reset_switch,
        .init = ksz9477_switch_init,
        .exit = ksz9477_switch_exit,
index d14cb50fe610d3ed15f31d0abfbb09f10a4d9d24..827ca7522a206f6a6f337a3d31e1c332cb470d74 100644 (file)
@@ -469,6 +469,9 @@ void ksz_phylink_get_caps(struct dsa_switch *ds, int port,
        if (dev->info->internal_phy[port])
                __set_bit(PHY_INTERFACE_MODE_INTERNAL,
                          config->supported_interfaces);
+
+       if (dev->dev_ops->get_caps)
+               dev->dev_ops->get_caps(dev, port, config);
 }
 EXPORT_SYMBOL_GPL(ksz_phylink_get_caps);
 
index 39c6ae3d47f90e45c059d11aa078c62d3fc086af..af5f37dbb2ab3aaea3f0db9a15f5ba1d5ae71789 100644 (file)
@@ -193,6 +193,8 @@ struct ksz_dev_ops {
                          bool ingress, struct netlink_ext_ack *extack);
        void (*mirror_del)(struct ksz_device *dev, int port,
                           struct dsa_mall_mirror_tc_entry *mirror);
+       void (*get_caps)(struct ksz_device *dev, int port,
+                        struct phylink_config *config);
        void (*freeze_mib)(struct ksz_device *dev, int port, bool freeze);
        void (*port_init_cnt)(struct ksz_device *dev, int port);
        int (*shutdown)(struct ksz_device *dev);