patch 'net/nfp: fix disabling VLAN stripping' has been queued to stable release 20.11.6

Xueming Li xuemingl at nvidia.com
Tue Jun 21 10:02:31 CEST 2022


Hi,

FYI, your patch has been queued to stable release 20.11.6

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/23/22. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/steevenlee/dpdk

This queued commit can be viewed at:
https://github.com/steevenlee/dpdk/commit/ac86ba961eb3e117a50b91308e423509de580995

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From ac86ba961eb3e117a50b91308e423509de580995 Mon Sep 17 00:00:00 2001
From: Peng Zhang <peng.zhang at corigine.com>
Date: Thu, 26 May 2022 16:34:44 +0200
Subject: [PATCH] net/nfp: fix disabling VLAN stripping
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: Xueming Li <xuemingl at nvidia.com>

[ upstream commit 7988cdca98940faa80d3e030c1b9811bcdd4c67d ]

"vlan set strip off 0" can't work, due to the incorrect usage
of the mask, it just represent that the status is changed or not,
not represent offloaded or not, so that the driver send the
error control message to the nic.

Now, by first inspect the mask of things that changed, and then
change the requested state if VLAN stripping according the
requested offload status. So this change can fix this bug.

Fixes: d4a27a3b092a ("nfp: add basic features")

Signed-off-by: Peng Zhang <peng.zhang at corigine.com>
Signed-off-by: Yong Xu <yong.xu at corigine.com>
Signed-off-by: Chaoyong He <chaoyong.he at corigine.com>
Signed-off-by: Niklas Söderlund <niklas.soderlund at corigine.com>
---
 drivers/net/nfp/nfp_net.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index fa42548e7a..4fa0bcc9e7 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -2393,22 +2393,25 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 {
 	uint32_t new_ctrl, update;
 	struct nfp_net_hw *hw;
+	struct rte_eth_conf *dev_conf;
 	int ret;
 
 	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-	new_ctrl = 0;
-
-	/* Enable vlan strip if it is not configured yet */
-	if ((mask & ETH_VLAN_STRIP_OFFLOAD) &&
-	    !(hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN))
-		new_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_RXVLAN;
+	dev_conf = &dev->data->dev_conf;
+	new_ctrl = hw->ctrl;
 
-	/* Disable vlan strip just if it is configured */
-	if (!(mask & ETH_VLAN_STRIP_OFFLOAD) &&
-	    (hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN))
-		new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_RXVLAN;
+	/*
+	 * Vlan stripping setting
+	 * Enable or disable VLAN stripping
+	 */
+	if (mask & ETH_VLAN_STRIP_MASK) {
+		if (dev_conf->rxmode.offloads & DEV_RX_OFFLOAD_VLAN_STRIP)
+			new_ctrl |= NFP_NET_CFG_CTRL_RXVLAN;
+		else
+			new_ctrl &= ~NFP_NET_CFG_CTRL_RXVLAN;
+	}
 
-	if (new_ctrl == 0)
+	if (new_ctrl == hw->ctrl)
 		return 0;
 
 	update = NFP_NET_CFG_UPDATE_GEN;
-- 
2.35.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-06-21 15:37:53.087178366 +0800
+++ 0085-net-nfp-fix-disabling-VLAN-stripping.patch	2022-06-21 15:37:49.174451737 +0800
@@ -1 +1 @@
-From 7988cdca98940faa80d3e030c1b9811bcdd4c67d Mon Sep 17 00:00:00 2001
+From ac86ba961eb3e117a50b91308e423509de580995 Mon Sep 17 00:00:00 2001
@@ -7,0 +8,3 @@
+Cc: Xueming Li <xuemingl at nvidia.com>
+
+[ upstream commit 7988cdca98940faa80d3e030c1b9811bcdd4c67d ]
@@ -19 +21,0 @@
-Cc: stable at dpdk.org
@@ -26 +28 @@
- drivers/net/nfp/nfp_common.c | 25 ++++++++++++++-----------
+ drivers/net/nfp/nfp_net.c | 25 ++++++++++++++-----------
@@ -29,5 +31,5 @@
-diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c
-index be68c25fb8..34e3a03edd 100644
---- a/drivers/net/nfp/nfp_common.c
-+++ b/drivers/net/nfp/nfp_common.c
-@@ -989,22 +989,25 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask)
+diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
+index fa42548e7a..4fa0bcc9e7 100644
+--- a/drivers/net/nfp/nfp_net.c
++++ b/drivers/net/nfp/nfp_net.c
+@@ -2393,22 +2393,25 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask)
@@ -44 +46 @@
--	if ((mask & RTE_ETH_VLAN_STRIP_OFFLOAD) &&
+-	if ((mask & ETH_VLAN_STRIP_OFFLOAD) &&
@@ -51 +53 @@
--	if (!(mask & RTE_ETH_VLAN_STRIP_OFFLOAD) &&
+-	if (!(mask & ETH_VLAN_STRIP_OFFLOAD) &&
@@ -58,2 +60,2 @@
-+	if (mask & RTE_ETH_VLAN_STRIP_MASK) {
-+		if (dev_conf->rxmode.offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP)
++	if (mask & ETH_VLAN_STRIP_MASK) {
++		if (dev_conf->rxmode.offloads & DEV_RX_OFFLOAD_VLAN_STRIP)


More information about the stable mailing list