Ensure correct macros are used to build the vector Tx code without the
IOVA stored explicitly in the mbuf. This allows the iavf driver to build
when the config setting for IOVA in mbuf is disabled.

Signed-off-by: Bruce Richardson <[email protected]>
---
 drivers/net/intel/common/tx_vec_x86.h | 30 +++++++++++++--------------
 drivers/net/intel/iavf/meson.build    |  4 +---
 2 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/drivers/net/intel/common/tx_vec_x86.h 
b/drivers/net/intel/common/tx_vec_x86.h
index 0c6c60a21e..56efe1d1ec 100644
--- a/drivers/net/intel/common/tx_vec_x86.h
+++ b/drivers/net/intel/common/tx_vec_x86.h
@@ -168,7 +168,7 @@ ci_vtx1(volatile struct ci_tx_desc *txdp,
        if (offload)
                ci_tx_vec_offload(pkt, &high_qw, single_vlan_pos, 
qinq_outer_pos);
 
-       __m128i descriptor = _mm_set_epi64x(high_qw, pkt->buf_iova + 
pkt->data_off);
+       __m128i descriptor = _mm_set_epi64x(high_qw, rte_pktmbuf_iova(pkt));
        _mm_store_si128(RTE_CAST_PTR(__m128i *, txdp), descriptor);
 }
 
@@ -209,15 +209,15 @@ ci_vtx_avx2(volatile struct ci_tx_desc *txdp,
                __m256i desc2_3 =
                        _mm256_set_epi64x
                                (hi_qw3,
-                                pkt[3]->buf_iova + pkt[3]->data_off,
+                                rte_pktmbuf_iova(pkt[3]),
                                 hi_qw2,
-                                pkt[2]->buf_iova + pkt[2]->data_off);
+                                rte_pktmbuf_iova(pkt[2]));
                __m256i desc0_1 =
                        _mm256_set_epi64x
                                (hi_qw1,
-                                pkt[1]->buf_iova + pkt[1]->data_off,
+                                rte_pktmbuf_iova(pkt[1]),
                                 hi_qw0,
-                                pkt[0]->buf_iova + pkt[0]->data_off);
+                                rte_pktmbuf_iova(pkt[0]));
                _mm256_store_si256(RTE_CAST_PTR(__m256i *, txdp + 2), desc2_3);
                _mm256_store_si256(RTE_CAST_PTR(__m256i *, txdp), desc0_1);
        }
@@ -259,7 +259,7 @@ ci_vtx1_ctx_avx2(volatile struct ci_tx_desc *txdp, struct 
rte_mbuf *pkt,
        if (offload)
                ci_tx_vec_offload(pkt, &high_data_qw, single_vlan_pos, 
qinq_outer_pos);
 
-       __m256i ctx_data_desc = _mm256_set_epi64x(high_data_qw, pkt->buf_iova + 
pkt->data_off,
+       __m256i ctx_data_desc = _mm256_set_epi64x(high_data_qw, 
rte_pktmbuf_iova(pkt),
                                                        high_ctx_qw, 
low_ctx_qw);
 
        /* tx_id is always even in ctx mode, so txdp is always 32-byte aligned 
*/
@@ -331,10 +331,10 @@ ci_vtx_ctx_avx2(volatile struct ci_tx_desc *txdp,
                }
 
                __m256i desc2_3 = _mm256_set_epi64x
-                               (hi_data_qw1, pkt[1]->buf_iova + 
pkt[1]->data_off,
+                               (hi_data_qw1, rte_pktmbuf_iova(pkt[1]),
                                 hi_ctx_qw1, low_ctx_qw1);
                __m256i desc0_1 = _mm256_set_epi64x
-                               (hi_data_qw0, pkt[0]->buf_iova + 
pkt[0]->data_off,
+                               (hi_data_qw0, rte_pktmbuf_iova(pkt[0]),
                                 hi_ctx_qw0, low_ctx_qw0);
                _mm256_store_si256(RTE_CAST_PTR(__m256i *, txdp + 2), desc2_3);
                _mm256_store_si256(RTE_CAST_PTR(__m256i *, txdp), desc0_1);
@@ -382,13 +382,13 @@ ci_vtx_avx512(volatile struct ci_tx_desc *txdp,
                __m512i desc0_3 =
                        _mm512_set_epi64
                                (hi_qw3,
-                                pkt[3]->buf_iova + pkt[3]->data_off,
+                                rte_pktmbuf_iova(pkt[3]),
                                 hi_qw2,
-                                pkt[2]->buf_iova + pkt[2]->data_off,
+                                rte_pktmbuf_iova(pkt[2]),
                                 hi_qw1,
-                                pkt[1]->buf_iova + pkt[1]->data_off,
+                                rte_pktmbuf_iova(pkt[1]),
                                 hi_qw0,
-                                pkt[0]->buf_iova + pkt[0]->data_off);
+                                rte_pktmbuf_iova(pkt[0]));
                _mm512_storeu_si512(RTE_CAST_PTR(void *, txdp), desc0_3);
        }
 
@@ -430,7 +430,7 @@ ci_vtx1_ctx_avx512(volatile struct ci_tx_desc *txdp, struct 
rte_mbuf *pkt,
                ci_tx_vec_offload(pkt, &high_data_qw, single_vlan_pos, 
qinq_outer_pos);
 
        __m256i ctx_data_desc = _mm256_set_epi64x
-                       (high_data_qw, pkt->buf_iova + pkt->data_off,
+                       (high_data_qw, rte_pktmbuf_iova(pkt),
                        high_ctx_qw, low_ctx_qw);
 
        /* tx_id is always even in ctx mode, so txdp is always 32-byte aligned 
*/
@@ -500,9 +500,9 @@ ci_vtx_ctx_avx512(volatile struct ci_tx_desc *txdp,
                }
 
                __m512i desc0_3 = _mm512_set_epi64
-                               (hi_data_qw1, pkt[1]->buf_iova + 
pkt[1]->data_off,
+                               (hi_data_qw1, rte_pktmbuf_iova(pkt[1]),
                                hi_ctx_qw1, low_ctx_qw1,
-                               hi_data_qw0, pkt[0]->buf_iova + 
pkt[0]->data_off,
+                               hi_data_qw0, rte_pktmbuf_iova(pkt[0]),
                                hi_ctx_qw0, low_ctx_qw0);
                _mm512_storeu_si512(RTE_CAST_PTR(void *, txdp), desc0_3);
        }
diff --git a/drivers/net/intel/iavf/meson.build 
b/drivers/net/intel/iavf/meson.build
index 9b071a3a4b..3884043ae6 100644
--- a/drivers/net/intel/iavf/meson.build
+++ b/drivers/net/intel/iavf/meson.build
@@ -1,9 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Luca Boccassi <[email protected]>
 
-if dpdk_conf.get('RTE_IOVA_IN_MBUF') == 0
-    subdir_done()
-endif
+require_iova_in_mbuf = false
 
 testpmd_sources = files('iavf_testpmd.c')
 
-- 
2.53.0

Reply via email to