* [PATCH 1/8] net: usb: r8152: Use linkmode helpers for EEE
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-04 23:40 ` [PATCH 2/8] net: usb: ax88179_178a: " Andrew Lunn
` (8 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Make use of the existing linkmode helpers for converting PHY EEE
register values into links modes, now that ethtool_keee uses link
modes, rather than u32 values.
Rework determining if EEE is active to make is similar as to how
phylib decides, and make use of a phylib helper to validate if EEE is
valid in for the current link mode. This then requires that PHYLIB is
selected.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/usb/Kconfig | 1 +
drivers/net/usb/r8152.c | 31 +++++++++++++++----------------
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/drivers/net/usb/Kconfig b/drivers/net/usb/Kconfig
index 3fd7dccf0f9c..3c360d4f0635 100644
--- a/drivers/net/usb/Kconfig
+++ b/drivers/net/usb/Kconfig
@@ -99,6 +99,7 @@ config USB_RTL8150
config USB_RTL8152
tristate "Realtek RTL8152/RTL8153 Based USB Ethernet Adapters"
select MII
+ select PHYLIB
select CRC32
select CRYPTO
select CRYPTO_HASH
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 3d806b3ff425..fa5e9b7f3bb4 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -10,6 +10,7 @@
#include <linux/etherdevice.h>
#include <linux/mii.h>
#include <linux/ethtool.h>
+#include <linux/phy.h>
#include <linux/usb.h>
#include <linux/crc32.h>
#include <linux/if_vlan.h>
@@ -8924,23 +8925,22 @@ static void rtl8152_get_strings(struct net_device *dev, u32 stringset, u8 *data)
static int r8152_get_eee(struct r8152 *tp, struct ethtool_keee *eee)
{
- u32 lp, adv, supported = 0;
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(common);
u16 val;
val = r8152_mmd_read(tp, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE);
- supported = mmd_eee_cap_to_ethtool_sup_t(val);
+ mii_eee_cap1_mod_linkmode_t(eee->supported, val);
val = r8152_mmd_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_ADV);
- adv = mmd_eee_adv_to_ethtool_adv_t(val);
+ mii_eee_cap1_mod_linkmode_t(eee->advertised, val);
val = r8152_mmd_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE);
- lp = mmd_eee_adv_to_ethtool_adv_t(val);
+ mii_eee_cap1_mod_linkmode_t(eee->lp_advertised, val);
eee->eee_enabled = tp->eee_en;
- eee->eee_active = !!(supported & adv & lp);
- eee->supported_u32 = supported;
- eee->advertised_u32 = tp->eee_adv;
- eee->lp_advertised_u32 = lp;
+
+ linkmode_and(common, eee->advertised, eee->lp_advertised);
+ eee->eee_active = phy_check_valid(tp->speed, tp->duplex, common);
return 0;
}
@@ -8959,23 +8959,22 @@ static int r8152_set_eee(struct r8152 *tp, struct ethtool_keee *eee)
static int r8153_get_eee(struct r8152 *tp, struct ethtool_keee *eee)
{
- u32 lp, adv, supported = 0;
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(common);
u16 val;
val = ocp_reg_read(tp, OCP_EEE_ABLE);
- supported = mmd_eee_cap_to_ethtool_sup_t(val);
+ mii_eee_cap1_mod_linkmode_t(eee->supported, val);
val = ocp_reg_read(tp, OCP_EEE_ADV);
- adv = mmd_eee_adv_to_ethtool_adv_t(val);
+ mii_eee_cap1_mod_linkmode_t(eee->advertised, val);
val = ocp_reg_read(tp, OCP_EEE_LPABLE);
- lp = mmd_eee_adv_to_ethtool_adv_t(val);
+ mii_eee_cap1_mod_linkmode_t(eee->lp_advertised, val);
eee->eee_enabled = tp->eee_en;
- eee->eee_active = !!(supported & adv & lp);
- eee->supported_u32 = supported;
- eee->advertised_u32 = tp->eee_adv;
- eee->lp_advertised_u32 = lp;
+
+ linkmode_and(common, eee->advertised, eee->lp_advertised);
+ eee->eee_active = phy_check_valid(tp->speed, tp->duplex, common);
return 0;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 2/8] net: usb: ax88179_178a: Use linkmode helpers for EEE
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
2024-02-04 23:40 ` [PATCH 1/8] net: usb: r8152: Use linkmode helpers for EEE Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-04 23:40 ` [PATCH 3/8] net: qlogic: qede: " Andrew Lunn
` (7 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Make use of the existing linkmode helpers for converting PHY EEE
register values into links modes, now that ethtool_keee uses link
modes, rather than u32 values.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/usb/ax88179_178a.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index d6168eaa286f..d4bf9865d87b 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -676,21 +676,21 @@ ax88179_ethtool_get_eee(struct usbnet *dev, struct ethtool_keee *data)
MDIO_MMD_PCS);
if (val < 0)
return val;
- data->supported_u32 = mmd_eee_cap_to_ethtool_sup_t(val);
+ mii_eee_cap1_mod_linkmode_t(data->supported, val);
/* Get advertisement EEE */
val = ax88179_phy_read_mmd_indirect(dev, MDIO_AN_EEE_ADV,
MDIO_MMD_AN);
if (val < 0)
return val;
- data->advertised_u32 = mmd_eee_adv_to_ethtool_adv_t(val);
+ mii_eee_cap1_mod_linkmode_t(data->advertised, val);
/* Get LP advertisement EEE */
val = ax88179_phy_read_mmd_indirect(dev, MDIO_AN_EEE_LPABLE,
MDIO_MMD_AN);
if (val < 0)
return val;
- data->lp_advertised_u32 = mmd_eee_adv_to_ethtool_adv_t(val);
+ mii_eee_cap1_mod_linkmode_t(data->lp_advertised, val);
return 0;
}
@@ -698,7 +698,7 @@ ax88179_ethtool_get_eee(struct usbnet *dev, struct ethtool_keee *data)
static int
ax88179_ethtool_set_eee(struct usbnet *dev, struct ethtool_keee *data)
{
- u16 tmp16 = ethtool_adv_to_mmd_eee_adv_t(data->advertised_u32);
+ u16 tmp16 = linkmode_to_mii_eee_cap1_t(data->advertised);
return ax88179_phy_write_mmd_indirect(dev, MDIO_AN_EEE_ADV,
MDIO_MMD_AN, tmp16);
@@ -1663,7 +1663,6 @@ static int ax88179_reset(struct usbnet *dev)
ax88179_disable_eee(dev);
ax88179_ethtool_get_eee(dev, &eee_data);
- eee_data.advertised_u32 = 0;
ax88179_ethtool_set_eee(dev, &eee_data);
/* Restart autoneg */
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 3/8] net: qlogic: qede: Use linkmode helpers for EEE
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
2024-02-04 23:40 ` [PATCH 1/8] net: usb: r8152: Use linkmode helpers for EEE Andrew Lunn
2024-02-04 23:40 ` [PATCH 2/8] net: usb: ax88179_178a: " Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-04 23:40 ` [PATCH 4/8] net: ethernet: ixgbe: Convert EEE to use linkmodes Andrew Lunn
` (6 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Make use of the existing linkmode helpers for bit manipulation of EEE
advertise, support and link partner support. The aim is to drop the
restricted _u32 variants in the near future.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 60 ++++++++++++++++---------
1 file changed, 38 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index dfa15619fd78..ae3ebf0cf999 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -1789,18 +1789,26 @@ static int qede_get_eee(struct net_device *dev, struct ethtool_keee *edata)
return -EOPNOTSUPP;
}
- if (current_link.eee.adv_caps & QED_EEE_1G_ADV)
- edata->advertised_u32 = ADVERTISED_1000baseT_Full;
- if (current_link.eee.adv_caps & QED_EEE_10G_ADV)
- edata->advertised_u32 |= ADVERTISED_10000baseT_Full;
- if (current_link.sup_caps & QED_EEE_1G_ADV)
- edata->supported_u32 = ADVERTISED_1000baseT_Full;
- if (current_link.sup_caps & QED_EEE_10G_ADV)
- edata->supported_u32 |= ADVERTISED_10000baseT_Full;
- if (current_link.eee.lp_adv_caps & QED_EEE_1G_ADV)
- edata->lp_advertised_u32 = ADVERTISED_1000baseT_Full;
- if (current_link.eee.lp_adv_caps & QED_EEE_10G_ADV)
- edata->lp_advertised_u32 |= ADVERTISED_10000baseT_Full;
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ edata->advertised,
+ current_link.eee.adv_caps & QED_EEE_1G_ADV);
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
+ edata->advertised,
+ current_link.eee.adv_caps & QED_EEE_10G_ADV);
+
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ edata->supported,
+ current_link.sup_caps & QED_EEE_1G_ADV);
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
+ edata->supported,
+ current_link.sup_caps & QED_EEE_10G_ADV);
+
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ edata->lp_advertised,
+ current_link.eee.lp_adv_caps & QED_EEE_1G_ADV);
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
+ edata->lp_advertised,
+ current_link.eee.lp_adv_caps & QED_EEE_10G_ADV);
edata->tx_lpi_timer = current_link.eee.tx_lpi_timer;
edata->eee_enabled = current_link.eee.enable;
@@ -1812,9 +1820,12 @@ static int qede_get_eee(struct net_device *dev, struct ethtool_keee *edata)
static int qede_set_eee(struct net_device *dev, struct ethtool_keee *edata)
{
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = {};
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(tmp) = {};
struct qede_dev *edev = netdev_priv(dev);
struct qed_link_output current_link;
struct qed_link_params params;
+ bool unsupp;
if (!edev->ops->common->can_link_change(edev->cdev)) {
DP_INFO(edev, "Link settings are not allowed to be changed\n");
@@ -1832,21 +1843,26 @@ static int qede_set_eee(struct net_device *dev, struct ethtool_keee *edata)
memset(¶ms, 0, sizeof(params));
params.override_flags |= QED_LINK_OVERRIDE_EEE_CONFIG;
- if (!(edata->advertised_u32 & (ADVERTISED_1000baseT_Full |
- ADVERTISED_10000baseT_Full)) ||
- ((edata->advertised_u32 & (ADVERTISED_1000baseT_Full |
- ADVERTISED_10000baseT_Full)) !=
- edata->advertised_u32)) {
+ linkmode_set_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
+ supported);
+ linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ supported);
+
+ unsupp = linkmode_andnot(tmp, edata->advertised, supported);
+ if (unsupp) {
DP_VERBOSE(edev, QED_MSG_DEBUG,
- "Invalid advertised capabilities %d\n",
- edata->advertised_u32);
+ "Invalid advertised capabilities %*pb\n",
+ __ETHTOOL_LINK_MODE_MASK_NBITS, edata->advertised);
return -EINVAL;
}
- if (edata->advertised_u32 & ADVERTISED_1000baseT_Full)
+ if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ edata->advertised))
params.eee.adv_caps = QED_EEE_1G_ADV;
- if (edata->advertised_u32 & ADVERTISED_10000baseT_Full)
- params.eee.adv_caps |= QED_EEE_10G_ADV;
+ if (linkmode_test_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
+ edata->advertised))
+ params.eee.adv_caps = QED_EEE_10G_ADV;
+
params.eee.enable = edata->eee_enabled;
params.eee.tx_lpi_enable = edata->tx_lpi_enabled;
params.eee.tx_lpi_timer = edata->tx_lpi_timer;
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 4/8] net: ethernet: ixgbe: Convert EEE to use linkmodes
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (2 preceding siblings ...)
2024-02-04 23:40 ` [PATCH 3/8] net: qlogic: qede: " Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-04 23:40 ` [PATCH 5/8] net: intel: i40e/igc: Remove setting Autoneg in EEE capabilities Andrew Lunn
` (5 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Convert the tables to make use of ETHTOOL link mode bits, rather than
the old u32 SUPPORTED speeds. Make use of the linkmode helps to set
bits and compare linkmodes. As a result, the _u32 members of keee are
no longer used, a step towards removing them.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 48 ++++++++++++------------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index ca69a8221793..960116871082 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -3403,30 +3403,31 @@ static int ixgbe_get_module_eeprom(struct net_device *dev,
static const struct {
ixgbe_link_speed mac_speed;
- u32 supported;
+ u32 link_mode;
} ixgbe_ls_map[] = {
- { IXGBE_LINK_SPEED_10_FULL, SUPPORTED_10baseT_Full },
- { IXGBE_LINK_SPEED_100_FULL, SUPPORTED_100baseT_Full },
- { IXGBE_LINK_SPEED_1GB_FULL, SUPPORTED_1000baseT_Full },
- { IXGBE_LINK_SPEED_2_5GB_FULL, SUPPORTED_2500baseX_Full },
- { IXGBE_LINK_SPEED_10GB_FULL, SUPPORTED_10000baseT_Full },
+ { IXGBE_LINK_SPEED_10_FULL, ETHTOOL_LINK_MODE_10baseT_Full_BIT },
+ { IXGBE_LINK_SPEED_100_FULL, ETHTOOL_LINK_MODE_100baseT_Full_BIT },
+ { IXGBE_LINK_SPEED_1GB_FULL, ETHTOOL_LINK_MODE_1000baseT_Full_BIT },
+ { IXGBE_LINK_SPEED_2_5GB_FULL, ETHTOOL_LINK_MODE_2500baseX_Full_BIT },
+ { IXGBE_LINK_SPEED_10GB_FULL, ETHTOOL_LINK_MODE_10000baseT_Full_BIT },
};
static const struct {
u32 lp_advertised;
- u32 mac_speed;
+ u32 link_mode;
} ixgbe_lp_map[] = {
- { FW_PHY_ACT_UD_2_100M_TX_EEE, SUPPORTED_100baseT_Full },
- { FW_PHY_ACT_UD_2_1G_T_EEE, SUPPORTED_1000baseT_Full },
- { FW_PHY_ACT_UD_2_10G_T_EEE, SUPPORTED_10000baseT_Full },
- { FW_PHY_ACT_UD_2_1G_KX_EEE, SUPPORTED_1000baseKX_Full },
- { FW_PHY_ACT_UD_2_10G_KX4_EEE, SUPPORTED_10000baseKX4_Full },
- { FW_PHY_ACT_UD_2_10G_KR_EEE, SUPPORTED_10000baseKR_Full},
+ { FW_PHY_ACT_UD_2_100M_TX_EEE, ETHTOOL_LINK_MODE_100baseT_Full_BIT },
+ { FW_PHY_ACT_UD_2_1G_T_EEE, ETHTOOL_LINK_MODE_1000baseT_Full_BIT },
+ { FW_PHY_ACT_UD_2_10G_T_EEE, ETHTOOL_LINK_MODE_10000baseT_Full_BIT },
+ { FW_PHY_ACT_UD_2_1G_KX_EEE, ETHTOOL_LINK_MODE_1000baseKX_Full_BIT },
+ { FW_PHY_ACT_UD_2_10G_KX4_EEE, ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT },
+ { FW_PHY_ACT_UD_2_10G_KR_EEE, ETHTOOL_LINK_MODE_10000baseKR_Full_BIT},
};
static int
ixgbe_get_eee_fw(struct ixgbe_adapter *adapter, struct ethtool_keee *edata)
{
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(common);
u32 info[FW_PHY_ACT_DATA_COUNT] = { 0 };
struct ixgbe_hw *hw = &adapter->hw;
s32 rc;
@@ -3436,28 +3437,29 @@ ixgbe_get_eee_fw(struct ixgbe_adapter *adapter, struct ethtool_keee *edata)
if (rc)
return rc;
- edata->lp_advertised_u32 = 0;
for (i = 0; i < ARRAY_SIZE(ixgbe_lp_map); ++i) {
if (info[0] & ixgbe_lp_map[i].lp_advertised)
- edata->lp_advertised_u32 |= ixgbe_lp_map[i].mac_speed;
+ linkmode_set_bit(ixgbe_lp_map[i].link_mode,
+ edata->lp_advertised);
}
- edata->supported_u32 = 0;
for (i = 0; i < ARRAY_SIZE(ixgbe_ls_map); ++i) {
if (hw->phy.eee_speeds_supported & ixgbe_ls_map[i].mac_speed)
- edata->supported_u32 |= ixgbe_ls_map[i].supported;
+ linkmode_set_bit(ixgbe_lp_map[i].link_mode,
+ edata->lp_advertised);
}
- edata->advertised_u32 = 0;
for (i = 0; i < ARRAY_SIZE(ixgbe_ls_map); ++i) {
if (hw->phy.eee_speeds_advertised & ixgbe_ls_map[i].mac_speed)
- edata->advertised_u32 |= ixgbe_ls_map[i].supported;
+ linkmode_set_bit(ixgbe_lp_map[i].link_mode,
+ edata->advertised);
}
- edata->eee_enabled = !!edata->advertised_u32;
+ edata->eee_enabled = !linkmode_empty(edata->advertised);
edata->tx_lpi_enabled = edata->eee_enabled;
- if (edata->advertised_u32 & edata->lp_advertised_u32)
- edata->eee_active = true;
+
+ linkmode_and(common, edata->advertised, edata->lp_advertised);
+ edata->eee_active = !linkmode_empty(common);
return 0;
}
@@ -3504,7 +3506,7 @@ static int ixgbe_set_eee(struct net_device *netdev, struct ethtool_keee *edata)
return -EINVAL;
}
- if (eee_data.advertised_u32 != edata->advertised_u32) {
+ if (!linkmode_equal(eee_data.advertised, edata->advertised)) {
e_err(drv,
"Setting EEE advertised speeds is not supported\n");
return -EINVAL;
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 5/8] net: intel: i40e/igc: Remove setting Autoneg in EEE capabilities
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (3 preceding siblings ...)
2024-02-04 23:40 ` [PATCH 4/8] net: ethernet: ixgbe: Convert EEE to use linkmodes Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-04 23:40 ` [PATCH 6/8] net: intel: e1000e: Use linkmode helpers for EEE Andrew Lunn
` (4 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Energy Efficient Ethernet should always be negotiated with the link
peer. Don't include SUPPORTED_Autoneg in the results of get_eee() for
supported, advertised or lp_advertised, since it is
assumed. Additionally, ethtool(1) ignores the set bit, and no other
driver sets this.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 7 +------
drivers/net/ethernet/intel/igc/igc_ethtool.c | 4 ----
2 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index 1b5473358e1a..42e7e6cdaa6d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -5664,16 +5664,12 @@ static int i40e_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
if (phy_cfg.eee_capability == 0)
return -EOPNOTSUPP;
- edata->supported_u32 = SUPPORTED_Autoneg;
- edata->lp_advertised_u32 = edata->supported_u32;
-
/* Get current configuration */
status = i40e_aq_get_phy_capabilities(hw, false, false, &phy_cfg, NULL);
if (status)
return -EAGAIN;
- edata->advertised_u32 = phy_cfg.eee_capability ? SUPPORTED_Autoneg : 0U;
- edata->eee_enabled = !!edata->advertised_u32;
+ edata->eee_enabled = !!phy_cfg.eee_capability;
edata->tx_lpi_enabled = pf->stats.tx_lpi_status;
edata->eee_active = pf->stats.tx_lpi_status && pf->stats.rx_lpi_status;
@@ -5691,7 +5687,6 @@ static int i40e_is_eee_param_supported(struct net_device *netdev,
u32 value;
const char *name;
} param[] = {
- {edata->advertised_u32 & ~SUPPORTED_Autoneg, "advertise"},
{edata->tx_lpi_timer, "tx-timer"},
{edata->tx_lpi_enabled != pf->stats.tx_lpi_status, "tx-lpi"}
};
diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c
index 7f844e967421..e9aed4069ebe 100644
--- a/drivers/net/ethernet/intel/igc/igc_ethtool.c
+++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c
@@ -1634,7 +1634,6 @@ static int igc_ethtool_get_eee(struct net_device *netdev,
mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert);
*edata = adapter->eee;
- edata->supported_u32 = SUPPORTED_Autoneg;
eeer = rd32(IGC_EEER);
@@ -1647,9 +1646,6 @@ static int igc_ethtool_get_eee(struct net_device *netdev,
edata->eee_enabled = hw->dev_spec._base.eee_enable;
- edata->advertised_u32 = SUPPORTED_Autoneg;
- edata->lp_advertised_u32 = SUPPORTED_Autoneg;
-
/* Report correct negotiated EEE status for devices that
* wrongly report EEE at half-duplex
*/
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 6/8] net: intel: e1000e: Use linkmode helpers for EEE
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (4 preceding siblings ...)
2024-02-04 23:40 ` [PATCH 5/8] net: intel: i40e/igc: Remove setting Autoneg in EEE capabilities Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-04 23:40 ` [PATCH 7/8] net: intel: igb: " Andrew Lunn
` (3 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Make use of the existing linkmode helpers for converting PHY EEE
register values into links modes, now that ethtool_keee uses link
modes, rather than u32 values.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/ethernet/intel/e1000e/ethtool.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c
index ff243ae71b78..dc553c51d79a 100644
--- a/drivers/net/ethernet/intel/e1000e/ethtool.c
+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c
@@ -2223,16 +2223,16 @@ static int e1000e_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
ret_val = e1000_read_emi_reg_locked(hw, cap_addr, &phy_data);
if (ret_val)
goto release;
- edata->supported_u32 = mmd_eee_cap_to_ethtool_sup_t(phy_data);
+ mii_eee_cap1_mod_linkmode_t(edata->supported, phy_data);
/* EEE Advertised */
- edata->advertised_u32 = mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert);
+ mii_eee_cap1_mod_linkmode_t(edata->advertised, adapter->eee_advert);
/* EEE Link Partner Advertised */
ret_val = e1000_read_emi_reg_locked(hw, lpa_addr, &phy_data);
if (ret_val)
goto release;
- edata->lp_advertised_u32 = mmd_eee_adv_to_ethtool_adv_t(phy_data);
+ mii_eee_cap1_mod_linkmode_t(edata->lp_advertised, phy_data);
/* EEE PCS Status */
ret_val = e1000_read_emi_reg_locked(hw, pcs_stat_addr, &phy_data);
@@ -2265,6 +2265,8 @@ static int e1000e_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
static int e1000e_set_eee(struct net_device *netdev, struct ethtool_keee *edata)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = {};
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(tmp) = {};
struct e1000_hw *hw = &adapter->hw;
struct ethtool_keee eee_curr;
s32 ret_val;
@@ -2283,12 +2285,17 @@ static int e1000e_set_eee(struct net_device *netdev, struct ethtool_keee *edata)
return -EINVAL;
}
- if (edata->advertised_u32 & ~(ADVERTISE_100_FULL | ADVERTISE_1000_FULL)) {
+ linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ supported);
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+ supported);
+
+ if (linkmode_andnot(tmp, edata->advertised, supported)) {
e_err("EEE advertisement supports only 100TX and/or 1000T full-duplex\n");
return -EINVAL;
}
- adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised_u32);
+ adapter->eee_advert = linkmode_to_mii_eee_cap1_t(edata->advertised);
hw->dev_spec.ich8lan.eee_disable = !edata->eee_enabled;
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH 7/8] net: intel: igb: Use linkmode helpers for EEE
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (5 preceding siblings ...)
2024-02-04 23:40 ` [PATCH 6/8] net: intel: e1000e: Use linkmode helpers for EEE Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-06 9:34 ` Maxime Chevallier
2024-02-04 23:40 ` [PATCH 8/8] net: intel: igc: " Andrew Lunn
` (2 subsequent siblings)
9 siblings, 1 reply; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Make use of the existing linkmode helpers for converting PHY EEE
register values into links modes, now that ethtool_keee uses link
modes, rather than u32 values.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/ethernet/intel/igb/igb_ethtool.c | 33 ++++++++++++++++++----------
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index b87b23d2151c..fd771668f946 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -3038,11 +3038,13 @@ static int igb_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
(hw->phy.media_type != e1000_media_type_copper))
return -EOPNOTSUPP;
- edata->supported_u32 = (SUPPORTED_1000baseT_Full |
- SUPPORTED_100baseT_Full);
+ linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ edata->supported);
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+ edata->supported);
if (!hw->dev_spec._82575.eee_disable)
- edata->advertised_u32 =
- mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert);
+ mii_eee_cap1_mod_linkmode_t(edata->advertised,
+ adapter->eee_advert);
/* The IPCNFG and EEER registers are not supported on I354. */
if (hw->mac.type == e1000_i354) {
@@ -3068,7 +3070,7 @@ static int igb_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
if (ret_val)
return -ENODATA;
- edata->lp_advertised_u32 = mmd_eee_adv_to_ethtool_adv_t(phy_data);
+ mii_eee_cap1_mod_linkmode_t(edata->lp_advertised, phy_data);
break;
case e1000_i354:
case e1000_i210:
@@ -3099,7 +3101,7 @@ static int igb_get_eee(struct net_device *netdev, struct ethtool_keee *edata)
edata->eee_enabled = false;
edata->eee_active = false;
edata->tx_lpi_enabled = false;
- edata->advertised_u32 &= ~edata->advertised_u32;
+ linkmode_zero(edata->advertised);
}
return 0;
@@ -3109,6 +3111,8 @@ static int igb_set_eee(struct net_device *netdev,
struct ethtool_keee *edata)
{
struct igb_adapter *adapter = netdev_priv(netdev);
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = {};
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(tmp) = {};
struct e1000_hw *hw = &adapter->hw;
struct ethtool_keee eee_curr;
bool adv1g_eee = true, adv100m_eee = true;
@@ -3138,14 +3142,21 @@ static int igb_set_eee(struct net_device *netdev,
return -EINVAL;
}
- if (!edata->advertised_u32 || (edata->advertised_u32 &
- ~(ADVERTISE_100_FULL | ADVERTISE_1000_FULL))) {
+ linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+ supported);
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+ supported);
+ if (linkmode_andnot(tmp, edata->advertised, supported)) {
dev_err(&adapter->pdev->dev,
"EEE Advertisement supports only 100Tx and/or 100T full duplex\n");
return -EINVAL;
}
- adv100m_eee = !!(edata->advertised_u32 & ADVERTISE_100_FULL);
- adv1g_eee = !!(edata->advertised_u32 & ADVERTISE_1000_FULL);
+ adv100m_eee = linkmode_test_bit(
+ ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+ edata->advertised);
+ adv1g_eee = linkmode_test_bit(
+ ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+ edata->advertised);
} else if (!edata->eee_enabled) {
dev_err(&adapter->pdev->dev,
@@ -3153,7 +3164,7 @@ static int igb_set_eee(struct net_device *netdev,
return -EINVAL;
}
- adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised_u32);
+ adapter->eee_advert = linkmode_to_mii_eee_cap1_t(edata->advertised);
if (hw->dev_spec._82575.eee_disable != !edata->eee_enabled) {
hw->dev_spec._82575.eee_disable = !edata->eee_enabled;
adapter->flags |= IGB_FLAG_EEE;
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 7/8] net: intel: igb: Use linkmode helpers for EEE
2024-02-04 23:40 ` [PATCH 7/8] net: intel: igb: " Andrew Lunn
@ 2024-02-06 9:34 ` Maxime Chevallier
2024-02-06 14:25 ` Andrew Lunn
0 siblings, 1 reply; 13+ messages in thread
From: Maxime Chevallier @ 2024-02-06 9:34 UTC (permalink / raw)
To: Andrew Lunn
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen,
linux-usb, netdev, linux-kernel, intel-wired-lan
Hello Andrew,
On Sun, 04 Feb 2024 17:40:24 -0600
Andrew Lunn <andrew@lunn.ch> wrote:
> Make use of the existing linkmode helpers for converting PHY EEE
> register values into links modes, now that ethtool_keee uses link
> modes, rather than u32 values.
>
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
[...]
> @@ -3109,6 +3111,8 @@ static int igb_set_eee(struct net_device *netdev,
> struct ethtool_keee *edata)
> {
> struct igb_adapter *adapter = netdev_priv(netdev);
> + __ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = {};
> + __ETHTOOL_DECLARE_LINK_MODE_MASK(tmp) = {};
> struct e1000_hw *hw = &adapter->hw;
> struct ethtool_keee eee_curr;
> bool adv1g_eee = true, adv100m_eee = true;
> @@ -3138,14 +3142,21 @@ static int igb_set_eee(struct net_device *netdev,
> return -EINVAL;
> }
>
> - if (!edata->advertised_u32 || (edata->advertised_u32 &
> - ~(ADVERTISE_100_FULL | ADVERTISE_1000_FULL))) {
> + linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
> + supported);
> + linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
> + supported);
> + if (linkmode_andnot(tmp, edata->advertised, supported)) {
> dev_err(&adapter->pdev->dev,
> "EEE Advertisement supports only 100Tx and/or 100T full duplex\n");
> return -EINVAL;
> }
> - adv100m_eee = !!(edata->advertised_u32 & ADVERTISE_100_FULL);
> - adv1g_eee = !!(edata->advertised_u32 & ADVERTISE_1000_FULL);
> + adv100m_eee = linkmode_test_bit(
> + ETHTOOL_LINK_MODE_100baseT_Full_BIT,
> + edata->advertised);
> + adv1g_eee = linkmode_test_bit(
> + ETHTOOL_LINK_MODE_100baseT_Full_BIT,
Probably a typo, I think it should be ETHTOOL_LINK_MODE_1000baseT_Full_BIT
here :)
> + edata->advertised);
>
> } else if (!edata->eee_enabled) {
> dev_err(&adapter->pdev->dev,
> @@ -3153,7 +3164,7 @@ static int igb_set_eee(struct net_device *netdev,
> return -EINVAL;
> }
>
> - adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised_u32);
> + adapter->eee_advert = linkmode_to_mii_eee_cap1_t(edata->advertised);
> if (hw->dev_spec._82575.eee_disable != !edata->eee_enabled) {
> hw->dev_spec._82575.eee_disable = !edata->eee_enabled;
> adapter->flags |= IGB_FLAG_EEE;
>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 7/8] net: intel: igb: Use linkmode helpers for EEE
2024-02-06 9:34 ` Maxime Chevallier
@ 2024-02-06 14:25 ` Andrew Lunn
0 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-06 14:25 UTC (permalink / raw)
To: Maxime Chevallier
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen,
linux-usb, netdev, linux-kernel, intel-wired-lan
> > - adv100m_eee = !!(edata->advertised_u32 & ADVERTISE_100_FULL);
> > - adv1g_eee = !!(edata->advertised_u32 & ADVERTISE_1000_FULL);
> > + adv100m_eee = linkmode_test_bit(
> > + ETHTOOL_LINK_MODE_100baseT_Full_BIT,
> > + edata->advertised);
> > + adv1g_eee = linkmode_test_bit(
> > + ETHTOOL_LINK_MODE_100baseT_Full_BIT,
>
> Probably a typo, I think it should be ETHTOOL_LINK_MODE_1000baseT_Full_BIT
> here :)
Yes, good catch. Thanks.
Andrew
---
pw-bot: cr
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 8/8] net: intel: igc: Use linkmode helpers for EEE
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (6 preceding siblings ...)
2024-02-04 23:40 ` [PATCH 7/8] net: intel: igb: " Andrew Lunn
@ 2024-02-04 23:40 ` Andrew Lunn
2024-02-05 1:03 ` [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
2024-02-06 9:38 ` Maxime Chevallier
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-04 23:40 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan, Andrew Lunn
Make use of the existing linkmode helpers for converting PHY EEE
register values into links modes, now that ethtool_keee uses link
modes, rather than u32 values.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/ethernet/intel/igc/igc_ethtool.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c
index e9aed4069ebe..e9d78bcb0201 100644
--- a/drivers/net/ethernet/intel/igc/igc_ethtool.c
+++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c
@@ -1630,8 +1630,8 @@ static int igc_ethtool_get_eee(struct net_device *netdev,
u32 eeer;
if (hw->dev_spec._base.eee_enable)
- edata->advertised_u32 =
- mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert);
+ mii_eee_cap1_mod_linkmode_t(edata->advertised,
+ adapter->eee_advert);
*edata = adapter->eee;
@@ -1653,7 +1653,7 @@ static int igc_ethtool_get_eee(struct net_device *netdev,
edata->eee_enabled = false;
edata->eee_active = false;
edata->tx_lpi_enabled = false;
- edata->advertised_u32 &= ~edata->advertised_u32;
+ linkmode_zero(edata->advertised);
}
return 0;
@@ -1695,7 +1695,8 @@ static int igc_ethtool_set_eee(struct net_device *netdev,
return -EINVAL;
}
- adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised_u32);
+ adapter->eee_advert = linkmode_to_mii_eee_cap1_t(edata->advertised);
+
if (hw->dev_spec._base.eee_enable != edata->eee_enabled) {
hw->dev_spec._base.eee_enable = edata->eee_enabled;
adapter->flags |= IGC_FLAG_EEE;
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (7 preceding siblings ...)
2024-02-04 23:40 ` [PATCH 8/8] net: intel: igc: " Andrew Lunn
@ 2024-02-05 1:03 ` Andrew Lunn
2024-02-06 9:38 ` Maxime Chevallier
9 siblings, 0 replies; 13+ messages in thread
From: Andrew Lunn @ 2024-02-05 1:03 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen
Cc: linux-usb, netdev, linux-kernel, intel-wired-lan
On Sun, Feb 04, 2024 at 05:40:17PM -0600, Andrew Lunn wrote:
> EEE has until recently been limited to lower speeds due to the use of
> the legacy u32 for link speeds. This restriction has been lifted, with
> the use of linkmode bitmaps. This patchset convert some MAC drivers
> still using the old _u32 to link modes, with the aim of soon being
> able to remove the legacy _u32 members in the keee structure.
>
> A couple of Intel drivers do odd things with EEE, setting the autoneg
> bit. It is unclear why, no other driver does, ethtool does not display
> it, and EEE is always negotiated. One patch in this series deletes
> this code. Comments on why its actually useful and should be kept are
> gratefully received.
Gerr. How many people have i said to put the tree in the Subject: And
then i forget myself :-(
net-next.
Andrew
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps
2024-02-04 23:40 [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
` (8 preceding siblings ...)
2024-02-05 1:03 ` [PATCH 0/8] drivers: net: Convert EEE handling to use linkmode bitmaps Andrew Lunn
@ 2024-02-06 9:38 ` Maxime Chevallier
9 siblings, 0 replies; 13+ messages in thread
From: Maxime Chevallier @ 2024-02-06 9:38 UTC (permalink / raw)
To: Andrew Lunn
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Ariel Elior, Manish Chopra, Jesse Brandeburg, Tony Nguyen,
linux-usb, netdev, linux-kernel, intel-wired-lan
Hello Andrew,
On Sun, 04 Feb 2024 17:40:17 -0600
Andrew Lunn <andrew@lunn.ch> wrote:
> EEE has until recently been limited to lower speeds due to the use of
> the legacy u32 for link speeds. This restriction has been lifted, with
> the use of linkmode bitmaps. This patchset convert some MAC drivers
> still using the old _u32 to link modes, with the aim of soon being
> able to remove the legacy _u32 members in the keee structure.
Although I don't have proper hardware to test all these, I've read
the patches and I didn't find any obvious issues besides the typo in
patch 7.
Regards,
Maxime
^ permalink raw reply [flat|nested] 13+ messages in thread