diff --git a/SOURCES/0038-update-UAPI-header-copies.patch b/SOURCES/0038-update-UAPI-header-copies.patch
new file mode 100644
index 0000000..47f1b1c
--- /dev/null
+++ b/SOURCES/0038-update-UAPI-header-copies.patch
@@ -0,0 +1,152 @@
+From b70c39e968db6cb67d64526cafd72fc0763d959a Mon Sep 17 00:00:00 2001
+From: Danielle Ratson <danieller@nvidia.com>
+Date: Wed, 10 Feb 2021 15:48:36 +0200
+Subject: [PATCH 38/42] update UAPI header copies
+
+Update to kernel commit 012ce4dd3102.
+
+Signed-off-by: Danielle Ratson <danieller@nvidia.com>
+Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
+(cherry picked from commit 18e509526a727c594c29622489437c7376f44d32)
+---
+ uapi/linux/ethtool.h         |  2 +-
+ uapi/linux/ethtool_netlink.h |  1 +
+ uapi/linux/if_link.h         | 10 ++++++++--
+ uapi/linux/netlink.h         |  2 +-
+ uapi/linux/rtnetlink.h       | 20 +++++++++++++++-----
+ 5 files changed, 26 insertions(+), 9 deletions(-)
+
+diff --git a/uapi/linux/ethtool.h b/uapi/linux/ethtool.h
+index 052689bcc90c..a951137bdba9 100644
+--- a/uapi/linux/ethtool.h
++++ b/uapi/linux/ethtool.h
+@@ -14,7 +14,7 @@
+ #ifndef _LINUX_ETHTOOL_H
+ #define _LINUX_ETHTOOL_H
+ 
+-#include <linux/kernel.h>
++#include <linux/const.h>
+ #include <linux/types.h>
+ #include <linux/if_ether.h>
+ 
+diff --git a/uapi/linux/ethtool_netlink.h b/uapi/linux/ethtool_netlink.h
+index c022883cdb22..0cd6906aa5d5 100644
+--- a/uapi/linux/ethtool_netlink.h
++++ b/uapi/linux/ethtool_netlink.h
+@@ -227,6 +227,7 @@ enum {
+ 	ETHTOOL_A_LINKMODES_DUPLEX,		/* u8 */
+ 	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,	/* u8 */
+ 	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,	/* u8 */
++	ETHTOOL_A_LINKMODES_LANES,		/* u32 */
+ 
+ 	/* add new constants above here */
+ 	__ETHTOOL_A_LINKMODES_CNT,
+diff --git a/uapi/linux/if_link.h b/uapi/linux/if_link.h
+index 307e5c245e9f..c96880c51c93 100644
+--- a/uapi/linux/if_link.h
++++ b/uapi/linux/if_link.h
+@@ -75,8 +75,9 @@ struct rtnl_link_stats {
+  *
+  * @rx_dropped: Number of packets received but not processed,
+  *   e.g. due to lack of resources or unsupported protocol.
+- *   For hardware interfaces this counter should not include packets
+- *   dropped by the device which are counted separately in
++ *   For hardware interfaces this counter may include packets discarded
++ *   due to L2 address filtering but should not include packets dropped
++ *   by the device due to buffer exhaustion which are counted separately in
+  *   @rx_missed_errors (since procfs folds those two counters together).
+  *
+  * @tx_dropped: Number of packets dropped on their way to transmission,
+@@ -522,6 +523,8 @@ enum {
+ 	IFLA_BRPORT_BACKUP_PORT,
+ 	IFLA_BRPORT_MRP_RING_OPEN,
+ 	IFLA_BRPORT_MRP_IN_OPEN,
++	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
++	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+ 	__IFLA_BRPORT_MAX
+ };
+ #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
+@@ -586,6 +589,8 @@ enum {
+ 	IFLA_MACVLAN_MACADDR,
+ 	IFLA_MACVLAN_MACADDR_DATA,
+ 	IFLA_MACVLAN_MACADDR_COUNT,
++	IFLA_MACVLAN_BC_QUEUE_LEN,
++	IFLA_MACVLAN_BC_QUEUE_LEN_USED,
+ 	__IFLA_MACVLAN_MAX,
+ };
+ 
+@@ -804,6 +809,7 @@ enum {
+ 	IFLA_GTP_FD1,
+ 	IFLA_GTP_PDP_HASHSIZE,
+ 	IFLA_GTP_ROLE,
++	IFLA_GTP_COLLECT_METADATA,
+ 	__IFLA_GTP_MAX,
+ };
+ #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
+diff --git a/uapi/linux/netlink.h b/uapi/linux/netlink.h
+index dfef006be9f9..5024c5435749 100644
+--- a/uapi/linux/netlink.h
++++ b/uapi/linux/netlink.h
+@@ -2,7 +2,7 @@
+ #ifndef __LINUX_NETLINK_H
+ #define __LINUX_NETLINK_H
+ 
+-#include <linux/kernel.h>
++#include <linux/const.h>
+ #include <linux/socket.h> /* for __kernel_sa_family_t */
+ #include <linux/types.h>
+ 
+diff --git a/uapi/linux/rtnetlink.h b/uapi/linux/rtnetlink.h
+index 5ad84e663d01..c66fd247d90a 100644
+--- a/uapi/linux/rtnetlink.h
++++ b/uapi/linux/rtnetlink.h
+@@ -396,11 +396,13 @@ struct rtnexthop {
+ #define RTNH_F_DEAD		1	/* Nexthop is dead (used by multipath)	*/
+ #define RTNH_F_PERVASIVE	2	/* Do recursive gateway lookup	*/
+ #define RTNH_F_ONLINK		4	/* Gateway is forced on link	*/
+-#define RTNH_F_OFFLOAD		8	/* offloaded route */
++#define RTNH_F_OFFLOAD		8	/* Nexthop is offloaded */
+ #define RTNH_F_LINKDOWN		16	/* carrier-down on nexthop */
+ #define RTNH_F_UNRESOLVED	32	/* The entry is unresolved (ipmr) */
++#define RTNH_F_TRAP		64	/* Nexthop is trapping packets */
+ 
+-#define RTNH_COMPARE_MASK	(RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
++#define RTNH_COMPARE_MASK	(RTNH_F_DEAD | RTNH_F_LINKDOWN | \
++				 RTNH_F_OFFLOAD | RTNH_F_TRAP)
+ 
+ /* Macros to handle hexthops */
+ 
+@@ -764,12 +766,18 @@ enum {
+ #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
+ /* tcamsg flags stored in attribute TCA_ROOT_FLAGS
+  *
+- * TCA_FLAG_LARGE_DUMP_ON user->kernel to request for larger than TCA_ACT_MAX_PRIO
+- * actions in a dump. All dump responses will contain the number of actions
+- * being dumped stored in for user app's consumption in TCA_ROOT_COUNT
++ * TCA_ACT_FLAG_LARGE_DUMP_ON user->kernel to request for larger than
++ * TCA_ACT_MAX_PRIO actions in a dump. All dump responses will contain the
++ * number of actions being dumped stored in for user app's consumption in
++ * TCA_ROOT_COUNT
++ *
++ * TCA_ACT_FLAG_TERSE_DUMP user->kernel to request terse (brief) dump that only
++ * includes essential action info (kind, index, etc.)
+  *
+  */
+ #define TCA_FLAG_LARGE_DUMP_ON		(1 << 0)
++#define TCA_ACT_FLAG_LARGE_DUMP_ON	TCA_FLAG_LARGE_DUMP_ON
++#define TCA_ACT_FLAG_TERSE_DUMP		(1 << 1)
+ 
+ /* New extended info filters for IFLA_EXT_MASK */
+ #define RTEXT_FILTER_VF		(1 << 0)
+@@ -777,6 +785,8 @@ enum {
+ #define RTEXT_FILTER_BRVLAN_COMPRESSED	(1 << 2)
+ #define	RTEXT_FILTER_SKIP_STATS	(1 << 3)
+ #define RTEXT_FILTER_MRP	(1 << 4)
++#define RTEXT_FILTER_CFM_CONFIG	(1 << 5)
++#define RTEXT_FILTER_CFM_STATUS	(1 << 6)
+ 
+ /* End of information exported to user level */
+ 
+-- 
+2.31.1
+
diff --git a/SOURCES/0039-netlink-settings-Add-netlink-support-for-lanes-param.patch b/SOURCES/0039-netlink-settings-Add-netlink-support-for-lanes-param.patch
new file mode 100644
index 0000000..b8a9ea8
--- /dev/null
+++ b/SOURCES/0039-netlink-settings-Add-netlink-support-for-lanes-param.patch
@@ -0,0 +1,63 @@
+From e9ee8ed549fbc02527356c3c82cec23434fc2f56 Mon Sep 17 00:00:00 2001
+From: Danielle Ratson <danieller@mellanox.com>
+Date: Wed, 10 Feb 2021 15:48:37 +0200
+Subject: [PATCH 39/42] netlink: settings: Add netlink support for lanes
+ parameter
+
+Add support for "ethtool -s <dev> lanes N ..." for setting a specific
+number of lanes.
+
+Signed-off-by: Danielle Ratson <danieller@mellanox.com>
+Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
+(cherry picked from commit 107ee330ec7bf83e8c3938375f3466bc8e102b93)
+---
+ ethtool.c              | 1 +
+ netlink/desc-ethtool.c | 1 +
+ netlink/settings.c     | 7 +++++++
+ 3 files changed, 9 insertions(+)
+
+diff --git a/ethtool.c b/ethtool.c
+index f5fbb01e553a..61f136c5bf2c 100644
+--- a/ethtool.c
++++ b/ethtool.c
+@@ -5568,6 +5568,7 @@ static const struct option args[] = {
+ 		.nlfunc	= nl_sset,
+ 		.help	= "Change generic options",
+ 		.xhelp	= "		[ speed %d ]\n"
++			  "		[ lanes %d ]\n"
+ 			  "		[ duplex half|full ]\n"
+ 			  "		[ port tp|aui|bnc|mii|fibre|da ]\n"
+ 			  "		[ mdix auto|on|off ]\n"
+diff --git a/netlink/desc-ethtool.c b/netlink/desc-ethtool.c
+index 8dd4a91ad0d7..c8447ce33f4d 100644
+--- a/netlink/desc-ethtool.c
++++ b/netlink/desc-ethtool.c
+@@ -87,6 +87,7 @@ static const struct pretty_nla_desc __linkmodes_desc[] = {
+ 	NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_DUPLEX),
+ 	NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG),
+ 	NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE),
++	NLATTR_DESC_U32(ETHTOOL_A_LINKMODES_LANES),
+ };
+ 
+ static const struct pretty_nla_desc __linkstate_desc[] = {
+diff --git a/netlink/settings.c b/netlink/settings.c
+index 01c1d38d323f..37222db5c833 100644
+--- a/netlink/settings.c
++++ b/netlink/settings.c
+@@ -1065,6 +1065,13 @@ static const struct param_parser sset_params[] = {
+ 		.handler	= nl_parse_direct_u32,
+ 		.min_argc	= 1,
+ 	},
++	{
++		.arg		= "lanes",
++		.group		= ETHTOOL_MSG_LINKMODES_SET,
++		.type		= ETHTOOL_A_LINKMODES_LANES,
++		.handler	= nl_parse_direct_u32,
++		.min_argc	= 1,
++	},
+ 	{
+ 		.arg		= "duplex",
+ 		.group		= ETHTOOL_MSG_LINKMODES_SET,
+-- 
+2.31.1
+
diff --git a/SOURCES/0040-netlink-settings-Expose-the-number-of-lanes-in-use.patch b/SOURCES/0040-netlink-settings-Expose-the-number-of-lanes-in-use.patch
new file mode 100644
index 0000000..047897c
--- /dev/null
+++ b/SOURCES/0040-netlink-settings-Expose-the-number-of-lanes-in-use.patch
@@ -0,0 +1,41 @@
+From 53e33fe5f4f982afe13e45677d134eb1b11d4d2a Mon Sep 17 00:00:00 2001
+From: Danielle Ratson <danieller@nvidia.com>
+Date: Wed, 10 Feb 2021 15:48:38 +0200
+Subject: [PATCH 40/42] netlink: settings: Expose the number of lanes in use
+
+Currently, the user does not have the information regarding how many lanes
+are used when the link is up.
+
+After adding a possibility to advertise or force a specific number of
+lanes this information becomes helpful.
+
+Expose the number of lanes in use if the information is passed from
+kernel.
+
+Signed-off-by: Danielle Ratson <danieller@nvidia.com>
+Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
+(cherry picked from commit db7d457e49833d8a68be03d48cffa1d617498adc)
+---
+ netlink/settings.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/netlink/settings.c b/netlink/settings.c
+index 37222db5c833..2835805667d2 100644
+--- a/netlink/settings.c
++++ b/netlink/settings.c
+@@ -471,6 +471,12 @@ int linkmodes_reply_cb(const struct nlmsghdr *nlhdr, void *data)
+ 		else
+ 			printf("\tSpeed: %uMb/s\n", val);
+ 	}
++	if (tb[ETHTOOL_A_LINKMODES_LANES]) {
++		uint32_t val = mnl_attr_get_u32(tb[ETHTOOL_A_LINKMODES_LANES]);
++
++		print_banner(nlctx);
++		printf("\tLanes: %u\n", val);
++	}
+ 	if (tb[ETHTOOL_A_LINKMODES_DUPLEX]) {
+ 		uint8_t val = mnl_attr_get_u8(tb[ETHTOOL_A_LINKMODES_DUPLEX]);
+ 
+-- 
+2.31.1
+
diff --git a/SOURCES/0041-shell-completion-Add-completion-for-lanes.patch b/SOURCES/0041-shell-completion-Add-completion-for-lanes.patch
new file mode 100644
index 0000000..a41e40e
--- /dev/null
+++ b/SOURCES/0041-shell-completion-Add-completion-for-lanes.patch
@@ -0,0 +1,42 @@
+From 68c18af78f4e5eac30ed4fd4c6f3bb0ca8dc347e Mon Sep 17 00:00:00 2001
+From: Danielle Ratson <danieller@mellanox.com>
+Date: Wed, 10 Feb 2021 15:48:39 +0200
+Subject: [PATCH 41/42] shell-completion: Add completion for lanes
+
+Lanes was added as a new link mode setting in ethtool.
+
+Support completion for lanes when setting parameters.
+
+Signed-off-by: Danielle Ratson <danieller@mellanox.com>
+Reviewed-by: Jiri Pirko <jiri@nvidia.com>
+Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
+(cherry picked from commit c323bcb248c2424cebe533cb2607283aa4538a0b)
+---
+ shell-completion/bash/ethtool | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/shell-completion/bash/ethtool b/shell-completion/bash/ethtool
+index 53055594b649..45573413985d 100644
+--- a/shell-completion/bash/ethtool
++++ b/shell-completion/bash/ethtool
+@@ -97,6 +97,7 @@ _ethtool_change()
+ 		[speed]=notseen
+ 		[wol]=notseen
+ 		[xcvr]=notseen
++		[lanes]=notseen
+ 	)
+ 
+ 	local -A msgtypes=(
+@@ -175,6 +176,9 @@ _ethtool_change()
+ 		xcvr)
+ 			COMPREPLY=( $( compgen -W 'internal external' -- "$cur" ) )
+ 			return ;;
++		lanes)
++			# Number
++			return ;;
+ 	esac
+ 
+ 	local -a comp_words=()
+-- 
+2.31.1
+
diff --git a/SOURCES/0042-man-Add-man-page-for-setting-lanes-parameter.patch b/SOURCES/0042-man-Add-man-page-for-setting-lanes-parameter.patch
new file mode 100644
index 0000000..c99481d
--- /dev/null
+++ b/SOURCES/0042-man-Add-man-page-for-setting-lanes-parameter.patch
@@ -0,0 +1,41 @@
+From c8883327ddbbdcc8241104a98800bd50c0a667e1 Mon Sep 17 00:00:00 2001
+From: Danielle Ratson <danieller@nvidia.com>
+Date: Wed, 10 Feb 2021 15:48:40 +0200
+Subject: [PATCH 42/42] man: Add man page for setting lanes parameter
+
+Lanes parameter was added for setting using ethtool.
+
+Update the man page to include the new parameter.
+
+Signed-off-by: Danielle Ratson <danieller@nvidia.com>
+Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
+(cherry picked from commit e2a120e1d44e6c4d64f53ac78c9c08427922b33b)
+---
+ ethtool.8.in | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ethtool.8.in b/ethtool.8.in
+index e0601b3db0cf..3a7a8f947cc1 100644
+--- a/ethtool.8.in
++++ b/ethtool.8.in
+@@ -251,6 +251,7 @@ ethtool \- query or control network driver and hardware settings
+ .B ethtool \-s
+ .I devname
+ .BN speed
++.BN lanes
+ .B2 duplex half full
+ .B4 port tp aui bnc mii fibre da
+ .B3 mdix auto on off
+@@ -682,6 +683,9 @@ Set speed in Mb/s.
+ .B ethtool
+ with just the device name as an argument will show you the supported device speeds.
+ .TP
++.BI lanes \ N
++Set number of lanes.
++.TP
+ .A2 duplex half full
+ Sets full or half duplex mode.
+ .TP
+-- 
+2.31.1
+
diff --git a/SPECS/ethtool.spec b/SPECS/ethtool.spec
index 7193b50..c5bf8ad 100644
--- a/SPECS/ethtool.spec
+++ b/SPECS/ethtool.spec
@@ -1,7 +1,7 @@
 Name:		ethtool
 Epoch:		2
 Version:	5.8
-Release:	6%{?dist}
+Release:	7%{?dist}
 Summary:	Settings tool for Ethernet NICs
 License:	GPLv2
 Group:		Applications/System
@@ -44,6 +44,11 @@ Patch34:	0034-netlink-support-u32-enumerated-types-in-pretty-print.patch
 Patch35:	0035-netlink-support-64-bit-attribute-types-in-pretty-pri.patch
 Patch36:	0036-netlink-add-descriptions-for-genetlink-policy-dumps.patch
 Patch37:	0037-netlink-add-message-descriptions-for-pause-stats.patch
+Patch38:        0038-update-UAPI-header-copies.patch
+Patch39:        0039-netlink-settings-Add-netlink-support-for-lanes-param.patch
+Patch40:        0040-netlink-settings-Expose-the-number-of-lanes-in-use.patch
+Patch41:        0041-shell-completion-Add-completion-for-lanes.patch
+Patch42:        0042-man-Add-man-page-for-setting-lanes-parameter.patch
 BuildRequires:	libmnl-devel
 Conflicts:	filesystem < 3
 
@@ -91,6 +96,11 @@ network devices, especially of Ethernet devices.
 %patch35 -p1
 %patch36 -p1
 %patch37 -p1
+%patch38 -p1
+%patch39 -p1
+%patch40 -p1
+%patch41 -p1
+%patch42 -p1
 
 %build
 %configure
@@ -107,6 +117,9 @@ make DESTDIR=%{buildroot} INSTALL='install -p' install
 %{_datadir}/bash-completion/completions/ethtool
 
 %changelog
+* Thu Jun 03 2021 Ivan Vecera <ivecera@redhat.com> - 2:5.8-7
+- Added support for lanes
+
 * Thu Mar 11 2021 Ivan Vecera <ivecera@redhat.com> - 2:5.8-6
 - Added support for pause frame statistics