]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
sfc: Fix reading non-legacy supported link modes
authorErik Ekman <erik@kryo.se>
Sun, 17 Oct 2021 17:16:57 +0000 (19:16 +0200)
committerAndrea Righi <andrea.righi@canonical.com>
Tue, 7 Dec 2021 06:32:21 +0000 (07:32 +0100)
BugLink: https://bugs.launchpad.net/bugs/1950131
commit 041c61488236a5a84789083e3d9f0a51139b6edf upstream.

Everything except the first 32 bits was lost when the pause flags were
added. This makes the 50000baseCR2 mode flag (bit 34) not appear.

I have tested this with a 10G card (SFN5122F-R7) by modifying it to
return a non-legacy link mode (10000baseCR).

Signed-off-by: Erik Ekman <erik@kryo.se>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/net/ethernet/sfc/ethtool_common.c

index bf1443539a1a451dbe6aa6a6beced0225a8463a4..bd552c7dffcb1b2c30a92f7c15d1e985129472e1 100644 (file)
@@ -563,20 +563,14 @@ int efx_ethtool_get_link_ksettings(struct net_device *net_dev,
 {
        struct efx_nic *efx = netdev_priv(net_dev);
        struct efx_link_state *link_state = &efx->link_state;
-       u32 supported;
 
        mutex_lock(&efx->mac_lock);
        efx_mcdi_phy_get_link_ksettings(efx, cmd);
        mutex_unlock(&efx->mac_lock);
 
        /* Both MACs support pause frames (bidirectional and respond-only) */
-       ethtool_convert_link_mode_to_legacy_u32(&supported,
-                                               cmd->link_modes.supported);
-
-       supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
-
-       ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
-                                               supported);
+       ethtool_link_ksettings_add_link_mode(cmd, supported, Pause);
+       ethtool_link_ksettings_add_link_mode(cmd, supported, Asym_Pause);
 
        if (LOOPBACK_INTERNAL(efx)) {
                cmd->base.speed = link_state->speed;