diff --git a/SOURCES/0019-ethtool-Fix-coding-style-warnings-and-errors-reporte.patch b/SOURCES/0019-ethtool-Fix-coding-style-warnings-and-errors-reporte.patch
new file mode 100644
index 0000000..5fec7e2
--- /dev/null
+++ b/SOURCES/0019-ethtool-Fix-coding-style-warnings-and-errors-reporte.patch
@@ -0,0 +1,385 @@
+From ec0ef0916c7d8d5f1b618610f202c805f1955827 Mon Sep 17 00:00:00 2001
+From: Gal Pressman <galp@mellanox.com>
+Date: Thu, 26 Oct 2017 17:44:43 +0300
+Subject: [PATCH] ethtool: Fix coding style warnings and errors reported by
+ checkpatch
+
+Checkpatch had a lot to say about ethtool.c, this will handle a lot of
+the reported issues.
+
+Signed-off-by: Gal Pressman <galp@mellanox.com>
+Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
+(cherry picked from commit 5a20e546c0bf4b479f1b3cd272ea366a6069bfa4)
+---
+ ethtool.c | 189 +++++++++++++++++++++++++++++---------------------------------
+ 1 file changed, 89 insertions(+), 100 deletions(-)
+
+diff --git a/ethtool.c b/ethtool.c
+index 2ecc13f..06006f4 100644
+--- a/ethtool.c
++++ b/ethtool.c
+@@ -235,7 +235,7 @@ get_uint_range(char *str, int base, unsigned long long max)
+ 		exit_bad_args();
+ 	errno = 0;
+ 	v = strtoull(str, &endp, base);
+-	if ( errno || *endp || v > max)
++	if (errno || *endp || v > max)
+ 		exit_bad_args();
+ 	return v;
+ }
+@@ -261,9 +261,8 @@ static void get_mac_addr(char *src, unsigned char *dest)
+ 	if (count != ETH_ALEN)
+ 		exit_bad_args();
+ 
+-	for (i = 0; i < count; i++) {
++	for (i = 0; i < count; i++)
+ 		dest[i] = buf[i];
+-	}
+ }
+ 
+ static int parse_hex_u32_bitmap(const char *s,
+@@ -408,7 +407,7 @@ static void parse_generic_cmdline(struct cmd_context *ctx,
+ 				break;
+ 			}
+ 		}
+-		if( !found)
++		if (!found)
+ 			exit_bad_args();
+ 	}
+ }
+@@ -686,10 +685,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" },
++		{ 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;
+@@ -719,7 +718,7 @@ static void dump_link_caps(const char *prefix, const char *an_prefix,
+ 		}
+ 	}
+ 	if (did1 == 0)
+-		 fprintf(stdout, "Not reported");
++		fprintf(stdout, "Not reported");
+ 	fprintf(stdout, "\n");
+ 
+ 	if (!link_mode_only) {
+@@ -911,32 +910,32 @@ static int parse_wolopts(char *optstr, u32 *data)
+ 	*data = 0;
+ 	while (*optstr) {
+ 		switch (*optstr) {
+-			case 'p':
+-				*data |= WAKE_PHY;
+-				break;
+-			case 'u':
+-				*data |= WAKE_UCAST;
+-				break;
+-			case 'm':
+-				*data |= WAKE_MCAST;
+-				break;
+-			case 'b':
+-				*data |= WAKE_BCAST;
+-				break;
+-			case 'a':
+-				*data |= WAKE_ARP;
+-				break;
+-			case 'g':
+-				*data |= WAKE_MAGIC;
+-				break;
+-			case 's':
+-				*data |= WAKE_MAGICSECURE;
+-				break;
+-			case 'd':
+-				*data = 0;
+-				break;
+-			default:
+-				return -1;
++		case 'p':
++			*data |= WAKE_PHY;
++			break;
++		case 'u':
++			*data |= WAKE_UCAST;
++			break;
++		case 'm':
++			*data |= WAKE_MCAST;
++			break;
++		case 'b':
++			*data |= WAKE_BCAST;
++			break;
++		case 'a':
++			*data |= WAKE_ARP;
++			break;
++		case 'g':
++			*data |= WAKE_MAGIC;
++			break;
++		case 's':
++			*data |= WAKE_MAGICSECURE;
++			break;
++		case 'd':
++			*data = 0;
++			break;
++		default:
++			return -1;
+ 		}
+ 		optstr++;
+ 	}
+@@ -981,10 +980,11 @@ static int dump_wol(struct ethtool_wolinfo *wol)
+ 	if (wol->supported & WAKE_MAGICSECURE) {
+ 		int i;
+ 		int delim = 0;
++
+ 		fprintf(stdout, "        SecureOn password: ");
+ 		for (i = 0; i < SOPASS_MAX; i++) {
+ 			fprintf(stdout, "%s%02x", delim?":":"", wol->sopass[i]);
+-			delim=1;
++			delim = 1;
+ 		}
+ 		fprintf(stdout, "\n");
+ 	}
+@@ -997,32 +997,32 @@ static int parse_rxfhashopts(char *optstr, u32 *data)
+ 	*data = 0;
+ 	while (*optstr) {
+ 		switch (*optstr) {
+-			case 'm':
+-				*data |= RXH_L2DA;
+-				break;
+-			case 'v':
+-				*data |= RXH_VLAN;
+-				break;
+-			case 't':
+-				*data |= RXH_L3_PROTO;
+-				break;
+-			case 's':
+-				*data |= RXH_IP_SRC;
+-				break;
+-			case 'd':
+-				*data |= RXH_IP_DST;
+-				break;
+-			case 'f':
+-				*data |= RXH_L4_B_0_1;
+-				break;
+-			case 'n':
+-				*data |= RXH_L4_B_2_3;
+-				break;
+-			case 'r':
+-				*data |= RXH_DISCARD;
+-				break;
+-			default:
+-				return -1;
++		case 'm':
++			*data |= RXH_L2DA;
++			break;
++		case 'v':
++			*data |= RXH_VLAN;
++			break;
++		case 't':
++			*data |= RXH_L3_PROTO;
++			break;
++		case 's':
++			*data |= RXH_IP_SRC;
++			break;
++		case 'd':
++			*data |= RXH_IP_DST;
++			break;
++		case 'f':
++			*data |= RXH_L4_B_0_1;
++			break;
++		case 'n':
++			*data |= RXH_L4_B_2_3;
++			break;
++		case 'r':
++			*data |= RXH_DISCARD;
++			break;
++		default:
++			return -1;
+ 		}
+ 		optstr++;
+ 	}
+@@ -1036,27 +1036,20 @@ static char *unparse_rxfhashopts(u64 opts)
+ 	memset(buf, 0, sizeof(buf));
+ 
+ 	if (opts) {
+-		if (opts & RXH_L2DA) {
++		if (opts & RXH_L2DA)
+ 			strcat(buf, "L2DA\n");
+-		}
+-		if (opts & RXH_VLAN) {
++		if (opts & RXH_VLAN)
+ 			strcat(buf, "VLAN tag\n");
+-		}
+-		if (opts & RXH_L3_PROTO) {
++		if (opts & RXH_L3_PROTO)
+ 			strcat(buf, "L3 proto\n");
+-		}
+-		if (opts & RXH_IP_SRC) {
++		if (opts & RXH_IP_SRC)
+ 			strcat(buf, "IP SA\n");
+-		}
+-		if (opts & RXH_IP_DST) {
++		if (opts & RXH_IP_DST)
+ 			strcat(buf, "IP DA\n");
+-		}
+-		if (opts & RXH_L4_B_0_1) {
++		if (opts & RXH_L4_B_0_1)
+ 			strcat(buf, "L4 bytes 0 & 1 [TCP/UDP src port]\n");
+-		}
+-		if (opts & RXH_L4_B_2_3) {
++		if (opts & RXH_L4_B_2_3)
+ 			strcat(buf, "L4 bytes 2 & 3 [TCP/UDP dst port]\n");
+-		}
+ 	} else {
+ 		sprintf(buf, "None");
+ 	}
+@@ -1157,10 +1150,10 @@ static const struct {
+ 	{ "tg3", tg3_dump_regs },
+ 	{ "skge", skge_dump_regs },
+ 	{ "sky2", sky2_dump_regs },
+-        { "vioc", vioc_dump_regs },
+-        { "smsc911x", smsc911x_dump_regs },
+-        { "at76c50x-usb", at76c50x_usb_dump_regs },
+-        { "sfc", sfc_dump_regs },
++	{ "vioc", vioc_dump_regs },
++	{ "smsc911x", smsc911x_dump_regs },
++	{ "at76c50x-usb", at76c50x_usb_dump_regs },
++	{ "sfc", sfc_dump_regs },
+ 	{ "st_mac100", st_mac100_dump_regs },
+ 	{ "st_gmac", st_gmac_dump_regs },
+ 	{ "et131x", et131x_dump_regs },
+@@ -2805,7 +2798,7 @@ static int do_sset(struct cmd_context *ctx)
+ 			i += 1;
+ 			if (i >= argc)
+ 				exit_bad_args();
+-			speed_wanted = get_int(argp[i],10);
++			speed_wanted = get_int(argp[i], 10);
+ 		} else if (!strcmp(argp[i], "duplex")) {
+ 			gset_changed = 1;
+ 			i += 1;
+@@ -3016,7 +3009,7 @@ static int do_sset(struct cmd_context *ctx)
+ 						speed_wanted);
+ 				if (duplex_wanted >= 0)
+ 					fprintf(stderr, " duplex %s",
+-						duplex_wanted ? 
++						duplex_wanted ?
+ 						"full" : "half");
+ 				fprintf(stderr,	"\n");
+ 			}
+@@ -3101,14 +3094,12 @@ static int do_sset(struct cmd_context *ctx)
+ 			perror("Cannot get current wake-on-lan settings");
+ 		} else {
+ 			/* Change everything the user specified. */
+-			if (wol_change) {
++			if (wol_change)
+ 				wol.wolopts = wol_wanted;
+-			}
+ 			if (sopass_change) {
+ 				int i;
+-				for (i = 0; i < SOPASS_MAX; i++) {
++				for (i = 0; i < SOPASS_MAX; i++)
+ 					wol.sopass[i] = sopass_wanted[i];
+-				}
+ 			}
+ 
+ 			/* Try to perform the update. */
+@@ -3205,7 +3196,7 @@ static int do_gregs(struct cmd_context *ctx)
+ 			free(regs);
+ 			return 75;
+ 		}
+-        }
++	}
+ 
+ 	if (dump_regs(gregs_dump_raw, gregs_dump_hex,
+ 		      &drvinfo, regs) < 0) {
+@@ -3364,7 +3355,7 @@ static int do_seeprom(struct cmd_context *ctx)
+ static int do_test(struct cmd_context *ctx)
+ {
+ 	enum {
+-		ONLINE=0,
++		ONLINE = 0,
+ 		OFFLINE,
+ 		EXTERNAL_LB,
+ 	} test_type;
+@@ -3375,15 +3366,14 @@ static int do_test(struct cmd_context *ctx)
+ 	if (ctx->argc > 1)
+ 		exit_bad_args();
+ 	if (ctx->argc == 1) {
+-		if (!strcmp(ctx->argp[0], "online")) {
++		if (!strcmp(ctx->argp[0], "online"))
+ 			test_type = ONLINE;
+-	 	} else if (!strcmp(*ctx->argp, "offline")) {
++		else if (!strcmp(*ctx->argp, "offline"))
+ 			test_type = OFFLINE;
+-		} else if (!strcmp(*ctx->argp, "external_lb")) {
++		else if (!strcmp(*ctx->argp, "external_lb"))
+ 			test_type = EXTERNAL_LB;
+-		} else {
++		else
+ 			exit_bad_args();
+-		}
+ 	} else {
+ 		test_type = OFFLINE;
+ 	}
+@@ -3414,7 +3404,7 @@ static int do_test(struct cmd_context *ctx)
+ 	err = send_ioctl(ctx, test);
+ 	if (err < 0) {
+ 		perror("Cannot test");
+-		free (test);
++		free(test);
+ 		free(strings);
+ 		return 74;
+ 	}
+@@ -3556,7 +3546,7 @@ static int do_srxclass(struct cmd_context *ctx)
+ 		err = send_ioctl(ctx, &nfccmd);
+ 		if (err < 0)
+ 			perror("Cannot change RX network flow hashing options");
+-	} else if (!strcmp(ctx->argp[0], "flow-type")) {	
++	} else if (!strcmp(ctx->argp[0], "flow-type")) {
+ 		struct ethtool_rx_flow_spec rx_rule_fs;
+ 		__u32 rss_context = 0;
+ 
+@@ -4325,8 +4315,8 @@ static int do_srxntuple(struct cmd_context *ctx,
+ 	/*
+ 	 * Display error only if response is something other than op not
+ 	 * supported.  It is possible that the interface uses the network
+-	 * flow classifier interface instead of N-tuple. 
+-	 */ 
++	 * flow classifier interface instead of N-tuple.
++	 */
+ 	if (err < 0) {
+ 		if (errno != EOPNOTSUPP)
+ 			perror("Cannot add new rule via N-tuple");
+@@ -4468,7 +4458,7 @@ static int do_gprivflags(struct cmd_context *ctx)
+ 
+ 	/* Find longest string and align all strings accordingly */
+ 	for (i = 0; i < strings->len; i++) {
+-		cur_len = strlen((const char*)strings->data +
++		cur_len = strlen((const char *)strings->data +
+ 				 i * ETH_GSTRING_LEN);
+ 		if (cur_len > max_len)
+ 			max_len = cur_len;
+@@ -4718,7 +4708,6 @@ static int do_seee(struct cmd_context *ctx)
+ 	do_generic_set(cmdline_eee, ARRAY_SIZE(cmdline_eee), &change2);
+ 
+ 	if (change2) {
+-
+ 		eeecmd.cmd = ETHTOOL_SEEE;
+ 		if (send_ioctl(ctx, &eeecmd)) {
+ 			perror("Cannot set EEE settings");
+@@ -4958,7 +4947,7 @@ static const struct option {
+ 	  "               [ tx N ]\n"
+ 	  "               [ other N ]\n"
+ 	  "               [ combined N ]\n" },
+-	{ "--show-priv-flags" , 1, do_gprivflags, "Query private flags" },
++	{ "--show-priv-flags", 1, do_gprivflags, "Query private flags" },
+ 	{ "--set-priv-flags", 1, do_sprivflags, "Set private flags",
+ 	  "		FLAG on|off ...\n" },
+ 	{ "-m|--dump-module-eeprom|--module-info", 1, do_getmodule,
+-- 
+1.8.3.1
+
diff --git a/SOURCES/0020-ethtool-Add-support-for-200Gbps-50Gbps-per-lane-link.patch b/SOURCES/0020-ethtool-Add-support-for-200Gbps-50Gbps-per-lane-link.patch
new file mode 100644
index 0000000..e40303b
--- /dev/null
+++ b/SOURCES/0020-ethtool-Add-support-for-200Gbps-50Gbps-per-lane-link.patch
@@ -0,0 +1,162 @@
+From f507c9e5f77a10d25d32581c2b160e90c4c446b0 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 8cc61e9..28b3592 100644
+--- a/ethtool-copy.h
++++ b/ethtool-copy.h
+@@ -1450,6 +1450,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_*
+@@ -1458,7 +1473,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)	\
+@@ -1566,6 +1581,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 dd2e3f5..de6ae68 100644
+--- a/ethtool.8.in
++++ b/ethtool.8.in
+@@ -613,6 +613,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
+@@ -621,6 +626,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 06006f4..d58ca2e 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
+
diff --git a/SPECS/ethtool.spec b/SPECS/ethtool.spec
index 92b6745..46e57c3 100644
--- a/SPECS/ethtool.spec
+++ b/SPECS/ethtool.spec
@@ -1,7 +1,7 @@
 Name:		ethtool
 Epoch:		2
 Version:	4.8
-Release:	9%{?dist}
+Release:	10%{?dist}
 Summary:	Settings tool for Ethernet NICs
 
 License:	GPLv2
@@ -38,6 +38,8 @@ Patch14:	0015-ethtool-copy.h-sync-with-net-next.patch
 Patch15:	0016-ethtool-add-support-for-extra-RSS-contexts-and-RSS-s.patch
 Patch16:	0017-ethtool.8-Document-RSS-context-control-and-RSS-filte.patch
 Patch17:	0018-ethtool-don-t-fall-back-to-grxfhindir-when-context-w.patch
+Patch18:	0019-ethtool-Fix-coding-style-warnings-and-errors-reporte.patch
+Patch19:	0020-ethtool-Add-support-for-200Gbps-50Gbps-per-lane-link.patch
 
 %description
 This utility allows querying and changing settings such as speed,
@@ -64,6 +66,8 @@ network devices, especially of Ethernet devices.
 %patch15 -p1
 %patch16 -p1
 %patch17 -p1
+%patch18 -p1
+%patch19 -p1
 
 # Only needed when using upstream git
 # aclocal
@@ -86,6 +90,9 @@ make DESTDIR=%{buildroot} INSTALL='install -p' install
 %{_mandir}/man8/%{name}.8*
 
 %changelog
+* Fri Mar 15 2019 Ivan Vecera <ivecera@redhat.com> - 2:4.8-9
+- Added support for 200Gbps (50Gbps/lane) link mode
+
 * Mon Jul  2 2018 Ivan Vecera <ivecera@redhat.com> - 2:4.8-9
 - Added support for extra RSS contexts and steering filters