> -----Original Message----- > From: Stephen Hemminger <[email protected]> > Sent: Wednesday 27 May 2026 00:24 > To: [email protected] > Cc: Stephen Hemminger <[email protected]>; Konstantin Ananyev > <[email protected]>; > Marat Khalili <[email protected]> > Subject: [PATCH v4 04/27] bpf: use C11 atomics in BPF_ST_ATOMIC_REG > > The BPF_ST_ATOMIC_REG macro generated code with deprecated > rte_atomicNN_add and rte_atomicNN_exchange. > > Replace this with the equivalent rte_stdatomic definitions. > Use memory order seq_cst to preserve the previous behavior of > rte_atomicNN_add() / rte_atomicNN_exchange() and matches > the Linux kernel BPF interpreter for these opcodes. > > Signed-off-by: Stephen Hemminger <[email protected]> > --- > lib/bpf/bpf_exec.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/lib/bpf/bpf_exec.c b/lib/bpf/bpf_exec.c > index 18013753b1..ee6ec7516f 100644 > --- a/lib/bpf/bpf_exec.c > +++ b/lib/bpf/bpf_exec.c > @@ -10,6 +10,7 @@ > #include <rte_log.h> > #include <rte_debug.h> > #include <rte_byteorder.h> > +#include <rte_stdatomic.h> > > #include "bpf_impl.h" > > @@ -65,16 +66,16 @@ > (type)(reg)[(ins)->src_reg]) > > #define BPF_ST_ATOMIC_REG(reg, ins, tp) do { \ > + RTE_ATOMIC(uint##tp##_t) *dst = (RTE_ATOMIC(uint##tp##_t) *) \ > + (uintptr_t)((reg)[(ins)->dst_reg] + (ins)->off); \ > switch (ins->imm) { \ > case BPF_ATOMIC_ADD: \ > - rte_atomic##tp##_add((rte_atomic##tp##_t *) \ > - (uintptr_t)((reg)[(ins)->dst_reg] + (ins)->off), \ > - (reg)[(ins)->src_reg]); \ > + rte_atomic_fetch_add_explicit(dst, \ > + (reg)[(ins)->src_reg], rte_memory_order_seq_cst); \ > break; \ > case BPF_ATOMIC_XCHG: \ > - (reg)[(ins)->src_reg] = rte_atomic##tp##_exchange((uint##tp##_t > *) \ > - (uintptr_t)((reg)[(ins)->dst_reg] + (ins)->off), \ > - (reg)[(ins)->src_reg]); \ > + (reg)[(ins)->src_reg] = rte_atomic_exchange_explicit(dst, \ > + (reg)[(ins)->src_reg], rte_memory_order_seq_cst); \ > break; \ > default: \ > /* this should be caught by validator and never reach here */ \ > -- > 2.53.0
Reviewed-by: Marat Khalili <[email protected]> nit: in the last sentence of the commit message `s` is not needed in `matches`, and some word like `behavior` can be added for clarity after `interpreter`. FWIW whole patchset builds on our amd64 and arm64 machines and passes our subset of tests.

