From: Faizal Rahim <[email protected]>

Move the advertised link modes and flow control configuration from
igc_ethtool_set_link_ksettings() into igc_handle_autoneg_enabled().

No functional change.

Reviewed-by: Looi Hong Aun <[email protected]>
Reviewed-by: Aleksandr Loktionov <[email protected]>
Signed-off-by: Faizal Rahim <[email protected]>
Signed-off-by: Khai Wen Tan <[email protected]>
---
 drivers/net/ethernet/intel/igc/igc_ethtool.c | 72 ++++++++++++--------
 1 file changed, 44 insertions(+), 28 deletions(-)

diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c 
b/drivers/net/ethernet/intel/igc/igc_ethtool.c
index 0122009bedd0..cfcbf2fdad6e 100644
--- a/drivers/net/ethernet/intel/igc/igc_ethtool.c
+++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c
@@ -2000,6 +2000,49 @@ static int igc_ethtool_get_link_ksettings(struct 
net_device *netdev,
        return 0;
 }
 
+/**
+ * igc_handle_autoneg_enabled - Configure autonegotiation advertisement
+ * @adapter: private driver structure
+ * @cmd: ethtool link ksettings from user
+ *
+ * Records advertised speeds and flow control settings when autoneg
+ * is enabled.
+ */
+static void igc_handle_autoneg_enabled(struct igc_adapter *adapter,
+                                      const struct ethtool_link_ksettings *cmd)
+{
+       struct igc_hw *hw = &adapter->hw;
+       u16 advertised = 0;
+
+       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
+                                                 2500baseT_Full))
+               advertised |= ADVERTISE_2500_FULL;
+
+       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
+                                                 1000baseT_Full))
+               advertised |= ADVERTISE_1000_FULL;
+
+       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
+                                                 100baseT_Full))
+               advertised |= ADVERTISE_100_FULL;
+
+       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
+                                                 100baseT_Half))
+               advertised |= ADVERTISE_100_HALF;
+
+       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
+                                                 10baseT_Full))
+               advertised |= ADVERTISE_10_FULL;
+
+       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
+                                                 10baseT_Half))
+               advertised |= ADVERTISE_10_HALF;
+
+       hw->phy.autoneg_advertised = advertised;
+       if (adapter->fc_autoneg)
+               hw->fc.requested_mode = igc_fc_default;
+}
+
 static int
 igc_ethtool_set_link_ksettings(struct net_device *netdev,
                               const struct ethtool_link_ksettings *cmd)
@@ -2007,7 +2050,6 @@ igc_ethtool_set_link_ksettings(struct net_device *netdev,
        struct igc_adapter *adapter = netdev_priv(netdev);
        struct net_device *dev = adapter->netdev;
        struct igc_hw *hw = &adapter->hw;
-       u16 advertised = 0;
 
        /* When adapter in resetting mode, autoneg/speed/duplex
         * cannot be changed
@@ -2032,34 +2074,8 @@ igc_ethtool_set_link_ksettings(struct net_device *netdev,
        while (test_and_set_bit(__IGC_RESETTING, &adapter->state))
                usleep_range(1000, 2000);
 
-       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
-                                                 2500baseT_Full))
-               advertised |= ADVERTISE_2500_FULL;
-
-       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
-                                                 1000baseT_Full))
-               advertised |= ADVERTISE_1000_FULL;
-
-       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
-                                                 100baseT_Full))
-               advertised |= ADVERTISE_100_FULL;
-
-       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
-                                                 100baseT_Half))
-               advertised |= ADVERTISE_100_HALF;
-
-       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
-                                                 10baseT_Full))
-               advertised |= ADVERTISE_10_FULL;
-
-       if (ethtool_link_ksettings_test_link_mode(cmd, advertising,
-                                                 10baseT_Half))
-               advertised |= ADVERTISE_10_HALF;
-
        if (cmd->base.autoneg == AUTONEG_ENABLE) {
-               hw->phy.autoneg_advertised = advertised;
-               if (adapter->fc_autoneg)
-                       hw->fc.requested_mode = igc_fc_default;
+               igc_handle_autoneg_enabled(adapter, cmd);
        } else {
                netdev_info(dev, "Force mode currently not supported\n");
        }
-- 
2.43.0

Reply via email to