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 <roret...@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