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

