From: Jie Liu <[email protected]>

Set rte_eth_tx_pkt_prepare_dummy for the simple and vectorized Tx paths
instead of leaving the prepare callback unset, and split the NEON
simple/offload mode selection based on the offload flag. Log the selected
Tx/Rx mode flags and apply the default Rx free threshold when the
configured value is zero.

Fixes: ac60f302cb ("net/sxe2: add vectorized Rx and Tx")
Cc: [email protected]
Cc: [email protected]

Signed-off-by: Jie Liu <[email protected]>
---
 drivers/net/sxe2/sxe2_rx.c   |  3 ++-
 drivers/net/sxe2/sxe2_txrx.c | 19 +++++++++++++------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/net/sxe2/sxe2_rx.c b/drivers/net/sxe2/sxe2_rx.c
index d700c60083..3830c676d7 100644
--- a/drivers/net/sxe2/sxe2_rx.c
+++ b/drivers/net/sxe2/sxe2_rx.c
@@ -319,7 +319,8 @@ int32_t __rte_cold sxe2_rx_queue_setup(struct rte_eth_dev 
*dev,
                rxq->mb_pool = mp;
        }
 
-       rxq->rx_free_thresh = rx_conf->rx_free_thresh;
+       rxq->rx_free_thresh = (rx_conf->rx_free_thresh == 0) ?
+               SXE2_DEFAULT_RX_FREE_THRESH : rx_conf->rx_free_thresh;
        rxq->port_id = dev->data->port_id;
        rxq->offloads = offloads;
        if (offloads & RTE_ETH_RX_OFFLOAD_KEEP_CRC)
diff --git a/drivers/net/sxe2/sxe2_txrx.c b/drivers/net/sxe2/sxe2_txrx.c
index 79870866d1..d27d2ce630 100644
--- a/drivers/net/sxe2/sxe2_txrx.c
+++ b/drivers/net/sxe2/sxe2_txrx.c
@@ -358,7 +358,7 @@ void sxe2_tx_mode_func_set(struct rte_eth_dev *dev)
        }
 
        if (tx_mode_flags & SXE2_TX_MODE_VEC_SET_MASK) {
-               dev->tx_pkt_prepare = NULL;
+               dev->tx_pkt_prepare = rte_eth_tx_pkt_prepare_dummy;
 #ifdef RTE_ARCH_X86
                if (tx_mode_flags & SXE2_TX_MODE_VEC_AVX512) {
 #ifdef CC_AVX512_SUPPORT
@@ -386,21 +386,25 @@ void sxe2_tx_mode_func_set(struct rte_eth_dev *dev)
                }
 #elif defined(RTE_ARCH_ARM64)
                if (tx_mode_flags & SXE2_TX_MODE_VEC_NEON) {
-                       dev->tx_pkt_prepare = sxe2_tx_pkts_prepare;
-                       dev->tx_pkt_burst = sxe2_tx_pkts_vec_neon;
-               } else {
-                       dev->tx_pkt_burst = sxe2_tx_pkts_vec_neon_simple;
+                       if (tx_mode_flags & SXE2_TX_MODE_VEC_OFFLOAD) {
+                               dev->tx_pkt_prepare = sxe2_tx_pkts_prepare;
+                               dev->tx_pkt_burst = sxe2_tx_pkts_vec_neon;
+                       } else {
+                               dev->tx_pkt_burst = 
sxe2_tx_pkts_vec_neon_simple;
+                       }
                }
 #endif
        } else {
                if (tx_mode_flags & SXE2_TX_MODE_SIMPLE_BATCH) {
-                       dev->tx_pkt_prepare = NULL;
+                       dev->tx_pkt_prepare = rte_eth_tx_pkt_prepare_dummy;
                        dev->tx_pkt_burst = sxe2_tx_pkts_simple;
                } else {
                        dev->tx_pkt_prepare = sxe2_tx_pkts_prepare;
                        dev->tx_pkt_burst = sxe2_tx_pkts;
                }
        }
+       PMD_LOG_DEBUG(TX, "Tx mode flags:0x%016x port_id:%u.",
+                               tx_mode_flags, dev->data->port_id);
 }
 
 static const struct {
@@ -582,6 +586,9 @@ void sxe2_rx_mode_func_set(struct rte_eth_dev *dev)
                dev->rx_pkt_burst = sxe2_rx_pkts_scattered_split;
        else
                dev->rx_pkt_burst = sxe2_rx_pkts_scattered;
+
+       PMD_LOG_DEBUG(RX, "Rx mode flags:0x%016x port_id:%u.",
+                               rx_mode_flags, dev->data->port_id);
 }
 
 static const struct {
-- 
2.52.0

Reply via email to