net: atlantic: convert EEE handling to use linkmode bitmaps
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 7 Feb 2024 16:41:19 +0000 (17:41 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 9 Feb 2024 20:55:46 +0000 (12:55 -0800)
Convert EEE handling to use linkmode bitmaps. This prepares for
removing the legacy bitmaps from struct ethtool_keee.
No functional change intended.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/c5a61d57-d2b0-427f-93b3-fcf7721165f3@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c

index 0bd1a0a1ae6aff61b31673f0ab74727b306e715a..a2606ee3b0a56986ebd2f1715bc6bd4a2b764484 100644 (file)
@@ -15,6 +15,7 @@
 #include "aq_macsec.h"
 #include "aq_main.h"
 
+#include <linux/linkmode.h>
 #include <linux/ptp_clock_kernel.h>
 
 static void aq_ethtool_get_regs(struct net_device *ndev,
@@ -681,20 +682,16 @@ static int aq_ethtool_get_ts_info(struct net_device *ndev,
        return 0;
 }
 
-static u32 eee_mask_to_ethtool_mask(u32 speed)
+static void eee_mask_to_ethtool_mask(unsigned long *mode, u32 speed)
 {
-       u32 rate = 0;
-
        if (speed & AQ_NIC_RATE_EEE_10G)
-               rate |= SUPPORTED_10000baseT_Full;
+               linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, mode);
 
        if (speed & AQ_NIC_RATE_EEE_1G)
-               rate |= SUPPORTED_1000baseT_Full;
+               linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, mode);
 
        if (speed & AQ_NIC_RATE_EEE_100M)
-               rate |= SUPPORTED_100baseT_Full;
-
-       return rate;
+               linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, mode);
 }
 
 static int aq_ethtool_get_eee(struct net_device *ndev, struct ethtool_keee *eee)
@@ -713,14 +710,14 @@ static int aq_ethtool_get_eee(struct net_device *ndev, struct ethtool_keee *eee)
        if (err < 0)
                return err;
 
-       eee->supported_u32 = eee_mask_to_ethtool_mask(supported_rates);
+       eee_mask_to_ethtool_mask(eee->supported, supported_rates);
 
        if (aq_nic->aq_nic_cfg.eee_speeds)
-               eee->advertised_u32 = eee->supported_u32;
+               linkmode_copy(eee->advertised, eee->supported);
 
-       eee->lp_advertised_u32 = eee_mask_to_ethtool_mask(rate);
+       eee_mask_to_ethtool_mask(eee->lp_advertised, rate);
 
-       eee->eee_enabled = !!eee->advertised_u32;
+       eee->eee_enabled = !linkmode_empty(eee->advertised);
 
        eee->tx_lpi_enabled = eee->eee_enabled;
        if ((supported_rates & rate) & AQ_NIC_RATE_EEE_MSK)