> -----Original Message----- > From: Olivier Matz <olivier.m...@6wind.com> > Sent: Wednesday, July 8, 2020 7:44 PM > To: Phil Yang <phil.y...@arm.com> > Cc: david.march...@redhat.com; dev@dpdk.org; d...@linux.vnet.ibm.com; > Honnappa Nagarahalli <honnappa.nagaraha...@arm.com>; Ruifeng Wang > <ruifeng.w...@arm.com>; nd <n...@arm.com> > 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 <phil.y...@arm.com> > > Reviewed-by: Ruifeng Wang <ruifeng.w...@arm.com> > > --- > > 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 > >