When AVX2 is forcibly selected and outer checksum
offload is configured, the basic Tx path will be
selected. Also, the txq mbuf release API is incorrectly
set to iavf_tx_queue_release_mbufs_sse. This causes
coredump.

This commit selects release_txq_mbufs to releasing
txq mbufs when selecting the basic Tx path.

Fixes: 22f1e7608ebc ("net/iavf: fix AVX2 Tx selection")
Cc: sta...@dpdk.org

Signed-off-by: Kaiwen Deng <kaiwenx.d...@intel.com>
---
 drivers/net/iavf/iavf_rxtx.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 45f638c1d2..f19aa14646 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -4018,11 +4018,9 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
                                PMD_DRV_LOG(DEBUG, "Using AVX2 Vector Tx (port 
%d).",
                                            dev->data->port_id);
                        } else if (check_ret == IAVF_VECTOR_CTX_OFFLOAD_PATH) {
-                               dev->tx_pkt_burst = iavf_xmit_pkts;
-                               dev->tx_pkt_prepare = iavf_prep_pkts;
                                PMD_DRV_LOG(DEBUG,
-                                       "AVX2 does not support outer checksum 
offload, using Basic Tx (port %d).",
-                                       dev->data->port_id);
+                                       "AVX2 does not support outer checksum 
offload.");
+                               goto normal;
                        } else {
                                dev->tx_pkt_burst = 
iavf_xmit_pkts_vec_avx2_offload;
                                dev->tx_pkt_prepare = iavf_prep_pkts;
-- 
2.34.1

Reply via email to