From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4FDA24562D for ; Tue, 16 Jul 2024 22:55:18 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 49B4D402C8; Tue, 16 Jul 2024 22:55:18 +0200 (CEST) Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by mails.dpdk.org (Postfix) with ESMTP id BB20740270 for ; Tue, 16 Jul 2024 22:55:16 +0200 (CEST) Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-79efb4a46b6so399765285a.2 for ; Tue, 16 Jul 2024 13:55:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20230601.gappssmtp.com; s=20230601; t=1721163316; x=1721768116; darn=dpdk.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=KkqAfdjh2/UpYS9WxLYXO3TAJAkKkSi5kyD/8a6vS0o=; b=edknCajvlRyKt8Ta3DswmZm3GPJX5ppG6IJKIh5SToffbI5KU4ibKMCQcdsAls7Z8d JF1lVntrIpAoPGyXXkR12fCbaGsV1bz8rx2wKTNfoTZt7PHLN8UpNjUQcQarmDpsslYz Hulc6waMMGipqoH7sm5YgtgDK92XJP2KzDLPbFu5C+U+gnXctsw37jblt91lI1FAOHoB kktxOarPWXq3+ij7PFXy5kJuOvZh184665sK7yc+47wIDLj7LfwfDMg+DtqAiCKE/rba 6jvI/MXl18oLxipWHoHv+p9dFxB06NjcUvQMqnNQul4zrndY5FlKay8s0RjUuUXnr2kP wjLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721163316; x=1721768116; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KkqAfdjh2/UpYS9WxLYXO3TAJAkKkSi5kyD/8a6vS0o=; b=QG3nqlGPD7yDJtkrCuJThZwsdBDQ/8Bchev3jqkWfZciaNejqBhioqZJ+Zec88mIfn 858FfQZP8OPhUACLLkHP9PBC4DUYi0TjcPHgZ8xxRUbAAQcvu/en/Ne7yzqISyMPdyyg zQJfON+2bHLjexUfh309X4F7iC0tsLmiH3O61wr6/fxZ/EwBFxtquuTBZyzrm00EpRy8 4Oy4CucDglUmwLP6EyjCeKZ9IZ6n6mW2dAgybd0NOtVDQNQhQMFdyMr263b/n65+nD4s ve6htZPfOLdrSofuPZbYlvG6YD9a0Tz9vjs0JJGK9gryOHoQreQGQOgv3Ctzt9yfM7UQ nrQQ== X-Gm-Message-State: AOJu0YyXYcvGe0yBl49RoYQD64fdvURiTHfANX4ZVovhyZj7iKiHrrfx BdboBNC69JeLHfIh5PpFhKMIvTEvpaA0xf6wza07DI0Tk3A0qG2F4way0SS7mA== X-Google-Smtp-Source: AGHT+IGY1B4KQBche3zP1KSxa1LOMtHZ15/X1ufEVxNRw3rAzR9bAyFPsR4Rg+lVHwjnEQSgSUQyjw== X-Received: by 2002:a05:620a:2547:b0:79d:77b8:d2e4 with SMTP id af79cd13be357-7a17b6edbcfmr446458185a.65.1721163315772; Tue, 16 Jul 2024 13:55:15 -0700 (PDT) Received: from localhost.localdomain (pool-173-48-111-149.bstnma.fios.verizon.net. [173.48.111.149]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-44f5b7e118asm39075601cf.30.2024.07.16.13.55.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jul 2024 13:55:15 -0700 (PDT) From: Ed Czeck To: czeck@ieee.org Cc: stable@dpdk.org Subject: [PATCH] net/ark: fix index arithmetic optimization bug Date: Tue, 16 Jul 2024 16:55:12 -0400 Message-Id: <20240716205512.2556921-1-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org fix for compiler optimizer error using int32_t. (a - b) > 0 can behave differently under optimization at values near max and min bounds. This patch replaces int32_t with uint32_t except for necessary casts. Fixes: 9ee9e0d3b85e ("net/ark: update to reflect FPGA updates") Cc: stable@dpdk.org Signed-off-by: Ed Czeck --- drivers/net/ark/ark_ethdev_tx.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/net/ark/ark_ethdev_tx.c b/drivers/net/ark/ark_ethdev_tx.c index d02a786ee0..b387dadf80 100644 --- a/drivers/net/ark/ark_ethdev_tx.c +++ b/drivers/net/ark/ark_ethdev_tx.c @@ -39,8 +39,8 @@ struct ark_tx_queue { uint32_t queue_mask; /* 3 indexes to the paired data rings. */ - int32_t prod_index; /* where to put the next one */ - int32_t free_index; /* mbuf has been freed */ + uint32_t prod_index; /* where to put the next one */ + uint32_t free_index; /* mbuf has been freed */ /* The queue Id is used to identify the HW Q */ uint16_t phys_qid; @@ -49,7 +49,7 @@ struct ark_tx_queue { /* next cache line - fields written by device */ RTE_MARKER cacheline1 __rte_cache_min_aligned; - volatile int32_t cons_index; /* hw is done, can be freed */ + volatile uint32_t cons_index; /* hw is done, can be freed */ } __rte_cache_aligned; /* Forward declarations */ @@ -108,7 +108,7 @@ eth_ark_xmit_pkts(void *vtxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) uint32_t user_meta[5]; int stat; - int32_t prod_index_limit; + uint32_t prod_index_limit; uint16_t nb; uint8_t user_len = 0; const uint32_t min_pkt_len = ARK_MIN_TX_PKTLEN; @@ -124,7 +124,7 @@ eth_ark_xmit_pkts(void *vtxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) prod_index_limit = queue->queue_size + queue->free_index - 4; for (nb = 0; - (nb < nb_pkts) && (prod_index_limit - queue->prod_index) > 0; + (nb < nb_pkts) && (int32_t)(prod_index_limit - queue->prod_index) > 0; ++nb) { mbuf = tx_pkts[nb]; @@ -194,13 +194,13 @@ eth_ark_tx_jumbo(struct ark_tx_queue *queue, struct rte_mbuf *mbuf, uint32_t *user_meta, uint8_t meta_cnt) { struct rte_mbuf *next; - int32_t free_queue_space; + uint32_t free_queue_space; uint8_t flags = ARK_DDM_SOP; free_queue_space = queue->queue_mask - (queue->prod_index - queue->free_index); /* We need up to 4 mbufs for first header and 2 for subsequent ones */ - if (unlikely(free_queue_space < (2 + (2 * mbuf->nb_segs)))) + if (unlikely(free_queue_space < (2U + (2U * mbuf->nb_segs)))) return -1; while (mbuf != NULL) { @@ -392,10 +392,11 @@ free_completed_tx(struct ark_tx_queue *queue) { struct rte_mbuf *mbuf; union ark_tx_meta *meta; - int32_t top_index; + uint32_t top_index; top_index = queue->cons_index; /* read once */ - while ((top_index - queue->free_index) > 0) { + + while ((int32_t)(top_index - queue->free_index) > 0) { meta = &queue->meta_q[queue->free_index & queue->queue_mask]; if (likely((meta->flags & ARK_DDM_SOP) != 0)) { mbuf = queue->bufs[queue->free_index & -- 2.34.1