From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A886C88E72 for ; Thu, 17 Sep 2026 20:11:50 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 203CA42FD7; Thu, 17 Sep 2026 22:11:30 +0200 (CEST) Received: from mail-pj2-f12.google.com (mail-pj2-f12.google.com [74.125.227.140]) by mails.dpdk.org (Postfix) with ESMTP id 3E96D42FB5 for ; Thu, 17 Sep 2026 22:11:27 +0200 (CEST) Received: by mail-pj2-f12.google.com with SMTP id d9443c01a7336-2dd77300825so398985ad.1 for ; Thu, 17 Sep 2026 13:11:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20251104.gappssmtp.com; s=20251104; t=1789675886; x=1790280686; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hraQ4IxZ5IoxEIrc1bfyi+WvtZ2RM1Y3cDQByR5DwFU=; b=QNoCONHG34rthNN5nMaX0nDADgowOzfHU4Pmq0qnmxNMv74wQ1gq8BW7jyxTJJSuk0 HtEqGjKp9S2XQzvue9Yd4zrcrBmr9vlSHXIPJLKq4qbnYb7sRtFt/J/9TTLkKtLdo2Ls t3+rA+lgAOGl0aQsTtqXffDe+doWSzhMLH3TDImuMqhlK5V+mqQBhxfBmnXZFtFarzIW oGoqq2ENJsDxNxq45tUByHP5nXG7UXzgCUo30643tpD+P6oIZ6geDqDTfw/KsaRDl/pQ aDTbkiQRAmUxrq7rB2PJkSbDf2SF93HKGOibx8vQ2MhZkg11p0KFMdVDubJd+j7ceAF2 WEBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789675886; x=1790280686; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hraQ4IxZ5IoxEIrc1bfyi+WvtZ2RM1Y3cDQByR5DwFU=; b=OhqdmclZndpl3vYx69Z715Wt2tBjhrQIoNKrn0VN3ce71PVPwNTaZAA0AAPObUSihx cX/n1OhWIvcGYjtfcsfuqZadrHO0U1+2VKaVnIdCt9Ib3NBcxvUhCGPfHxCVrNGNh2FB oCDlsJFeF4dkVnvtdauWV4UTE85GNh/ouytZnRHc0iCj6jUKylp7t6fHHhhepHnO7u0h xheCCd4ATr2cx+FdfY4vIKt27V7yZS08aaRdkbHAT9AUxUgCdPjh2NGu7hj4iER8Kj4t +pWUDyagEkQmFM+TWfEQF4v+MguvVTQnJg8gCnpMALa4lDWIid7YORyTN0q3FusjqPjB KV3Q== X-Gm-Message-State: AFuF++nutFrxaK5C9o8rfyUkroPI9BvdXEbuyPlubLPs51FFRv9bzDvk eYM4ALMq5+3ocZJc81CwE4Exkbf9ynILNUzQhE5aaroQBO2hgCKx3G/qSRF7FHiWDuq9WMrXc7W ptN1v X-Gm-Gg: AYBFou0xh/Z9MIcqiJ8aZAirSbWTpkuYA52UaW9Z9rXAcvHVQqkX+NH/pOFNgG16oz6 ZF9E04H1gtFogpyyqUtsq45IWhe20oYCV++tRdTqDoa1Spoze4E5atQoP65GwXPCBGDHpn3O0Wg 1ObiDMT1xEaXYBcw2irKwAwDJby94iF/D2nyjSKL+w2+uubmPZm6bUII3Ybi+Zi3HQpHA/mRLuM boSywGOojaQgkm6/Wy3+AYifCxQbxpcyBTyT/7nMlMyXyq1yr6JL6WB6Zzv6ZzODgPKY7Lc6ehy RcH9rQ0hFCyDO1JMR3PxILn24QwriCn2EU5HE0u2MlcT3uGnBYT/q8YLWax2sIFK2OCguL2oWfp KoZBLPZ4XOM6I/MSmKib+ojHOLql/1z0Mqm6RBPTLsmc04XKNy9Nks1WDqY/oZkWb6YNOI6nhdd RFYH+ynQ39GV1c+dBm7rLRW2CbZHMF8u6TNQrGW73SYX9baLEWfJLte8L/Hw5dLua8yqbCVZZbZ kT+gyASzaWxVGtkhHZ3dAA9aQlDoMvxSXSxww== X-Received: by 2002:a17:903:2ec3:b0:2dd:68a4:16f1 with SMTP id d9443c01a7336-2ddb1ade65bmr6503435ad.11.1789675886396; Thu, 17 Sep 2026 13:11:26 -0700 (PDT) Received: from phoenix.lan (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2dd89f0870bsm31368345ad.63.2026.09.17.13.11.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 13:11:26 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Shai Brandes , Evgeny Schemeilin , Amit Bernstein , Wajeeh Atrash Subject: [PATCH v8 04/25] net/ena: replace use of rte_atomicNN Date: Thu, 17 Sep 2026 13:10:08 -0700 Message-ID: <20260917201119.2168234-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260917201119.2168234-1-stephen@networkplumber.org> References: <20260521042043.1590536-1-stephen@networkplumber.org> <20260917201119.2168234-1-stephen@networkplumber.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Convert the legacy rte_atomicNN operations to stdatomic. * Remove variable ena_alloc_cnt is defined by not used. It is a leftover from previous memzone naming scheme. * Convert the legacy rte_atomic32_t and rte_atomic32_{inc,dec,set,read} macros to C11 stdatomic equivalents. Memory ordering is kept at seq_cst, matching the implicit ordering of the legacy API. * Do not use rte_atomic for statistics The DPDK PMD model is that statistics do not have to be exact in face of contention. Signed-off-by: Stephen Hemminger --- drivers/net/ena/base/ena_plat_dpdk.h | 14 +++++++++----- drivers/net/ena/ena_ethdev.c | 21 ++++++--------------- drivers/net/ena/ena_ethdev.h | 7 +++---- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h index c84420de22..83b354d9da 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -40,7 +40,7 @@ typedef uint64_t dma_addr_t; #endif #define ENA_PRIu64 PRIu64 -#define ena_atomic32_t rte_atomic32_t +typedef RTE_ATOMIC(int32_t) ena_atomic32_t; #define ena_mem_handle_t const struct rte_memzone * #define SZ_256 (256U) @@ -267,10 +267,14 @@ ena_mem_alloc_coherent(struct rte_eth_dev_data *data, size_t size, #define ENA_REG_READ32(bus, reg) \ __extension__ ({ (void)(bus); rte_read32_relaxed((reg)); }) -#define ATOMIC32_INC(i32_ptr) rte_atomic32_inc(i32_ptr) -#define ATOMIC32_DEC(i32_ptr) rte_atomic32_dec(i32_ptr) -#define ATOMIC32_SET(i32_ptr, val) rte_atomic32_set(i32_ptr, val) -#define ATOMIC32_READ(i32_ptr) rte_atomic32_read(i32_ptr) +#define ATOMIC32_INC(i32_ptr) \ + rte_atomic_fetch_add_explicit((i32_ptr), 1, rte_memory_order_seq_cst) +#define ATOMIC32_DEC(i32_ptr) \ + rte_atomic_fetch_sub_explicit((i32_ptr), 1, rte_memory_order_seq_cst) +#define ATOMIC32_SET(i32_ptr, val) \ + rte_atomic_store_explicit((i32_ptr), (val), rte_memory_order_seq_cst) +#define ATOMIC32_READ(i32_ptr) \ + rte_atomic_load_explicit((i32_ptr), rte_memory_order_seq_cst) #define msleep(x) rte_delay_us(x * 1000) #define udelay(x) rte_delay_us(x) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index ad2ac6dbbf..e874f264b4 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -121,12 +121,6 @@ struct ena_stats { */ #define ENA_DEVARG_ENABLE_FRAG_BYPASS "enable_frag_bypass" -/* - * Each rte_memzone should have unique name. - * To satisfy it, count number of allocation and add it to name. - */ -rte_atomic64_t ena_alloc_cnt; - static const struct ena_stats ena_stats_global_strings[] = { ENA_STAT_GLOBAL_ENTRY(wd_expired), ENA_STAT_GLOBAL_ENTRY(dev_start), @@ -1249,10 +1243,7 @@ static void ena_stats_restart(struct rte_eth_dev *dev) { struct ena_adapter *adapter = dev->data->dev_private; - rte_atomic64_init(&adapter->drv_stats->ierrors); - rte_atomic64_init(&adapter->drv_stats->oerrors); - rte_atomic64_init(&adapter->drv_stats->rx_nombuf); - adapter->drv_stats->rx_drops = 0; + memset(adapter->drv_stats, 0, sizeof(struct ena_driver_stats)); } static int ena_stats_get(struct rte_eth_dev *dev, @@ -1289,9 +1280,9 @@ static int ena_stats_get(struct rte_eth_dev *dev, /* Driver related stats */ stats->imissed = adapter->drv_stats->rx_drops; - stats->ierrors = rte_atomic64_read(&adapter->drv_stats->ierrors); - stats->oerrors = rte_atomic64_read(&adapter->drv_stats->oerrors); - stats->rx_nombuf = rte_atomic64_read(&adapter->drv_stats->rx_nombuf); + stats->ierrors = adapter->drv_stats->ierrors; + stats->oerrors = adapter->drv_stats->oerrors; + stats->rx_nombuf = adapter->drv_stats->rx_nombuf; /* Queue statistics */ if (qstats) { @@ -1887,7 +1878,7 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count) /* get resources for incoming packets */ rc = rte_pktmbuf_alloc_bulk(rxq->mb_pool, mbufs, count); if (unlikely(rc < 0)) { - rte_atomic64_inc(&rxq->adapter->drv_stats->rx_nombuf); + ++rxq->adapter->drv_stats->rx_nombuf; ++rxq->rx_stats.mbuf_alloc_fail; PMD_RX_LOG_LINE(DEBUG, "There are not enough free buffers"); return 0; @@ -3014,7 +3005,7 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, if (unlikely(mbuf->ol_flags & (RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD))) - rte_atomic64_inc(&rx_ring->adapter->drv_stats->ierrors); + ++rx_ring->adapter->drv_stats->ierrors; rx_pkts[completed] = mbuf; rx_ring->rx_stats.bytes += mbuf->pkt_len; diff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h index 3a66d79384..b204b07767 100644 --- a/drivers/net/ena/ena_ethdev.h +++ b/drivers/net/ena/ena_ethdev.h @@ -6,7 +6,6 @@ #ifndef _ENA_ETHDEV_H_ #define _ENA_ETHDEV_H_ -#include #include #include #include @@ -225,9 +224,9 @@ enum ena_adapter_state { }; struct ena_driver_stats { - rte_atomic64_t ierrors; - rte_atomic64_t oerrors; - rte_atomic64_t rx_nombuf; + u64 ierrors; + u64 oerrors; + u64 rx_nombuf; u64 rx_drops; }; -- 2.53.0