net: dsa: microchip: ksz9477: separate phylink mode from switch register
authorArun Ramadoss <arun.ramadoss@microchip.com>
Wed, 22 Jun 2022 09:04:21 +0000 (14:34 +0530)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Jun 2022 10:31:43 +0000 (11:31 +0100)
As per 'commit 3506b2f42dff ("net: dsa: microchip: call
phy_remove_link_mode during probe")' phy_remove_link_mode is added in
the switch_register function after dsa_switch_register. In order to have
the common switch register function, moving this phylink validation to
phylink_get_caps validation hook.

Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/microchip/ksz9477.c
drivers/net/dsa/microchip/ksz_common.c

index e3989aef93f439b8ed5079fc3c794cb753ecc6a7..4fcc7923da4dd17a7ef23b4fbab6e90429394e9c 100644 (file)
@@ -1059,8 +1059,11 @@ static void ksz9477_phy_errata_setup(struct ksz_device *dev, int port)
 static void ksz9477_get_caps(struct ksz_device *dev, int port,
                             struct phylink_config *config)
 {
-       config->mac_capabilities = MAC_10 | MAC_100 | MAC_1000FD |
-                                  MAC_ASYM_PAUSE | MAC_SYM_PAUSE;
+       config->mac_capabilities = MAC_10 | MAC_100 | MAC_ASYM_PAUSE |
+                                  MAC_SYM_PAUSE;
+
+       if (dev->features & GBIT_SUPPORT)
+               config->mac_capabilities |= MAC_1000FD;
 }
 
 static void ksz9477_port_setup(struct ksz_device *dev, int port, bool cpu_port)
@@ -1381,29 +1384,7 @@ static const struct ksz_dev_ops ksz9477_dev_ops = {
 
 int ksz9477_switch_register(struct ksz_device *dev)
 {
-       int ret, i;
-       struct phy_device *phydev;
-
-       ret = ksz_switch_register(dev, &ksz9477_dev_ops);
-       if (ret)
-               return ret;
-
-       for (i = 0; i < dev->phy_port_cnt; ++i) {
-               if (!dsa_is_user_port(dev->ds, i))
-                       continue;
-
-               phydev = dsa_to_port(dev->ds, i)->slave->phydev;
-
-               /* The MAC actually cannot run in 1000 half-duplex mode. */
-               phy_remove_link_mode(phydev,
-                                    ETHTOOL_LINK_MODE_1000baseT_Half_BIT);
-
-               /* PHY does not support gigabit. */
-               if (!(dev->features & GBIT_SUPPORT))
-                       phy_remove_link_mode(phydev,
-                                            ETHTOOL_LINK_MODE_1000baseT_Full_BIT);
-       }
-       return ret;
+       return ksz_switch_register(dev, &ksz9477_dev_ops);
 }
 EXPORT_SYMBOL(ksz9477_switch_register);
 
index 9ebeaba2c75517072893a9bedec6644a72719b79..62d699a47589bad601b204a90bf6bc97f95c9618 100644 (file)
@@ -1332,7 +1332,7 @@ int ksz_switch_register(struct ksz_device *dev,
        /* Start the MIB timer. */
        schedule_delayed_work(&dev->mib_read, 0);
 
-       return 0;
+       return ret;
 }
 EXPORT_SYMBOL(ksz_switch_register);