> -----Original Message-----
> From: Thomas Monjalon <tho...@monjalon.net>
> Sent: Friday, July 17, 2020 18:08
> To: Slava Ovsiienko <viachesl...@mellanox.com>
> Cc: dev@dpdk.org; Matan Azrad <ma...@mellanox.com>; Raslan
> Darawsheh <rasl...@mellanox.com>
> Subject: Re: [PATCH 2/3] net/mlx5: fix compilation issue with atomic128
> exchange
> 
> 17/07/2020 16:28, Viacheslav Ovsiienko:
> > For naw the rte_atomic128_cmp_exchange() is available on x86-64
> 
> Typo: now
> 
> > and ARM64 architectures. The patch fixes the compilation condition for
> > the code using this atomic transaction.
> 
> What is fixed exactly?
> How "not (ppc or 32)" is different of "x86_64 or arm64"?

CI detected the cases when rte_atomic128_cmp_exchange() is not defined.
So, we changed the case:

 "do not use cas_128 for the PPC and 32-bit and engage one otherwise"
 to
 "use cas_128 for x86_64 and ARM64 only, where it is known this one is defined, 
otherwise - do not engage"

With best regards, Slava

> 
> > -#if defined(RTE_ARCH_PPC_64) || defined(RTE_ARCH_32)
> > +#if defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_ARM64)
> > +   rte_int128_t src;
> > +
> > +   memset(&src, 0, sizeof(src));
> > +   *ts = src;
> > +   /* if (*from == *ts) *from = *src else *ts = *from; */
> > +   rte_atomic128_cmp_exchange(from, ts, &src, 0,
> > +                              __ATOMIC_RELAXED,
> __ATOMIC_RELAXED); #else
> >     rte_atomic64_t *cqe = (rte_atomic64_t *)from;
> >
> >     /* Power architecture does not support 16B compare-and-swap. */
> @@
> > -665,14 +673,6 @@
> >             ps[1] = op;
> >             return;
> >     }
> > -#else
> > -   rte_int128_t src;
> > -
> > -   memset(&src, 0, sizeof(src));
> > -   *ts = src;
> > -   /* if (*from == *ts) *from = *src else *ts = *from; */
> > -   rte_atomic128_cmp_exchange(from, ts, &src, 0,
> > -                              __ATOMIC_RELAXED,
> __ATOMIC_RELAXED);
> >  #endif
> 
> 

Reply via email to