[PATCH v6 01/23] mbuf: add accessors for rearm and Rx descriptor fields

Tyler Retzlaff roretzla at linux.microsoft.com
Tue Feb 27 06:41:17 CET 2024


RTE_MARKER typedefs are a GCC extension unsupported by MSVC. Provide
inline functions to access compatible type pointer to rearm_data
and rx_descriptor_fields1 which will allow direct references on the
rte marker fields to be removed.

Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
---
 lib/mbuf/rte_mbuf.h      | 13 +++++++++++++
 lib/mbuf/rte_mbuf_core.h | 11 ++++++++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 286b32b..aa7495b 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -132,6 +132,19 @@
 #endif
 }
 
+static inline
+uint64_t *
+rte_mbuf_rearm_data(struct rte_mbuf *m)
+{
+	return (uint64_t *)&m->data_off;
+}
+
+static inline
+void *
+rte_mbuf_rx_descriptor_fields1(struct rte_mbuf *m)
+{
+	return &m->packet_type;
+}
 
 static inline uint16_t rte_pktmbuf_priv_size(struct rte_mempool *mp);
 
diff --git a/lib/mbuf/rte_mbuf_core.h b/lib/mbuf/rte_mbuf_core.h
index 5688683..7000c04 100644
--- a/lib/mbuf/rte_mbuf_core.h
+++ b/lib/mbuf/rte_mbuf_core.h
@@ -486,7 +486,12 @@ struct rte_mbuf {
 	struct rte_mbuf *next;
 #endif
 
-	/* next 8 bytes are initialised on RX descriptor rearm */
+	/**
+	 * next 8 bytes are initialised on RX descriptor rearm
+	 *
+	 * To obtain a pointer to rearm_data use the rte_mbuf_rearm_data()
+	 * accessor instead of directly referencing through the data_off field.
+	 */
 	RTE_MARKER64 rearm_data;
 	uint16_t data_off;
 
@@ -522,6 +527,10 @@ struct rte_mbuf {
 	 * mbuf. Example: if vlan stripping is enabled, a received vlan packet
 	 * would have RTE_PTYPE_L2_ETHER and not RTE_PTYPE_L2_VLAN because the
 	 * vlan is stripped from the data.
+	 *
+	 * To obtain a pointer to rx_descriptor_fields1 use the
+	 * rte_mbuf_rx_descriptor_fields1() accessor instead of directly
+	 * referencing through the the anonymous union fields.
 	 */
 	union {
 		uint32_t packet_type; /**< L2/L3/L4 and tunnel information. */
-- 
1.8.3.1



More information about the dev mailing list