Testpmd forwards packets in checksum mode that it need to calculate the checksum of each layer's protocol. Then it will fill flags and header length into mbuf.
In process_outer_cksums, HW calculates the outer checksum if tx_offloads contains outer UDP checksum otherwise SW calculates the outer checksum. When tx_offloads contains outer UDP checksum or outer IPv4 checksum, mbuf will be filled with correct header length. This patch added outer UDP checksum in tx_offload_capa and I40E_TX_OFFLOAD_MASK, when we set csum hw outer-udp on that the engine can forward outer IPv6 VXLAN packets. Fixes: 399421100e08 ("net/i40e: fix missing mbuf fast free offload") Cc: stat...@dpdk.org Signed-off-by: Jie Wang <jie1x.w...@intel.com> --- drivers/net/i40e/i40e_ethdev.c | 1 + drivers/net/i40e/i40e_rxtx.c | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 62e374d19e..faf6391350 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -3746,6 +3746,7 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO | RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO | RTE_ETH_TX_OFFLOAD_MULTI_SEGS | + RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM | dev_info->tx_queue_offload_capa; dev_info->dev_capa = RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP | diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index 6ccb598677..41fe3bf481 100644 --- a/drivers/net/i40e/i40e_rxtx.c +++ b/drivers/net/i40e/i40e_rxtx.c @@ -65,6 +65,7 @@ RTE_MBUF_F_TX_QINQ | \ RTE_MBUF_F_TX_VLAN | \ RTE_MBUF_F_TX_TUNNEL_MASK | \ + RTE_MBUF_F_TX_OUTER_UDP_CKSUM | \ I40E_TX_IEEE1588_TMST) #define I40E_TX_OFFLOAD_NOTSUP_MASK \ -- 2.25.1