From: Aya Levin <a...@mellanox.com>

Introduce 50Gbps per lane link modes and 200Gbps speed, update print
functions and initialization functions accordingly.
In addition, update related man page accordingly.

Signed-off-by: Aya Levin <a...@mellanox.com>
Signed-off-by: Tariq Toukan <tar...@mellanox.com>
---
 ethtool-copy.h | 18 +++++++++++++++++-
 ethtool.8.in   | 15 +++++++++++++++
 ethtool.c      | 45 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 77 insertions(+), 1 deletion(-)

V2:
- Removed wrong and unneeded initialization of adv_bit.
- Removed an addition in ethtool-copy.h that does not exist in kernel.


diff --git a/ethtool-copy.h b/ethtool-copy.h
index 6bfbb85f9402..120407604232 100644
--- a/ethtool-copy.h
+++ b/ethtool-copy.h
@@ -1455,6 +1455,21 @@ enum ethtool_link_mode_bit_indices {
        ETHTOOL_LINK_MODE_FEC_NONE_BIT  = 49,
        ETHTOOL_LINK_MODE_FEC_RS_BIT    = 50,
        ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
+       ETHTOOL_LINK_MODE_50000baseKR_Full_BIT           = 52,
+       ETHTOOL_LINK_MODE_50000baseSR_Full_BIT           = 53,
+       ETHTOOL_LINK_MODE_50000baseCR_Full_BIT           = 54,
+       ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT     = 55,
+       ETHTOOL_LINK_MODE_50000baseDR_Full_BIT           = 56,
+       ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT         = 57,
+       ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT         = 58,
+       ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT         = 59,
+       ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
+       ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT         = 61,
+       ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT         = 62,
+       ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT         = 63,
+       ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
+       ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT         = 65,
+       ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT         = 66,
 
        /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
         * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
@@ -1463,7 +1478,7 @@ enum ethtool_link_mode_bit_indices {
         */
 
        __ETHTOOL_LINK_MODE_LAST
-         = ETHTOOL_LINK_MODE_FEC_BASER_BIT,
+         = ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
 };
 
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name)     \
@@ -1571,6 +1586,7 @@ enum ethtool_link_mode_bit_indices {
 #define SPEED_50000            50000
 #define SPEED_56000            56000
 #define SPEED_100000           100000
+#define SPEED_200000           200000
 
 #define SPEED_UNKNOWN          -1
 
diff --git a/ethtool.8.in b/ethtool.8.in
index 5a26cff5fb33..64ce0711ad5f 100644
--- a/ethtool.8.in
+++ b/ethtool.8.in
@@ -650,6 +650,11 @@ lB l       lB.
 0x400000000    50000baseCR2 Full
 0x800000000    50000baseKR2 Full
 0x10000000000  50000baseSR2 Full
+0x10000000000000       50000baseKR Full
+0x20000000000000       50000baseSR Full
+0x40000000000000       50000baseCR Full
+0x80000000000000       50000baseLR_ER_FR Full
+0x100000000000000      50000baseDR Full
 0x8000000      56000baseKR4 Full
 0x10000000     56000baseCR4 Full
 0x20000000     56000baseSR4 Full
@@ -658,6 +663,16 @@ lB l       lB.
 0x2000000000   100000baseSR4 Full
 0x4000000000   100000baseCR4 Full
 0x8000000000   100000baseLR4_ER4 Full
+0x200000000000000      100000baseKR2 Full
+0x400000000000000      100000baseSR2 Full
+0x800000000000000      100000baseCR2 Full
+0x1000000000000000     100000baseLR2_ER2_FR2 Full
+0x2000000000000000     100000baseDR2 Full
+0x4000000000000000     200000baseKR4 Full
+0x8000000000000000     200000baseSR4 Full
+0x10000000000000000    200000baseLR4_ER4_FR4 Full
+0x20000000000000000    200000baseDR4 Full
+0x40000000000000000    200000baseCR4 Full
 .TE
 .TP
 .BI phyad \ N
diff --git a/ethtool.c b/ethtool.c
index fb4c0886ca84..c36aafd5bb3a 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -530,6 +530,21 @@ static void init_global_link_mode_masks(void)
                ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
                ETHTOOL_LINK_MODE_2500baseT_Full_BIT,
                ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
+               ETHTOOL_LINK_MODE_50000baseKR_Full_BIT,
+               ETHTOOL_LINK_MODE_50000baseSR_Full_BIT,
+               ETHTOOL_LINK_MODE_50000baseCR_Full_BIT,
+               ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT,
+               ETHTOOL_LINK_MODE_50000baseDR_Full_BIT,
+               ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT,
+               ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT,
+               ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT,
+               ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT,
+               ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT,
+               ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT,
+               ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT,
+               ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT,
+               ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT,
+               ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
        };
        static const enum ethtool_link_mode_bit_indices
                additional_advertised_flags_bits[] = {
@@ -689,6 +704,36 @@ static void dump_link_caps(const char *prefix, const char 
*an_prefix,
                  "2500baseT/Full" },
                { 0, ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
                  "5000baseT/Full" },
+               { 0, ETHTOOL_LINK_MODE_50000baseKR_Full_BIT,
+                 "50000baseKR/Full" },
+               { 0, ETHTOOL_LINK_MODE_50000baseSR_Full_BIT,
+                 "50000baseSR/Full" },
+               { 0, ETHTOOL_LINK_MODE_50000baseCR_Full_BIT,
+                 "50000baseCR/Full" },
+               { 0, ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT,
+                 "50000baseLR_ER_FR/Full" },
+               { 0, ETHTOOL_LINK_MODE_50000baseDR_Full_BIT,
+                 "50000baseDR/Full" },
+               { 0, ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT,
+                 "100000baseKR2/Full" },
+               { 0, ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT,
+                 "100000baseSR2/Full" },
+               { 0, ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT,
+                 "100000baseCR2/Full" },
+               { 0, ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT,
+                 "100000baseLR2_ER2_FR2/Full" },
+               { 0, ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT,
+                 "100000baseDR2/Full" },
+               { 0, ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT,
+                 "200000baseKR4/Full" },
+               { 0, ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT,
+                 "200000baseSR4/Full" },
+               { 0, ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT,
+                 "200000baseLR4_ER4_FR4/Full" },
+               { 0, ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT,
+                 "200000baseDR4/Full" },
+               { 0, ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
+                 "200000baseCR4/Full" },
        };
        int indent;
        int did1, new_line_pend, i;
-- 
1.8.3.1

Reply via email to