net/tap: wrong ptype leads to checksum failure
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.