> -----Original Message-----
> From: Stephen Hemminger <[email protected]>
> Sent: Friday, July 31, 2026 1:58 PM
> To: [email protected]
> Cc: Stephen Hemminger <[email protected]>; John Daley
> (johndale) <[email protected]>; Hyong Youb Kim (hyonkim)
> <[email protected]>; Bruce Richardson <[email protected]>;
> Konstantin Ananyev <[email protected]>
> Subject: [PATCH v6 06/24] net/enic: do not use deprecated rte_atomic64
> 
> The rte_atomic64 datatype and functions are deprecated.
> This driver was only using it for error statistics where atomic
> is not necessary. The DPDK PMD model is that statistics do
> not have to be exact in face of contention.
> 
> Signed-off-by: Stephen Hemminger <[email protected]>
> ---
>  drivers/net/enic/enic.h               |  6 +++---
>  drivers/net/enic/enic_compat.h        |  1 -
>  drivers/net/enic/enic_main.c          | 17 +++++++----------
>  drivers/net/enic/enic_rxtx.c          | 14 ++++++--------
>  drivers/net/enic/enic_rxtx_vec_avx2.c |  4 ++--
>  5 files changed, 18 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
> index 87f6b35fcd..0a8d4a29ca 100644
> --- a/drivers/net/enic/enic.h
> +++ b/drivers/net/enic/enic.h
> @@ -59,9 +59,9 @@
>  #define ENICPMD_RXQ_INTR_OFFSET 1
> 
>  struct enic_soft_stats {
> -     rte_atomic64_t rx_nombuf;
> -     rte_atomic64_t rx_packet_errors;
> -     rte_atomic64_t tx_oversized;
> +     uint64_t rx_nombuf;
> +     uint64_t rx_packet_errors;
> +     uint64_t tx_oversized;
>  };
> 
>  struct enic_memzone_entry {
> diff --git a/drivers/net/enic/enic_compat.h b/drivers/net/enic/enic_compat.h
> index 7cff6831b9..3ce4299e81 100644
> --- a/drivers/net/enic/enic_compat.h
> +++ b/drivers/net/enic/enic_compat.h
> @@ -9,7 +9,6 @@
>  #include <stdio.h>
>  #include <unistd.h>
> 
> -#include <rte_atomic.h>
>  #include <rte_malloc.h>
>  #include <rte_log.h>
>  #include <rte_io.h>
> diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
> index 2696fa77d4..fb9a5754c9 100644
> --- a/drivers/net/enic/enic_main.c
> +++ b/drivers/net/enic/enic_main.c
> @@ -83,17 +83,15 @@ static void enic_log_q_error(struct enic *enic)
>  static void enic_clear_soft_stats(struct enic *enic)
>  {
>       struct enic_soft_stats *soft_stats = &enic->soft_stats;
> -     rte_atomic64_clear(&soft_stats->rx_nombuf);
> -     rte_atomic64_clear(&soft_stats->rx_packet_errors);
> -     rte_atomic64_clear(&soft_stats->tx_oversized);
> +
> +     memset(soft_stats, 0, sizeof(*soft_stats));
>  }
> 
>  static void enic_init_soft_stats(struct enic *enic)
>  {
>       struct enic_soft_stats *soft_stats = &enic->soft_stats;
> -     rte_atomic64_init(&soft_stats->rx_nombuf);
> -     rte_atomic64_init(&soft_stats->rx_packet_errors);
> -     rte_atomic64_init(&soft_stats->tx_oversized);
> +
> +     memset(soft_stats, 0, sizeof(*soft_stats));
>       enic_clear_soft_stats(enic);
>  }
> 
> @@ -132,7 +130,7 @@ int enic_dev_stats_get(struct enic *enic, struct
> rte_eth_stats *r_stats,
>        * counted in ibytes even though truncated packets are dropped
>        * which can make ibytes be slightly higher than it should be.
>        */
> -     rx_packet_errors = rte_atomic64_read(&soft_stats->rx_packet_errors);
> +     rx_packet_errors = soft_stats->rx_packet_errors;
>       rx_truncated = rx_packet_errors - stats->rx.rx_errors;
> 
>       r_stats->ipackets = stats->rx.rx_frames_ok - rx_truncated;
> @@ -142,12 +140,11 @@ int enic_dev_stats_get(struct enic *enic, struct
> rte_eth_stats *r_stats,
>       r_stats->obytes = stats->tx.tx_bytes_ok;
> 
>       r_stats->ierrors = stats->rx.rx_errors + stats->rx.rx_drop;
> -     r_stats->oerrors = stats->tx.tx_errors
> -                        + rte_atomic64_read(&soft_stats->tx_oversized);
> +     r_stats->oerrors = stats->tx.tx_errors + soft_stats->tx_oversized;
> 
>       r_stats->imissed = stats->rx.rx_no_bufs + rx_truncated;
> 
> -     r_stats->rx_nombuf = rte_atomic64_read(&soft_stats->rx_nombuf);
> +     r_stats->rx_nombuf = soft_stats->rx_nombuf;
>       return 0;
>  }
> 
> diff --git a/drivers/net/enic/enic_rxtx.c b/drivers/net/enic/enic_rxtx.c
> index 549a153332..c87d947b93 100644
> --- a/drivers/net/enic/enic_rxtx.c
> +++ b/drivers/net/enic/enic_rxtx.c
> @@ -112,7 +112,7 @@ enic_recv_pkts_common(void *rx_queue, struct
> rte_mbuf **rx_pkts,
>               /* allocate a new mbuf */
>               nmb = rte_mbuf_raw_alloc(rq->mp);
>               if (nmb == NULL) {
> -                     rte_atomic64_inc(&enic->soft_stats.rx_nombuf);
> +                     ++enic->soft_stats.rx_nombuf;
>                       break;
>               }
> 
> @@ -185,7 +185,7 @@ enic_recv_pkts_common(void *rx_queue, struct
> rte_mbuf **rx_pkts,
>               }
>               if (unlikely(packet_error)) {
>                       rte_pktmbuf_free(first_seg);
> -                     rte_atomic64_inc(&enic->soft_stats.rx_packet_errors);
> +                     ++enic->soft_stats.rx_packet_errors;
>                       continue;
>               }
> 
> @@ -303,7 +303,7 @@ enic_noscatter_recv_pkts(void *rx_queue, struct
> rte_mbuf **rx_pkts,
>               if (unlikely(cqd->bytes_written_flags &
>                            CQ_ENET_RQ_DESC_FLAGS_TRUNCATED)) {
>                       rte_pktmbuf_free(*rxmb++);
> -                     rte_atomic64_inc(&enic->soft_stats.rx_packet_errors);
> +                     ++enic->soft_stats.rx_packet_errors;
>                       cqd++;
>                       continue;
>               }
> @@ -505,14 +505,12 @@ uint16_t enic_xmit_pkts(void *tx_queue, struct
> rte_mbuf **tx_pkts,
>       uint8_t offload_mode;
>       uint16_t header_len;
>       uint64_t tso;
> -     rte_atomic64_t *tx_oversized;
> 
>       enic_cleanup_wq(enic, wq);
>       wq_desc_avail = vnic_wq_desc_avail(wq);
>       head_idx = wq->head_idx;
>       desc_count = wq->ring.desc_count;
>       ol_flags_mask = RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_IP_CKSUM
> | RTE_MBUF_F_TX_L4_MASK;
> -     tx_oversized = &enic->soft_stats.tx_oversized;
> 
>       nb_pkts = RTE_MIN(nb_pkts, ENIC_TX_XMIT_MAX);
> 
> @@ -527,7 +525,7 @@ uint16_t enic_xmit_pkts(void *tx_queue, struct
> rte_mbuf **tx_pkts,
>               /* drop packet if it's too big to send */
>               if (unlikely(!tso && pkt_len > ENIC_TX_MAX_PKT_SIZE)) {
>                       rte_pktmbuf_free(tx_pkt);
> -                     rte_atomic64_inc(tx_oversized);
> +                     ++enic->soft_stats.tx_oversized;
>                       continue;
>               }
> 
> @@ -558,7 +556,7 @@ uint16_t enic_xmit_pkts(void *tx_queue, struct
> rte_mbuf **tx_pkts,
>                       if (unlikely(header_len == 0 || ((tx_pkt->tso_segsz +
>                           header_len) > ENIC_TX_MAX_PKT_SIZE))) {
>                               rte_pktmbuf_free(tx_pkt);
> -                             rte_atomic64_inc(tx_oversized);
> +                             ++enic->soft_stats.tx_oversized;
>                               continue;
>                       }
> 
> @@ -681,7 +679,7 @@ static void enqueue_simple_pkts(struct rte_mbuf
> **pkts,
>                */
>               if (unlikely(p->pkt_len > ENIC_TX_MAX_PKT_SIZE)) {
>                       desc->length = ENIC_TX_MAX_PKT_SIZE;
> -                     rte_atomic64_inc(&enic->soft_stats.tx_oversized);
> +                     ++enic->soft_stats.tx_oversized;
>               }
>               desc++;
>       }
> diff --git a/drivers/net/enic/enic_rxtx_vec_avx2.c
> b/drivers/net/enic/enic_rxtx_vec_avx2.c
> index 600efff270..53589ab788 100644
> --- a/drivers/net/enic/enic_rxtx_vec_avx2.c
> +++ b/drivers/net/enic/enic_rxtx_vec_avx2.c
> @@ -81,7 +81,7 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct
> rte_mbuf **rx_pkts,
>               if (unlikely(cqd->bytes_written_flags &
>                            CQ_ENET_RQ_DESC_FLAGS_TRUNCATED)) {
>                       rte_pktmbuf_free(*rxmb++);
> -                     rte_atomic64_inc(&enic->soft_stats.rx_packet_errors);
> +                     ++enic->soft_stats.rx_packet_errors;
>               } else {
>                       *rx++ = rx_one(cqd, *rxmb++, enic);
>               }
> @@ -761,7 +761,7 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct
> rte_mbuf **rx_pkts,
>               if (unlikely(cqd->bytes_written_flags &
>                            CQ_ENET_RQ_DESC_FLAGS_TRUNCATED)) {
>                       rte_pktmbuf_free(*rxmb++);
> -                     rte_atomic64_inc(&enic->soft_stats.rx_packet_errors);
> +                     ++enic->soft_stats.rx_packet_errors;
>               } else {
>                       *rx++ = rx_one(cqd, *rxmb++, enic);
>               }
> --
> 2.53.0

Acked-by: Hyong Youb Kim <[email protected]>

Thanks.
-Hyong

Reply via email to