net/ice: fix Tx queue vector setup

If vector mode is not allowed for Tx, no need to perform vector
related setup for Tx queue.

The patch deferred vector setup for Tx queue to the place that
vector mode is confirmed to be allowed.

Fixes: 28f9002ab6 ("net/ice: add Tx AVX512 offload path")

Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
Alvin Zhang 2021-05-08 11:11:28 +08:00 committed by Qi Zhang
parent 35f9cb0065
commit 34ca5367d7

View File

@ -3303,13 +3303,6 @@ ice_set_tx_function(struct rte_eth_dev *dev)
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 @@ ice_set_tx_function(struct rte_eth_dev *dev)
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;
}