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 38A40489EF for ; Mon, 27 Oct 2025 17:20:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3343A4064F; Mon, 27 Oct 2025 17:20:33 +0100 (CET) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by mails.dpdk.org (Postfix) with ESMTP id ABEF840652 for ; Mon, 27 Oct 2025 17:20:32 +0100 (CET) Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-474975af41dso33913845e9.2 for ; Mon, 27 Oct 2025 09:20:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761582032; x=1762186832; 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; bh=4wzQHogy9+uFKjZEokL7SHZROpangpjLKp9dU4hYnbU=; b=VkBVjbVzLjeM+/GY6eA7rXc9LznqzagbYKsnELe234nirgCGCt6G8ulFczLH4sH4nA fJD1DiQlpxa6xR2lARnfkJQBaRNpXTmTnEOzgpaKTBcizoAhvbyvf85ujqhLSrp5PnC3 hA81jgM5/J7xtcGYO6hW/Bvwtt3ZmR0GRUyAZcuTTJNKbRjQ0aN8CYvT9uU3c9DrTN/U ffN/KtCfTyQLTPTjiR7Ma99uPVDEvYDMBRoySFravXGOqc2wlC25qf236nWQoiX5+E98 bQirRv5OcEuJpZywLVstNe9tTiu7Nh55ddiaogvebLC6NT+z/vZZQPYwGbF39zsootY+ oW0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761582032; x=1762186832; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4wzQHogy9+uFKjZEokL7SHZROpangpjLKp9dU4hYnbU=; b=plnx5350u0XQiK1hhrgxkOSN2oJHnvVEN3TCFaecDsFOkadl6moqeNsVFvIpjReNWj 5vttYWAqOAeIZcYidr+L6qj1NAhghEz35bNkfKtvYZ2bp3k69/+RekLQVf6BjAehuq1b DznVtHr5jq6J7W8BtK/H8rE2cwUKF3Fyb9ei2b2OQxocbErEPh+zEhoKZ5qCsV6t5vU9 s/2x+XIsr2e8X3X7sZXtG5SZ+CWgh/N3uz9XfnPG6UGCNLCkUgkl4dCffJI15qmD7g/E QtNdgOf0TXVcqTOP93lQYrjvSiWBNESbwopuFLeK0GsYXUCOecoOfaWa/+YrREcQhQLs C5YQ== X-Forwarded-Encrypted: i=1; AJvYcCUqFaxWhAvtIq74KpHcks25iveY0NnBZvxvGp8YD0JW8g/WWC2i1zJXo2eQAfPC9x8a56s708M=@dpdk.org X-Gm-Message-State: AOJu0YyNSghZj2OVnXmLDwT+jnNSTjFFK6LW2IO3pDoiNi4C+edf4sAo uC3B4N7wpnv2WNab2Iq4qrtu+2bT0Hg5WFrzmSfyYsVfcv74j74qjJ5t X-Gm-Gg: ASbGncvcuTzA5LB0r993lnt/FUcCvLNdUe71T/6+O2pjdDxuzrfII369Xj98/L6ryeB wT0tYK0xK9MbFAHjdhrhdZTsceBTQPEn9EC8bP/Kk+J6dVUvOtPApEcz8OGPHd83kJ5TR++CVlf 6arvJ9JaRxApr8DrMfzdi6WRN4SzbpTN98/HOt5YdEpeQgnrZRGOZ4/jgIDrpM2iii/4f9mHBLh J7QGMQ16aRMGGEPLmr0yPuucczOJpHeeOjWcMm1q5PvtIxGmJieK+ZMcJf9cfQiZM9vVsiokxJm J7qEpnsk9UjdYSkxlrx6FTT2TeSepqxr5i4hbpC8NgJY0LRVcFsCAS0PR6I+GDesP+CnSd01coq OquTOmAtV4vQyuWKOQAwfXpjMs1NEZR3Js5xTc7XRY4LVLybqW4HSQV33iye9R++TX7R8Df1E/4 QyjZ51iQ== X-Google-Smtp-Source: AGHT+IHZs42z/pXcD+gWXw8pa2OmExAs2a+nrI+sU7v7NRz8ZkFXT5W4eePedvOfAzWSBY7d6sNbEw== X-Received: by 2002:a05:600c:468f:b0:477:1709:1f2f with SMTP id 5b1f17b1804b1-47717df7c9amr2396845e9.5.1761582032145; Mon, 27 Oct 2025 09:20:32 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:6fc5:c3bc:147e:832c]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-475ddcf8484sm70748095e9.4.2025.10.27.09.20.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Oct 2025 09:20:30 -0700 (PDT) From: luca.boccassi@gmail.com To: Ronak Doshi Cc: Jochen Behrens , dpdk stable Subject: patch 'net/vmxnet3: fix mapping of mempools to queues' has been queued to stable release 22.11.11 Date: Mon, 27 Oct 2025 16:18:48 +0000 Message-ID: <20251027162001.3710450-10-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251027162001.3710450-1-luca.boccassi@gmail.com> References: <20251027162001.3710450-1-luca.boccassi@gmail.com> 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 Hi, FYI, your patch has been queued to stable release 22.11.11 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/29/25. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/38e40353dda82698162d1acf959c57bb0ac60f1c Thanks. Luca Boccassi --- >From 38e40353dda82698162d1acf959c57bb0ac60f1c Mon Sep 17 00:00:00 2001 From: Ronak Doshi Date: Wed, 9 Jul 2025 21:29:03 +0000 Subject: [PATCH] net/vmxnet3: fix mapping of mempools to queues [ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ] Index bitmask variable used was uint8_t, too small for bitmask with 9 or more queues. This patch changes it to uint16_t for now, to be same as in the Vmxnet3_MemoryRegion structure. This way txQueues can be lesser than rxQueues and have correct mapping of memory regions. Also, the patch fixes memory region check as 16 queues are allowed on both RX and TX. Fixes: 6a113992060e ("net/vmxnet3: add cmd to register memory region") Signed-off-by: Ronak Doshi Acked-by: Jochen Behrens --- drivers/net/vmxnet3/base/vmxnet3_defs.h | 3 +++ drivers/net/vmxnet3/vmxnet3_ethdev.c | 23 ++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/drivers/net/vmxnet3/base/vmxnet3_defs.h b/drivers/net/vmxnet3/base/vmxnet3_defs.h index bd6695e69d..04167b6743 100644 --- a/drivers/net/vmxnet3/base/vmxnet3_defs.h +++ b/drivers/net/vmxnet3/base/vmxnet3_defs.h @@ -575,6 +575,9 @@ enum vmxnet3_intr_type { /* addition 1 for events */ #define VMXNET3_MAX_INTRS 25 +/* Max number of queues that can request memreg, for both RX and TX. */ +#define VMXNET3_MAX_MEMREG_QUEUES 16 + /* Version 6 and later will use below macros */ #define VMXNET3_EXT_MAX_TX_QUEUES 32 #define VMXNET3_EXT_MAX_RX_QUEUES 32 diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index f4cdb1bb31..eadfd6f230 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -725,14 +725,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) Vmxnet3_DriverShared *shared = hw->shared; Vmxnet3_CmdInfo *cmdInfo; struct rte_mempool *mp[VMXNET3_MAX_RX_QUEUES]; - uint8_t index[VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES]; - uint32_t num, i, j, size; + uint16_t index[VMXNET3_MAX_MEMREG_QUEUES]; + uint16_t tx_index_mask; + uint32_t num, tx_num, i, j, size; if (hw->memRegsPA == 0) { const struct rte_memzone *mz; size = sizeof(Vmxnet3_MemRegs) + - (VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES) * + (2 * VMXNET3_MAX_MEMREG_QUEUES) * sizeof(Vmxnet3_MemoryRegion); mz = gpa_zone_reserve(dev, size, "memRegs", rte_socket_id(), 8, @@ -746,7 +747,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) hw->memRegsPA = mz->iova; } - num = hw->num_rx_queues; + num = RTE_MIN(hw->num_rx_queues, VMXNET3_MAX_MEMREG_QUEUES); + tx_num = RTE_MIN(hw->num_tx_queues, VMXNET3_MAX_MEMREG_QUEUES); + tx_index_mask = (uint16_t)((1UL << tx_num) - 1); for (i = 0; i < num; i++) { vmxnet3_rx_queue_t *rxq = dev->data->rx_queues[i]; @@ -781,13 +784,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) (uintptr_t)STAILQ_FIRST(&mp[i]->mem_list)->iova; mr->length = STAILQ_FIRST(&mp[i]->mem_list)->len <= INT32_MAX ? STAILQ_FIRST(&mp[i]->mem_list)->len : INT32_MAX; - mr->txQueueBits = index[i]; mr->rxQueueBits = index[i]; + /* tx uses same pool, but there may be fewer tx queues */ + mr->txQueueBits = index[i] & tx_index_mask; PMD_INIT_LOG(INFO, "index: %u startPA: %" PRIu64 " length: %u, " - "rxBits: %x", - j, mr->startPA, mr->length, mr->rxQueueBits); + "rxBits: %x, txBits: %x", + j, mr->startPA, mr->length, + mr->rxQueueBits, mr->txQueueBits); j++; } hw->memRegs->numRegs = j; @@ -995,8 +1000,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev) } /* Check memregs restrictions first */ - if (dev->data->nb_rx_queues <= VMXNET3_MAX_RX_QUEUES && - dev->data->nb_tx_queues <= VMXNET3_MAX_TX_QUEUES) { + if (dev->data->nb_rx_queues <= VMXNET3_MAX_MEMREG_QUEUES && + dev->data->nb_tx_queues <= VMXNET3_MAX_MEMREG_QUEUES) { ret = vmxnet3_dev_setup_memreg(dev); if (ret == 0) { VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, -- 2.47.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-10-27 15:54:35.214323919 +0000 +++ 0010-net-vmxnet3-fix-mapping-of-mempools-to-queues.patch 2025-10-27 15:54:34.723947744 +0000 @@ -1 +1 @@ -From 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 Mon Sep 17 00:00:00 2001 +From 38e40353dda82698162d1acf959c57bb0ac60f1c Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ] + @@ -15 +16,0 @@ -Cc: stable@dpdk.org @@ -25 +26 @@ -index a6bb281d8d..15d4d88c5c 100644 +index bd6695e69d..04167b6743 100644 @@ -28 +29 @@ -@@ -598,6 +598,9 @@ enum vmxnet3_intr_type { +@@ -575,6 +575,9 @@ enum vmxnet3_intr_type { @@ -39 +40 @@ -index 15ca25b187..e19aa43888 100644 +index f4cdb1bb31..eadfd6f230 100644 @@ -42 +43 @@ -@@ -801,14 +801,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) +@@ -725,14 +725,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) @@ -61 +62 @@ -@@ -822,7 +823,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) +@@ -746,7 +747,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) @@ -72 +73 @@ -@@ -857,13 +860,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) +@@ -781,13 +784,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev) @@ -91 +92 @@ -@@ -1087,8 +1092,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev) +@@ -995,8 +1000,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)