Thread (37 messages) 37 messages, 6 authors, 2026-06-02

Re: [PATCH dpdk v5 2/5] net: support multiple stacked VLAN tags

From: Kevin Traynor <hidden>
Date: 2026-05-21 13:38:18

On 5/20/26 1:42 PM, David Marchand wrote:
On Wed, 20 May 2026 at 13:09, Robin Jarry [off-list ref] wrote:
quoted
quoted
quoted
-       } else if (proto == rte_cpu_to_be_16(RTE_ETHER_TYPE_QINQ)) {
-               const struct rte_vlan_hdr *vh;
-               struct rte_vlan_hdr vh_copy;
+               if (proto == rte_cpu_to_be_16(RTE_ETHER_TYPE_VLAN))
+                       pkt_type = RTE_PTYPE_L2_ETHER_VLAN;
+               else
+                       pkt_type = RTE_PTYPE_L2_ETHER_QINQ;
+
+               do {
+                       vh = rte_pktmbuf_read(m, off, sizeof(*vh), &vh_copy);
+                       if (unlikely(vh == NULL))
+                               return pkt_type;
Kevin noted that it is weird to report back some packet type when the
packet is malformed.
Maybe return RTE_PTYPE_UNKNOWN here so that the application is forced
to validate the packet? (it should already be doing it, in any
case..).
If we do this, we need to fix it in the entire function. There are
several other places where the "current" value of pkt_type is returned
on error.
There is this point and the code has been behaving like this for
years, so some applications may have been relying on this behavior.
I don't mind leaving as is.
I can agree with Hyrum's law :-) https://xkcd.com/1172/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help