[dpdk-stable] [PATCH 1/4] net/txgbe: fix RSS in double VALN
Jiawen Wu
jiawenwu at trustnetic.com
Sun Apr 25 10:03:44 CEST 2021
Regard QINQ as one case of extend VLAN, and always enable QINQ mode when
double VLAN is set, to avoid RSS does not work for QINQ packets.
Fixes: 220b0e49bc47 ("net/txgbe: support VLAN")
Cc: stable at dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu at trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 97796f040b..87c041c2ec 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -1217,17 +1217,12 @@ static void
txgbe_vlan_hw_extend_enable(struct rte_eth_dev *dev)
{
struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
- struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;
- struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode;
uint32_t ctrl;
PMD_INIT_FUNC_TRACE();
ctrl = rd32(hw, TXGBE_PORTCTL);
- ctrl |= TXGBE_PORTCTL_VLANEXT;
- if (rxmode->offloads & DEV_RX_OFFLOAD_QINQ_STRIP ||
- txmode->offloads & DEV_TX_OFFLOAD_QINQ_INSERT)
- ctrl |= TXGBE_PORTCTL_QINQ;
+ ctrl |= TXGBE_PORTCTL_VLANEXT | TXGBE_PORTCTL_QINQ;
wr32(hw, TXGBE_PORTCTL, ctrl);
}
@@ -1287,8 +1282,9 @@ txgbe_vlan_offload_config(struct rte_eth_dev *dev, int mask)
txgbe_vlan_hw_filter_disable(dev);
}
- if (mask & ETH_VLAN_EXTEND_MASK) {
- if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_EXTEND)
+ if (mask & (ETH_VLAN_EXTEND_MASK | ETH_QINQ_STRIP_MASK)) {
+ if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_EXTEND ||
+ rxmode->offloads & DEV_RX_OFFLOAD_QINQ_STRIP)
txgbe_vlan_hw_extend_enable(dev);
else
txgbe_vlan_hw_extend_disable(dev);
--
2.21.0.windows.1
More information about the stable
mailing list