163 lines
6.0 KiB
Diff
163 lines
6.0 KiB
Diff
From b13bc90142533a7cfe79d1f136a24ed20a75c1fb Mon Sep 17 00:00:00 2001
|
|
From: Aya Levin <ayal@mellanox.com>
|
|
Date: Mon, 25 Feb 2019 17:44:34 +0200
|
|
Subject: [PATCH] ethtool: Add support for 200Gbps (50Gbps per lane) link mode
|
|
|
|
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 <ayal@mellanox.com>
|
|
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
|
|
Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
|
|
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
(cherry picked from commit caa4bbef6ff920a0ff1d94c5bff7f2c7c875fca3)
|
|
---
|
|
ethtool-copy.h | 18 +++++++++++++++++-
|
|
ethtool.8.in | 15 +++++++++++++++
|
|
ethtool.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
|
|
3 files changed, 77 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/ethtool-copy.h b/ethtool-copy.h
|
|
index 6bfbb85..1204076 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 4053a56..4df6f38 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 fb4c088..c36aafd 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
|
|
|