[PATCH v6 01/23] mbuf: add accessors for rearm and Rx descriptor fields
Tyler Retzlaff
roretzla at linux.microsoft.com
Tue Feb 27 18:17:18 CET 2024
On Tue, Feb 27, 2024 at 10:10:03AM +0100, Morten Brørup wrote:
> > From: Tyler Retzlaff [mailto:roretzla at 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 <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;
> > +}
>
> Consider returning (void *) instead of (uint64_t *).
> Just a suggestion; I don't know which is better.
if you mean just the cast i don't think it matters. arguably it could go
void * first but we're already aliasing through a different type. this
is one argument in favor of the union.
>
> > +
> > +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.
oh boy. you're asking for a new name but not suggesting a new name.
naming is hard (no one is ever happy). for this and rearm_data if you
or anyone suggests a name i'll make the change ~everywhere including
comments across all drivers.
>
> >
> > 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.
without having renamed the block of fields cheerfully known as
"rearm_data" i kept all documentation/comments here and in drivers
using rearm_data for familiarity. (unless someone suggests a new name for the group
of fields).
>
> > + * 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.
same as above.
>
> > + * 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