> From: Tyler Retzlaff [mailto:roret...@linux.microsoft.com] > Sent: Tuesday, 27 February 2024 06.41 > > 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; > +}
Consider returning (void *) instead of (uint64_t *). Just a suggestion; I don't know which is better. > + > +static inline > +void * > +rte_mbuf_rx_descriptor_fields1(struct rte_mbuf *m) > +{ > + return &m->packet_type; > +} The mbuf_rx_descriptor_fields1 field is disappearing in a later patch; consider taking the opportunity to use a better name here. > > 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() The "rearm_data" field is disappearing in a later patch; don't refer to it by that name in the comments here. > + * 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 The "rx_descriptor_fields1" field is disappearing in a later patch; don't refer to it by that name in the comments here. And if you update the access function's name, remember to update it in the comment here too. > + * referencing through the the anonymous union fields. > */ > union { > uint32_t packet_type; /**< L2/L3/L4 and tunnel information. */ > -- > 1.8.3.1