basebuilder_pel7x64builder0
6 years ago
15 changed files with 1713 additions and 0 deletions
@ -0,0 +1,174 @@
@@ -0,0 +1,174 @@
|
||||
From 1be465a88eb247b78ddbc3129f53cc547ce8687b Mon Sep 17 00:00:00 2001 |
||||
From: Taku Izumi <izumi.taku@jp.fujitsu.com> |
||||
Date: Wed, 16 Nov 2016 09:55:32 +0900 |
||||
Subject: [PATCH 1/3] ethtool: add register dump support for fjes driver |
||||
|
||||
This patch adds the register dump format for FUJITSU Extended |
||||
Network device like the following: |
||||
|
||||
# ethtool -d es0 |
||||
|
||||
0x0000: OWNER_EPID (Owner EPID) 0x00000001 |
||||
0x0004: MAX_EP (Maximum EP) 0x00000008 |
||||
0x0010: DCTL (Device Control) 0x00000000 |
||||
0x0020: CR (Command request) 0x80000002 |
||||
0x0024: CS (Command status) 0x80000002 |
||||
0x0028: SHSTSAL (Share status address Low) 0xE8215304 |
||||
0x002C: SHSTSAH (Share status address High) 0x00000007 |
||||
0x0034: REQBL (Request Buffer length) 0x00008028 |
||||
0x0038: REQBAL (Request Buffer Address Low) 0xEB0A0000 |
||||
0x003C: REQBAH (Request Buffer Address High) 0x00000007 |
||||
0x0044: RESPBL (Response Buffer Length) 0x00000018 |
||||
0x0048: RESPBAL (Response Buffer Address Low) 0xE41E1220 |
||||
0x004C: RESPBAH (Response Buffer Address High) 0x00000007 |
||||
0x0080: IS (Interrupt status) 0x00000000 |
||||
0x0084: IMS (Interrupt mask set) 0x7FE00000 |
||||
0x0088: IMC (Interrupt mask clear) 0x001F0000 |
||||
0x008C: IG (Interrupt generator) 0x00010000 |
||||
0x0090: ICTL (Interrupt control) 0x00000000 |
||||
|
||||
Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit acc3d3a32940cdd3325520d212fa94f44b86ed09) |
||||
--- |
||||
Makefile.am | 2 +- |
||||
ethtool.c | 1 + |
||||
fjes.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||||
internal.h | 2 ++ |
||||
4 files changed, 93 insertions(+), 1 deletion(-) |
||||
create mode 100644 fjes.c |
||||
|
||||
diff --git a/Makefile.am b/Makefile.am |
||||
index de2db2e..edbda57 100644 |
||||
--- a/Makefile.am |
||||
+++ b/Makefile.am |
||||
@@ -14,7 +14,7 @@ ethtool_SOURCES += \ |
||||
pcnet32.c realtek.c tg3.c marvell.c vioc.c \ |
||||
smsc911x.c at76c50x-usb.c sfc.c stmmac.c \ |
||||
sff-common.c sff-common.h sfpid.c sfpdiag.c \ |
||||
- ixgbevf.c tse.c vmxnet3.c qsfp.c qsfp.h |
||||
+ ixgbevf.c tse.c vmxnet3.c qsfp.c qsfp.h fjes.c |
||||
endif |
||||
|
||||
TESTS = test-cmdline test-features |
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 49ac94e..75299c6 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -1136,6 +1136,7 @@ static const struct { |
||||
{ "et131x", et131x_dump_regs }, |
||||
{ "altera_tse", altera_tse_dump_regs }, |
||||
{ "vmxnet3", vmxnet3_dump_regs }, |
||||
+ { "fjes", fjes_dump_regs }, |
||||
#endif |
||||
}; |
||||
|
||||
diff --git a/fjes.c b/fjes.c |
||||
new file mode 100644 |
||||
index 0000000..52f7c28 |
||||
--- /dev/null |
||||
+++ b/fjes.c |
||||
@@ -0,0 +1,89 @@ |
||||
+/* Copyright (c) 2016 FUJITSU LIMITED */ |
||||
+#include <stdio.h> |
||||
+#include "internal.h" |
||||
+ |
||||
+int fjes_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs) |
||||
+{ |
||||
+ u32 *regs_buff = (u32 *)regs->data; |
||||
+ |
||||
+ if (regs->version != 1) |
||||
+ return -1; |
||||
+ |
||||
+ /* Information registers */ |
||||
+ fprintf(stdout, |
||||
+ "0x0000: OWNER_EPID (Owner EPID) 0x%08X\n", |
||||
+ regs_buff[0]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0004: MAX_EP (Maximum EP) 0x%08X\n", |
||||
+ regs_buff[1]); |
||||
+ |
||||
+ /* Device Control registers */ |
||||
+ fprintf(stdout, |
||||
+ "0x0010: DCTL (Device Control) 0x%08X\n", |
||||
+ regs_buff[4]); |
||||
+ |
||||
+ /* Command Control registers */ |
||||
+ fprintf(stdout, |
||||
+ "0x0020: CR (Command request) 0x%08X\n", |
||||
+ regs_buff[8]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0024: CS (Command status) 0x%08X\n", |
||||
+ regs_buff[9]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0028: SHSTSAL (Share status address Low) 0x%08X\n", |
||||
+ regs_buff[10]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x002C: SHSTSAH (Share status address High) 0x%08X\n", |
||||
+ regs_buff[11]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0034: REQBL (Request Buffer length) 0x%08X\n", |
||||
+ regs_buff[13]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0038: REQBAL (Request Buffer Address Low) 0x%08X\n", |
||||
+ regs_buff[14]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x003C: REQBAH (Request Buffer Address High) 0x%08X\n", |
||||
+ regs_buff[15]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0044: RESPBL (Response Buffer Length) 0x%08X\n", |
||||
+ regs_buff[17]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0048: RESPBAL (Response Buffer Address Low) 0x%08X\n", |
||||
+ regs_buff[18]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x004C: RESPBAH (Response Buffer Address High) 0x%08X\n", |
||||
+ regs_buff[19]); |
||||
+ |
||||
+ /* Interrupt Control registers */ |
||||
+ fprintf(stdout, |
||||
+ "0x0080: IS (Interrupt status) 0x%08X\n", |
||||
+ regs_buff[32]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0084: IMS (Interrupt mask set) 0x%08X\n", |
||||
+ regs_buff[33]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0088: IMC (Interrupt mask clear) 0x%08X\n", |
||||
+ regs_buff[34]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x008C: IG (Interrupt generator) 0x%08X\n", |
||||
+ regs_buff[35]); |
||||
+ |
||||
+ fprintf(stdout, |
||||
+ "0x0090: ICTL (Interrupt control) 0x%08X\n", |
||||
+ regs_buff[36]); |
||||
+ |
||||
+ return 0; |
||||
+} |
||||
diff --git a/internal.h b/internal.h |
||||
index 3c08b74..4e658ea 100644 |
||||
--- a/internal.h |
||||
+++ b/internal.h |
||||
@@ -348,4 +348,6 @@ void sff8472_show_all(const __u8 *id); |
||||
/* QSFP Optics diagnostics */ |
||||
void sff8636_show_all(const __u8 *id, __u32 eeprom_len); |
||||
|
||||
+/* FUJITSU Extended Socket network device */ |
||||
+int fjes_dump_regs(struct ethtool_drvinfo *info, struct ethtool_regs *regs); |
||||
#endif /* ETHTOOL_INTERNAL_H__ */ |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
From d695f60666453d964a653c5033764c4b80121f56 Mon Sep 17 00:00:00 2001 |
||||
From: Ivan Vecera <cera@cera.cz> |
||||
Date: Mon, 20 Feb 2017 15:13:52 +0100 |
||||
Subject: [PATCH 2/3] ethtool: sync help output for -x/-X with man page |
||||
|
||||
Add missing words to the help output for -x and -X commands as well |
||||
as an ability to set the indirection table to default value. |
||||
|
||||
Signed-off-by: Ivan Vecera <cera@cera.cz> |
||||
--- |
||||
ethtool.c | 6 +++--- |
||||
1 file changed, 3 insertions(+), 3 deletions(-) |
||||
|
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 75299c6..0d3244e 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -4645,10 +4645,10 @@ static const struct option { |
||||
{ "-T|--show-time-stamping", 1, do_tsinfo, |
||||
"Show time stamping capabilities" }, |
||||
{ "-x|--show-rxfh-indir|--show-rxfh", 1, do_grxfh, |
||||
- "Show Rx flow hash indirection and/or hash key" }, |
||||
+ "Show Rx flow hash indirection table and/or RSS hash key" }, |
||||
{ "-X|--set-rxfh-indir|--rxfh", 1, do_srxfh, |
||||
- "Set Rx flow hash indirection and/or hash key", |
||||
- " [ equal N | weight W0 W1 ... ]\n" |
||||
+ "Set Rx flow hash indirection table and/or RSS hash key", |
||||
+ " [ equal N | weight W0 W1 ... | default ]\n" |
||||
" [ hkey %x:%x:%x:%x:%x:.... ]\n" }, |
||||
{ "-f|--flash", 1, do_flash, |
||||
"Flash firmware image from the specified file to a region on the device", |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
From 47b95959941b3d7d2d35a128da5685799329aaf6 Mon Sep 17 00:00:00 2001 |
||||
From: Michael Chan <mchan@broadcom.com> |
||||
Date: Tue, 22 Nov 2016 18:55:47 -0500 |
||||
Subject: [PATCH 3/3] ethtool: Fix the "advertise" parameter logic. |
||||
|
||||
The current code ignores the value of the advertise parameter. For example, |
||||
|
||||
ethtool -s ethx advertise 0x1000 |
||||
|
||||
The full_advertising_wanted parameter of 0x1000 is not passed to the kernel. |
||||
The reason is that advertising_wanted is NULL in this case, and ethtool |
||||
will think that the user has given no advertisement input and so it will |
||||
proceed to pass all supported advertisement speeds to the kernel. |
||||
|
||||
The older legacy ethtool with similar logic worked because |
||||
advertising_wanted was an integer and could take on -1 and 0. It would pass |
||||
the full_advertising_wanted value if advertising_wanted == -1. |
||||
|
||||
This fix is to pass all supported advertisement speeds only when both |
||||
advertising_wanted == NULL && full_advertising_wanted == NULL. |
||||
|
||||
Signed-off-by: Michael Chan <michael.chan@broadcom.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
--- |
||||
ethtool.c | 3 ++- |
||||
1 file changed, 2 insertions(+), 1 deletion(-) |
||||
|
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 0d3244e..ce48639 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -2972,7 +2972,8 @@ static int do_sset(struct cmd_context *ctx) |
||||
fprintf(stderr, "\n"); |
||||
} |
||||
if (autoneg_wanted == AUTONEG_ENABLE && |
||||
- advertising_wanted == NULL) { |
||||
+ advertising_wanted == NULL && |
||||
+ full_advertising_wanted == NULL) { |
||||
unsigned int i; |
||||
|
||||
/* Auto negotiation enabled, but with |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
From 51f9fba287ff7c8b10e0d5291cd66e78d40b6b8f Mon Sep 17 00:00:00 2001 |
||||
From: Gal Pressman <galp@mellanox.com> |
||||
Date: Sun, 19 Mar 2017 14:10:41 +0200 |
||||
Subject: [PATCH 4/7] ethtool: Fix SFF 8079 cable technology bit parsing |
||||
|
||||
According to the transceiver compliance code definition in the spec, bits |
||||
2 & 3 in the 8th byte are indication of active/passive cable, and not |
||||
specifically related to FC/copper. |
||||
|
||||
Fixes: 2edf56749abe ("ethtool: Addition of -m option to dump module eeprom") |
||||
Signed-off-by: Gal Pressman <galp@mellanox.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit e33c8841f26090031d571fddd71dab06f56ab1bf) |
||||
--- |
||||
sfpid.c | 4 ++-- |
||||
1 file changed, 2 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/sfpid.c b/sfpid.c |
||||
index fd6415c..1732e5e 100644 |
||||
--- a/sfpid.c |
||||
+++ b/sfpid.c |
||||
@@ -137,9 +137,9 @@ static void sff8079_show_transceiver(const __u8 *id) |
||||
if (id[8] & (1 << 4)) |
||||
printf("%s FC: Longwave laser (LL)\n", pfx); |
||||
if (id[8] & (1 << 3)) |
||||
- printf("%s FC: Copper Active\n", pfx); |
||||
+ printf("%s Active Cable\n", pfx); |
||||
if (id[8] & (1 << 2)) |
||||
- printf("%s FC: Copper Passive\n", pfx); |
||||
+ printf("%s Passive Cable\n", pfx); |
||||
if (id[8] & (1 << 1)) |
||||
printf("%s FC: Copper FC-BaseT\n", pfx); |
||||
/* Fibre Channel transmission media */ |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,188 @@
@@ -0,0 +1,188 @@
|
||||
From e89f3c656ff17741aa3ea33c57bc177afedc999b Mon Sep 17 00:00:00 2001 |
||||
From: Gal Pressman <galp@mellanox.com> |
||||
Date: Wed, 8 Mar 2017 16:03:51 +0200 |
||||
Subject: [PATCH 5/7] ethtool: Support for configurable RSS hash function |
||||
|
||||
This ethtool patch adds support to set and get the current RSS hash |
||||
function for the device through the new hfunc mask field in the |
||||
ethtool_rxfh struct. Kernel supported hash function names are queried |
||||
with ETHTOOL_GSTRINGS - each string is corresponding with a bit in hfunc |
||||
mask according to its index in the string-set. |
||||
|
||||
(This corrects the mistaken revert from commit 126464e4da182064. -- JWL) |
||||
|
||||
Signed-off-by: Eyal Perry <eyalpe@mellanox.com> |
||||
Signed-off-by: Gal Pressman <galp@mellanox.com> |
||||
Reviewed-by: Saeed Mahameed <saeedm@mellanox.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit b888f358763a20625a381e071ea50524a520c7c1) |
||||
--- |
||||
ethtool.8.in | 6 ++++++ |
||||
ethtool.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- |
||||
2 files changed, 69 insertions(+), 3 deletions(-) |
||||
|
||||
diff --git a/ethtool.8.in b/ethtool.8.in |
||||
index 9631847..b69c5c6 100644 |
||||
--- a/ethtool.8.in |
||||
+++ b/ethtool.8.in |
||||
@@ -301,6 +301,8 @@ ethtool \- query or control network driver and hardware settings |
||||
.BI weight\ W0 |
||||
.IR W1 |
||||
.RB ...\ | \ default \ ] |
||||
+.RB [ hfunc |
||||
+.IR FUNC ] |
||||
.HP |
||||
.B ethtool \-f|\-\-flash |
||||
.I devname file |
||||
@@ -853,6 +855,10 @@ Sets RSS hash key of the specified network device. RSS hash key should be of dev |
||||
Hash key format must be in xx:yy:zz:aa:bb:cc format meaning both the nibbles of a byte should be mentioned |
||||
even if a nibble is zero. |
||||
.TP |
||||
+.BI hfunc |
||||
+Sets RSS hash function of the specified network device. |
||||
+List of RSS hash functions which kernel supports is shown as a part of the --show-rxfh command output. |
||||
+.TP |
||||
.BI equal\ N |
||||
Sets the receive flow hash indirection table to spread flows evenly |
||||
between the first \fIN\fR receive queues. |
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index ce48639..8eba6e6 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -3640,6 +3640,7 @@ static int do_grxfhindir(struct cmd_context *ctx, |
||||
|
||||
static int do_grxfh(struct cmd_context *ctx) |
||||
{ |
||||
+ struct ethtool_gstrings *hfuncs = NULL; |
||||
struct ethtool_rxfh rss_head = {0}; |
||||
struct ethtool_rxnfc ring_count; |
||||
struct ethtool_rxfh *rss; |
||||
@@ -3697,6 +3698,26 @@ static int do_grxfh(struct cmd_context *ctx) |
||||
printf("%02x:", (u8) hkey[i]); |
||||
} |
||||
|
||||
+ printf("RSS hash function:\n"); |
||||
+ if (!rss->hfunc) { |
||||
+ printf(" Operation not supported\n"); |
||||
+ goto out; |
||||
+ } |
||||
+ |
||||
+ hfuncs = get_stringset(ctx, ETH_SS_RSS_HASH_FUNCS, 0, 1); |
||||
+ if (!hfuncs) { |
||||
+ perror("Cannot get hash functions names"); |
||||
+ free(rss); |
||||
+ return 1; |
||||
+ } |
||||
+ |
||||
+ for (i = 0; i < hfuncs->len; i++) |
||||
+ printf(" %s: %s\n", |
||||
+ (const char *)hfuncs->data + i * ETH_GSTRING_LEN, |
||||
+ (rss->hfunc & (1 << i)) ? "on" : "off"); |
||||
+ |
||||
+out: |
||||
+ free(hfuncs); |
||||
free(rss); |
||||
return 0; |
||||
} |
||||
@@ -3800,11 +3821,16 @@ static int do_srxfh(struct cmd_context *ctx) |
||||
struct ethtool_rxfh *rss; |
||||
struct ethtool_rxnfc ring_count; |
||||
int rxfhindir_equal = 0, rxfhindir_default = 0; |
||||
+ struct ethtool_gstrings *hfuncs = NULL; |
||||
char **rxfhindir_weight = NULL; |
||||
char *rxfhindir_key = NULL; |
||||
+ char *req_hfunc_name = NULL; |
||||
+ char *hfunc_name = NULL; |
||||
char *hkey = NULL; |
||||
int err = 0; |
||||
+ int i; |
||||
u32 arg_num = 0, indir_bytes = 0; |
||||
+ u32 req_hfunc = 0; |
||||
u32 entry_size = sizeof(rss_head.rss_config[0]); |
||||
u32 num_weights = 0; |
||||
|
||||
@@ -3836,6 +3862,12 @@ static int do_srxfh(struct cmd_context *ctx) |
||||
} else if (!strcmp(ctx->argp[arg_num], "default")) { |
||||
++arg_num; |
||||
rxfhindir_default = 1; |
||||
+ } else if (!strcmp(ctx->argp[arg_num], "hfunc")) { |
||||
+ ++arg_num; |
||||
+ req_hfunc_name = ctx->argp[arg_num]; |
||||
+ if (!req_hfunc_name) |
||||
+ exit_bad_args(); |
||||
+ ++arg_num; |
||||
} else { |
||||
exit_bad_args(); |
||||
} |
||||
@@ -3868,7 +3900,8 @@ static int do_srxfh(struct cmd_context *ctx) |
||||
|
||||
rss_head.cmd = ETHTOOL_GRSSH; |
||||
err = send_ioctl(ctx, &rss_head); |
||||
- if (err < 0 && errno == EOPNOTSUPP && !rxfhindir_key) { |
||||
+ if (err < 0 && errno == EOPNOTSUPP && !rxfhindir_key && |
||||
+ !req_hfunc_name) { |
||||
return do_srxfhindir(ctx, rxfhindir_default, rxfhindir_equal, |
||||
rxfhindir_weight, num_weights); |
||||
} else if (err < 0) { |
||||
@@ -3886,14 +3919,39 @@ static int do_srxfh(struct cmd_context *ctx) |
||||
if (rxfhindir_equal || rxfhindir_weight) |
||||
indir_bytes = rss_head.indir_size * entry_size; |
||||
|
||||
+ if (rss_head.hfunc && req_hfunc_name) { |
||||
+ hfuncs = get_stringset(ctx, ETH_SS_RSS_HASH_FUNCS, 0, 1); |
||||
+ if (!hfuncs) { |
||||
+ perror("Cannot get hash functions names"); |
||||
+ return 1; |
||||
+ } |
||||
+ |
||||
+ for (i = 0; i < hfuncs->len && !req_hfunc ; i++) { |
||||
+ hfunc_name = (char *)(hfuncs->data + |
||||
+ i * ETH_GSTRING_LEN); |
||||
+ if (!strncmp(hfunc_name, req_hfunc_name, |
||||
+ ETH_GSTRING_LEN)) |
||||
+ req_hfunc = (u32)1 << i; |
||||
+ } |
||||
+ |
||||
+ if (!req_hfunc) { |
||||
+ fprintf(stderr, |
||||
+ "Unknown hash function: %s\n", req_hfunc_name); |
||||
+ free(hfuncs); |
||||
+ return 1; |
||||
+ } |
||||
+ } |
||||
+ |
||||
rss = calloc(1, sizeof(*rss) + indir_bytes + rss_head.key_size); |
||||
if (!rss) { |
||||
perror("Cannot allocate memory for RX flow hash config"); |
||||
- return 1; |
||||
+ err = 1; |
||||
+ goto free; |
||||
} |
||||
rss->cmd = ETHTOOL_SRSSH; |
||||
rss->indir_size = rss_head.indir_size; |
||||
rss->key_size = rss_head.key_size; |
||||
+ rss->hfunc = req_hfunc; |
||||
|
||||
if (fill_indir_table(&rss->indir_size, rss->rss_config, rxfhindir_default, |
||||
rxfhindir_equal, rxfhindir_weight, num_weights)) { |
||||
@@ -3918,6 +3976,7 @@ free: |
||||
free(hkey); |
||||
|
||||
free(rss); |
||||
+ free(hfuncs); |
||||
return err; |
||||
} |
||||
|
||||
@@ -4650,7 +4709,8 @@ static const struct option { |
||||
{ "-X|--set-rxfh-indir|--rxfh", 1, do_srxfh, |
||||
"Set Rx flow hash indirection table and/or RSS hash key", |
||||
" [ equal N | weight W0 W1 ... | default ]\n" |
||||
- " [ hkey %x:%x:%x:%x:%x:.... ]\n" }, |
||||
+ " [ hkey %x:%x:%x:%x:%x:.... ]\n" |
||||
+ " [ hfunc FUNC ]\n" }, |
||||
{ "-f|--flash", 1, do_flash, |
||||
"Flash firmware image from the specified file to a region on the device", |
||||
" FILENAME [ REGION-NUMBER-TO-FLASH ]\n" }, |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,129 @@
@@ -0,0 +1,129 @@
|
||||
From 13e8c7b8c8537488bc7612c11c429cec274db1f9 Mon Sep 17 00:00:00 2001 |
||||
From: Miroslav Lichvar <mlichvar@redhat.com> |
||||
Date: Tue, 23 May 2017 16:29:29 +0200 |
||||
Subject: [PATCH 6/7] net_tstamp.h: sync with net-next |
||||
|
||||
This covers kernel changes up to: |
||||
|
||||
commit b50a5c70ffa4fd6b6da324ab54c84adf48fb17d9 |
||||
Author: Miroslav Lichvar <mlichvar@redhat.com> |
||||
Date: Fri May 19 17:52:40 2017 +0200 |
||||
|
||||
net: allow simultaneous SW and HW transmit timestamping |
||||
|
||||
Add SOF_TIMESTAMPING_OPT_TX_SWHW option to allow an outgoing packet to |
||||
be looped to the socket's error queue with a software timestamp even |
||||
when a hardware transmit timestamp is expected to be provided by the |
||||
driver. |
||||
|
||||
Applications using this option will receive two separate messages from |
||||
the error queue, one with a software timestamp and the other with a |
||||
hardware timestamp. As the hardware timestamp is saved to the shared skb |
||||
info, which may happen before the first message with software timestamp |
||||
is received by the application, the hardware timestamp is copied to the |
||||
SCM_TIMESTAMPING control message only when the skb has no software |
||||
timestamp or it is an incoming packet. |
||||
|
||||
While changing sw_tx_timestamp(), inline it in skb_tx_timestamp() as |
||||
there are no other users. |
||||
|
||||
CC: Richard Cochran <richardcochran@gmail.com> |
||||
CC: Willem de Bruijn <willemb@google.com> |
||||
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com> |
||||
Acked-by: Willem de Bruijn <willemb@google.com> |
||||
Signed-off-by: David S. Miller <davem@davemloft.net> |
||||
|
||||
CC: Richard Cochran <richardcochran@gmail.com> |
||||
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit ba800e3b4acd0692fc16013acbab2c3ac1ecfe66) |
||||
--- |
||||
net_tstamp-copy.h | 52 +++++++++++++++++++++++++++++++++++++++++----------- |
||||
1 file changed, 41 insertions(+), 11 deletions(-) |
||||
|
||||
diff --git a/net_tstamp-copy.h b/net_tstamp-copy.h |
||||
index ae5df12..3d421d9 100644 |
||||
--- a/net_tstamp-copy.h |
||||
+++ b/net_tstamp-copy.h |
||||
@@ -9,6 +9,7 @@ |
||||
#ifndef _NET_TIMESTAMPING_H |
||||
#define _NET_TIMESTAMPING_H |
||||
|
||||
+#include <linux/types.h> |
||||
#include <linux/socket.h> /* for SO_TIMESTAMPING */ |
||||
|
||||
/* SO_TIMESTAMPING gets an integer bit field comprised of these values */ |
||||
@@ -20,23 +21,42 @@ enum { |
||||
SOF_TIMESTAMPING_SOFTWARE = (1<<4), |
||||
SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5), |
||||
SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6), |
||||
- SOF_TIMESTAMPING_MASK = |
||||
- (SOF_TIMESTAMPING_RAW_HARDWARE - 1) | |
||||
- SOF_TIMESTAMPING_RAW_HARDWARE |
||||
+ SOF_TIMESTAMPING_OPT_ID = (1<<7), |
||||
+ SOF_TIMESTAMPING_TX_SCHED = (1<<8), |
||||
+ SOF_TIMESTAMPING_TX_ACK = (1<<9), |
||||
+ SOF_TIMESTAMPING_OPT_CMSG = (1<<10), |
||||
+ SOF_TIMESTAMPING_OPT_TSONLY = (1<<11), |
||||
+ SOF_TIMESTAMPING_OPT_STATS = (1<<12), |
||||
+ SOF_TIMESTAMPING_OPT_PKTINFO = (1<<13), |
||||
+ SOF_TIMESTAMPING_OPT_TX_SWHW = (1<<14), |
||||
+ |
||||
+ SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_TX_SWHW, |
||||
+ SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | |
||||
+ SOF_TIMESTAMPING_LAST |
||||
}; |
||||
|
||||
+/* |
||||
+ * SO_TIMESTAMPING flags are either for recording a packet timestamp or for |
||||
+ * reporting the timestamp to user space. |
||||
+ * Recording flags can be set both via socket options and control messages. |
||||
+ */ |
||||
+#define SOF_TIMESTAMPING_TX_RECORD_MASK (SOF_TIMESTAMPING_TX_HARDWARE | \ |
||||
+ SOF_TIMESTAMPING_TX_SOFTWARE | \ |
||||
+ SOF_TIMESTAMPING_TX_SCHED | \ |
||||
+ SOF_TIMESTAMPING_TX_ACK) |
||||
+ |
||||
/** |
||||
- * struct hwtstamp_config - %SIOCSHWTSTAMP parameter |
||||
+ * struct hwtstamp_config - %SIOCGHWTSTAMP and %SIOCSHWTSTAMP parameter |
||||
* |
||||
- * @flags: no flags defined right now, must be zero |
||||
+ * @flags: no flags defined right now, must be zero for %SIOCSHWTSTAMP |
||||
* @tx_type: one of HWTSTAMP_TX_* |
||||
- * @rx_type: one of one of HWTSTAMP_FILTER_* |
||||
+ * @rx_filter: one of HWTSTAMP_FILTER_* |
||||
* |
||||
- * %SIOCSHWTSTAMP expects a &struct ifreq with a ifr_data pointer to |
||||
- * this structure. dev_ifsioc() in the kernel takes care of the |
||||
- * translation between 32 bit userspace and 64 bit kernel. The |
||||
- * structure is intentionally chosen so that it has the same layout on |
||||
- * 32 and 64 bit systems, don't break this! |
||||
+ * %SIOCGHWTSTAMP and %SIOCSHWTSTAMP expect a &struct ifreq with a |
||||
+ * ifr_data pointer to this structure. For %SIOCSHWTSTAMP, if the |
||||
+ * driver or hardware does not support the requested @rx_filter value, |
||||
+ * the driver may use a more general filter mode. In this case |
||||
+ * @rx_filter will indicate the actual mode on return. |
||||
*/ |
||||
struct hwtstamp_config { |
||||
int flags; |
||||
@@ -108,6 +128,16 @@ enum hwtstamp_rx_filters { |
||||
HWTSTAMP_FILTER_PTP_V2_SYNC, |
||||
/* PTP v2/802.AS1, any layer, Delay_req packet */ |
||||
HWTSTAMP_FILTER_PTP_V2_DELAY_REQ, |
||||
+ |
||||
+ /* NTP, UDP, all versions and packet modes */ |
||||
+ HWTSTAMP_FILTER_NTP_ALL, |
||||
+}; |
||||
+ |
||||
+/* SCM_TIMESTAMPING_PKTINFO control message */ |
||||
+struct scm_ts_pktinfo { |
||||
+ __u32 if_index; |
||||
+ __u32 pkt_length; |
||||
+ __u32 reserved[2]; |
||||
}; |
||||
|
||||
#endif /* _NET_TIMESTAMPING_H */ |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
From ee10917f5cb60f8602deac815ec9923258fa6ab2 Mon Sep 17 00:00:00 2001 |
||||
From: Miroslav Lichvar <mlichvar@redhat.com> |
||||
Date: Tue, 23 May 2017 16:29:30 +0200 |
||||
Subject: [PATCH 7/7] ethtool: add support for HWTSTAMP_FILTER_NTP_ALL |
||||
|
||||
Add HWTSTAMP_FILTER_NTP_ALL to the list of hardware receive |
||||
filters which can be printed by ethtool -T. |
||||
|
||||
CC: Richard Cochran <richardcochran@gmail.com> |
||||
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit d976d5dada4e58d3fdc31506943307159289493a) |
||||
--- |
||||
ethtool.c | 3 ++- |
||||
1 file changed, 2 insertions(+), 1 deletion(-) |
||||
|
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 8eba6e6..5465f59 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -1583,7 +1583,7 @@ static char *tx_type_labels[N_TX_TYPES] = { |
||||
"one-step-sync (HWTSTAMP_TX_ONESTEP_SYNC)", |
||||
}; |
||||
|
||||
-#define N_RX_FILTERS (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ + 1) |
||||
+#define N_RX_FILTERS (HWTSTAMP_FILTER_NTP_ALL + 1) |
||||
|
||||
static char *rx_filter_labels[N_RX_FILTERS] = { |
||||
"none (HWTSTAMP_FILTER_NONE)", |
||||
@@ -1601,6 +1601,7 @@ static char *rx_filter_labels[N_RX_FILTERS] = { |
||||
"ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT)", |
||||
"ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC)", |
||||
"ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)", |
||||
+ "ntp-all (HWTSTAMP_FILTER_NTP_ALL)", |
||||
}; |
||||
|
||||
static int dump_tsinfo(const struct ethtool_ts_info *info) |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
From 1cfc4bab2c9109f8d9c58344e21da4fa0cae17ca Mon Sep 17 00:00:00 2001 |
||||
From: "Allan W. Nielsen" <allan.nielsen@microsemi.com> |
||||
Date: Thu, 24 Nov 2016 09:56:50 +0100 |
||||
Subject: [PATCH 08/11] ethtool-copy.h:sync with net-next |
||||
|
||||
This covers kernel changes upto: |
||||
|
||||
commit 607c7029146790201e90b58c4235ddff0304d6e0 |
||||
Author: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> |
||||
Date: Thu Nov 17 13:07:22 2016 +0100 |
||||
|
||||
ethtool: (uapi) Add ETHTOOL_PHY_DOWNSHIFT to PHY tunables |
||||
|
||||
For operation in cabling environments that are incompatible with |
||||
1000BASE-T, PHY device may provide an automatic link speed downshift |
||||
operation. When enabled, the device automatically changes its 1000BASE-T |
||||
auto-negotiation to the next slower speed after a configured number of |
||||
failed attempts at 1000BASE-T. This feature is useful in setting up in |
||||
networks using older cable installations that include only pairs A and B, |
||||
and not pairs C and D. |
||||
|
||||
Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> |
||||
Signed-off-by: Allan W. Nielsen <allan.nielsen@microsemi.com> |
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch> |
||||
Signed-off-by: David S. Miller <davem@davemloft.net> |
||||
|
||||
Signed-off-by: Allan W. Nielsen <allan.nielsen@microsemi.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit af5af00a644e117c573d9afe591f8ce51348953f) |
||||
--- |
||||
ethtool-copy.h | 21 ++++++++++++++++++--- |
||||
1 file changed, 18 insertions(+), 3 deletions(-) |
||||
|
||||
diff --git a/ethtool-copy.h b/ethtool-copy.h |
||||
index 70748f5..3d299e3 100644 |
||||
--- a/ethtool-copy.h |
||||
+++ b/ethtool-copy.h |
||||
@@ -117,8 +117,7 @@ struct ethtool_cmd { |
||||
static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep, |
||||
__u32 speed) |
||||
{ |
||||
- |
||||
- ep->speed = (__u16)speed; |
||||
+ ep->speed = (__u16)(speed & 0xFFFF); |
||||
ep->speed_hi = (__u16)(speed >> 16); |
||||
} |
||||
|
||||
@@ -247,6 +246,19 @@ struct ethtool_tunable { |
||||
void *data[0]; |
||||
}; |
||||
|
||||
+#define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff |
||||
+#define DOWNSHIFT_DEV_DISABLE 0 |
||||
+ |
||||
+enum phy_tunable_id { |
||||
+ ETHTOOL_PHY_ID_UNSPEC, |
||||
+ ETHTOOL_PHY_DOWNSHIFT, |
||||
+ /* |
||||
+ * Add your fresh new phy tunable attribute above and remember to update |
||||
+ * phy_tunable_strings[] in net/core/ethtool.c |
||||
+ */ |
||||
+ __ETHTOOL_PHY_TUNABLE_COUNT, |
||||
+}; |
||||
+ |
||||
/** |
||||
* struct ethtool_regs - hardware register dump |
||||
* @cmd: Command number = %ETHTOOL_GREGS |
||||
@@ -547,6 +559,7 @@ struct ethtool_pauseparam { |
||||
* @ETH_SS_FEATURES: Device feature names |
||||
* @ETH_SS_RSS_HASH_FUNCS: RSS hush function names |
||||
* @ETH_SS_PHY_STATS: Statistic names, for use with %ETHTOOL_GPHYSTATS |
||||
+ * @ETH_SS_PHY_TUNABLES: PHY tunable names |
||||
*/ |
||||
enum ethtool_stringset { |
||||
ETH_SS_TEST = 0, |
||||
@@ -557,6 +570,7 @@ enum ethtool_stringset { |
||||
ETH_SS_RSS_HASH_FUNCS, |
||||
ETH_SS_TUNABLES, |
||||
ETH_SS_PHY_STATS, |
||||
+ ETH_SS_PHY_TUNABLES, |
||||
}; |
||||
|
||||
/** |
||||
@@ -1312,7 +1326,8 @@ struct ethtool_per_queue_op { |
||||
|
||||
#define ETHTOOL_GLINKSETTINGS 0x0000004c /* Get ethtool_link_settings */ |
||||
#define ETHTOOL_SLINKSETTINGS 0x0000004d /* Set ethtool_link_settings */ |
||||
- |
||||
+#define ETHTOOL_PHY_GTUNABLE 0x0000004e /* Get PHY tunable configuration */ |
||||
+#define ETHTOOL_PHY_STUNABLE 0x0000004f /* Set PHY tunable configuration */ |
||||
|
||||
/* compatibility with older code */ |
||||
#define SPARC_ETH_GSET ETHTOOL_GSET |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
From c5c7c33cb83947523e954c7410216e6b8c0dd942 Mon Sep 17 00:00:00 2001 |
||||
From: Pavel Belous <pavel.s.belous@gmail.com> |
||||
Date: Mon, 30 Jan 2017 20:03:30 +0300 |
||||
Subject: [PATCH 09/11] ethtool: Add support for 2500baseT/5000baseT link modes |
||||
|
||||
This patch introduce ethtool support for 2500BaseT and 5000BaseT link modes |
||||
from new IEEE 802.3bz standard. |
||||
|
||||
ethtool-copy.h file sync with net. |
||||
|
||||
Signed-off-by: Pavel Belous <pavel.s.belous@gmail.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit 64dfc5e2f0467a4f61c066165eb42c118ca744e3) |
||||
--- |
||||
ethtool-copy.h | 4 +++- |
||||
ethtool.8.in | 4 +++- |
||||
ethtool.c | 6 ++++++ |
||||
3 files changed, 12 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/ethtool-copy.h b/ethtool-copy.h |
||||
index 3d299e3..06fc04c 100644 |
||||
--- a/ethtool-copy.h |
||||
+++ b/ethtool-copy.h |
||||
@@ -1382,6 +1382,8 @@ enum ethtool_link_mode_bit_indices { |
||||
ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44, |
||||
ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45, |
||||
ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46, |
||||
+ ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47, |
||||
+ ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48, |
||||
|
||||
|
||||
/* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit |
||||
@@ -1391,7 +1393,7 @@ enum ethtool_link_mode_bit_indices { |
||||
*/ |
||||
|
||||
__ETHTOOL_LINK_MODE_LAST |
||||
- = ETHTOOL_LINK_MODE_10000baseER_Full_BIT, |
||||
+ = ETHTOOL_LINK_MODE_5000baseT_Full_BIT, |
||||
}; |
||||
|
||||
#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) \ |
||||
diff --git a/ethtool.8.in b/ethtool.8.in |
||||
index b69c5c6..eb0f551 100644 |
||||
--- a/ethtool.8.in |
||||
+++ b/ethtool.8.in |
||||
@@ -578,7 +578,9 @@ lB l lB. |
||||
0x020 1000baseT Full |
||||
0x20000 1000baseKX Full |
||||
0x20000000000 1000baseX Full |
||||
-0x8000 2500baseX Full (not supported by IEEE standards) |
||||
+0x800000000000 2500baseT Full |
||||
+0x8000 2500baseX Full (not supported by IEEE standards)' |
||||
+0x1000000000000 5000baseT Full |
||||
0x1000 10000baseT Full |
||||
0x40000 10000baseKX4 Full |
||||
0x80000 10000baseKR Full |
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 5465f59..9650f54 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -529,6 +529,8 @@ static void init_global_link_mode_masks(void) |
||||
ETHTOOL_LINK_MODE_10000baseLR_Full_BIT, |
||||
ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT, |
||||
ETHTOOL_LINK_MODE_10000baseER_Full_BIT, |
||||
+ ETHTOOL_LINK_MODE_2500baseT_Full_BIT, |
||||
+ ETHTOOL_LINK_MODE_5000baseT_Full_BIT, |
||||
}; |
||||
static const enum ethtool_link_mode_bit_indices |
||||
additional_advertised_flags_bits[] = { |
||||
@@ -681,6 +683,10 @@ static void dump_link_caps(const char *prefix, const char *an_prefix, |
||||
"10000baseLRM/Full" }, |
||||
{ 0, ETHTOOL_LINK_MODE_10000baseER_Full_BIT, |
||||
"10000baseER/Full" }, |
||||
+ { 0, ETHTOOL_LINK_MODE_2500baseT_Full_BIT, |
||||
+ "2500baseT/Full" }, |
||||
+ { 0, ETHTOOL_LINK_MODE_5000baseT_Full_BIT, |
||||
+ "5000baseT/Full" }, |
||||
}; |
||||
int indent; |
||||
int did1, new_line_pend, i; |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
From f4578eaf711f3d5e15f3e5fdb98cce3ebae80a2b Mon Sep 17 00:00:00 2001 |
||||
From: Gal Pressman <galp@mellanox.com> |
||||
Date: Thu, 28 Sep 2017 15:08:52 +0300 |
||||
Subject: [PATCH 10/11] ethtool.8: Fix formatting of advertise bitmask |
||||
|
||||
Fields should be separated with a tab instead of spaces. |
||||
Also, remove an accidental ' character from 2500baseX Full mode. |
||||
|
||||
Fixes: 64dfc5e2f046 ("ethtool: Add support for 2500baseT/5000baseT link modes") |
||||
Signed-off-by: Gal Pressman <galp@mellanox.com> |
||||
Reviewed-by: Tariq Toukan <tariqt@mellanox.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit f35a4bcd55164495deb4eef0975a1623d760ff91) |
||||
--- |
||||
ethtool.8.in | 6 +++--- |
||||
1 file changed, 3 insertions(+), 3 deletions(-) |
||||
|
||||
diff --git a/ethtool.8.in b/ethtool.8.in |
||||
index eb0f551..c7208ab 100644 |
||||
--- a/ethtool.8.in |
||||
+++ b/ethtool.8.in |
||||
@@ -578,9 +578,9 @@ lB l lB. |
||||
0x020 1000baseT Full |
||||
0x20000 1000baseKX Full |
||||
0x20000000000 1000baseX Full |
||||
-0x800000000000 2500baseT Full |
||||
-0x8000 2500baseX Full (not supported by IEEE standards)' |
||||
-0x1000000000000 5000baseT Full |
||||
+0x800000000000 2500baseT Full |
||||
+0x8000 2500baseX Full (not supported by IEEE standards) |
||||
+0x1000000000000 5000baseT Full |
||||
0x1000 10000baseT Full |
||||
0x40000 10000baseKX4 Full |
||||
0x80000 10000baseKR Full |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
From 2c64f09bee9b601cb60fd0398f1e4eb1b09a3ebb Mon Sep 17 00:00:00 2001 |
||||
From: Gal Pressman <galp@mellanox.com> |
||||
Date: Thu, 28 Sep 2017 15:08:53 +0300 |
||||
Subject: [PATCH 11/11] ethtool.8: Document 56000 advertise link modes |
||||
|
||||
Add the following advertise modes to the manual: |
||||
56000baseKR4 Full |
||||
56000baseCR4 Full |
||||
56000baseSR4 Full |
||||
56000baseLR4 Full |
||||
|
||||
Signed-off-by: Gal Pressman <galp@mellanox.com> |
||||
Reviewed-by: Tariq Toukan <tariqt@mellanox.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit 47c71e3c45cd6e248a25e87cbd8afa201836e59d) |
||||
--- |
||||
ethtool.8.in | 4 ++++ |
||||
1 file changed, 4 insertions(+) |
||||
|
||||
diff --git a/ethtool.8.in b/ethtool.8.in |
||||
index c7208ab..c176cac 100644 |
||||
--- a/ethtool.8.in |
||||
+++ b/ethtool.8.in |
||||
@@ -601,6 +601,10 @@ lB l lB. |
||||
0x400000000 50000baseCR2 Full |
||||
0x800000000 50000baseKR2 Full |
||||
0x10000000000 50000baseSR2 Full |
||||
+0x8000000 56000baseKR4 Full |
||||
+0x10000000 56000baseCR4 Full |
||||
+0x20000000 56000baseSR4 Full |
||||
+0x40000000 56000baseLR4 Full |
||||
0x1000000000 100000baseKR4 Full |
||||
0x2000000000 100000baseSR4 Full |
||||
0x4000000000 100000baseCR4 Full |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
From b41605a9328686d45f6f4ee7791f476866bcc7a9 Mon Sep 17 00:00:00 2001 |
||||
From: Shaker Daibes <shakerd@mellanox.com> |
||||
Date: Mon, 18 Sep 2017 10:35:38 +0300 |
||||
Subject: [PATCH 12/12] ethtool: Remove UDP Fragmentation Offload error prints |
||||
|
||||
UFO was removed in kernel, here we remove UFO error prints when using |
||||
"ethtool -k" command. |
||||
|
||||
Fixes the following issue: |
||||
Features for ens8: |
||||
Cannot get device udp-fragmentation-offload settings: Operation not |
||||
supported |
||||
|
||||
Signed-off-by: Shaker Daibes <shakerd@mellanox.com> |
||||
Signed-off-by: Tariq Toukan <tariqt@mellanox.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit d5d35d8331dee79a7453d3ea501bcc7b8b90582c) |
||||
--- |
||||
ethtool.c | 4 ++++ |
||||
1 file changed, 4 insertions(+) |
||||
|
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 9650f54..1411d62 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -2187,6 +2187,10 @@ get_features(struct cmd_context *ctx, const struct feature_defs *defs) |
||||
eval.cmd = off_flag_def[i].get_cmd; |
||||
err = send_ioctl(ctx, &eval); |
||||
if (err) { |
||||
+ if (errno == EOPNOTSUPP && |
||||
+ off_flag_def[i].get_cmd == ETHTOOL_GUFO) |
||||
+ continue; |
||||
+ |
||||
fprintf(stderr, |
||||
"Cannot get device %s settings: %m\n", |
||||
off_flag_def[i].long_name); |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,174 @@
@@ -0,0 +1,174 @@
|
||||
From 3ad39b7b490fc130b47ec248de707d3ae481c9ed Mon Sep 17 00:00:00 2001 |
||||
From: Scott Branden <scott.branden@broadcom.com> |
||||
Date: Tue, 12 Dec 2017 12:20:02 -0800 |
||||
Subject: [PATCH 13/14] ethtool-copy.h: sync with net-next |
||||
|
||||
This covers kernel changes up to: |
||||
|
||||
commit 40e44a1e669d078946f46853808a60d29e6f0885 |
||||
Author: Scott Branden <scott.branden@broadcom.com> |
||||
Date: Thu Nov 30 11:35:59 2017 -0800 |
||||
|
||||
net: ethtool: add support for reset of AP inside NIC interface. |
||||
|
||||
Add ETH_RESET_AP to reset the application processor(s) inside the NIC |
||||
interface. |
||||
|
||||
Current ETH_RESET_MGMT supports a management processor inside this NIC. |
||||
This is typically used for remote NIC management purposes. |
||||
|
||||
Application processors exist inside some SmartNICs to run various |
||||
applications inside the NIC processor - be it a simple algorithm without |
||||
an OS to as complex as hosting multiple VMs. |
||||
|
||||
Signed-off-by: Scott Branden <scott.branden@broadcom.com> |
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch> |
||||
Signed-off-by: David S. Miller <davem@davemloft.net> |
||||
|
||||
Signed-off-by: Scott Branden <scott.branden@broadcom.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
(cherry picked from commit 83634baa75b5831ed9bfd135f9747b94aacdd842) |
||||
--- |
||||
ethtool-copy.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- |
||||
1 file changed, 61 insertions(+), 5 deletions(-) |
||||
|
||||
diff --git a/ethtool-copy.h b/ethtool-copy.h |
||||
index 06fc04c..f4e7bb2 100644 |
||||
--- a/ethtool-copy.h |
||||
+++ b/ethtool-copy.h |
||||
@@ -1,3 +1,4 @@ |
||||
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
||||
/* |
||||
* ethtool.h: Defines for Linux ethtool. |
||||
* |
||||
@@ -1236,6 +1237,47 @@ struct ethtool_per_queue_op { |
||||
char data[]; |
||||
}; |
||||
|
||||
+/** |
||||
+ * struct ethtool_fecparam - Ethernet forward error correction(fec) parameters |
||||
+ * @cmd: Command number = %ETHTOOL_GFECPARAM or %ETHTOOL_SFECPARAM |
||||
+ * @active_fec: FEC mode which is active on porte |
||||
+ * @fec: Bitmask of supported/configured FEC modes |
||||
+ * @rsvd: Reserved for future extensions. i.e FEC bypass feature. |
||||
+ * |
||||
+ * Drivers should reject a non-zero setting of @autoneg when |
||||
+ * autoneogotiation is disabled (or not supported) for the link. |
||||
+ * |
||||
+ */ |
||||
+struct ethtool_fecparam { |
||||
+ __u32 cmd; |
||||
+ /* bitmask of FEC modes */ |
||||
+ __u32 active_fec; |
||||
+ __u32 fec; |
||||
+ __u32 reserved; |
||||
+}; |
||||
+ |
||||
+/** |
||||
+ * enum ethtool_fec_config_bits - flags definition of ethtool_fec_configuration |
||||
+ * @ETHTOOL_FEC_NONE: FEC mode configuration is not supported |
||||
+ * @ETHTOOL_FEC_AUTO: Default/Best FEC mode provided by driver |
||||
+ * @ETHTOOL_FEC_OFF: No FEC Mode |
||||
+ * @ETHTOOL_FEC_RS: Reed-Solomon Forward Error Detection mode |
||||
+ * @ETHTOOL_FEC_BASER: Base-R/Reed-Solomon Forward Error Detection mode |
||||
+ */ |
||||
+enum ethtool_fec_config_bits { |
||||
+ ETHTOOL_FEC_NONE_BIT, |
||||
+ ETHTOOL_FEC_AUTO_BIT, |
||||
+ ETHTOOL_FEC_OFF_BIT, |
||||
+ ETHTOOL_FEC_RS_BIT, |
||||
+ ETHTOOL_FEC_BASER_BIT, |
||||
+}; |
||||
+ |
||||
+#define ETHTOOL_FEC_NONE (1 << ETHTOOL_FEC_NONE_BIT) |
||||
+#define ETHTOOL_FEC_AUTO (1 << ETHTOOL_FEC_AUTO_BIT) |
||||
+#define ETHTOOL_FEC_OFF (1 << ETHTOOL_FEC_OFF_BIT) |
||||
+#define ETHTOOL_FEC_RS (1 << ETHTOOL_FEC_RS_BIT) |
||||
+#define ETHTOOL_FEC_BASER (1 << ETHTOOL_FEC_BASER_BIT) |
||||
+ |
||||
/* CMDs currently supported */ |
||||
#define ETHTOOL_GSET 0x00000001 /* DEPRECATED, Get settings. |
||||
* Please use ETHTOOL_GLINKSETTINGS |
||||
@@ -1328,6 +1370,8 @@ struct ethtool_per_queue_op { |
||||
#define ETHTOOL_SLINKSETTINGS 0x0000004d /* Set ethtool_link_settings */ |
||||
#define ETHTOOL_PHY_GTUNABLE 0x0000004e /* Get PHY tunable configuration */ |
||||
#define ETHTOOL_PHY_STUNABLE 0x0000004f /* Set PHY tunable configuration */ |
||||
+#define ETHTOOL_GFECPARAM 0x00000050 /* Get FEC settings */ |
||||
+#define ETHTOOL_SFECPARAM 0x00000051 /* Set FEC settings */ |
||||
|
||||
/* compatibility with older code */ |
||||
#define SPARC_ETH_GSET ETHTOOL_GSET |
||||
@@ -1382,9 +1426,12 @@ enum ethtool_link_mode_bit_indices { |
||||
ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44, |
||||
ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45, |
||||
ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46, |
||||
- ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47, |
||||
- ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48, |
||||
+ ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47, |
||||
+ ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48, |
||||
|
||||
+ ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49, |
||||
+ ETHTOOL_LINK_MODE_FEC_RS_BIT = 50, |
||||
+ ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51, |
||||
|
||||
/* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit |
||||
* 31. Please do NOT define any SUPPORTED_* or ADVERTISED_* |
||||
@@ -1393,7 +1440,7 @@ enum ethtool_link_mode_bit_indices { |
||||
*/ |
||||
|
||||
__ETHTOOL_LINK_MODE_LAST |
||||
- = ETHTOOL_LINK_MODE_5000baseT_Full_BIT, |
||||
+ = ETHTOOL_LINK_MODE_FEC_BASER_BIT, |
||||
}; |
||||
|
||||
#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) \ |
||||
@@ -1484,13 +1531,17 @@ enum ethtool_link_mode_bit_indices { |
||||
* it was forced up into this mode or autonegotiated. |
||||
*/ |
||||
|
||||
-/* The forced speed, in units of 1Mb. All values 0 to INT_MAX are legal. */ |
||||
+/* The forced speed, in units of 1Mb. All values 0 to INT_MAX are legal. |
||||
+ * Update drivers/net/phy/phy.c:phy_speed_to_str() and |
||||
+ * drivers/net/bonding/bond_3ad.c:__get_link_speed() when adding new values. |
||||
+ */ |
||||
#define SPEED_10 10 |
||||
#define SPEED_100 100 |
||||
#define SPEED_1000 1000 |
||||
#define SPEED_2500 2500 |
||||
#define SPEED_5000 5000 |
||||
#define SPEED_10000 10000 |
||||
+#define SPEED_14000 14000 |
||||
#define SPEED_20000 20000 |
||||
#define SPEED_25000 25000 |
||||
#define SPEED_40000 40000 |
||||
@@ -1633,6 +1684,7 @@ enum ethtool_reset_flags { |
||||
ETH_RESET_PHY = 1 << 6, /* Transceiver/PHY */ |
||||
ETH_RESET_RAM = 1 << 7, /* RAM shared between |
||||
* multiple components */ |
||||
+ ETH_RESET_AP = 1 << 8, /* Application processor */ |
||||
|
||||
ETH_RESET_DEDICATED = 0x0000ffff, /* All components dedicated to |
||||
* this interface */ |
||||
@@ -1701,6 +1753,8 @@ enum ethtool_reset_flags { |
||||
* %ethtool_link_mode_bit_indices for the link modes, and other |
||||
* link features that the link partner advertised through |
||||
* autonegotiation; 0 if unknown or not applicable. Read-only. |
||||
+ * @transceiver: Used to distinguish different possible PHY types, |
||||
+ * reported consistently by PHYLIB. Read-only. |
||||
* |
||||
* If autonegotiation is disabled, the speed and @duplex represent the |
||||
* fixed link mode and are writable if the driver supports multiple |
||||
@@ -1752,7 +1806,9 @@ struct ethtool_link_settings { |
||||
__u8 eth_tp_mdix; |
||||
__u8 eth_tp_mdix_ctrl; |
||||
__s8 link_mode_masks_nwords; |
||||
- __u32 reserved[8]; |
||||
+ __u8 transceiver; |
||||
+ __u8 reserved1[3]; |
||||
+ __u32 reserved[7]; |
||||
__u32 link_mode_masks[0]; |
||||
/* layout of link_mode_masks fields: |
||||
* __u32 map_supported[link_mode_masks_nwords]; |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,298 @@
@@ -0,0 +1,298 @@
|
||||
From 6477a1f47b15c2a81a9995397942a0fc17f0b06f Mon Sep 17 00:00:00 2001 |
||||
From: Dustin Byford <dustin@cumulusnetworks.com> |
||||
Date: Mon, 18 Dec 2017 14:57:41 -0800 |
||||
Subject: [PATCH 14/14] ethtool: Support for FEC encoding control |
||||
|
||||
As FEC settings and different FEC modes are mandatory |
||||
and configurable across various interfaces of 25G/50G/100G/40G, |
||||
the lack of FEC encoding control and reporting today is a source |
||||
for interoperability issues for many vendors |
||||
|
||||
set-fec/show-fec option(s) are designed to provide control and report |
||||
the FEC encoding on the link. |
||||
|
||||
$ethtool --set-fec swp1 encoding [off | RS | BaseR | auto] |
||||
|
||||
Encoding: Types of encoding |
||||
Off : Turning off FEC |
||||
RS : Force RS-FEC encoding |
||||
BaseR : Force BaseR encoding |
||||
Auto : Default FEC settings for drivers, and would represent |
||||
asking the hardware to essentially go into a best effort mode. |
||||
|
||||
Here are a few examples of what we would expect if encoding=auto: |
||||
- if autoneg is on, we are expecting FEC to be negotiated as on or off |
||||
as long as protocol supports it |
||||
- if the hardware is capable of detecting the FEC encoding on it's |
||||
receiver it will reconfigure its encoder to match |
||||
- in absence of the above, the configuration would be set to IEEE |
||||
defaults. |
||||
|
||||
>From our understanding, this is essentially what most hardware/driver |
||||
combinations are doing today in the absence of a way for users to |
||||
control the behavior. |
||||
|
||||
$ethtool --show-fec swp1 |
||||
FEC parameters for swp1: |
||||
FEC encodings: RS |
||||
|
||||
ethtool devname output: |
||||
$ethtool swp1 |
||||
Settings for swp1: |
||||
root@hpe-7712-03:~# ethtool swp18 |
||||
Settings for swp18: |
||||
Supported ports: [ FIBRE ] |
||||
Supported link modes: 40000baseCR4/Full |
||||
40000baseSR4/Full |
||||
40000baseLR4/Full |
||||
100000baseSR4/Full |
||||
100000baseCR4/Full |
||||
100000baseLR4_ER4/Full |
||||
Supported pause frame use: No |
||||
Supports auto-negotiation: Yes |
||||
Supported FEC modes: [RS | BaseR | None | Not reported] |
||||
Advertised link modes: Not reported |
||||
Advertised pause frame use: No |
||||
Advertised auto-negotiation: No |
||||
Advertised FEC modes: [RS | BaseR | None | Not reported] |
||||
Speed: 100000Mb/s |
||||
Duplex: Full |
||||
Port: FIBRE |
||||
PHYAD: 106 |
||||
Transceiver: internal |
||||
Auto-negotiation: off |
||||
Link detected: yes |
||||
|
||||
Signed-off-by: Vidya Sagar Ravipati <vidya.chowdary@gmail.com> |
||||
Signed-off-by: Dustin Byford <dustin@cumulusnetworks.com> |
||||
[code style + man page edits + commit message update] |
||||
Signed-off-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> |
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||||
|
||||
(cherry picked from commit 8db75d1e4001ac4cdfc73d5bedd0ec6d58a3d617) |
||||
|
||||
Conflicts: |
||||
ethtool.8.in |
||||
ethtool.c |
||||
--- |
||||
ethtool.8.in | 31 ++++++++++++++++ |
||||
ethtool.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
||||
2 files changed, 150 insertions(+) |
||||
|
||||
diff --git a/ethtool.8.in b/ethtool.8.in |
||||
index c176cac..6816020 100644 |
||||
--- a/ethtool.8.in |
||||
+++ b/ethtool.8.in |
||||
@@ -342,6 +342,13 @@ ethtool \- query or control network driver and hardware settings |
||||
.B2 tx-lpi on off |
||||
.BN tx-timer |
||||
.BN advertise |
||||
+.HP |
||||
+.B ethtool \-\-show\-fec |
||||
+.I devname |
||||
+.HP |
||||
+.B ethtool \-\-set\-fec |
||||
+.I devname |
||||
+.B4 encoding auto off rs baser |
||||
. |
||||
.\" Adjust lines (i.e. full justification) and hyphenate. |
||||
.ad |
||||
@@ -959,6 +966,30 @@ Values are as for |
||||
Sets the amount of time the device should stay in idle mode prior to asserting |
||||
its Tx LPI (in microseconds). This has meaning only when Tx LPI is enabled. |
||||
.RE |
||||
+.TP |
||||
+.B \-\-show\-fec |
||||
+Queries the specified network device for its support of Forward Error Correction. |
||||
+.TP |
||||
+.B \-\-set\-fec |
||||
+Configures Forward Error Correction for the specified network device. |
||||
+ |
||||
+Forward Error Correction modes selected by a user are expected to be persisted |
||||
+after any hotplug events. If a module is swapped that does not support the |
||||
+current FEC mode, the driver or firmware must take the link down |
||||
+administratively and report the problem in the system logs for users to correct. |
||||
+.RS 4 |
||||
+.TP |
||||
+.A4 encoding auto off rs baser |
||||
+Sets the FEC encoding for the device. |
||||
+.TS |
||||
+nokeep; |
||||
+lB l. |
||||
+auto Use the driver's default encoding |
||||
+off Turn off FEC |
||||
+RS Force RS-FEC encoding |
||||
+BaseR Force BaseR encoding |
||||
+.TE |
||||
+.RE |
||||
.SH BUGS |
||||
Not supported (in part or whole) on all network drivers. |
||||
.SH AUTHOR |
||||
diff --git a/ethtool.c b/ethtool.c |
||||
index 1411d62..2e9ee2c 100644 |
||||
--- a/ethtool.c |
||||
+++ b/ethtool.c |
||||
@@ -543,6 +543,9 @@ static void init_global_link_mode_masks(void) |
||||
ETHTOOL_LINK_MODE_Pause_BIT, |
||||
ETHTOOL_LINK_MODE_Asym_Pause_BIT, |
||||
ETHTOOL_LINK_MODE_Backplane_BIT, |
||||
+ ETHTOOL_LINK_MODE_FEC_NONE_BIT, |
||||
+ ETHTOOL_LINK_MODE_FEC_RS_BIT, |
||||
+ ETHTOOL_LINK_MODE_FEC_BASER_BIT, |
||||
}; |
||||
unsigned int i; |
||||
|
||||
@@ -690,6 +693,7 @@ static void dump_link_caps(const char *prefix, const char *an_prefix, |
||||
}; |
||||
int indent; |
||||
int did1, new_line_pend, i; |
||||
+ int fecreported = 0; |
||||
|
||||
/* Indent just like the separate functions used to */ |
||||
indent = strlen(prefix) + 14; |
||||
@@ -741,6 +745,26 @@ static void dump_link_caps(const char *prefix, const char *an_prefix, |
||||
fprintf(stdout, "Yes\n"); |
||||
else |
||||
fprintf(stdout, "No\n"); |
||||
+ |
||||
+ fprintf(stdout, " %s FEC modes:", prefix); |
||||
+ if (ethtool_link_mode_test_bit(ETHTOOL_LINK_MODE_FEC_NONE_BIT, |
||||
+ mask)) { |
||||
+ fprintf(stdout, " None"); |
||||
+ fecreported = 1; |
||||
+ } |
||||
+ if (ethtool_link_mode_test_bit(ETHTOOL_LINK_MODE_FEC_BASER_BIT, |
||||
+ mask)) { |
||||
+ fprintf(stdout, " BaseR"); |
||||
+ fecreported = 1; |
||||
+ } |
||||
+ if (ethtool_link_mode_test_bit(ETHTOOL_LINK_MODE_FEC_RS_BIT, |
||||
+ mask)) { |
||||
+ fprintf(stdout, " RS"); |
||||
+ fecreported = 1; |
||||
+ } |
||||
+ if (!fecreported) |
||||
+ fprintf(stdout, " Not reported"); |
||||
+ fprintf(stdout, "\n"); |
||||
} |
||||
} |
||||
|
||||
@@ -1569,6 +1593,20 @@ static void dump_eeecmd(struct ethtool_eee *ep) |
||||
dump_link_caps("Link partner advertised EEE", "", link_mode, 1); |
||||
} |
||||
|
||||
+static void dump_fec(u32 fec) |
||||
+{ |
||||
+ if (fec & ETHTOOL_FEC_NONE) |
||||
+ fprintf(stdout, " None"); |
||||
+ if (fec & ETHTOOL_FEC_AUTO) |
||||
+ fprintf(stdout, " Auto"); |
||||
+ if (fec & ETHTOOL_FEC_OFF) |
||||
+ fprintf(stdout, " Off"); |
||||
+ if (fec & ETHTOOL_FEC_BASER) |
||||
+ fprintf(stdout, " BaseR"); |
||||
+ if (fec & ETHTOOL_FEC_RS) |
||||
+ fprintf(stdout, " RS"); |
||||
+} |
||||
+ |
||||
#define N_SOTS 7 |
||||
|
||||
static char *so_timestamping_labels[N_SOTS] = { |
||||
@@ -4592,6 +4630,84 @@ static int do_seee(struct cmd_context *ctx) |
||||
return 0; |
||||
} |
||||
|
||||
+static int fecmode_str_to_type(const char *str) |
||||
+{ |
||||
+ int fecmode = 0; |
||||
+ |
||||
+ if (!str) |
||||
+ return fecmode; |
||||
+ |
||||
+ if (!strcasecmp(str, "auto")) |
||||
+ fecmode |= ETHTOOL_FEC_AUTO; |
||||
+ else if (!strcasecmp(str, "off")) |
||||
+ fecmode |= ETHTOOL_FEC_OFF; |
||||
+ else if (!strcasecmp(str, "rs")) |
||||
+ fecmode |= ETHTOOL_FEC_RS; |
||||
+ else if (!strcasecmp(str, "baser")) |
||||
+ fecmode |= ETHTOOL_FEC_BASER; |
||||
+ |
||||
+ return fecmode; |
||||
+} |
||||
+ |
||||
+static int do_gfec(struct cmd_context *ctx) |
||||
+{ |
||||
+ struct ethtool_fecparam feccmd = { 0 }; |
||||
+ int rv; |
||||
+ |
||||
+ if (ctx->argc != 0) |
||||
+ exit_bad_args(); |
||||
+ |
||||
+ feccmd.cmd = ETHTOOL_GFECPARAM; |
||||
+ rv = send_ioctl(ctx, &feccmd); |
||||
+ if (rv != 0) { |
||||
+ perror("Cannot get FEC settings"); |
||||
+ return rv; |
||||
+ } |
||||
+ |
||||
+ fprintf(stdout, "FEC parameters for %s:\n", ctx->devname); |
||||
+ fprintf(stdout, "Configured FEC encodings:"); |
||||
+ dump_fec(feccmd.fec); |
||||
+ fprintf(stdout, "\n"); |
||||
+ |
||||
+ fprintf(stdout, "Active FEC encoding:"); |
||||
+ dump_fec(feccmd.active_fec); |
||||
+ fprintf(stdout, "\n"); |
||||
+ |
||||
+ return 0; |
||||
+} |
||||
+ |
||||
+static int do_sfec(struct cmd_context *ctx) |
||||
+{ |
||||
+ char *fecmode_str = NULL; |
||||
+ struct ethtool_fecparam feccmd; |
||||
+ struct cmdline_info cmdline_fec[] = { |
||||
+ { "encoding", CMDL_STR, &fecmode_str, &feccmd.fec}, |
||||
+ }; |
||||
+ int changed; |
||||
+ int fecmode; |
||||
+ int rv; |
||||
+ |
||||
+ parse_generic_cmdline(ctx, &changed, cmdline_fec, |
||||
+ ARRAY_SIZE(cmdline_fec)); |
||||
+ |
||||
+ if (!fecmode_str) |
||||
+ exit_bad_args(); |
||||
+ |
||||
+ fecmode = fecmode_str_to_type(fecmode_str); |
||||
+ if (!fecmode) |
||||
+ exit_bad_args(); |
||||
+ |
||||
+ feccmd.cmd = ETHTOOL_SFECPARAM; |
||||
+ feccmd.fec = fecmode; |
||||
+ rv = send_ioctl(ctx, &feccmd); |
||||
+ if (rv != 0) { |
||||
+ perror("Cannot set FEC settings"); |
||||
+ return rv; |
||||
+ } |
||||
+ |
||||
+ return 0; |
||||
+} |
||||
+ |
||||
#ifndef TEST_ETHTOOL |
||||
int send_ioctl(struct cmd_context *ctx, void *cmd) |
||||
{ |
||||
@@ -4754,6 +4870,9 @@ static const struct option { |
||||
" [ advertise %x ]\n" |
||||
" [ tx-lpi on|off ]\n" |
||||
" [ tx-timer %d ]\n"}, |
||||
+ { "--show-fec", 1, do_gfec, "Show FEC settings"}, |
||||
+ { "--set-fec", 1, do_sfec, "Set FEC settings", |
||||
+ " [ encoding auto|off|rs|baser ]\n"}, |
||||
{ "-h|--help", 0, show_usage, "Show this help" }, |
||||
{ "--version", 0, do_version, "Show version number" }, |
||||
{} |
||||
-- |
||||
1.8.3.1 |
||||
|
@ -0,0 +1,304 @@
@@ -0,0 +1,304 @@
|
||||
Name: ethtool |
||||
Epoch: 2 |
||||
Version: 4.8 |
||||
Release: 7%{?dist} |
||||
Summary: Settings tool for Ethernet NICs |
||||
|
||||
License: GPLv2 |
||||
Group: Applications/System |
||||
#Old URL: http://sourceforge.net/projects/gkernel/ |
||||
URL: http://ftp.kernel.org/pub/software/network/%{name}/ |
||||
|
||||
# When using tarball from released upstream version: |
||||
# - http://ftp.kernel.org/pub/software/network/%{name}/%{name}-%{version}.tar.bz2 |
||||
# |
||||
# When generating tarball package from upstream git: |
||||
# - git clone git://git.kernel.org/pub/scm/network/ethtool/ethtool.git ethtool-6 |
||||
# - cd ethtool-6; git checkout 669ba5cadfb15842e90d8aa7ba5a575f7a457b3e |
||||
# - cp -f ChangeLog ChangeLog.old; git log > ChangeLog.git |
||||
# - rm -rf .git; cd ..; tar cvfz ethtool-6.tar.gz ethtool-6 |
||||
# - Use the visible date of latest git log entry for %{release} in spec file |
||||
Source0: http://ftp.kernel.org/pub/software/network/%{name}/%{name}-%{version}.tar.xz |
||||
BuildRequires: automake, autoconf |
||||
Conflicts: filesystem < 3 |
||||
Patch0: 0001-ethtool-add-register-dump-support-for-fjes-driver.patch |
||||
Patch1: 0002-ethtool-sync-help-output-for-x-X-with-man-page.patch |
||||
Patch2: 0003-ethtool-Fix-the-advertise-parameter-logic.patch |
||||
Patch3: 0004-ethtool-Fix-SFF-8079-cable-technology-bit-parsing.patch |
||||
Patch4: 0005-ethtool-Support-for-configurable-RSS-hash-function.patch |
||||
Patch5: 0006-net_tstamp.h-sync-with-net-next.patch |
||||
Patch6: 0007-ethtool-add-support-for-HWTSTAMP_FILTER_NTP_ALL.patch |
||||
Patch7: 0008-ethtool-copy.h-sync-with-net-next.patch |
||||
Patch8: 0009-ethtool-Add-support-for-2500baseT-5000baseT-link-mod.patch |
||||
Patch9: 0010-ethtool.8-Fix-formatting-of-advertise-bitmask.patch |
||||
Patch10: 0011-ethtool.8-Document-56000-advertise-link-modes.patch |
||||
Patch11: 0012-ethtool-Remove-UDP-Fragmentation-Offload-error-print.patch |
||||
Patch12: 0013-ethtool-copy.h-sync-with-net-next.patch |
||||
Patch13: 0014-ethtool-Support-for-FEC-encoding-control.patch |
||||
|
||||
%description |
||||
This utility allows querying and changing settings such as speed, |
||||
port, auto-negotiation, PCI locations and checksum offload on many |
||||
network devices, especially of Ethernet devices. |
||||
|
||||
%prep |
||||
%setup -q |
||||
%patch0 -p1 |
||||
%patch1 -p1 |
||||
%patch2 -p1 |
||||
%patch3 -p1 |
||||
%patch4 -p1 |
||||
%patch5 -p1 |
||||
%patch6 -p1 |
||||
%patch7 -p1 |
||||
%patch8 -p1 |
||||
%patch9 -p1 |
||||
%patch10 -p1 |
||||
%patch11 -p1 |
||||
%patch12 -p1 |
||||
%patch13 -p1 |
||||
|
||||
# Only needed when using upstream git |
||||
# aclocal |
||||
# autoheader |
||||
# automake --gnu --add-missing --copy |
||||
# autoconf |
||||
|
||||
%build |
||||
aclocal |
||||
automake --gnu --add-missing --copy |
||||
%configure |
||||
make %{?_smp_mflags} |
||||
|
||||
%install |
||||
make DESTDIR=%{buildroot} INSTALL='install -p' install |
||||
|
||||
%files |
||||
%doc AUTHORS ChangeLog* COPYING LICENSE NEWS README |
||||
%{_sbindir}/%{name} |
||||
%{_mandir}/man8/%{name}.8* |
||||
|
||||
%changelog |
||||
* Wed Jan 10 2018 Ivan Vecera <ivecera@redhat.com> - 2:4.8-7 |
||||
- Fixed synopsis in ethtool man page |
||||
|
||||
* Tue Jan 9 2018 Ivan Vecera <ivecera@redhat.com> - 2:4.8-6 |
||||
- Added support for setting FEC parameters |
||||
|
||||
* Fri Jan 5 2018 Ivan Vecera <ivecera@redhat.com> - 2:4.8-5 |
||||
- Fixed changelog |
||||
|
||||
* Fri Jan 5 2018 Ivan Vecera <ivecera@redhat.com> - 2:4.8-4 |
||||
- Fixed UDP fragmentation offloading error messages printed on kernel-alt >=4.14 |
||||
|
||||
* Tue Nov 14 2017 Ivan Vecera <ivecera@redhat.com> - 2:4.8-3 |
||||
- Added support for 2500baseT/5000baseT link modes |
||||
|
||||
* Fri Nov 3 2017 Ivan Vecera <ivecera@redhat.com> - 2:4.8-2 |
||||
- Added support for configurable RSS hash function |
||||
- Fixed SFF 8079 cable technology bit parsing |
||||
- Added support for HWTSTAMP_FILTER_NTP_ALL |
||||
|
||||
* Wed Mar 22 2017 Ivan Vecera <ivecera@redhat.com> - 2:4.8-1 |
||||
- Rebased against upstream v4.8 |
||||
|
||||
* Fri Mar 17 2017 Ivan Vecera <ivecera@redhat.com> - 2:4.5-6 |
||||
- Fixed the "advertise" parameter logic |
||||
|
||||
* Tue Feb 21 2017 Ivan Vecera <ivecera@redhat.com> - 2:4.5-5 |
||||
- Fixed help page for commands -x and -X |
||||
|
||||
* Thu Feb 2 2017 Ivan Vecera <ivecera@redhat.com> - 2:4.5-4 |
||||
- Add register dump support for fjes driver |
||||
|
||||
* Tue Aug 16 2016 Ivan Vecera <ivecera@redhat.com> - 2:4.5-3 |
||||
- Added support for new ETHTOOL_xLINKSETTINGS API |
||||
- Added support for diagnostics information for QSFP Plus/QSFP28 modules |
||||
- Added support for 25G/50G/100G supported and advertised speed modes |
||||
|
||||
* Fri Mar 18 2016 Ivan Vecera <ivecera@redhat.com> - 2:4.5-2 |
||||
- Fixed several memory leaks |
||||
|
||||
* Wed Mar 16 2016 Ivan Vecera <ivecera@redhat.com> - 2:4.5-1 |
||||
- Update to the upstream version v4.5 |
||||
|
||||
* Fri Oct 31 2014 Ivan Vecera <ivecera@redhat.com> - 2:3.15-2 |
||||
- Support for configurable RSS hash key |
||||
|
||||
* Mon Sep 15 2014 Ivan Vecera <ivecera@redhat.com> - 2:3.15-1 |
||||
- Update to the latest upstream |
||||
|
||||
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 2:3.8-3 |
||||
- Mass rebuild 2014-01-24 |
||||
|
||||
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 2:3.8-2 |
||||
- Mass rebuild 2013-12-27 |
||||
|
||||
* Mon Mar 04 2013 Jaromir Capik <jcapik@redhat.com> - 2:3.8-1 |
||||
- Update to 3.8 (#916922) |
||||
|
||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:3.7-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild |
||||
|
||||
* Mon Dec 17 2012 Jaromir Capik <jcapik@redhat.com> - 2:3.7-1 |
||||
- Update to 3.7 (#887463) |
||||
|
||||
* Tue Oct 23 2012 Jaromir Capik <jcapik@redhat.com> 2:3.6-1 |
||||
- Update to 3.6 (#863774) |
||||
|
||||
* Tue Sep 25 2012 Jaromir Capik <jcapik@redhat.com> 2:3.5-1 |
||||
- Update to 3.5 (#840741) |
||||
|
||||
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:3.4.1-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||
|
||||
* Thu Jun 28 2012 Jaromir Capik <jcapik@redhat.com> 2:3.4.1-1 |
||||
- Update to 3.4.1 (#830263) |
||||
|
||||
* Wed Jan 25 2012 Harald Hoyer <harald@redhat.com> 2:3.2-2 |
||||
- install everything in /usr |
||||
https://fedoraproject.org/wiki/Features/UsrMove |
||||
|
||||
* Fri Jan 13 2012 Jaromir Capik <jcapik@redhat.com> 2:3.2-1 |
||||
- Update to 3.2 (#781357) |
||||
- Minor spec file changes according to the latest guidelines |
||||
|
||||
* Fri Dec 23 2011 Robert Scheck <robert@fedoraproject.org> 2:3.1-1 |
||||
- Upgrade to 3.1 (#728480) |
||||
|
||||
* Sun Jul 17 2011 Robert Scheck <robert@fedoraproject.org> 2:2.6.39-1 |
||||
- Upgrade to 2.6.39 (#710400) |
||||
|
||||
* Mon Mar 21 2011 Robert Scheck <robert@fedoraproject.org> 2:2.6.38-1 |
||||
- Upgrade to 2.6.38 (#667594) |
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2:2.6.36-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||
|
||||
* Fri Dec 31 2010 Robert Scheck <robert@fedoraproject.org> 2:2.6.36-1 |
||||
- Upgrade to 2.6.36 (#623094) |
||||
|
||||
* Wed Jul 14 2010 Jeff Garzik <jgarzik@redhat.com> 2:2.6.34-1 |
||||
- Update to release 2.6.34. |
||||
|
||||
* Thu Feb 4 2010 Jeff Garzik <jgarzik@redhat.com> 2.6.33-0.1 |
||||
- update to version 2.6.33-pre1 |
||||
|
||||
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6-7.20090323git |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||
|
||||
* Sat Jul 18 2009 Robert Scheck <robert@fedoraproject.org> 6-6.20090323git |
||||
- Upgrade to GIT 20090323 |
||||
|
||||
* Thu Jul 16 2009 Jeff Garzik <jgarzik@redhat.com> 6-5.20090306git |
||||
- minor specfile cleanups |
||||
|
||||
* Sat Mar 07 2009 Robert Scheck <robert@fedoraproject.org> 6-4.20090306git |
||||
- Upgrade to GIT 20090306 |
||||
|
||||
* Mon Feb 23 2009 Robert Scheck <robert@fedoraproject.org> 6-3.20090115git |
||||
- Rebuild for gcc 4.4 and rpm 4.6 |
||||
|
||||
* Sat Jan 17 2009 Robert Scheck <robert@fedoraproject.org> 6-2.20090115git |
||||
- Changes to match with Fedora Packaging Guidelines (#225735) |
||||
- Upgrade to GIT 20090115 (#225735, #477498) |
||||
- Removed bogus stated need of DEVNAME in -h/--help (#472038) |
||||
- Removed completely needless INSTALL file from %%doc (#472034) |
||||
|
||||
* Wed Mar 12 2008 Tom "spot" Callaway <tcallawa@redhat.com> 6-1 |
||||
- Upgrade to ethtool version 6 |
||||
|
||||
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 5-2 |
||||
- Autorebuild for GCC 4.3 |
||||
|
||||
* Thu Dec 14 2006 Jay Fenlason <fenlason@redhat.com> 5-1 |
||||
- Upgrade to ethtool version 5 to close |
||||
bz#184985: RFE: 10gigE support |
||||
bz#204840: "buffer overflow detected" when devname's length >=16 of ethtool |
||||
Resolves: #184985, #204840 |
||||
|
||||
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3-1.2.2 |
||||
- rebuild |
||||
|
||||
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 3-1.2.1 |
||||
- bump again for double-long bug on ppc(64) |
||||
|
||||
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3-1.2 |
||||
- rebuilt for new gcc4.1 snapshot and glibc changes |
||||
|
||||
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Thu Mar 3 2005 Jeff Garzik <jgarzik@pobox.com> |
||||
- Update to version 3. |
||||
- Use %%buildroot macro, rather than RPM_BUILD_ROOT env var, |
||||
as recommended by RPM packaging guidelines. |
||||
|
||||
* Sun Feb 27 2005 Florian La Roche <laroche@redhat.com> |
||||
- Copyright: -> License |
||||
|
||||
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Fri Sep 5 2003 Bill Nottingham <notting@redhat.com> 1.8-2 |
||||
- remove bogus check for devices starting with ethXX, this time applying |
||||
the patch |
||||
|
||||
* Thu Jul 24 2003 Bill Nottingham <notting@redhat.com> 1.8-1 |
||||
- update to 1.8 |
||||
- remove bogus check for devices starting with ethXX |
||||
|
||||
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Sat Feb 8 2003 Bill Nottingham <notting@redhat.com> 1.6-5 |
||||
- move to /sbin |
||||
|
||||
* Wed Jan 22 2003 Tim Powers <timp@redhat.com> |
||||
- rebuilt |
||||
|
||||
* Thu Dec 12 2002 Tim Powers <timp@redhat.com> 1.6-3 |
||||
- rebuild on all arches |
||||
|
||||
* Fri Jun 21 2002 Tim Powers <timp@redhat.com> |
||||
- automated rebuild |
||||
|
||||
* Thu Jun 20 2002 Florian La Roche <Florian.LaRoche@redhat.de> |
||||
- update to 1.6 |
||||
|
||||
* Thu May 23 2002 Tim Powers <timp@redhat.com> |
||||
- automated rebuild |
||||
|
||||
* Mon Mar 4 2002 Bill Nottingham <notting@redhat.com> 1.5-1 |
||||
- 1.5 |
||||
|
||||
* Thu Feb 21 2002 Bill Nottingham <notting@redhat.com> |
||||
- rebuild |
||||
|
||||
* Wed Jan 09 2002 Tim Powers <timp@redhat.com> |
||||
- automated rebuild |
||||
|
||||
* Tue Dec 4 2001 Bill Nottingham <notting@redhat.com> |
||||
- update to 1.4 |
||||
|
||||
* Fri Aug 3 2001 Bill Nottingham <notting@redhat.com> |
||||
- return of ethtool! (#50475) |
||||
|
||||
* Wed Jul 12 2000 Prospector <bugzilla@redhat.com> |
||||
- automatic rebuild |
||||
|
||||
* Sun Jun 18 2000 Matt Wilson <msw@redhat.com> |
||||
- rebuilt for next release |
||||
- use FHS man path |
||||
|
||||
* Tue Feb 22 2000 Bill Nottingham <notting@redhat.com> |
||||
- handle compressed manpages |
||||
|
||||
* Wed Apr 14 1999 Bill Nottingham <notting@redhat.com> |
||||
- run through with new s/d |
||||
|
||||
* Tue Apr 13 1999 Jakub Jelinek <jj@ultra.linux.cz> |
||||
- initial package. |
Loading…
Reference in new issue