The old rte_atomic16 functions are deprecated.
Replace with rte_stdatomic for managing warning flag.
Can also use fetch_or and exchange to avoid CAS here.

Signed-off-by: Stephen Hemminger <[email protected]>
---
 drivers/net/bonding/eth_bond_8023ad_private.h |  4 ++--
 drivers/net/bonding/rte_eth_bond_8023ad.c     | 18 ++++--------------
 2 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/drivers/net/bonding/eth_bond_8023ad_private.h 
b/drivers/net/bonding/eth_bond_8023ad_private.h
index ab7d15f81a..1756c9307d 100644
--- a/drivers/net/bonding/eth_bond_8023ad_private.h
+++ b/drivers/net/bonding/eth_bond_8023ad_private.h
@@ -9,7 +9,7 @@
 
 #include <rte_ether.h>
 #include <rte_byteorder.h>
-#include <rte_atomic.h>
+#include <rte_stdatomic.h>
 #include <rte_flow.h>
 
 #include "rte_eth_bond_8023ad.h"
@@ -143,7 +143,7 @@ struct port {
        volatile uint64_t rx_marker_timer;
 
        uint64_t warning_timer;
-       volatile uint16_t warnings_to_show;
+       RTE_ATOMIC(uint16_t) warnings_to_show;
 
        /** Memory pool used to allocate slow queues */
        struct rte_mempool *slow_pool;
diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c 
b/drivers/net/bonding/rte_eth_bond_8023ad.c
index ba88f6d261..641aae1a67 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -171,27 +171,17 @@ timer_is_running(uint64_t *timer)
 static void
 set_warning_flags(struct port *port, uint16_t flags)
 {
-       int retval;
-       uint16_t old;
-       uint16_t new_flag = 0;
-
-       do {
-               old = port->warnings_to_show;
-               new_flag = old | flags;
-               retval = rte_atomic16_cmpset(&port->warnings_to_show, old, 
new_flag);
-       } while (unlikely(retval == 0));
+       rte_atomic_fetch_or_explicit(&port->warnings_to_show, flags, 
rte_memory_order_relaxed);
 }
 
 static void
 show_warnings(uint16_t member_id)
 {
        struct port *port = &bond_mode_8023ad_ports[member_id];
-       uint8_t warnings;
-
-       do {
-               warnings = port->warnings_to_show;
-       } while (rte_atomic16_cmpset(&port->warnings_to_show, warnings, 0) == 
0);
+       uint16_t warnings;
 
+       warnings = rte_atomic_exchange_explicit(&port->warnings_to_show, 0,
+                                               rte_memory_order_relaxed);
        if (!warnings)
                return;
 
-- 
2.53.0

Reply via email to