Patchwork ethtool: Add support for 20G link speed

login
register
mail settings
Submitter Yaniv Rosner
Date June 5, 2011, 5:39 p.m.
Message ID <1307295583.20872.123.camel@lb-tlvb-dmitry>
Download mbox | patch
Permalink /patch/98773/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Yaniv Rosner - June 5, 2011, 5:39 p.m.
Hi Ben,
I'm resubmitting the addition of 20G with your corrections to ethtool.

Thanks,
Yaniv

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
---
 ethtool.8.in |    2 ++
 ethtool.c    |   18 +++++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletions(-)
Ben Hutchings - June 6, 2011, 10:12 a.m.
On Sun, 2011-06-05 at 20:39 +0300, Yaniv Rosner wrote:
> Hi Ben,
> I'm resubmitting the addition of 20G with your corrections to ethtool.
> 
> Thanks,
> Yaniv

Applied, thanks.

Ben.

Patch

diff --git a/ethtool.8.in b/ethtool.8.in
index 7b1cdf5..2983b3e 100644
--- a/ethtool.8.in
+++ b/ethtool.8.in
@@ -499,6 +499,8 @@  lB	l	lB.
 0x020	1000 Full
 0x8000	2500 Full	(not supported by IEEE standards)
 0x1000	10000 Full
+0x20000	20000MLD2 Full	(not supported by IEEE standards)
+0x40000	20000KR2 Full	(not supported by IEEE standards)
 .TE
 .TP
 .BI phyad \ N
diff --git a/ethtool.c b/ethtool.c
index c189c78..35c3733 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -1244,6 +1244,20 @@  dump_link_caps(const char *prefix, const char *an_prefix, u32 mask)
 	if (mask & ADVERTISED_10000baseT_Full) {
 		did1++; fprintf(stdout, "10000baseT/Full ");
 	}
+	if (did1 && (mask & ADVERTISED_20000baseMLD2_Full)) {
+		fprintf(stdout, "\n");
+		fprintf(stdout, "	%*s", indent, "");
+	}
+	if (mask & ADVERTISED_20000baseMLD2_Full) {
+		did1++; fprintf(stdout, "20000baseMLD2/Full ");
+	}
+	if (did1 && (mask & ADVERTISED_20000baseKR2_Full)) {
+		fprintf(stdout, "\n");
+		fprintf(stdout, "	%*s", indent, "");
+	}
+	if (mask & ADVERTISED_20000baseKR2_Full) {
+		did1++; fprintf(stdout, "20000baseKR2/Full ");
+	}
 	if (did1 == 0)
 		 fprintf(stdout, "Not reported");
 	fprintf(stdout, "\n");
@@ -2474,7 +2488,9 @@  static int do_sset(int fd, struct ifreq *ifr)
 					 ADVERTISED_1000baseT_Half |
 					 ADVERTISED_1000baseT_Full |
 					 ADVERTISED_2500baseX_Full |
-					 ADVERTISED_10000baseT_Full);
+					 ADVERTISED_10000baseT_Full |
+					 ADVERTISED_20000baseMLD2_Full |
+					 ADVERTISED_20000baseKR2_Full);
 			} else if (advertising_wanted > 0) {
 				ecmd.advertising = advertising_wanted;
 			}