From: Thomas Monjalon <thomas@monjalon.net>
To: Gregory Etelson <getelson@nvidia.com>
Cc: stephen@networkplumber.org, dev@dpdk.org,
didier.pallard@6wind.com, getelson@nvidia.com,
mkashani@nvidia.com, olivier.matz@6wind.com, rasland@nvidia.com,
stable@dpdk.org
Subject: Re: [PATCH v2] net: fix parsing of frames with arbitrary VLAN stacks
Date: Wed, 21 Jan 2026 14:53:31 +0100 [thread overview]
Message-ID: <3188990.CbtlEUcBR6@thomas> (raw)
In-Reply-To: <20260115131456.554948-1-getelson@nvidia.com>
15/01/2026 14:14, Gregory Etelson:
> The rte_net_get_ptype() supported only 2 types of VLAN headers frames
> that are defined in the IEEE standards 802.1Q and 802.1ad:
>
> frames with a single 0x8100 VLAN header:
> eth type VLAN / vlan / [IPv4 | IPv6 ]
>
> frames with 0x88A8 QinQ header followed by 0x8100 VLAN:
> eth type QinQ / vlan type VLAN / vlan / [IPv4 | IPv6 ]
>
> The function did not parse frames where VLAN headers were stacked in
> different configurations.
> Such frames should also be allowed to provide HW vendor flexibility.
> As a result, ptype bitmask and header length returned from
> rte_net_get_ptype() for a custom VLAN frame were wrong.
>
> For example, the parser result for the frame
> eth type QinQ / vlan type QinQ / vlan type VLAN / vlan / ipv4
> was:
> pkt_type:=0x120007
> RTE_PTYPE_L2_ETHER_QINQ 0x00000007 OK
> RTE_PTYPE_INNER_L2_ETHER_VLAN 0x00020000 wrong
> RTE_PTYPE_INNER_L3_IPV4 0x00100000 wrong
>
> hdr_lens:={
> l2_len = 22 wrong
> inner_l2_len = 4 wrong
> l3_len = 0 wrong
> inner_l3_len = 20 wrong
> }
>
> The patch changes:
> 1. Allow frames with up to RTE_NET_VLAN_MAX_DEPTH:=8
> number of VLAN headers.
>
> 2. Set each parsed VLAN type in the returned ptype bitmask.
> Multiple VLAN headers are referenced by a single
> RTE_PTYPE_L2_ETHER_VLAN bit.
> Multiple QinQ headers are references by a single
> RTE_PTYPE_L2_ETHER_QINQ bit.
>
> 3. Preserve RTE_PTYPE_L2_ETHER bit if VLAN or QinQ type was detected.
>
> Fixes: eb173c8def0a ("net: support VLAN in software packet type parser")
> Fixes: 218a163efd67 ("net: support QinQ in software packet type parser")
>
> Cc: stable@dpdk.org
>
> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
There's no ack, probably because the parsing code looks complex.
v1 was sent in November with a review helped by AI.
v2 solves the only issue found.
So it's time to merge.
Applied, thanks.
prev parent reply other threads:[~2026-01-21 13:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-03 15:41 [PATCH] net: fix parsing of frames with arbitrary VLAN stacks Gregory Etelson
2026-01-14 19:33 ` Stephen Hemminger
2026-01-15 13:14 ` [PATCH v2] " Gregory Etelson
2026-01-21 13:53 ` Thomas Monjalon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3188990.CbtlEUcBR6@thomas \
--to=thomas@monjalon.net \
--cc=dev@dpdk.org \
--cc=didier.pallard@6wind.com \
--cc=getelson@nvidia.com \
--cc=mkashani@nvidia.com \
--cc=olivier.matz@6wind.com \
--cc=rasland@nvidia.com \
--cc=stable@dpdk.org \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.