From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Hemant Agrawal <hemant.agrawal@nxp.com>,
Sachin Saxena <sachin.saxena@nxp.com>,
Jerin Jacob <jerinj@marvell.com>
Subject: [PATCH v6 18/24] drivers/event: replace rte_atomic32 in selftests
Date: Thu, 30 Jul 2026 21:57:56 -0700 [thread overview]
Message-ID: <20260731045948.769926-19-stephen@networkplumber.org> (raw)
In-Reply-To: <20260731045948.769926-1-stephen@networkplumber.org>
Last callers in these selftests of the rte_atomicNN_*() family,
which is being deprecated.
Convert total_events from rte_atomic32_t to RTE_ATOMIC(uint32_t)
for the stack-local instance and __rte_atomic uint32_t * for the
pointer in test_core_param. Switch reads and updates to
rte_atomic_*_explicit().
Reads in the busy-loop checks and progress logs use relaxed: the
counter is purely a "drained yet?" signal and no data is published
through it. The fetch_sub on the dequeue path uses release in
octeontx (preserving the publish-after-mbuf-free ordering already
implied by the seq_cst sub it replaces) and relaxed in dpaa2.
The stack-local atomic_total_events is initialized by direct
assignment instead of rte_atomic32_set(), since it is written
before any worker is launched.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/event/dpaa2/dpaa2_eventdev_selftest.c | 26 ++++----
drivers/event/octeontx/ssovf_evdev_selftest.c | 61 ++++++++++---------
2 files changed, 47 insertions(+), 40 deletions(-)
diff --git a/drivers/event/dpaa2/dpaa2_eventdev_selftest.c b/drivers/event/dpaa2/dpaa2_eventdev_selftest.c
index 9d4938efe6..2c688bd194 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev_selftest.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev_selftest.c
@@ -2,7 +2,7 @@
* Copyright 2018-2019 NXP
*/
-#include <rte_atomic.h>
+#include <rte_stdatomic.h>
#include <rte_common.h>
#include <rte_cycles.h>
#include <rte_debug.h>
@@ -49,7 +49,7 @@ struct event_attr {
};
struct test_core_param {
- rte_atomic32_t *total_events;
+ __rte_atomic uint32_t *total_events;
uint64_t dequeue_tmo_ticks;
uint8_t port;
uint8_t sched_type;
@@ -444,10 +444,10 @@ worker_multi_port_fn(void *arg)
struct rte_event ev;
uint16_t valid_event;
uint8_t port = param->port;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
int ret;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1, 0);
if (!valid_event)
continue;
@@ -455,13 +455,15 @@ worker_multi_port_fn(void *arg)
ret = validate_event(&ev);
RTE_TEST_ASSERT_SUCCESS(ret, "Failed to validate event");
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+
+ rte_atomic_fetch_sub_explicit(total_events, 1,
+ rte_memory_order_relaxed);
}
return 0;
}
static int
-wait_workers_to_join(int lcore, const rte_atomic32_t *count)
+wait_workers_to_join(int lcore, const __rte_atomic uint32_t *count)
{
uint64_t cycles, print_cycles;
@@ -472,15 +474,15 @@ wait_workers_to_join(int lcore, const rte_atomic32_t *count)
uint64_t new_cycles = rte_get_timer_cycles();
if (new_cycles - print_cycles > rte_get_timer_hz()) {
- dpaa2_evdev_dbg("\r%s: events %d", __func__,
- rte_atomic32_read(count));
+ dpaa2_evdev_dbg("\r%s: events %u", __func__,
+ rte_atomic_load_explicit(count, rte_memory_order_relaxed));
print_cycles = new_cycles;
}
if (new_cycles - cycles > rte_get_timer_hz() * 10) {
dpaa2_evdev_info(
- "%s: No schedules for seconds, deadlock (%d)",
+ "%s: No schedules for seconds, deadlock (%u)",
__func__,
- rte_atomic32_read(count));
+ rte_atomic_load_explicit(count, rte_memory_order_relaxed));
rte_event_dev_dump(evdev, stdout);
cycles = new_cycles;
return -1;
@@ -500,13 +502,13 @@ launch_workers_and_wait(int (*main_worker)(void *),
int w_lcore;
int ret;
struct test_core_param *param;
- rte_atomic32_t atomic_total_events;
+ RTE_ATOMIC(uint32_t) atomic_total_events;
uint64_t dequeue_tmo_ticks;
if (!nb_workers)
return 0;
- rte_atomic32_set(&atomic_total_events, total_events);
+ atomic_total_events = total_events;
RTE_BUILD_BUG_ON(NUM_PACKETS < MAX_EVENTS);
param = malloc(sizeof(struct test_core_param) * nb_workers);
diff --git a/drivers/event/octeontx/ssovf_evdev_selftest.c b/drivers/event/octeontx/ssovf_evdev_selftest.c
index b54ae126d2..5eeed2b2ce 100644
--- a/drivers/event/octeontx/ssovf_evdev_selftest.c
+++ b/drivers/event/octeontx/ssovf_evdev_selftest.c
@@ -4,7 +4,7 @@
#include <stdlib.h>
-#include <rte_atomic.h>
+#include <rte_stdatomic.h>
#include <rte_common.h>
#include <rte_cycles.h>
#include <rte_debug.h>
@@ -84,7 +84,7 @@ seqn_list_check(int limit)
}
struct test_core_param {
- rte_atomic32_t *total_events;
+ __rte_atomic uint32_t *total_events;
uint64_t dequeue_tmo_ticks;
uint8_t port;
uint8_t sched_type;
@@ -558,10 +558,10 @@ worker_multi_port_fn(void *arg)
struct rte_event ev;
uint16_t valid_event;
uint8_t port = param->port;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
int ret;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1, 0);
if (!valid_event)
continue;
@@ -569,13 +569,14 @@ worker_multi_port_fn(void *arg)
ret = validate_event(&ev);
RTE_TEST_ASSERT_SUCCESS(ret, "Failed to validate event");
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+
+ rte_atomic_fetch_sub_explicit(total_events, 1, rte_memory_order_release);
}
return 0;
}
static inline int
-wait_workers_to_join(int lcore, const rte_atomic32_t *count)
+wait_workers_to_join(int lcore, const __rte_atomic uint32_t *count)
{
uint64_t cycles, print_cycles;
RTE_SET_USED(count);
@@ -583,17 +584,16 @@ wait_workers_to_join(int lcore, const rte_atomic32_t *count)
print_cycles = cycles = rte_get_timer_cycles();
while (rte_eal_get_lcore_state(lcore) != WAIT) {
uint64_t new_cycles = rte_get_timer_cycles();
+ uint32_t cur_count = rte_atomic_load_explicit(count, rte_memory_order_relaxed);
if (new_cycles - print_cycles > rte_get_timer_hz()) {
- ssovf_log_dbg("\r%s: events %d", __func__,
- rte_atomic32_read(count));
+ ssovf_log_dbg("\r%s: events %u", __func__, cur_count);
print_cycles = new_cycles;
}
if (new_cycles - cycles > rte_get_timer_hz() * 10) {
ssovf_log_dbg(
- "%s: No schedules for seconds, deadlock (%d)",
- __func__,
- rte_atomic32_read(count));
+ "%s: No schedules for seconds, deadlock (%u)",
+ __func__, cur_count);
rte_event_dev_dump(evdev, stdout);
cycles = new_cycles;
return -1;
@@ -613,13 +613,13 @@ launch_workers_and_wait(int (*main_worker)(void *),
int w_lcore;
int ret;
struct test_core_param *param;
- rte_atomic32_t atomic_total_events;
+ RTE_ATOMIC(uint32_t) atomic_total_events;
uint64_t dequeue_tmo_ticks;
if (!nb_workers)
return 0;
- rte_atomic32_set(&atomic_total_events, total_events);
+ atomic_total_events = total_events;
seqn_list_init();
param = malloc(sizeof(struct test_core_param) * nb_workers);
@@ -889,10 +889,10 @@ worker_flow_based_pipeline(void *arg)
uint16_t valid_event;
uint8_t port = param->port;
uint8_t new_sched_type = param->sched_type;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
uint64_t dequeue_tmo_ticks = param->dequeue_tmo_ticks;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1,
dequeue_tmo_ticks);
if (!valid_event)
@@ -910,7 +910,8 @@ worker_flow_based_pipeline(void *arg)
} else if (ev.sub_event_type == 1) { /* Events from stage 1*/
if (seqn_list_update(*rte_event_pmd_selftest_seqn(ev.mbuf)) == 0) {
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+ rte_atomic_fetch_sub_explicit(total_events, 1,
+ rte_memory_order_release);
} else {
ssovf_log_dbg("Failed to update seqn_list");
return -1;
@@ -1044,10 +1045,10 @@ worker_group_based_pipeline(void *arg)
uint16_t valid_event;
uint8_t port = param->port;
uint8_t new_sched_type = param->sched_type;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
uint64_t dequeue_tmo_ticks = param->dequeue_tmo_ticks;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1,
dequeue_tmo_ticks);
if (!valid_event)
@@ -1065,7 +1066,8 @@ worker_group_based_pipeline(void *arg)
} else if (ev.queue_id == 1) { /* Events from stage 1(group 1)*/
if (seqn_list_update(*rte_event_pmd_selftest_seqn(ev.mbuf)) == 0) {
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+ rte_atomic_fetch_sub_explicit(total_events, 1,
+ rte_memory_order_release);
} else {
ssovf_log_dbg("Failed to update seqn_list");
return -1;
@@ -1203,16 +1205,17 @@ worker_flow_based_pipeline_max_stages_rand_sched_type(void *arg)
struct rte_event ev;
uint16_t valid_event;
uint8_t port = param->port;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1, 0);
if (!valid_event)
continue;
if (ev.sub_event_type == 255) { /* last stage */
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+ rte_atomic_fetch_sub_explicit(total_events, 1,
+ rte_memory_order_release);
} else {
ev.event_type = RTE_EVENT_TYPE_CPU;
ev.sub_event_type++;
@@ -1278,16 +1281,17 @@ worker_queue_based_pipeline_max_stages_rand_sched_type(void *arg)
RTE_EVENT_DEV_ATTR_QUEUE_COUNT,
&queue_count), "Queue count get failed");
uint8_t nr_queues = queue_count;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1, 0);
if (!valid_event)
continue;
if (ev.queue_id == nr_queues - 1) { /* last stage */
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+ rte_atomic_fetch_sub_explicit(total_events, 1,
+ rte_memory_order_release);
} else {
ev.event_type = RTE_EVENT_TYPE_CPU;
ev.queue_id++;
@@ -1320,16 +1324,17 @@ worker_mixed_pipeline_max_stages_rand_sched_type(void *arg)
RTE_EVENT_DEV_ATTR_QUEUE_COUNT,
&queue_count), "Queue count get failed");
uint8_t nr_queues = queue_count;
- rte_atomic32_t *total_events = param->total_events;
+ __rte_atomic uint32_t *total_events = param->total_events;
- while (rte_atomic32_read(total_events) > 0) {
+ while (rte_atomic_load_explicit(total_events, rte_memory_order_relaxed) > 0) {
valid_event = rte_event_dequeue_burst(evdev, port, &ev, 1, 0);
if (!valid_event)
continue;
if (ev.queue_id == nr_queues - 1) { /* Last stage */
rte_pktmbuf_free(ev.mbuf);
- rte_atomic32_sub(total_events, 1);
+ rte_atomic_fetch_sub_explicit(total_events, 1,
+ rte_memory_order_release);
} else {
ev.event_type = RTE_EVENT_TYPE_CPU;
ev.queue_id++;
--
2.53.0
next prev parent reply other threads:[~2026-07-31 5:01 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-21 4:17 [RFC 0/7] prepare deprecation of rte_atomicNN_*() family Stephen Hemminger
2026-05-21 4:17 ` [RFC 1/7] doc: update versions in deprecation file Stephen Hemminger
2026-05-21 4:17 ` [RFC 2/7] eal: reimplement rte_smp_*mb with rte_atomic_thread_fence Stephen Hemminger
2026-05-21 15:43 ` Wathsala Vithanage
2026-05-21 4:17 ` [RFC 3/7] ring: use C11 atomic operations for MP/SP head/tail Stephen Hemminger
2026-05-21 15:57 ` Wathsala Vithanage
2026-05-21 4:17 ` [RFC 4/7] net/zxdh: work around GCC bitfield uninit false positive Stephen Hemminger
2026-05-21 4:17 ` [RFC 5/7] net/bonding: use stdatomic Stephen Hemminger
2026-05-21 4:17 ` [RFC 6/7] net/nbl: remove unused rte_atomic16 field Stephen Hemminger
2026-05-21 4:17 ` [RFC 7/7] config: use RTE_FORCE_INTRINSICS on all platforms Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 00/11] prepare deprecation of rte_atomicNN_*() family Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 01/11] eal: use intrinsics for rte_atomic on all platforms Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 02/11] eal: reimplement rte_smp_*mb with rte_atomic_thread_fence Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 03/11] ring: use C11 atomic operations for MP/SP head/tail Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 04/11] net/bonding: use stdatomic Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 05/11] net/nbl: remove unused rte_atomic16 field Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 06/11] net/ena: replace use of rte_atomicNN Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 07/11] net/failsafe: convert to stdatomic Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 08/11] net/enic: do not use deprecated rte_atomic64 Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 09/11] net/pfe: use ethdev linkstatus helpers Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 10/11] net/sfc: replace rte_atomic with stdatomic Stephen Hemminger
2026-05-21 18:04 ` [RFC v2 11/11] crypto/ccp: replace use of rte_atomic64 " Stephen Hemminger
2026-05-22 14:19 ` [RFC v2 00/11] prepare deprecation of rte_atomicNN_*() family Bruce Richardson
2026-05-22 14:45 ` Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 00/27] deprecate rte_atomicNN family Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 01/27] eal: use intrinsics for rte_atomic on all platforms Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 02/27] eal: reimplement rte_smp_*mb with rte_atomic_thread_fence Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 03/27] ring: use compare-and-swap wrapper Stephen Hemminger
2026-05-25 7:41 ` Konstantin Ananyev
2026-05-25 14:31 ` Stephen Hemminger
2026-05-25 15:35 ` Stephen Hemminger
2026-05-25 15:47 ` Morten Brørup
2026-05-23 19:16 ` [PATCH v3 04/27] bpf: replace atomic op macro with typed helpers Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 05/27] net/bonding: use stdatomic Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 06/27] net/nbl: remove unused rte_atomic16 field Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 07/27] net/ena: replace use of rte_atomicNN Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 08/27] net/failsafe: convert to stdatomic Stephen Hemminger
2026-05-23 19:16 ` [PATCH v3 09/27] net/enic: do not use deprecated rte_atomic64 Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 00/27] deprecate rte_atomicNN family Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 01/27] eal: use intrinsics for rte_atomic on all platforms Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 02/27] eal: reimplement rte_smp_*mb with rte_atomic_thread_fence Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 03/27] ring: use compare-and-swap wrapper Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 04/27] bpf: replace atomic op macro with typed helpers Stephen Hemminger
2026-05-25 10:49 ` Marat Khalili
2026-05-23 19:56 ` [PATCH v3 05/27] net/bonding: use stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 06/27] net/nbl: remove unused rte_atomic16 field Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 07/27] net/ena: replace use of rte_atomicNN Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 08/27] net/failsafe: convert to stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 09/27] net/enic: do not use deprecated rte_atomic64 Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 10/27] net/pfe: use ethdev linkstatus helpers Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 11/27] net/sfc: replace rte_atomic with stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 12/27] crypto/ccp: replace use of rte_atomic64 " Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 13/27] bus/dpaa: replace rte_atomic16 " Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 14/27] drivers: " Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 15/27] net/netvsc: replace rte_atomic32 " Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 16/27] event/sw: convert from rte_atomic32 to stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 17/27] bus/vmbus: convert from rte_atomic " Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 18/27] common/dpaax: remove unused atomic macros Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 19/27] net/bnx2x: convert from rte_atomic32 to stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 20/27] bus/fslmc: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 21/27] drivers/event: replace rte_atomic32 in selftests Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 22/27] net/hinic: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 23/27] net/txgbe: " Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 24/27] net/vhost: use stdatomic instead of rte_atomic32 Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 25/27] vdpa/ifc: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 26/27] test/atomic: suppress deprecation warnings for legacy APIs Stephen Hemminger
2026-05-23 19:56 ` [PATCH v3 27/27] eal: mark rte_atomicNN as deprecated Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 00/27] deprecate rte_atomicNN family Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 01/27] eal: use intrinsics for rte_atomic on all platforms Stephen Hemminger
2026-06-01 18:23 ` Konstantin Ananyev
2026-05-26 23:23 ` [PATCH v4 02/27] eal: reimplement rte_smp_*mb with rte_atomic_thread_fence Stephen Hemminger
2026-06-01 18:24 ` Konstantin Ananyev
2026-05-26 23:23 ` [PATCH v4 03/27] ring: unify memory model on C11, remove atomic32 Stephen Hemminger
2026-06-01 18:18 ` Konstantin Ananyev
2026-06-01 21:05 ` Stephen Hemminger
2026-06-01 21:18 ` Stephen Hemminger
2026-06-01 22:07 ` Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 04/27] bpf: use C11 atomics in BPF_ST_ATOMIC_REG Stephen Hemminger
2026-05-27 16:52 ` Marat Khalili
2026-05-26 23:23 ` [PATCH v4 05/27] net/bonding: use stdatomic Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 06/27] net/nbl: remove unused rte_atomic16 field Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 07/27] net/ena: replace use of rte_atomicNN Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 08/27] net/failsafe: convert to stdatomic Stephen Hemminger
2026-05-26 23:23 ` [PATCH v4 09/27] net/enic: do not use deprecated rte_atomic64 Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 10/27] net/pfe: use ethdev linkstatus helpers Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 11/27] net/sfc: replace rte_atomic with stdatomic Stephen Hemminger
2026-06-01 9:22 ` Andrew Rybchenko
2026-05-26 23:24 ` [PATCH v4 12/27] crypto/ccp: replace use of rte_atomic64 " Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 13/27] bus/dpaa: replace rte_atomic16 " Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 14/27] drivers: " Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 15/27] net/netvsc: replace rte_atomic32 " Stephen Hemminger
2026-05-27 0:29 ` [EXTERNAL] " Long Li
2026-05-31 16:35 ` Stephen Hemminger
2026-06-25 2:32 ` Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 16/27] event/sw: convert from rte_atomic32 to stdatomic Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 17/27] bus/vmbus: convert from rte_atomic " Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 18/27] common/dpaax: use stdatomic instead of rte_atomic Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 19/27] net/bnx2x: convert from rte_atomic32 to stdatomic Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 20/27] bus/fslmc: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 21/27] drivers/event: replace rte_atomic32 in selftests Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 22/27] net/hinic: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 23/27] net/txgbe: " Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 24/27] net/vhost: use stdatomic instead of rte_atomic32 Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 25/27] vdpa/ifc: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 26/27] test/atomic: suppress deprecation warnings for legacy APIs Stephen Hemminger
2026-05-26 23:24 ` [PATCH v4 27/27] eal: mark rte_atomicNN as deprecated Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 00/24] replace use of rte_atomicNN Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 01/24] bpf: use C11 atomics in BPF_ST_ATOMIC_REG Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 02/24] net/bonding: use stdatomic Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 03/24] net/nbl: remove unused rte_atomic16 field Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 04/24] net/ena: replace use of rte_atomicNN Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 05/24] net/failsafe: convert to stdatomic Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 06/24] net/enic: do not use deprecated rte_atomic64 Stephen Hemminger
2026-07-31 6:09 ` Hyong Youb Kim (hyonkim)
2026-07-31 4:57 ` [PATCH v6 07/24] net/pfe: use ethdev linkstatus helpers Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 08/24] net/sfc: replace rte_atomic with stdatomic Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 09/24] crypto/ccp: replace use of rte_atomic64 " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 10/24] bus/dpaa: replace rte_atomic16 " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 11/24] bus/fslmc: " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 12/24] net/netvsc: replace rte_atomic32 " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 13/24] event/sw: convert from rte_atomic32 to stdatomic Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 14/24] bus/vmbus: convert from rte_atomic " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 15/24] common/dpaax: use stdatomic instead of rte_atomic Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 16/24] net/bnx2x: convert from rte_atomic32 to stdatomic Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 17/24] bus/fslmc: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-07-31 4:57 ` Stephen Hemminger [this message]
2026-07-31 4:57 ` [PATCH v6 19/24] net/hinic: " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 20/24] net/txgbe: " Stephen Hemminger
2026-07-31 4:57 ` [PATCH v6 21/24] net/vhost: use stdatomic instead of rte_atomic32 Stephen Hemminger
2026-07-31 4:58 ` [PATCH v6 22/24] vdpa/ifc: replace rte_atomic32 with stdatomic Stephen Hemminger
2026-07-31 4:58 ` [PATCH v6 23/24] test/atomic: suppress deprecation warnings for legacy APIs Stephen Hemminger
2026-07-31 4:58 ` [PATCH v6 24/24] eal: deprecate rte_atomicNN functions Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260731045948.769926-19-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=hemant.agrawal@nxp.com \
--cc=jerinj@marvell.com \
--cc=sachin.saxena@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox