Blame SOURCES/0001-ethtool-Add-support-for-200Gbps-50Gbps-per-lane-link.patch

ff351b
From b13bc90142533a7cfe79d1f136a24ed20a75c1fb Mon Sep 17 00:00:00 2001
ff351b
From: Aya Levin <ayal@mellanox.com>
ff351b
Date: Mon, 25 Feb 2019 17:44:34 +0200
ff351b
Subject: [PATCH] ethtool: Add support for 200Gbps (50Gbps per lane) link mode
ff351b
ff351b
Introduce 50Gbps per lane link modes and 200Gbps speed, update print
ff351b
functions and initialization functions accordingly.
ff351b
In addition, update related man page accordingly.
ff351b
ff351b
Signed-off-by: Aya Levin <ayal@mellanox.com>
ff351b
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
ff351b
Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
ff351b
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ff351b
(cherry picked from commit caa4bbef6ff920a0ff1d94c5bff7f2c7c875fca3)
ff351b
---
ff351b
 ethtool-copy.h | 18 +++++++++++++++++-
ff351b
 ethtool.8.in   | 15 +++++++++++++++
ff351b
 ethtool.c      | 45 +++++++++++++++++++++++++++++++++++++++++++++
ff351b
 3 files changed, 77 insertions(+), 1 deletion(-)
ff351b
ff351b
diff --git a/ethtool-copy.h b/ethtool-copy.h
ff351b
index 6bfbb85..1204076 100644
ff351b
--- a/ethtool-copy.h
ff351b
+++ b/ethtool-copy.h
ff351b
@@ -1455,6 +1455,21 @@ enum ethtool_link_mode_bit_indices {
ff351b
 	ETHTOOL_LINK_MODE_FEC_NONE_BIT	= 49,
ff351b
 	ETHTOOL_LINK_MODE_FEC_RS_BIT	= 50,
ff351b
 	ETHTOOL_LINK_MODE_FEC_BASER_BIT	= 51,
ff351b
+	ETHTOOL_LINK_MODE_50000baseKR_Full_BIT		 = 52,
ff351b
+	ETHTOOL_LINK_MODE_50000baseSR_Full_BIT		 = 53,
ff351b
+	ETHTOOL_LINK_MODE_50000baseCR_Full_BIT		 = 54,
ff351b
+	ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT	 = 55,
ff351b
+	ETHTOOL_LINK_MODE_50000baseDR_Full_BIT		 = 56,
ff351b
+	ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT	 = 57,
ff351b
+	ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT	 = 58,
ff351b
+	ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT	 = 59,
ff351b
+	ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
ff351b
+	ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT	 = 61,
ff351b
+	ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT	 = 62,
ff351b
+	ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT	 = 63,
ff351b
+	ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
ff351b
+	ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT	 = 65,
ff351b
+	ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT	 = 66,
ff351b
 
ff351b
 	/* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
ff351b
 	 * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
ff351b
@@ -1463,7 +1478,7 @@ enum ethtool_link_mode_bit_indices {
ff351b
 	 */
ff351b
 
ff351b
 	__ETHTOOL_LINK_MODE_LAST
ff351b
-	  = ETHTOOL_LINK_MODE_FEC_BASER_BIT,
ff351b
+	  = ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
ff351b
 };
ff351b
 
ff351b
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name)	\
ff351b
@@ -1571,6 +1586,7 @@ enum ethtool_link_mode_bit_indices {
ff351b
 #define SPEED_50000		50000
ff351b
 #define SPEED_56000		56000
ff351b
 #define SPEED_100000		100000
ff351b
+#define SPEED_200000		200000
ff351b
 
ff351b
 #define SPEED_UNKNOWN		-1
ff351b
 
ff351b
diff --git a/ethtool.8.in b/ethtool.8.in
ff351b
index 4053a56..4df6f38 100644
ff351b
--- a/ethtool.8.in
ff351b
+++ b/ethtool.8.in
ff351b
@@ -650,6 +650,11 @@ lB	l	lB.
ff351b
 0x400000000	50000baseCR2 Full
ff351b
 0x800000000	50000baseKR2 Full
ff351b
 0x10000000000	50000baseSR2 Full
ff351b
+0x10000000000000	50000baseKR Full
ff351b
+0x20000000000000	50000baseSR Full
ff351b
+0x40000000000000	50000baseCR Full
ff351b
+0x80000000000000	50000baseLR_ER_FR Full
ff351b
+0x100000000000000	50000baseDR Full
ff351b
 0x8000000	56000baseKR4 Full
ff351b
 0x10000000	56000baseCR4 Full
ff351b
 0x20000000	56000baseSR4 Full
ff351b
@@ -658,6 +663,16 @@ lB	l	lB.
ff351b
 0x2000000000	100000baseSR4 Full
ff351b
 0x4000000000	100000baseCR4 Full
ff351b
 0x8000000000	100000baseLR4_ER4 Full
ff351b
+0x200000000000000	100000baseKR2 Full
ff351b
+0x400000000000000	100000baseSR2 Full
ff351b
+0x800000000000000	100000baseCR2 Full
ff351b
+0x1000000000000000	100000baseLR2_ER2_FR2 Full
ff351b
+0x2000000000000000	100000baseDR2 Full
ff351b
+0x4000000000000000	200000baseKR4 Full
ff351b
+0x8000000000000000	200000baseSR4 Full
ff351b
+0x10000000000000000	200000baseLR4_ER4_FR4 Full
ff351b
+0x20000000000000000	200000baseDR4 Full
ff351b
+0x40000000000000000	200000baseCR4 Full
ff351b
 .TE
ff351b
 .TP
ff351b
 .BI phyad \ N
ff351b
diff --git a/ethtool.c b/ethtool.c
ff351b
index fb4c088..c36aafd 100644
ff351b
--- a/ethtool.c
ff351b
+++ b/ethtool.c
ff351b
@@ -530,6 +530,21 @@ static void init_global_link_mode_masks(void)
ff351b
 		ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
ff351b
 		ETHTOOL_LINK_MODE_2500baseT_Full_BIT,
ff351b
 		ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_50000baseKR_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_50000baseSR_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_50000baseCR_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_50000baseDR_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT,
ff351b
+		ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
ff351b
 	};
ff351b
 	static const enum ethtool_link_mode_bit_indices
ff351b
 		additional_advertised_flags_bits[] = {
ff351b
@@ -689,6 +704,36 @@ static void dump_link_caps(const char *prefix, const char *an_prefix,
ff351b
 		  "2500baseT/Full" },
ff351b
 		{ 0, ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
ff351b
 		  "5000baseT/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_50000baseKR_Full_BIT,
ff351b
+		  "50000baseKR/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_50000baseSR_Full_BIT,
ff351b
+		  "50000baseSR/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_50000baseCR_Full_BIT,
ff351b
+		  "50000baseCR/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT,
ff351b
+		  "50000baseLR_ER_FR/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_50000baseDR_Full_BIT,
ff351b
+		  "50000baseDR/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT,
ff351b
+		  "100000baseKR2/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT,
ff351b
+		  "100000baseSR2/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT,
ff351b
+		  "100000baseCR2/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT,
ff351b
+		  "100000baseLR2_ER2_FR2/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT,
ff351b
+		  "100000baseDR2/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT,
ff351b
+		  "200000baseKR4/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT,
ff351b
+		  "200000baseSR4/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT,
ff351b
+		  "200000baseLR4_ER4_FR4/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT,
ff351b
+		  "200000baseDR4/Full" },
ff351b
+		{ 0, ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
ff351b
+		  "200000baseCR4/Full" },
ff351b
 	};
ff351b
 	int indent;
ff351b
 	int did1, new_line_pend, i;
ff351b
-- 
ff351b
1.8.3.1
ff351b