Hi Morten,

We hit the same issue while fuzzing lib/gro: with both
RTE_GRO_IPV4_VXLAN_TCP_IPV4 and RTE_GRO_IPV4_VXLAN_UDP_IPV4 enabled,
fragments of inner UDP in VXLAN match IS_IPV4_VXLAN_TCP4_PKT()
(RTE_PTYPE_INNER_L4_FRAG includes the RTE_PTYPE_INNER_L4_TCP bit),
are rejected by gro_vxlan_tcp4_reassemble(), and never reach the
VXLAN UDP path, so they are not merged.

With two fragments of one inner UDP datagram, packet_type taken from
rte_net_get_ptype(), rte_gro_reassemble_burst() returns:
- without the patch: 2 with both VXLAN types, 1 with VXLAN UDP only;
- with the patch: 1 in both cases.

Tested on 25.11.2 with a standalone program and our fuzzing corpus
for gro/gso, no regressions.

Tested-by: Andrey Mokrushin <[email protected]>

Reply via email to