Since iavf and ice drivers now have common Tx vector paths, we can
consolidate the path decisions a little, including replacing the
per-driver offload flags with common ones.

Signed-off-by: Bruce Richardson <[email protected]>
---
 drivers/net/intel/common/tx.h                 | 30 +++++++++++++++++++
 drivers/net/intel/iavf/iavf_rxtx.c            | 18 +++++------
 drivers/net/intel/iavf/iavf_rxtx.h            | 19 ------------
 drivers/net/intel/iavf/iavf_rxtx_vec_common.h |  3 +-
 drivers/net/intel/ice/ice_rxtx.c              | 14 ++++-----
 drivers/net/intel/ice/ice_rxtx.h              | 18 -----------
 drivers/net/intel/ice/ice_rxtx_vec_common.h   |  3 +-
 7 files changed, 48 insertions(+), 57 deletions(-)

diff --git a/drivers/net/intel/common/tx.h b/drivers/net/intel/common/tx.h
index 0f36989b32..867892f306 100644
--- a/drivers/net/intel/common/tx.h
+++ b/drivers/net/intel/common/tx.h
@@ -12,6 +12,27 @@
 #include <rte_io.h>
 #include <rte_byteorder.h>
 
+#define CI_VPMD_TX_BURST            32
+#define CI_VPMD_TX_MAX_FREE_BUF     64
+
+/* basic vector path */
+#define CI_TX_VECTOR_OFFLOADS RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE
+/* offload vector path */
+#define CI_TX_VEC_OFFLOAD_PATH_OFFLOADS (      \
+               CI_TX_VECTOR_OFFLOADS |         \
+               RTE_ETH_TX_OFFLOAD_VLAN_INSERT |        \
+               RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |         \
+               RTE_ETH_TX_OFFLOAD_SCTP_CKSUM |         \
+               RTE_ETH_TX_OFFLOAD_UDP_CKSUM |          \
+               RTE_ETH_TX_OFFLOAD_TCP_CKSUM)
+/* offload vector path with context descriptor */
+#define CI_TX_VEC_CTX_OFFLOAD_PATH_OFFLOADS (  \
+               CI_TX_VECTOR_OFFLOADS |         \
+               CI_TX_VEC_OFFLOAD_PATH_OFFLOADS |       \
+               RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM |   \
+               RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM |    \
+               RTE_ETH_TX_OFFLOAD_QINQ_INSERT)
+
 /* Common TX Descriptor QW1 Field Definitions */
 #define CI_TXD_QW1_DTYPE_S      0
 #define CI_TXD_QW1_DTYPE_M      (0xFUL << CI_TXD_QW1_DTYPE_S)
@@ -261,6 +282,15 @@ struct ci_tx_path_info {
        bool supports_ctx;
 };
 
+/* basic check for a vector-driver capable Tx queue.
+ * Individual drivers may have other further tests beyond this.
+ */
+static inline bool
+ci_txq_vec_capable(uint16_t tx_rs_thresh)
+{
+       return tx_rs_thresh >= CI_VPMD_TX_BURST && tx_rs_thresh <= 
CI_VPMD_TX_MAX_FREE_BUF;
+}
+
 static __rte_always_inline void
 ci_tx_backlog_entry(struct ci_tx_entry *txep, struct rte_mbuf **tx_pkts, 
uint16_t nb_pkts)
 {
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c 
b/drivers/net/intel/iavf/iavf_rxtx.c
index 3be8b00bbd..9b776a6391 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -3620,7 +3620,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx2,
                .info = "Vector AVX2",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                }
        },
@@ -3628,7 +3628,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx2_offload,
                .info = "Vector AVX2 Offload",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                }
        },
@@ -3636,7 +3636,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx2_ctx,
                .info = "Vector AVX2 Ctx",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                },
                .supports_ctx = true
@@ -3645,7 +3645,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx2_ctx_offload,
                .info = "Vector AVX2 Ctx Offload",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_CTX_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_CTX_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                },
                .supports_ctx = true
@@ -3655,7 +3655,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx512,
                .info = "Vector AVX512",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                }
        },
@@ -3663,7 +3663,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx512_offload,
                .info = "Vector AVX512 Offload",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                }
        },
@@ -3671,7 +3671,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx512_ctx,
                .info = "Vector AVX512 Ctx",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                },
                .supports_ctx = true
@@ -3680,7 +3680,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec_avx512_ctx_offload,
                .info = "Vector AVX512 Ctx Offload",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_CTX_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_CTX_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                },
                .supports_ctx = true
@@ -3691,7 +3691,7 @@ static const struct ci_tx_path_info iavf_tx_path_infos[] 
= {
                .pkt_burst = iavf_xmit_pkts_vec,
                .info = "Vector Neon",
                .features = {
-                       .tx_offloads = IAVF_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_128
                }
        },
diff --git a/drivers/net/intel/iavf/iavf_rxtx.h 
b/drivers/net/intel/iavf/iavf_rxtx.h
index 19931f5f7c..812d7e23ee 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.h
+++ b/drivers/net/intel/iavf/iavf_rxtx.h
@@ -29,11 +29,9 @@
 
 /* used for Vector PMD */
 #define IAVF_VPMD_RX_BURST             CI_VPMD_RX_BURST
-#define IAVF_VPMD_TX_BURST             32
 #define IAVF_VPMD_RXQ_REARM_THRESH     CI_VPMD_RX_REARM_THRESH
 #define IAVF_VPMD_DESCS_PER_LOOP       CI_VPMD_DESCS_PER_LOOP
 #define IAVF_VPMD_DESCS_PER_LOOP_WIDE  CI_VPMD_DESCS_PER_LOOP_WIDE
-#define IAVF_VPMD_TX_MAX_FREE_BUF      64
 
 /* basic scalar path */
 #define IAVF_TX_SCALAR_OFFLOADS (                      \
@@ -54,23 +52,6 @@
                RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE |     \
                RTE_ETH_TX_OFFLOAD_SECURITY |           \
                RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM)
-/* basic vector path */
-#define IAVF_TX_VECTOR_OFFLOADS RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE
-/* offload vector path */
-#define IAVF_TX_VECTOR_OFFLOAD_OFFLOADS (              \
-               IAVF_TX_VECTOR_OFFLOADS |               \
-               RTE_ETH_TX_OFFLOAD_VLAN_INSERT |        \
-               RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |         \
-               RTE_ETH_TX_OFFLOAD_SCTP_CKSUM |         \
-               RTE_ETH_TX_OFFLOAD_UDP_CKSUM |          \
-               RTE_ETH_TX_OFFLOAD_TCP_CKSUM)
-/* offload vector path with context descriptor */
-#define IAVF_TX_VECTOR_CTX_OFFLOAD_OFFLOADS (          \
-               IAVF_TX_VECTOR_OFFLOADS |               \
-               IAVF_TX_VECTOR_OFFLOAD_OFFLOADS |       \
-               RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM |   \
-               RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM |    \
-               RTE_ETH_TX_OFFLOAD_QINQ_INSERT)
 
 /* basic scalar path */
 #define IAVF_RX_SCALAR_OFFLOADS (                      \
diff --git a/drivers/net/intel/iavf/iavf_rxtx_vec_common.h 
b/drivers/net/intel/iavf/iavf_rxtx_vec_common.h
index 61478036ec..e0a67fedc6 100644
--- a/drivers/net/intel/iavf/iavf_rxtx_vec_common.h
+++ b/drivers/net/intel/iavf/iavf_rxtx_vec_common.h
@@ -80,8 +80,7 @@ iavf_tx_vec_queue_default(struct ci_tx_queue *txq)
        if (!txq)
                return -1;
 
-       if (txq->tx_rs_thresh < IAVF_VPMD_TX_BURST ||
-           txq->tx_rs_thresh > IAVF_VPMD_TX_MAX_FREE_BUF)
+       if (!ci_txq_vec_capable(txq->tx_rs_thresh))
                return -1;
 
        return 0;
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index 50cacadc44..2db1fe16bf 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -3551,7 +3551,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec_avx2,
                .info = "Vector AVX2",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                },
                .pkt_prep = rte_eth_tx_pkt_prepare_dummy
@@ -3560,7 +3560,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec_avx2_offload,
                .info = "Offload Vector AVX2",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                },
                .pkt_prep = ice_prep_pkts
@@ -3569,7 +3569,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec_avx2_ctx_offload,
                .info = "Offload Vector AVX2 Ctx",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_CTX_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_CTX_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_256
                },
                .pkt_prep = ice_prep_pkts,
@@ -3580,7 +3580,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec_avx512,
                .info = "Vector AVX512",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                },
                .pkt_prep = rte_eth_tx_pkt_prepare_dummy
@@ -3589,7 +3589,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec_avx512_offload,
                .info = "Offload Vector AVX512",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                },
                .pkt_prep = ice_prep_pkts
@@ -3598,7 +3598,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec_avx512_ctx_offload,
                .info = "Offload Vector AVX512 Ctx",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_CTX_OFFLOAD_OFFLOADS,
+                       .tx_offloads = CI_TX_VEC_CTX_OFFLOAD_PATH_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_512
                },
                .pkt_prep = ice_prep_pkts,
@@ -3610,7 +3610,7 @@ static const struct ci_tx_path_info ice_tx_path_infos[] = 
{
                .pkt_burst = ice_xmit_pkts_vec,
                .info = "Vector Neon",
                .features = {
-                       .tx_offloads = ICE_TX_VECTOR_OFFLOADS,
+                       .tx_offloads = CI_TX_VECTOR_OFFLOADS,
                        .simd_width = RTE_VECT_SIMD_128
                },
                .pkt_prep = rte_eth_tx_pkt_prepare_dummy
diff --git a/drivers/net/intel/ice/ice_rxtx.h b/drivers/net/intel/ice/ice_rxtx.h
index bee8a464f5..cd23f7c56f 100644
--- a/drivers/net/intel/ice/ice_rxtx.h
+++ b/drivers/net/intel/ice/ice_rxtx.h
@@ -47,9 +47,7 @@
 #define ICE_SUPPORT_CHAIN_NUM 5
 
 #define ICE_VPMD_RX_BURST            CI_VPMD_RX_BURST
-#define ICE_VPMD_TX_BURST            32
 #define ICE_VPMD_RXQ_REARM_THRESH    CI_VPMD_RX_REARM_THRESH
-#define ICE_TX_MAX_FREE_BUF_SZ       64
 #define ICE_VPMD_DESCS_PER_LOOP      CI_VPMD_DESCS_PER_LOOP
 #define ICE_VPMD_DESCS_PER_LOOP_WIDE CI_VPMD_DESCS_PER_LOOP_WIDE
 
@@ -125,22 +123,6 @@
        RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |       \
        RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |     \
        RTE_ETH_TX_OFFLOAD_SEND_ON_TIMESTAMP)
-/* basic vector path */
-#define ICE_TX_VECTOR_OFFLOADS RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE
-/* vector offload paths */
-#define ICE_TX_VECTOR_OFFLOAD_OFFLOADS (       \
-       ICE_TX_VECTOR_OFFLOADS |                \
-       RTE_ETH_TX_OFFLOAD_VLAN_INSERT |        \
-       RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |         \
-       RTE_ETH_TX_OFFLOAD_UDP_CKSUM |          \
-       RTE_ETH_TX_OFFLOAD_TCP_CKSUM |          \
-       RTE_ETH_TX_OFFLOAD_SCTP_CKSUM)
-/* vector ctx offload path: QinQ outer tag + outer/tunnel checksum via ctx 
desc */
-#define ICE_TX_VECTOR_CTX_OFFLOAD_OFFLOADS (   \
-       ICE_TX_VECTOR_OFFLOAD_OFFLOADS |        \
-       RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM |   \
-       RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM |    \
-       RTE_ETH_TX_OFFLOAD_QINQ_INSERT)
 
 /* Max header size can be 2K - 64 bytes */
 #define ICE_RX_HDR_BUF_SIZE    (2048 - 64)
diff --git a/drivers/net/intel/ice/ice_rxtx_vec_common.h 
b/drivers/net/intel/ice/ice_rxtx_vec_common.h
index 53d1eb42a3..d5ef213e08 100644
--- a/drivers/net/intel/ice/ice_rxtx_vec_common.h
+++ b/drivers/net/intel/ice/ice_rxtx_vec_common.h
@@ -72,8 +72,7 @@ ice_tx_vec_queue_default(struct ci_tx_queue *txq)
        if (!txq)
                return -1;
 
-       if (txq->tx_rs_thresh < ICE_VPMD_TX_BURST ||
-           txq->tx_rs_thresh > ICE_TX_MAX_FREE_BUF_SZ)
+       if (!ci_txq_vec_capable(txq->tx_rs_thresh))
                return -1;
 
        return 0;
-- 
2.53.0

Reply via email to