[dpdk-dev] [PATCH v2] mbuf: use C11 atomics for refcnt operations
Phil Yang
Phil.Yang at arm.com
Thu Jul 9 12:00:23 CEST 2020
> -----Original Message-----
> From: Olivier Matz <olivier.matz at 6wind.com>
> Sent: Wednesday, July 8, 2020 7:44 PM
> To: Phil Yang <Phil.Yang at arm.com>
> Cc: david.marchand at redhat.com; dev at dpdk.org; drc at linux.vnet.ibm.com;
> Honnappa Nagarahalli <Honnappa.Nagarahalli at arm.com>; Ruifeng Wang
> <Ruifeng.Wang at arm.com>; nd <nd at 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.yang at arm.com>
> > Reviewed-by: Ruifeng Wang <ruifeng.wang at 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
> >
More information about the dev
mailing list