[PATCH v6 05/23] net/cnxk: use mbuf descriptor accessors
Tyler Retzlaff
roretzla at linux.microsoft.com
Tue Feb 27 06:41:21 CET 2024
RTE_MARKER typedefs are a GCC extension unsupported by MSVC. Use
new rte_mbuf_rearm_data and rte_mbuf_rx_descriptor_fields1 accessors
that provide a compatible type pointer without using the marker fields.
Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
---
drivers/net/cnxk/cn10k_rx.h | 36 ++++++++++++++++++------------------
drivers/net/cnxk/cn9k_rx.h | 20 ++++++++++----------
drivers/net/cnxk/cnxk_ethdev.c | 2 +-
3 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/drivers/net/cnxk/cn10k_rx.h b/drivers/net/cnxk/cn10k_rx.h
index 7bb4c86..4bfb323 100644
--- a/drivers/net/cnxk/cn10k_rx.h
+++ b/drivers/net/cnxk/cn10k_rx.h
@@ -309,7 +309,7 @@
frag_rx = (union nix_rx_parse_u *)(wqe + 1);
frag_size = rlen + frag_rx->lcptr - frag_rx->laptr;
- *(uint64_t *)(&mbuf->rearm_data) = mbuf_init;
+ *rte_mbuf_rearm_data(mbuf) = mbuf_init;
mbuf->data_len = frag_size;
mbuf->pkt_len = frag_size;
mbuf->ol_flags = ol_flags;
@@ -368,7 +368,7 @@
fsz_w1 >>= 16;
data_off = b_off + frag_rx->lcptr + l3_hdr_size;
- *(uint64_t *)(&mbuf->rearm_data) = mbuf_init | data_off;
+ *rte_mbuf_rearm_data(mbuf) = mbuf_init | data_off;
mbuf->data_len = frag_size;
/* Mark frag as get */
@@ -384,7 +384,7 @@
fsz_w1 >>= 16;
data_off = b_off + frag_rx->lcptr + l3_hdr_size;
- *(uint64_t *)(&mbuf->rearm_data) = mbuf_init | data_off;
+ *rte_mbuf_rearm_data(mbuf) = mbuf_init | data_off;
mbuf->data_len = frag_size;
/* Mark frag as get */
@@ -401,7 +401,7 @@
fsz_w1 >>= 16;
data_off = b_off + frag_rx->lcptr + l3_hdr_size;
- *(uint64_t *)(&mbuf->rearm_data) = mbuf_init | data_off;
+ *rte_mbuf_rearm_data(mbuf) = mbuf_init | data_off;
mbuf->data_len = frag_size;
/* Mark frag as get */
@@ -502,7 +502,7 @@
inner->pkt_len = len;
inner->data_len = len;
- *(uint64_t *)(&inner->rearm_data) = mbuf_init;
+ *rte_mbuf_rearm_data(inner) = mbuf_init;
inner->ol_flags = ((CPT_COMP_HWGOOD_MASK & (1U << ucc)) ?
RTE_MBUF_F_RX_SEC_OFFLOAD :
@@ -584,7 +584,7 @@
/* First frag len */
inner->pkt_len = vgetq_lane_u16(*rx_desc_field1, 2);
inner->data_len = vgetq_lane_u16(*rx_desc_field1, 4);
- p = (uintptr_t)&inner->rearm_data;
+ p = (uintptr_t)rte_mbuf_rearm_data(inner);
*(uint64_t *)p = mbuf_init;
/* Reassembly success */
@@ -774,7 +774,7 @@
mbuf->data_len = sg_len;
sg = sg >> 16;
- p = (uintptr_t)&mbuf->rearm_data;
+ p = (uintptr_t)rte_mbuf_rearm_data(mbuf);
*(uint64_t *)p = rearm & ~0xFFFF;
nb_segs--;
iova_list++;
@@ -825,7 +825,7 @@
head->nb_segs = nb_segs;
}
mbuf = next_frag;
- p = (uintptr_t)&mbuf->rearm_data;
+ p = (uintptr_t)rte_mbuf_rearm_data(mbuf);
*(uint64_t *)p = rearm + ldptr;
mbuf->data_len = (sg & 0xFFFF) - ldptr -
(flags & NIX_RX_OFFLOAD_TSTAMP_F ?
@@ -849,7 +849,7 @@
len = mbuf->pkt_len;
- p = (uintptr_t)&mbuf->rearm_data;
+ p = (uintptr_t)rte_mbuf_rearm_data(mbuf);
*(uint64_t *)p = rearm;
mbuf->data_len = (sg & 0xFFFF) -
(flags & NIX_RX_OFFLOAD_TSTAMP_F ?
@@ -917,7 +917,7 @@
mbuf->ol_flags = ol_flags;
mbuf->pkt_len = len;
mbuf->data_len = len;
- p = (uintptr_t)&mbuf->rearm_data;
+ p = (uintptr_t)rte_mbuf_rearm_data(mbuf);
*(uint64_t *)p = val;
}
@@ -1966,16 +1966,16 @@
rearm3 = vsetq_lane_u64(ol_flags3, rearm3, 1);
/* Update rx_descriptor_fields1 */
- vst1q_u64((uint64_t *)mbuf0->rx_descriptor_fields1, f0);
- vst1q_u64((uint64_t *)mbuf1->rx_descriptor_fields1, f1);
- vst1q_u64((uint64_t *)mbuf2->rx_descriptor_fields1, f2);
- vst1q_u64((uint64_t *)mbuf3->rx_descriptor_fields1, f3);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf0), f0);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf1), f1);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf2), f2);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf3), f3);
/* Update rearm_data */
- vst1q_u64((uint64_t *)mbuf0->rearm_data, rearm0);
- vst1q_u64((uint64_t *)mbuf1->rearm_data, rearm1);
- vst1q_u64((uint64_t *)mbuf2->rearm_data, rearm2);
- vst1q_u64((uint64_t *)mbuf3->rearm_data, rearm3);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf0), rearm0);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf1), rearm1);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf2), rearm2);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf3), rearm3);
if (flags & NIX_RX_MULTI_SEG_F) {
/* Multi segment is enable build mseg list for
diff --git a/drivers/net/cnxk/cn9k_rx.h b/drivers/net/cnxk/cn9k_rx.h
index d8bb65c..f1212f8 100644
--- a/drivers/net/cnxk/cn9k_rx.h
+++ b/drivers/net/cnxk/cn9k_rx.h
@@ -155,7 +155,7 @@
mbuf->data_len = sg & 0xFFFF;
sg = sg >> 16;
- *(uint64_t *)(&mbuf->rearm_data) = rearm;
+ *rte_mbuf_rearm_data(mbuf) = rearm;
nb_segs--;
iova_list++;
@@ -398,7 +398,7 @@
nix_update_match_id(rx->cn9k.match_id, ol_flags, mbuf);
mbuf->ol_flags = ol_flags;
- *(uint64_t *)(&mbuf->rearm_data) = val;
+ *rte_mbuf_rearm_data(mbuf) = val;
mbuf->pkt_len = len;
mbuf->data_len = len;
@@ -799,16 +799,16 @@
rearm3 = vsetq_lane_u64(ol_flags3, rearm3, 1);
/* Update rx_descriptor_fields1 */
- vst1q_u64((uint64_t *)mbuf0->rx_descriptor_fields1, f0);
- vst1q_u64((uint64_t *)mbuf1->rx_descriptor_fields1, f1);
- vst1q_u64((uint64_t *)mbuf2->rx_descriptor_fields1, f2);
- vst1q_u64((uint64_t *)mbuf3->rx_descriptor_fields1, f3);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf0), f0);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf1), f1);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf2), f2);
+ vst1q_u64((uint64_t *)rte_mbuf_rx_descriptor_fields1(mbuf3), f3);
/* Update rearm_data */
- vst1q_u64((uint64_t *)mbuf0->rearm_data, rearm0);
- vst1q_u64((uint64_t *)mbuf1->rearm_data, rearm1);
- vst1q_u64((uint64_t *)mbuf2->rearm_data, rearm2);
- vst1q_u64((uint64_t *)mbuf3->rearm_data, rearm3);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf0), rearm0);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf1), rearm1);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf2), rearm2);
+ vst1q_u64(rte_mbuf_rearm_data(mbuf3), rearm3);
if (flags & NIX_RX_MULTI_SEG_F) {
/* Multi segment is enable build mseg list for
diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c
index 2372a4e..14f6b7c 100644
--- a/drivers/net/cnxk/cnxk_ethdev.c
+++ b/drivers/net/cnxk/cnxk_ethdev.c
@@ -437,7 +437,7 @@
/* Prevent compiler reordering: rearm_data covers previous fields */
rte_compiler_barrier();
- tmp = (uint64_t *)&mb_def.rearm_data;
+ tmp = rte_mbuf_rearm_data(&mb_def);
return *tmp;
}
--
1.8.3.1
More information about the dev
mailing list