On Wed, 20 May 2026 at 13:09, Robin Jarry <[email protected]> wrote:
> >> -       } 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.


-- 
David Marchand

Reply via email to