Define common macros for use in iavf (for now) and other drivers
(future) defining the shifts needed for tunnel packet Tx

Signed-off-by: Bruce Richardson <[email protected]>
---
 drivers/net/intel/common/tx.h                 | 24 +++++++++++++
 drivers/net/intel/iavf/iavf_rxtx.c            | 30 ++++++++--------
 drivers/net/intel/iavf/iavf_rxtx.h            | 34 -------------------
 drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c   | 30 ++++++++--------
 drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c | 30 ++++++++--------
 5 files changed, 69 insertions(+), 79 deletions(-)

diff --git a/drivers/net/intel/common/tx.h b/drivers/net/intel/common/tx.h
index fb5268c972..c8fadee712 100644
--- a/drivers/net/intel/common/tx.h
+++ b/drivers/net/intel/common/tx.h
@@ -45,6 +45,30 @@
 #define CI_TX_CTX_DESC_TSYN             0x02
 #define CI_TX_CTX_DESC_IL2TAG2          0x04
 
+/* Common TX Context Descriptor QW0 Field Shifts */
+#define CI_TXD_CTX_QW0_L2TAG2_S         32
+#define CI_TXD_CTX_QW0_EIPT_S           0  /* 2 BITS - external IP type */
+#define CI_TXD_CTX_QW0_EIPLEN_S         2  /* 7 BITS - external IP header 
length */
+#define CI_TXD_CTX_QW0_NATT_S           9  /* 2 BITS - L4 tunnel type */
+#define CI_TXD_CTX_QW0_EIP_NOINC_S      11 /* 1 BIT  - external IP ID not 
incremented */
+#define CI_TXD_CTX_QW0_NATLEN_S         12 /* 7 BITS - L4 tunnel header length 
*/
+#define CI_TXD_CTX_QW0_L4T_CS_S         23 /* 1 BIT  - tunnel UDP checksum 
enable */
+
+/**
+ * Enum for the external (outer) IP type field of a Tx context descriptor's
+ * tunnel parameters (QW0 bits 0-1).
+ */
+enum ci_tx_ctx_eipt {
+       CI_TX_CTX_EIPT_NONE,
+       CI_TX_CTX_EIPT_IPV6,
+       CI_TX_CTX_EIPT_IPV4_NO_CSUM,
+       CI_TX_CTX_EIPT_IPV4,
+};
+
+#define CI_TXD_CTX_UDP_TUNNELING        (0x1ULL << CI_TXD_CTX_QW0_NATT_S)
+#define CI_TXD_CTX_GRE_TUNNELING        (0x2ULL << CI_TXD_CTX_QW0_NATT_S)
+#define CI_TXD_CTX_QW0_L4T_CS_M         (0x1ULL << CI_TXD_CTX_QW0_L4T_CS_S)
+
 /**
  * Enum to specify where a VLAN tag is to be placed for packet Tx.
  */
diff --git a/drivers/net/intel/iavf/iavf_rxtx.c 
b/drivers/net/intel/iavf/iavf_rxtx.c
index 80c9912ccc..849fc33dac 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.c
+++ b/drivers/net/intel/iavf/iavf_rxtx.c
@@ -2345,7 +2345,7 @@ iavf_calc_context_desc(const struct rte_mbuf *mb, uint8_t 
vlan_flag, bool lldp_e
 static inline void
 iavf_fill_ctx_desc_tunnelling_field(uint64_t *qw0, uint64_t ol_flags, const 
struct rte_mbuf *m)
 {
-       uint64_t eip_typ = IAVF_TX_CTX_DESC_EIPT_NONE;
+       uint64_t eip_typ = CI_TX_CTX_EIPT_NONE;
        uint64_t eip_len = 0;
        uint64_t eip_noinc = 0;
        /* Default - IP_ID is increment in each segment of LSO */
@@ -2354,15 +2354,15 @@ iavf_fill_ctx_desc_tunnelling_field(uint64_t *qw0, 
uint64_t ol_flags, const stru
                        RTE_MBUF_F_TX_OUTER_IPV6 |
                        RTE_MBUF_F_TX_OUTER_IP_CKSUM)) {
        case RTE_MBUF_F_TX_OUTER_IPV4:
-               eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV4_NO_CHECKSUM_OFFLOAD;
+               eip_typ = CI_TX_CTX_EIPT_IPV4_NO_CSUM;
                eip_len = m->outer_l3_len >> 2;
        break;
        case RTE_MBUF_F_TX_OUTER_IPV4 | RTE_MBUF_F_TX_OUTER_IP_CKSUM:
-               eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV4_CHECKSUM_OFFLOAD;
+               eip_typ = CI_TX_CTX_EIPT_IPV4;
                eip_len = m->outer_l3_len >> 2;
        break;
        case RTE_MBUF_F_TX_OUTER_IPV6:
-               eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV6;
+               eip_typ = CI_TX_CTX_EIPT_IPV6;
                eip_len = m->outer_l3_len >> 2;
        break;
        }
@@ -2377,10 +2377,10 @@ iavf_fill_ctx_desc_tunnelling_field(uint64_t *qw0, 
uint64_t ol_flags, const stru
                case RTE_MBUF_F_TX_TUNNEL_VXLAN_GPE:
                case RTE_MBUF_F_TX_TUNNEL_GTP:
                case RTE_MBUF_F_TX_TUNNEL_GENEVE:
-                       eip_typ |= IAVF_TXD_CTX_UDP_TUNNELING;
+                       eip_typ |= CI_TXD_CTX_UDP_TUNNELING;
                        break;
                case RTE_MBUF_F_TX_TUNNEL_GRE:
-                       eip_typ |= IAVF_TXD_CTX_GRE_TUNNELING;
+                       eip_typ |= CI_TXD_CTX_GRE_TUNNELING;
                        break;
                default:
                        PMD_TX_LOG(ERR, "Tunnel type not supported");
@@ -2397,23 +2397,23 @@ iavf_fill_ctx_desc_tunnelling_field(uint64_t *qw0, 
uint64_t ol_flags, const stru
                 * its last Ethertype.
                 * If MPLS labels exists, it should include them as well.
                 */
-               eip_typ |= (m->l2_len >> 1) << IAVF_TXD_CTX_QW0_NATLEN_SHIFT;
+               eip_typ |= (m->l2_len >> 1) << CI_TXD_CTX_QW0_NATLEN_S;
 
                /**
                 * Calculate the tunneling UDP checksum.
                 * Shall be set only if L4TUNT = 01b and EIPT is not zero
                 */
-               if ((eip_typ & (IAVF_TX_CTX_EXT_IP_IPV6 |
-                                       IAVF_TX_CTX_EXT_IP_IPV4 |
-                                       IAVF_TX_CTX_EXT_IP_IPV4_NO_CSUM)) &&
-                               (eip_typ & IAVF_TXD_CTX_UDP_TUNNELING) &&
+               if ((eip_typ & (CI_TX_CTX_EIPT_IPV6 |
+                                       CI_TX_CTX_EIPT_IPV4 |
+                                       CI_TX_CTX_EIPT_IPV4_NO_CSUM)) &&
+                               (eip_typ & CI_TXD_CTX_UDP_TUNNELING) &&
                                (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM))
-                       eip_typ |= IAVF_TXD_CTX_QW0_L4T_CS_MASK;
+                       eip_typ |= CI_TXD_CTX_QW0_L4T_CS_M;
        }
 
-       *qw0 = eip_typ << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPT_SHIFT |
-               eip_len << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPLEN_SHIFT |
-               eip_noinc << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIP_NOINC_SHIFT;
+       *qw0 = eip_typ << CI_TXD_CTX_QW0_EIPT_S |
+               eip_len << CI_TXD_CTX_QW0_EIPLEN_S |
+               eip_noinc << CI_TXD_CTX_QW0_EIP_NOINC_S;
 }
 
 static inline uint16_t
diff --git a/drivers/net/intel/iavf/iavf_rxtx.h 
b/drivers/net/intel/iavf/iavf_rxtx.h
index 3ff49b94b4..19931f5f7c 100644
--- a/drivers/net/intel/iavf/iavf_rxtx.h
+++ b/drivers/net/intel/iavf/iavf_rxtx.h
@@ -444,40 +444,6 @@ enum iavf_rx_flex_desc_ipsec_crypto_status {
 #define IAVF_TXD_CTX_QW1_SEG_PARAMS_MSS_MASK           \
        (0x3FFFUL << IAVF_TXD_CTX_QW1_SEG_PARAMS_MSS_SHIFT)
 
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPT_SHIFT         (0)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPT_MASK          (0x3UL)
-
-enum iavf_tx_ctx_desc_tunnel_external_ip_type {
-       IAVF_TX_CTX_DESC_EIPT_NONE,
-       IAVF_TX_CTX_DESC_EIPT_IPV6,
-       IAVF_TX_CTX_DESC_EIPT_IPV4_NO_CHECKSUM_OFFLOAD,
-       IAVF_TX_CTX_DESC_EIPT_IPV4_CHECKSUM_OFFLOAD
-};
-
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPLEN_SHIFT       (2)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPLEN_MASK                (0x7FUL)
-
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_L4TUNT_SHIFT       (9)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_L4TUNT_MASK                (0x3UL)
-
-enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
-       IAVF_TX_CTX_DESC_L4_TUN_TYP_NO_UDP_GRE,
-       IAVF_TX_CTX_DESC_L4_TUN_TYP_UDP,
-       IAVF_TX_CTX_DESC_L4_TUN_TYP_GRE
-};
-
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_EIP_NOINC_SHIFT    (11)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_EIP_NOINC_MASK     (0x1UL)
-
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_L4TUNLEN_SHIFT     (12)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_L4TUNLEN_MASK      (0x7FUL)
-
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_DECTTL_SHIFT       (19)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_DECTTL_MASK                (0xFUL)
-
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_L4T_CS_SHIFT       (23)
-#define IAVF_TXD_CTX_QW0_TUN_PARAMS_L4T_CS_MASK                (0x1UL)
-
 #define IAVF_TXD_CTX_QW0_L2TAG2_PARAM                  (32)
 #define IAVF_TXD_CTX_QW0_L2TAG2_MASK                   (0xFFFFUL)
 
diff --git a/drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c 
b/drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c
index 10e96a8510..f95aabe577 100644
--- a/drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c
+++ b/drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c
@@ -1760,7 +1760,7 @@ static inline void
 iavf_fill_ctx_desc_tunneling_avx2(uint64_t *low_ctx_qw, struct rte_mbuf *pkt)
 {
        if (pkt->ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) {
-               uint64_t eip_typ = IAVF_TX_CTX_DESC_EIPT_NONE;
+               uint64_t eip_typ = CI_TX_CTX_EIPT_NONE;
                uint64_t eip_len = 0;
                uint64_t eip_noinc = 0;
                /* Default - IP_ID is increment in each segment of LSO */
@@ -1769,15 +1769,15 @@ iavf_fill_ctx_desc_tunneling_avx2(uint64_t *low_ctx_qw, 
struct rte_mbuf *pkt)
                                RTE_MBUF_F_TX_OUTER_IPV6 |
                                RTE_MBUF_F_TX_OUTER_IP_CKSUM)) {
                case RTE_MBUF_F_TX_OUTER_IPV4:
-                       eip_typ = 
IAVF_TX_CTX_DESC_EIPT_IPV4_NO_CHECKSUM_OFFLOAD;
+                       eip_typ = CI_TX_CTX_EIPT_IPV4_NO_CSUM;
                        eip_len = pkt->outer_l3_len >> 2;
                break;
                case RTE_MBUF_F_TX_OUTER_IPV4 | RTE_MBUF_F_TX_OUTER_IP_CKSUM:
-                       eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV4_CHECKSUM_OFFLOAD;
+                       eip_typ = CI_TX_CTX_EIPT_IPV4;
                        eip_len = pkt->outer_l3_len >> 2;
                break;
                case RTE_MBUF_F_TX_OUTER_IPV6:
-                       eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV6;
+                       eip_typ = CI_TX_CTX_EIPT_IPV6;
                        eip_len = pkt->outer_l3_len >> 2;
                break;
                }
@@ -1791,10 +1791,10 @@ iavf_fill_ctx_desc_tunneling_avx2(uint64_t *low_ctx_qw, 
struct rte_mbuf *pkt)
                case RTE_MBUF_F_TX_TUNNEL_VXLAN_GPE:
                case RTE_MBUF_F_TX_TUNNEL_GTP:
                case RTE_MBUF_F_TX_TUNNEL_GENEVE:
-                       eip_typ |= IAVF_TXD_CTX_UDP_TUNNELING;
+                       eip_typ |= CI_TXD_CTX_UDP_TUNNELING;
                        break;
                case RTE_MBUF_F_TX_TUNNEL_GRE:
-                       eip_typ |= IAVF_TXD_CTX_GRE_TUNNELING;
+                       eip_typ |= CI_TXD_CTX_GRE_TUNNELING;
                        break;
                default:
                        PMD_TX_LOG(ERR, "Tunnel type not supported");
@@ -1811,22 +1811,22 @@ iavf_fill_ctx_desc_tunneling_avx2(uint64_t *low_ctx_qw, 
struct rte_mbuf *pkt)
                 * its last Ethertype.
                 * If MPLS labels exists, it should include them as well.
                 */
-               eip_typ |= (pkt->l2_len >> 1) << IAVF_TXD_CTX_QW0_NATLEN_SHIFT;
+               eip_typ |= (pkt->l2_len >> 1) << CI_TXD_CTX_QW0_NATLEN_S;
 
                /**
                 * Calculate the tunneling UDP checksum.
                 * Shall be set only if L4TUNT = 01b and EIPT is not zero
                 */
-               if ((eip_typ & (IAVF_TX_CTX_EXT_IP_IPV4 |
-                                       IAVF_TX_CTX_EXT_IP_IPV6 |
-                                       IAVF_TX_CTX_EXT_IP_IPV4_NO_CSUM)) &&
-                               (eip_typ & IAVF_TXD_CTX_UDP_TUNNELING) &&
+               if ((eip_typ & (CI_TX_CTX_EIPT_IPV4 |
+                                       CI_TX_CTX_EIPT_IPV6 |
+                                       CI_TX_CTX_EIPT_IPV4_NO_CSUM)) &&
+                               (eip_typ & CI_TXD_CTX_UDP_TUNNELING) &&
                                (pkt->ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM))
-                       eip_typ |= IAVF_TXD_CTX_QW0_L4T_CS_MASK;
+                       eip_typ |= CI_TXD_CTX_QW0_L4T_CS_M;
 
-               *low_ctx_qw = eip_typ << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPT_SHIFT 
|
-                       eip_len << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPLEN_SHIFT |
-                       eip_noinc << 
IAVF_TXD_CTX_QW0_TUN_PARAMS_EIP_NOINC_SHIFT;
+               *low_ctx_qw = eip_typ << CI_TXD_CTX_QW0_EIPT_S |
+                       eip_len << CI_TXD_CTX_QW0_EIPLEN_S |
+                       eip_noinc << CI_TXD_CTX_QW0_EIP_NOINC_S;
 
        } else {
                *low_ctx_qw = 0;
diff --git a/drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c 
b/drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c
index 58ed89a72a..74d91fff31 100644
--- a/drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c
+++ b/drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c
@@ -1899,7 +1899,7 @@ static __rte_always_inline void
 iavf_fill_ctx_desc_tunneling_avx512(uint64_t *low_ctx_qw, struct rte_mbuf *pkt)
 {
        if (pkt->ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) {
-               uint64_t eip_typ = IAVF_TX_CTX_DESC_EIPT_NONE;
+               uint64_t eip_typ = CI_TX_CTX_EIPT_NONE;
                uint64_t eip_len = 0;
                uint64_t eip_noinc = 0;
                /* Default - IP_ID is increment in each segment of LSO */
@@ -1908,15 +1908,15 @@ iavf_fill_ctx_desc_tunneling_avx512(uint64_t 
*low_ctx_qw, struct rte_mbuf *pkt)
                                RTE_MBUF_F_TX_OUTER_IPV6 |
                                RTE_MBUF_F_TX_OUTER_IP_CKSUM)) {
                case RTE_MBUF_F_TX_OUTER_IPV4:
-                       eip_typ = 
IAVF_TX_CTX_DESC_EIPT_IPV4_NO_CHECKSUM_OFFLOAD;
+                       eip_typ = CI_TX_CTX_EIPT_IPV4_NO_CSUM;
                        eip_len = pkt->outer_l3_len >> 2;
                break;
                case RTE_MBUF_F_TX_OUTER_IPV4 | RTE_MBUF_F_TX_OUTER_IP_CKSUM:
-                       eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV4_CHECKSUM_OFFLOAD;
+                       eip_typ = CI_TX_CTX_EIPT_IPV4;
                        eip_len = pkt->outer_l3_len >> 2;
                break;
                case RTE_MBUF_F_TX_OUTER_IPV6:
-                       eip_typ = IAVF_TX_CTX_DESC_EIPT_IPV6;
+                       eip_typ = CI_TX_CTX_EIPT_IPV6;
                        eip_len = pkt->outer_l3_len >> 2;
                break;
                }
@@ -1930,10 +1930,10 @@ iavf_fill_ctx_desc_tunneling_avx512(uint64_t 
*low_ctx_qw, struct rte_mbuf *pkt)
                case RTE_MBUF_F_TX_TUNNEL_VXLAN_GPE:
                case RTE_MBUF_F_TX_TUNNEL_GTP:
                case RTE_MBUF_F_TX_TUNNEL_GENEVE:
-                       eip_typ |= IAVF_TXD_CTX_UDP_TUNNELING;
+                       eip_typ |= CI_TXD_CTX_UDP_TUNNELING;
                        break;
                case RTE_MBUF_F_TX_TUNNEL_GRE:
-                       eip_typ |= IAVF_TXD_CTX_GRE_TUNNELING;
+                       eip_typ |= CI_TXD_CTX_GRE_TUNNELING;
                        break;
                default:
                        PMD_TX_LOG(ERR, "Tunnel type not supported");
@@ -1950,22 +1950,22 @@ iavf_fill_ctx_desc_tunneling_avx512(uint64_t 
*low_ctx_qw, struct rte_mbuf *pkt)
                 * its last Ethertype.
                 * If MPLS labels exists, it should include them as well.
                 */
-               eip_typ |= (pkt->l2_len >> 1) << IAVF_TXD_CTX_QW0_NATLEN_SHIFT;
+               eip_typ |= (pkt->l2_len >> 1) << CI_TXD_CTX_QW0_NATLEN_S;
 
                /**
                 * Calculate the tunneling UDP checksum.
                 * Shall be set only if L4TUNT = 01b and EIPT is not zero
                 */
-               if ((eip_typ & (IAVF_TX_CTX_EXT_IP_IPV4 |
-                                       IAVF_TX_CTX_EXT_IP_IPV6 |
-                                       IAVF_TX_CTX_EXT_IP_IPV4_NO_CSUM)) &&
-                               (eip_typ & IAVF_TXD_CTX_UDP_TUNNELING) &&
+               if ((eip_typ & (CI_TX_CTX_EIPT_IPV4 |
+                                       CI_TX_CTX_EIPT_IPV6 |
+                                       CI_TX_CTX_EIPT_IPV4_NO_CSUM)) &&
+                               (eip_typ & CI_TXD_CTX_UDP_TUNNELING) &&
                                (pkt->ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM))
-                       eip_typ |= IAVF_TXD_CTX_QW0_L4T_CS_MASK;
+                       eip_typ |= CI_TXD_CTX_QW0_L4T_CS_M;
 
-               *low_ctx_qw = eip_typ << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPT_SHIFT 
|
-                       eip_len << IAVF_TXD_CTX_QW0_TUN_PARAMS_EIPLEN_SHIFT |
-                       eip_noinc << 
IAVF_TXD_CTX_QW0_TUN_PARAMS_EIP_NOINC_SHIFT;
+               *low_ctx_qw = eip_typ << CI_TXD_CTX_QW0_EIPT_S |
+                       eip_len << CI_TXD_CTX_QW0_EIPLEN_S |
+                       eip_noinc << CI_TXD_CTX_QW0_EIP_NOINC_S;
 
        } else {
                *low_ctx_qw = 0;
-- 
2.53.0

Reply via email to