> --- a/drivers/net/i40e/i40e_rxtx.c > +++ b/drivers/net/i40e/i40e_rxtx.c > @@ -801,6 +801,12 @@ i40e_txd_enable_checksum(uint64_t ol_flags, > union i40e_tx_offload tx_offload, > uint32_t *cd_tunneling) > { > + /* Tx pkts tunnel type*/ > + if ((ol_flags & PKT_TX_TUNNEL_MASK) == PKT_TX_TUNNEL_VXLAN) > + *cd_tunneling |= I40E_TXD_CTX_UDP_TUNNELING; > + else if ((ol_flags & PKT_TX_TUNNEL_MASK) == > PKT_TX_TUNNEL_GRE) > + *cd_tunneling |= I40E_TXD_CTX_GRE_TUNNELING; > + > /* UDP tunneling packet TX checksum offload */ > if (ol_flags & PKT_TX_OUTER_IP_CKSUM) { > Besides the tunnel type programming, please also check the L4TUNLEN in tunnel parameters.
> @@ -1510,7 +1516,8 @@ i40e_calc_context_desc(uint64_t flags) > > /* set i40e TSO context descriptor */ > static inline uint64_t > -i40e_set_tso_ctx(struct rte_mbuf *mbuf, union i40e_tx_offload tx_offload) > +i40e_set_tso_ctx(struct rte_mbuf *mbuf, > + union i40e_tx_offload tx_offload) > { > uint64_t ctx_desc = 0; > uint32_t cd_cmd, hdr_len, cd_tso_len; > @@ -1537,7 +1544,6 @@ i40e_set_tso_ctx(struct rte_mbuf *mbuf, union > i40e_tx_offload tx_offload) Please have a look at the calculation of tso length here. Only tunnel type added may not be enogh. > I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) | > ((uint64_t)mbuf->tso_segsz << > I40E_TXD_CTX_QW1_MSS_SHIFT); > - > return ctx_desc; > } > This patch contains changes on testpmd, driver and mbuf definition. It's better to split them and sent to the maintainers.