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]>

