Skip to contentSkip to conversation

net/tap: wrong ptype leads to checksum failure

DPDK/other Bug 1941 [email protected] 1 participant 1 message Apr 30

lore
Share & tools
lore
#0 lore raw

http://bugs.dpdk.org/show_bug.cgi?id=1941

            Bug ID: 1941
           Summary: net/tap: wrong ptype leads to checksum failure
           Product: DPDK
           Version: 26.03
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: other
          Assignee: [email protected]
          Reporter: [email protected]

Target Milestone: ---

Adding bugzilla for issue reported by Robin in [0], so we can link in release notes:

Since commit 1f250674085a ("net: fix packet type for stacked VLAN"), rte_net_get_ptype() uses |= to set the L2 ptype inside the VLAN parsing loop. Since pkt_type is already initialized with RTE_PTYPE_L2_ETHER (0x1), or-ing it with RTE_PTYPE_L2_ETHER_VLAN (0x6) results in RTE_PTYPE_L2_ETHER_QINQ (0x7). This causes single VLAN frames to be misidentified as QinQ.

This was detected while testing DPDK 25.11.1 in grout. The net/tap driver calls rte_net_get_ptype() in tap_verify_csum() to determine the L2 header length. With the wrong ptype, l2_len is set to 22 (ether + QinQ = 14 + 8) instead of 18 (ether + VLAN = 14 + 4), shifting the IP header pointer by 4 bytes. The checksum is then computed on garbage data, causing valid packets to be dropped.

[0] https://mails.dpdk.org/archives/dev/2026-April/336248.html

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.