In some cases, it seems that the txq mbuf vector release mode
is enabled first, and then it is confirmed that the conditions
for using the vector mode are not met.

This patch puts the txq vector mode startup process after the
condition detection.

Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
Cc: sta...@dpdk.org

Signed-off-by: Alvin Zhang <alvinx.zh...@intel.com>
---
 drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
index 92fbbc1..49abcb2 100644
--- a/drivers/net/ice/ice_rxtx.c
+++ b/drivers/net/ice/ice_rxtx.c
@@ -3303,13 +3303,6 @@
                if (tx_check_ret >= 0 &&
                    rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
                        ad->tx_vec_allowed = true;
-                       for (i = 0; i < dev->data->nb_tx_queues; i++) {
-                               txq = dev->data->tx_queues[i];
-                               if (txq && ice_txq_vec_setup(txq)) {
-                                       ad->tx_vec_allowed = false;
-                                       break;
-                               }
-                       }
 
                        if (rte_vect_get_max_simd_bitwidth() >= 
RTE_VECT_SIMD_512 &&
                        rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
@@ -3329,6 +3322,15 @@
                        if (!use_avx512 && tx_check_ret == 
ICE_VECTOR_OFFLOAD_PATH)
                                ad->tx_vec_allowed = false;
 
+                       if (ad->tx_vec_allowed) {
+                               for (i = 0; i < dev->data->nb_tx_queues; i++) {
+                                       txq = dev->data->tx_queues[i];
+                                       if (txq && ice_txq_vec_setup(txq)) {
+                                               ad->tx_vec_allowed = false;
+                                               break;
+                                       }
+                               }
+                       }
                } else {
                        ad->tx_vec_allowed = false;
                }
-- 
1.8.3.1

Reply via email to