]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
sfc: add bits for 25/50/100G supported/advertised speeds
authorEdward Cree <ecree@solarflare.com>
Wed, 10 Jan 2018 18:00:25 +0000 (18:00 +0000)
committerSultan Alsawaf <sultan.alsawaf@canonical.com>
Wed, 24 Jul 2019 15:45:14 +0000 (09:45 -0600)
BugLink: https://bugs.launchpad.net/bugs/1836635
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 5abb5e7f916ee8d2d2543fb70edb2817284203cc)
Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/net/ethernet/sfc/mcdi_port.c

index 6d913dd68d6205f302ad67bf8fbc4ce0d7580328..ce8aabf9091e47acc1f19e74f42b4d99b2b871d6 100644 (file)
@@ -198,6 +198,12 @@ static void mcdi_to_ethtool_linkset(u32 media, u32 cap, unsigned long *linkset)
                        SET_BIT(10000baseT_Full);
                if (cap & (1 << MC_CMD_PHY_CAP_40000FDX_LBN))
                        SET_BIT(40000baseCR4_Full);
+               if (cap & (1 << MC_CMD_PHY_CAP_100000FDX_LBN))
+                       SET_BIT(100000baseCR4_Full);
+               if (cap & (1 << MC_CMD_PHY_CAP_25000FDX_LBN))
+                       SET_BIT(25000baseCR_Full);
+               if (cap & (1 << MC_CMD_PHY_CAP_50000FDX_LBN))
+                       SET_BIT(50000baseCR2_Full);
                break;
 
        case MC_CMD_MEDIA_BASE_T:
@@ -252,6 +258,12 @@ static u32 ethtool_linkset_to_mcdi_cap(const unsigned long *linkset)
                result |= (1 << MC_CMD_PHY_CAP_10000FDX_LBN);
        if (TEST_BIT(40000baseCR4_Full) || TEST_BIT(40000baseKR4_Full))
                result |= (1 << MC_CMD_PHY_CAP_40000FDX_LBN);
+       if (TEST_BIT(100000baseCR4_Full))
+               result |= (1 << MC_CMD_PHY_CAP_100000FDX_LBN);
+       if (TEST_BIT(25000baseCR_Full))
+               result |= (1 << MC_CMD_PHY_CAP_25000FDX_LBN);
+       if (TEST_BIT(50000baseCR2_Full))
+               result |= (1 << MC_CMD_PHY_CAP_50000FDX_LBN);
        if (TEST_BIT(Pause))
                result |= (1 << MC_CMD_PHY_CAP_PAUSE_LBN);
        if (TEST_BIT(Asym_Pause))