[dpdk-stable] patch 'net/i40e: enable QinQ stripping' has been queued to stable release 19.11.4
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Aug 6 11:53:52 CEST 2020
Hi,
FYI, your patch has been queued to stable release 19.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 08/08/20. 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.
Thanks.
Luca Boccassi
---
>From 628f34b05e58aa1a9e1fe24e4fac5a7f470d2ed7 Mon Sep 17 00:00:00 2001
From: Wei Zhao <wei.zhao1 at intel.com>
Date: Fri, 24 Jul 2020 15:01:37 +0800
Subject: [PATCH] net/i40e: enable QinQ stripping
[ upstream commit c52ff36686a408fd5196452380e359120c2d1ed5 ]
This patch enable i40e outer vlan strip on and off in QinQ
mode with mask bit of DEV_RX_OFFLOAD_QINQ_STRIP, users can
use "vlan set qinq_strip on 0" to enable or "vlan set
qinq_strip off 0" to disable i40e outer vlan strip when
try with testpmd app.
Fixes: 4861cde46116 ("i40e: new poll mode driver")
Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
Reviewed-by: Qiming Yang <qiming.yang at intel.com>
---
drivers/net/i40e/i40e_ethdev.c | 45 +++++++++++++++++++++++++++++++++-
1 file changed, 44 insertions(+), 1 deletion(-)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 5081cab4f..144758ef8 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -47,6 +47,8 @@
#define ETH_I40E_VF_MSG_CFG "vf_msg_cfg"
#define I40E_CLEAR_PXE_WAIT_MS 200
+#define I40E_VSI_TSR_QINQ_STRIP 0x4010
+#define I40E_VSI_TSR(_i) (0x00050800 + ((_i) * 4))
/* Maximun number of capability elements */
#define I40E_MAX_CAP_ELE_NUM 128
@@ -3864,6 +3866,39 @@ i40e_vlan_tpid_set(struct rte_eth_dev *dev,
return ret;
}
+/* Configure outer vlan stripping on or off in QinQ mode */
+static int
+i40e_vsi_config_outer_vlan_stripping(struct i40e_vsi *vsi, bool on)
+{
+ struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
+ int ret = I40E_SUCCESS;
+ uint32_t reg;
+
+ if (vsi->vsi_id >= I40E_MAX_NUM_VSIS) {
+ PMD_DRV_LOG(ERR, "VSI ID exceeds the maximum");
+ return -EINVAL;
+ }
+
+ /* Configure for outer VLAN RX stripping */
+ reg = I40E_READ_REG(hw, I40E_VSI_TSR(vsi->vsi_id));
+
+ if (on)
+ reg |= I40E_VSI_TSR_QINQ_STRIP;
+ else
+ reg &= ~I40E_VSI_TSR_QINQ_STRIP;
+
+ ret = i40e_aq_debug_write_register(hw,
+ I40E_VSI_TSR(vsi->vsi_id),
+ reg, NULL);
+ if (ret < 0) {
+ PMD_DRV_LOG(ERR, "Failed to update VSI_TSR[%d]",
+ vsi->vsi_id);
+ return I40E_ERR_CONFIG;
+ }
+
+ return ret;
+}
+
static int
i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask)
{
@@ -3900,6 +3935,14 @@ i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask)
i40e_vsi_config_double_vlan(vsi, FALSE);
}
+ if (mask & ETH_QINQ_STRIP_MASK) {
+ /* Enable or disable outer VLAN stripping */
+ if (rxmode->offloads & DEV_RX_OFFLOAD_QINQ_STRIP)
+ i40e_vsi_config_outer_vlan_stripping(vsi, TRUE);
+ else
+ i40e_vsi_config_outer_vlan_stripping(vsi, FALSE);
+ }
+
return 0;
}
@@ -6078,6 +6121,7 @@ i40e_dev_init_vlan(struct rte_eth_dev *dev)
/* Apply vlan offload setting */
mask = ETH_VLAN_STRIP_MASK |
+ ETH_QINQ_STRIP_MASK |
ETH_VLAN_FILTER_MASK |
ETH_VLAN_EXTEND_MASK;
ret = i40e_vlan_offload_set(dev, mask);
@@ -10479,7 +10523,6 @@ i40e_configure_registers(struct i40e_hw *hw)
}
}
-#define I40E_VSI_TSR(_i) (0x00050800 + ((_i) * 4))
#define I40E_VSI_TSR_QINQ_CONFIG 0xc030
#define I40E_VSI_L2TAGSTXVALID(_i) (0x00042800 + ((_i) * 4))
#define I40E_VSI_L2TAGSTXVALID_QINQ 0xab
--
2.20.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2020-08-06 10:53:16.739049155 +0100
+++ 0024-net-i40e-enable-QinQ-stripping.patch 2020-08-06 10:53:15.808597560 +0100
@@ -1,8 +1,10 @@
-From c52ff36686a408fd5196452380e359120c2d1ed5 Mon Sep 17 00:00:00 2001
+From 628f34b05e58aa1a9e1fe24e4fac5a7f470d2ed7 Mon Sep 17 00:00:00 2001
From: Wei Zhao <wei.zhao1 at intel.com>
Date: Fri, 24 Jul 2020 15:01:37 +0800
Subject: [PATCH] net/i40e: enable QinQ stripping
+[ upstream commit c52ff36686a408fd5196452380e359120c2d1ed5 ]
+
This patch enable i40e outer vlan strip on and off in QinQ
mode with mask bit of DEV_RX_OFFLOAD_QINQ_STRIP, users can
use "vlan set qinq_strip on 0" to enable or "vlan set
@@ -10,7 +12,6 @@
try with testpmd app.
Fixes: 4861cde46116 ("i40e: new poll mode driver")
-Cc: stable at dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
Reviewed-by: Qiming Yang <qiming.yang at intel.com>
@@ -19,10 +20,10 @@
1 file changed, 44 insertions(+), 1 deletion(-)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
-index 6bcce3386..88f4fe353 100644
+index 5081cab4f..144758ef8 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
-@@ -48,6 +48,8 @@
+@@ -47,6 +47,8 @@
#define ETH_I40E_VF_MSG_CFG "vf_msg_cfg"
#define I40E_CLEAR_PXE_WAIT_MS 200
@@ -31,7 +32,7 @@
/* Maximun number of capability elements */
#define I40E_MAX_CAP_ELE_NUM 128
-@@ -3979,6 +3981,39 @@ i40e_vlan_tpid_set(struct rte_eth_dev *dev,
+@@ -3864,6 +3866,39 @@ i40e_vlan_tpid_set(struct rte_eth_dev *dev,
return ret;
}
@@ -71,7 +72,7 @@
static int
i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask)
{
-@@ -4015,6 +4050,14 @@ i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask)
+@@ -3900,6 +3935,14 @@ i40e_vlan_offload_set(struct rte_eth_dev *dev, int mask)
i40e_vsi_config_double_vlan(vsi, FALSE);
}
@@ -86,7 +87,7 @@
return 0;
}
-@@ -6193,6 +6236,7 @@ i40e_dev_init_vlan(struct rte_eth_dev *dev)
+@@ -6078,6 +6121,7 @@ i40e_dev_init_vlan(struct rte_eth_dev *dev)
/* Apply vlan offload setting */
mask = ETH_VLAN_STRIP_MASK |
@@ -94,7 +95,7 @@
ETH_VLAN_FILTER_MASK |
ETH_VLAN_EXTEND_MASK;
ret = i40e_vlan_offload_set(dev, mask);
-@@ -10874,7 +10918,6 @@ i40e_configure_registers(struct i40e_hw *hw)
+@@ -10479,7 +10523,6 @@ i40e_configure_registers(struct i40e_hw *hw)
}
}
More information about the stable
mailing list