... > diff --git a/lib/librte_gso/rte_gso.c b/lib/librte_gso/rte_gso.c > index 896350e..fb76a21 100644 > --- a/lib/librte_gso/rte_gso.c > +++ b/lib/librte_gso/rte_gso.c > @@ -11,6 +11,7 @@ > #include "gso_common.h" > #include "gso_tcp4.h" > #include "gso_tunnel_tcp4.h" > +#include "gso_tunnel_udp4.h" > #include "gso_udp4.h" > > #define ILLEGAL_UDP_GSO_CTX(ctx) \ > @@ -60,6 +61,13 @@ > ret = gso_tunnel_tcp4_segment(pkt, gso_size, ipid_delta, > direct_pool, indirect_pool, > pkts_out, nb_pkts_out); > + } else if (IS_IPV4_VXLAN_UDP4(pkt->ol_flags) && > + (gso_ctx->gso_types & (DEV_TX_OFFLOAD_VXLAN_TNL_TSO | > + DEV_TX_OFFLOAD_UDP_TSO))) {
That check would succeed even if DEV_TX_OFFLOAD_VXLAN_TNL_TSO flag is not set. Is it supposed to be like that? > + pkt->ol_flags &= (~PKT_TX_UDP_SEG); > + ret = gso_tunnel_udp4_segment(pkt, gso_size, > + direct_pool, indirect_pool, > + pkts_out, nb_pkts_out); > } else if (IS_IPV4_TCP(pkt->ol_flags) && > (gso_ctx->gso_types & DEV_TX_OFFLOAD_TCP_TSO)) { > pkt->ol_flags &= (~PKT_TX_TCP_SEG); > -- > 1.8.3.1