RE: [PATCH v6 06/24] net/enic: do not use deprecated rte_atomic64
"Hyong Youb Kim (hyonkim)" <[email protected]> Fri, 31 Jul 2026 06:09:45 +0000
| Newsgroups | org.dpdk.dev |
|---|---|
| Message-ID | <IA3PR11MB8987CB41FEACCDBF2E17B2F0BFC82@IA3PR11MB8987.namprd11.prod.outlook.com> |
> -----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 >=20 > 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. >=20 > 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(-) >=20 > 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 >=20 > 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; > }; >=20 > struct enic_memzone_entry { > diff --git a/drivers/net/enic/enic_compat.h b/drivers/net/enic/enic_compa= t.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> >=20 > -#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 =3D &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)); > } >=20 > static void enic_init_soft_stats(struct enic *enic) > { > struct enic_soft_stats *soft_stats =3D &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); > } >=20 > @@ -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 =3D rte_atomic64_read(&soft_stats->rx_packet_errors); > + rx_packet_errors =3D soft_stats->rx_packet_errors; > rx_truncated =3D rx_packet_errors - stats->rx.rx_errors; >=20 > r_stats->ipackets =3D 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 =3D stats->tx.tx_bytes_ok; >=20 > r_stats->ierrors =3D stats->rx.rx_errors + stats->rx.rx_drop; > - r_stats->oerrors =3D stats->tx.tx_errors > - + rte_atomic64_read(&soft_stats->tx_oversized); > + r_stats->oerrors =3D stats->tx.tx_errors + soft_stats->tx_oversized; >=20 > r_stats->imissed =3D stats->rx.rx_no_bufs + rx_truncated; >=20 > - r_stats->rx_nombuf =3D rte_atomic64_read(&soft_stats->rx_nombuf); > + r_stats->rx_nombuf =3D soft_stats->rx_nombuf; > return 0; > } >=20 > 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 =3D rte_mbuf_raw_alloc(rq->mp); > if (nmb =3D=3D NULL) { > - rte_atomic64_inc(&enic->soft_stats.rx_nombuf); > + ++enic->soft_stats.rx_nombuf; > break; > } >=20 > @@ -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; > } >=20 > @@ -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; >=20 > enic_cleanup_wq(enic, wq); > wq_desc_avail =3D vnic_wq_desc_avail(wq); > head_idx =3D wq->head_idx; > desc_count =3D wq->ring.desc_count; > ol_flags_mask =3D RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_IP_CKSUM > | RTE_MBUF_F_TX_L4_MASK; > - tx_oversized =3D &enic->soft_stats.tx_oversized; >=20 > nb_pkts =3D RTE_MIN(nb_pkts, ENIC_TX_XMIT_MAX); >=20 > @@ -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; > } >=20 > @@ -558,7 +556,7 @@ uint16_t enic_xmit_pkts(void *tx_queue, struct > rte_mbuf **tx_pkts, > if (unlikely(header_len =3D=3D 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; > } >=20 > @@ -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 =3D 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++ =3D 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++ =3D rx_one(cqd, *rxmb++, enic); > } > -- > 2.53.0 Acked-by: Hyong Youb Kim <[email protected]> Thanks. -Hyong