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 B895A48A0D for ; Thu, 30 Oct 2025 10:13:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E7F6402F0; Thu, 30 Oct 2025 10:13:20 +0100 (CET) Received: from out-dbl.mail.syseleven.net (out-dbl.mail.syseleven.net [195.192.142.195]) by mails.dpdk.org (Postfix) with ESMTP id 428FD4027A; Thu, 30 Oct 2025 10:13:18 +0100 (CET) Received: from 127.0.0.1 (localhost [127.0.0.1]) by out-dbl.mail.syseleven.net (Postfix) with ESMTPSA id 60A0F1F8197; Thu, 30 Oct 2025 10:13:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=syseleven.de; s=2022n001; t=1761815597; bh=AeP1q6aZb+qxqtimPLpYv9yTjPySR2fWXBwsLPoRQnY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U+pNnvwWRaeiO+T1+DGqgTAFuRQbS4lyZg73rAOBypHJcsRllThzm3lD1tSh1iXFO 9bmCPSB0p8DFJGxMV7DolZfd+rfn5jSkL6iU7m0PL6f+tlkOpd8z3jnIhniG4o5/0U s2qad+5gnryoZraA6sjYQf/IOOl5c/6+XKOKLSUO6S/p/Q/Yxf9Q6DRiTQEMIzbDja cFHnUteMw6O13od/6D9AuGJBeBIaLnT4Xe9KQABVc/51Ln+bPMFCljWK/5sNdBto2B Fzx5AinkM9ZEPgtj1crqP5Aywt+3sS1o9JYlOaZ8m2F57VK8W3GJTleF8QdXR1/fG0 YauLaMPTHIj9g== From: a.schollmeyer@syseleven.de To: Dariusz Sosnowski , Viacheslav Ovsiienko , Bing Zhao , Ori Kam , Suanming Mou , Matan Azrad , Xueming Li Cc: dev@dpdk.org, Michael Rossberg , Erez Ferber , Adrian Schollmeyer , stable@dpdk.org Subject: [PATCH v2] net/mlx5: store rxq MTU at allocation time Date: Thu, 30 Oct 2025 10:13:13 +0100 Message-Id: <20251030091313.55152-1-a.schollmeyer@syseleven.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251028100144.36284-1-a.schollmeyer@syseleven.de> References: <20251028100144.36284-1-a.schollmeyer@syseleven.de> 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 From: Adrian Schollmeyer For shared Rx queues, equal MTU for all ports sharing queues is enforced using mlx5_shared_rxq_match() to make sure, the memory allocated in the Rx buffer is large enough. The check uses the MTU as reported by the ports' private dev_data structs, which contain the MTU currently set for the device. In case one port's MTU is altered after Rx queues are allocated and then a second port joins the shared Rx queue with the old, yet correct MTU, the check fails despite the fact that the Rx buffer size is correct for both ports. This patch adds a new entry to the Rx queue control structure that captures the MTU at the time the Rx buffer was allocated, since this is the relevant information that needs to be checked when a port joins a shared Rx queue. Fixes: 09c2555303be ("net/mlx5: support shared Rx queue") Cc: stable@dpdk.org Signed-off-by: Adrian Schollmeyer --- drivers/net/mlx5/mlx5_rx.h | 1 + drivers/net/mlx5/mlx5_rxq.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h index 6380895502..58bc2c9f21 100644 --- a/drivers/net/mlx5/mlx5_rx.h +++ b/drivers/net/mlx5/mlx5_rx.h @@ -169,6 +169,7 @@ struct __rte_cache_aligned mlx5_rxq_data { /* RX queue control descriptor. */ struct mlx5_rxq_ctrl { struct mlx5_rxq_data rxq; /* Data path structure. */ + uint16_t mtu; /* Original MTU that the queue was allocated with. */ LIST_ENTRY(mlx5_rxq_ctrl) next; /* Pointer to the next element. */ LIST_HEAD(priv, mlx5_rxq_priv) owners; /* Owner rxq list. */ struct mlx5_rxq_obj *obj; /* Verbs/DevX elements. */ diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 5cf7d4971b..c652204ea8 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -773,7 +773,7 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev, dev->data->port_id, idx); return false; } - if (priv->mtu != spriv->mtu) { + if (priv->mtu != rxq_ctrl->mtu) { DRV_LOG(ERR, "port %u queue index %u failed to join shared group: mtu mismatch", dev->data->port_id, idx); return false; @@ -1799,6 +1799,10 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, } LIST_INIT(&tmpl->owners); MLX5_ASSERT(n_seg && n_seg <= MLX5_MAX_RXQ_NSEG); + /* + * Save the original MTU to check against for shared rx queues. + */ + tmpl->mtu = dev->data->mtu; /* * Save the original segment configuration in the shared queue * descriptor for the later check on the sibling queue creation. -- 2.34.1