> -----Original Message-----
> From: Olivier Matz <[email protected]>
> Sent: Wednesday, July 8, 2020 7:44 PM
> To: Phil Yang <[email protected]>
> Cc: [email protected]; [email protected]; [email protected];
> Honnappa Nagarahalli <[email protected]>; Ruifeng Wang
> <[email protected]>; nd <[email protected]>
> Subject: Re: [PATCH v2] mbuf: use C11 atomics for refcnt operations
>
> Hi,
>
> On Tue, Jul 07, 2020 at 06:10:33PM +0800, Phil Yang wrote:
> > Use C11 atomics with explicit ordering instead of rte_atomic ops which
> > enforce unnecessary barriers on aarch64.
> >
> > Signed-off-by: Phil Yang <[email protected]>
> > Reviewed-by: Ruifeng Wang <[email protected]>
> > ---
> > v2:
> > Fix ABI issue: revert the rte_mbuf_ext_shared_info struct refcnt field
> > to refcnt_atomic.
> >
> > lib/librte_mbuf/rte_mbuf.c | 1 -
> > lib/librte_mbuf/rte_mbuf.h | 19 ++++++++++---------
> > lib/librte_mbuf/rte_mbuf_core.h | 11 +++--------
> > 3 files changed, 13 insertions(+), 18 deletions(-)
> >
<snip>
>
> It seems this patch does 2 things:
> - remove refcnt_atomic
> - use C11 atomics
>
> The first change is an API break. I think it should be announced in a
> deprecation
> notice. The one about atomic does not talk about it.
>
> So I suggest to keep refcnt_atomic until next version.
Agreed.
I did a local test, this approach doesn't have any ABI breakage issue.
I will update in the next version.
Thanks,
Phil
>
>
> > uint16_t nb_segs; /**< Number of segments. */
> >
> > /** Input port (16 bits to support more than 256 virtual ports).
> > @@ -679,7 +674,7 @@ typedef void
> (*rte_mbuf_extbuf_free_callback_t)(void *addr, void *opaque);
> > struct rte_mbuf_ext_shared_info {
> > rte_mbuf_extbuf_free_callback_t free_cb; /**< Free callback
> function */
> > void *fcb_opaque; /**< Free callback argument */
> > - rte_atomic16_t refcnt_atomic; /**< Atomically accessed refcnt */
> > + uint16_t refcnt_atomic; /**< Atomically accessed refcnt */
> > };
> >
> > /**< Maximum number of nb_segs allowed. */
> > --
> > 2.7.4
> >