Currently, when dealing with UDP tunnel pkts checksum offloading, the outer-udp checksum will be offloaded by default. So the 'csum set outer-udp hw/sw' command does not work.
This patch fixes judgment of the EIPT flag and enables the 'csum set outer-udp hw/sw' command by adding judgment for the outer-udp checksum offload flag. Fixes: 0c550022fb82 ("net/iavf: fix Tx descriptors for IPsec") Signed-off-by: Zhichao Zeng <zhichaox.z...@intel.com> --- drivers/net/iavf/iavf_rxtx.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index cf87a6beda..8d49967538 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -2453,8 +2453,11 @@ iavf_fill_ctx_desc_tunnelling_field(volatile uint64_t *qw0, * Calculate the tunneling UDP checksum. * Shall be set only if L4TUNT = 01b and EIPT is not zero */ - if (!(eip_typ & IAVF_TX_CTX_EXT_IP_NONE) && - (eip_typ & IAVF_TXD_CTX_UDP_TUNNELING)) + if ((eip_typ & (IAVF_TX_CTX_EXT_IP_IPV6 | + IAVF_TX_CTX_EXT_IP_IPV4 | + IAVF_TX_CTX_EXT_IP_IPV4_NO_CSUM)) && + (eip_typ & IAVF_TXD_CTX_UDP_TUNNELING) && + (m->ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM)) eip_typ |= IAVF_TXD_CTX_QW0_L4T_CS_MASK; } -- 2.25.1