[RFC PATCH] doc: clarify VLAN and QinQ stripping behaviour

Dean Marx dmarx at iol.unh.edu
Thu Jul 17 23:03:13 CEST 2025


I've created a v1 of a QinQ test suite around the set of test cases
discussed earlier (which is not set in stone, and I expect it to
change significantly across many future versions.) The PASS/FAIL
values can be mostly disregarded in the context of this conversation,
but I've added logging to explain which packets are sent, and what
happened upon reception, which I hope will be more informative. After
running on mlx5/i40e drivers, I got the following results:

test_vlan_strip: QinQ strip OFF and VLAN strip ON
test_qinq_strip: QinQ strip ON and VLAN strip ON

i40e:
    test_qinq_strip (sent packet: Single VLAN): FAIL
      reason: VLAN tags found in packet when should have been
stripped: Ether / Dot1Q / 802.1q (0x1c) vlan 1280 / LLC / Raw /
Padding
    test_qinq_strip (sent packet: Stacked VLAN): FAIL
      reason: Expected one VLAN tag but found 2: Ether / Dot1Q / Dot1Q
/ 802.1q (0x1c) vlan 1280 / LLC / Raw / Padding
    test_qinq_strip (sent packet: Single S-VLAN): FAIL
      reason: VLAN tags found in packet when should have been
stripped: Ether / Dot1Q / 802.1q (??) vlan ?? / LLC / Raw / Padding
    test_qinq_strip (sent packet: QinQ): FAIL
      reason: VLAN tags found in packet when should have been
stripped: Ether / Dot1Q / Dot1AD / 802.1q (0x1c) vlan 1280 / LLC / Raw
/ Padding
    test_vlan_strip (sent packet: Single VLAN): PASS
      reason: VLAN tag stripped from packet
    test_vlan_strip (sent packet: Stacked VLAN): PASS
      reason: Received packet had outer VLAN stripped, with inner VLAN intact
    test_vlan_strip (sent packet: Single S-VLAN): PASS
      reason: S-VLAN tag stripped from packet
    test_vlan_strip (sent packet: QinQ): FAIL
      reason: Neither tag stripped

mlx5_core:
    test_qinq_strip: SKIP
      reason: Required capability
'{NicCapability.RX_OFFLOAD_QINQ_STRIP}' not found.
    test_vlan_strip (sent packet: Single VLAN): PASS
      reason: VLAN tags found in packet when should have been
stripped: Ether / 802.1q 24:8a:07:aa:83:ee > 0c:42:a1:54:25:86 (0x1c)
vlan 1280 / LLC / Raw / Padding
    test_vlan_strip (sent packet: Stacked VLAN): PASS
    test_vlan_strip (sent packet: Single S-VLAN): PASS
      reason: S-VLAN tag stripped from packet
    test_vlan_strip (sent packet: QinQ): FAIL
      reason: VLAN tag 0x8100 not found in packet: Ether / Dot1Q /
802.1q (??) vlan ?? / LLC / Raw / Padding

Hopefully this can give a clearer picture of the current QinQ/VLAN
strip behavior. If anyone wants to take a look at the suite I'll link
it here:

https://patchwork.dpdk.org/project/dpdk/patch/20250717205718.108826-2-dmarx@iol.unh.edu/


More information about the dev mailing list