When 2 VLANs are stripped from a packet, the iavf driver vector path
fails to handle them properly as it 'or's the two values together on the
assumption that only one is valid. Explicitly list the VLAN related
features supported by the vector path, rather than using the
"OFFLOAD_VLAN" group, thereby disabling advertising of QinQ stripping so
that a scalar path is used.

Fixes: 1e728b01120c ("net/iavf: rework Tx path")
Cc: [email protected]

Signed-off-by: Bruce Richardson <[email protected]>
---
 drivers/net/intel/iavf/iavf_rxtx.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/intel/iavf/iavf_rxtx.h 
b/drivers/net/intel/iavf/iavf_rxtx.h
index 6f53d5805a..3ff49b94b4 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.h
+++ b/drivers/net/intel/iavf/iavf_rxtx.h
@@ -105,7 +105,9 @@
                IAVF_RX_VECTOR_OFFLOADS |               \
                RTE_ETH_RX_OFFLOAD_CHECKSUM |           \
                RTE_ETH_RX_OFFLOAD_SCTP_CKSUM |         \
-               RTE_ETH_RX_OFFLOAD_VLAN |               \
+               RTE_ETH_RX_OFFLOAD_VLAN_STRIP |         \
+               RTE_ETH_RX_OFFLOAD_VLAN_FILTER |        \
+               RTE_ETH_RX_OFFLOAD_VLAN_EXTEND |        \
                RTE_ETH_RX_OFFLOAD_RSS_HASH)
 /* vector offload paths that use the flex rx desc */
 #define IAVF_RX_VECTOR_OFFLOAD_FLEX_OFFLOADS (         \
--
2.53.0

Reply via email to