From nobody Sun Feb 8 00:26:40 2026 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012037.outbound.protection.outlook.com [40.107.209.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C067392800; Tue, 3 Feb 2026 07:22:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770103332; cv=fail; b=SOR1U6c41kSfhzS/f6I/RiOI7xJXx8pz2J74m0ZfkpcQyfFHBUDU/ZGoG9sruDj7ZZd/s9CRH6fP7rJnbbnUY4cA8dyNzOyIO+NspRxeG32L5jETymSoDm+PON3H1X1/xnHc6xAibr7REjFAxg4FOpyFhSWUcE2sEvD5fvMgQ8Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770103332; c=relaxed/simple; bh=ZZt7rBJNnQ3xbPFiTk/DehgdfawbBgeVVLx4bIAQGWg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TyyB71hbiepM/WD7d3PThIg2B4PlSbDn17x/orWeNy2bUgwGxFKYFMmt+mnNk4RZEEBNmo2SqTPniLUVRzBqb0BdzuTZsaWEyYNTdP2OhEvnHakKx/41swJA4xt1p7OGAp1WTrFcg8ECJpdwijo4AEtpS8JlRvnVz4MANFopVm0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=CEfCe9dF; arc=fail smtp.client-ip=40.107.209.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="CEfCe9dF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bkc2B7vCXg8LCmBikh+EQnvdQgRvOVxbcjU9rDWi23OQ8nAShritOy8KvcTgK0AMbIS+XUsTZkAOfvLa26kSuTHuGGHaP7iwmlfLxq50uilQ8ooUeXhbfK8UxEN0dEbMd5mA9ttNulpJvTIkStxtIOwMjw1tGImEkwEqLpEc0Sx5JbOUaz/pWC71KtazlUJcJP7UaStzF2pJE7+7fvedL2Er2PI6SQpkuCYjvgkNjJqCOgfqXHZWsb9AaCLFtDt8+sxI6o6AKPl2u4+CEYiIj+nOjc99lQeDcwyibcPRtAaNEJs+ks41yi7RyB2b6m8ycyVgfUXXANE4PYw2XRUNIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t6UAzRg5UK90YAjBbY5Rs62ZcifbNlJz3k9hEzI8Sag=; b=jUDlcuP99IrGJNtvpFekyOM2bjBiAUcO4qHyExmw8u6Ds51h1DpYt04LHl2vKVgWJ5KGmMQaCIqbeYHxVaD/sZUWJItHHR+Hexq7pbHBVBAQfXDY2nn6pCorMp4U0Anh4yWj0FES40XMH1KbeR9RypwDeldwEJVXSWzcXQznN82A2AKIN0ghaNxofw7NZcpLogTP4/FV1pMoW2vMRF/bUg83viTo0Yv018ZxtKtGGtwaM9dqHDCchWSekPOx3k37aRR5rKEEyXg42TCSVc7qfnHwmbfX1zZoxf+HpD0OY5/Nb7VV6NGEqWbo2QAggDvHbEtM3oB9wbbX+3cTzlpQpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t6UAzRg5UK90YAjBbY5Rs62ZcifbNlJz3k9hEzI8Sag=; b=CEfCe9dFdKnjxYn89GKAArYXTG6sWl9/2R/YAQKnXbO5ClAx+/R9xECk1yAzP/vxAVDQFuhUD9QvmV8c4KodOkFJyDwsQGwNYizF8/jl/JN+UHriZpRNzSLDSGdlje1/sAzYB6W+RbeUaoYiAGA64FzA9FhXexIocmX8JhkqKSZPks2uI+7XqFRokw1x9i8FZXumbmu5n+6Ovrz5VlULC0Kdj5U8p7T3VCbbK44tttXaUOzVVFX3aJjonPljmSUu/2zQ97kjbsaKVpJgYBiepgw2cK8xcxVzzctcYyEHtz0oh6JR4fhGBwoDQCnKZiGcat5OGMjdqIS8ZZjFkuAUYA== Received: from BYAPR05CA0063.namprd05.prod.outlook.com (2603:10b6:a03:74::40) by MN2PR12MB4357.namprd12.prod.outlook.com (2603:10b6:208:262::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Tue, 3 Feb 2026 07:22:05 +0000 Received: from SJ1PEPF000026C6.namprd04.prod.outlook.com (2603:10b6:a03:74:cafe::88) by BYAPR05CA0063.outlook.office365.com (2603:10b6:a03:74::40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.12 via Frontend Transport; Tue, 3 Feb 2026 07:22:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by SJ1PEPF000026C6.mail.protection.outlook.com (10.167.244.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Tue, 3 Feb 2026 07:22:04 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 2 Feb 2026 23:21:58 -0800 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 2 Feb 2026 23:21:57 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 2 Feb 2026 23:21:54 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Saeed Mahameed , Tariq Toukan , "Mark Bloch" , Leon Romanovsky , , , , Gal Pressman , Dragos Tatulea , Cosmin Ratiu , Moshe Shemesh Subject: [PATCH net-next V2 1/2] net/mlx5e: RX, Drop oversized packets in non-linear mode Date: Tue, 3 Feb 2026 09:21:29 +0200 Message-ID: <20260203072130.1710255-2-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260203072130.1710255-1-tariqt@nvidia.com> References: <20260203072130.1710255-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF000026C6:EE_|MN2PR12MB4357:EE_ X-MS-Office365-Filtering-Correlation-Id: 20841f1d-ec3c-4ed7-afda-08de62f4eea5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?odosvRlICWJWgm35MPnXmxewI05V6P+fPIbdBOLKXiO55pdfHOXlX8G133Dr?= =?us-ascii?Q?fFQJtjoKs9MusXvvs1ky5PDQZjuVEOP4b3d+7PF/M4E/zLtXpCl+lMN2+zFR?= =?us-ascii?Q?UNpKhgnP/asB5A+BnSm7pELS0JKbfM5s0Dg7QW2Ui0pUB+jOTYC2AtHWWTVh?= =?us-ascii?Q?lA2GAdFaEdB/7MdSeHne82xJY1Oh4TubOlYt2pl8mvrJxkCGZF9i/sElxBB5?= =?us-ascii?Q?baqH8mV6OU4e+9o6NszLbs6wjzZkTtLgPnrTqKGVHRSiNLAzx3dE5mWaScPO?= =?us-ascii?Q?VSkIwJLfYlot+91oif+0zvw5KijxPWtkgjwhyvt9+Cgb14lVPEhqs/S30pb6?= =?us-ascii?Q?a+8t81enqhqI9U0tF7xNOGgAnSHt5+afZi188ZD+JvzDKdf8vFN2FPNxzijr?= =?us-ascii?Q?VGKNzj+iL/F+qAIuHYJechqa1O9eKyy/UiiFKvFv3Yr1ORSHkSvxrAo3kz9m?= =?us-ascii?Q?Fw3Ent6jxiEEgwCJpZKOJ4ouZftv5j753s9SWZDGMdhbdcVgWVTdru123nMt?= =?us-ascii?Q?25Y9YecLLoPrWJtKZzELH5pIINQ85tDXJjgif6uADlX6k8G2/I4fXqWlXyN8?= =?us-ascii?Q?+aDBtqgqt8yqghKT4is+vjXTrzmlMzPI5HyR90nqCUqJFOC4DXlt7UxGcceK?= =?us-ascii?Q?40zOz4Syo3qeJuIqCGfwfeaV+4jfvr/Q6ERbJqiHV7WswLl9Gu0+00egGVPv?= =?us-ascii?Q?ey3CoufJrgjE014gymSkiTptP7fjf9Dz2oyxQL46esyUwyJ5czOgV4Dy5U9C?= =?us-ascii?Q?UJrKvsbOjwYposg2RI46vNHURgjaClhXBNb6mbxu3zzzGXVQ9/PCXfiNO1N8?= =?us-ascii?Q?u43VPCVbX0Vy+u0IaKytC7Uf84cxXButS9mF+SHr7fmQ15huZRrdKFndiHkq?= =?us-ascii?Q?4j+2f6aRdfTFG2HhBWaSV/4cY4ri9DfBGNVXwlrhwmyUBhvoVw4Ve1JoL5lD?= =?us-ascii?Q?Dw8uyDE7HQA1rX4L2c1x1DRrRhUtMoQkh8+W+m3EFVTUHv+2J7tTZC63X2pb?= =?us-ascii?Q?fN/0/D9ib1c+dXqlhKYS8cJXVUb59fq4IRfxezZbnCau5T3rJ1grZmZIL7MO?= =?us-ascii?Q?tzB4TcVy8INh83M97STjY15VaSWD9EkZOu/jAV7SMKYrwFsaZ9FEyz+kiZA/?= =?us-ascii?Q?C6cOmz1zYioSivADpu1uw6b+nEoTAEeuM8ekS9sCfArZcZ6dOm9tYekDtj0q?= =?us-ascii?Q?Mym3hA1JA4uRPc4WyAz5Vro65dhTuw0A+kLLq8PGknUWTzobbGpktqOo4fJj?= =?us-ascii?Q?wW1WZM9aTgO7zjfkWvh7FT51zBBFv0B0EOhvDo/b8OQmuGxwdIIuDRMHHYLA?= =?us-ascii?Q?78TgMMMjbtplYHXbh/yK69qc2Kd+/M2qnR1pkOHpeM6e5d/dtlmgGM39iLhG?= =?us-ascii?Q?DEkMei83uxZw1IuJbaWczqCMRRsHa6A7B3flyaRs5gGl/0cshJn6VwXd8s5b?= =?us-ascii?Q?9VJbkTo2yQpzSsfsW8piazdrgx3TUgkH2GEOhfHXpaOGo0KKagX2gUvLyOoE?= =?us-ascii?Q?qhAOhcmckzB205t7HaYel9hZms/sZHGtxlCgaeve1SOjP7NV5jPWCeZkoLpF?= =?us-ascii?Q?6Zg8fZ95ADPjrk5yAdbMYKPou50PLqrfhgAcrUn85+SswX9AWVsuZfSuZGOU?= =?us-ascii?Q?mwkjDmPN3WA2xPxjEe5BPr3AtvCxCm5IZ1FLJkFrGuQ2ZOtV6CJ7EN5GMKt1?= =?us-ascii?Q?nbo4GA=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: W9v2Sy9f2z/JnYxThIK53WrMzwK+u743Fa10rfLRSXDUOM5xeTBCvyauuocv+FIHcPFNg5JsXwchMy8UNghF1CgpFE6o2xVx3/e8NGhdWR1Qa3jisZ4p4pokczQH5c9xhePlOgTO6sndDSeGwlOmzVUNuEskqJzV9r/83jCfLqK1AjaqMwaHH3LgyT2Tv2SghSAqQc8X1/2oJkJ1MSP8O4sXthQiDbErvv6KJV5AoL04Kr566VfKrwbG7aO+BBJ2j0uiPg4boBi59Ti+MwjSbhQSbkTSy7m87G8FS69DjPJQ4PegHmfTwlQMx8GHKwOhQeFtZrwBC3OXfbqmLRl7kndIkrWL5wq0JRtfreABLJ80pEa1CG8EiopeRGPSgwSUpvHeY34rAS/CFAG8PH3BxmizFoYDjIj4O33dNq/RJGczy3o2UZ3tKJDyPIcN+P2u X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2026 07:22:04.8291 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 20841f1d-ec3c-4ed7-afda-08de62f4eea5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF000026C6.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4357 Content-Type: text/plain; charset="utf-8" From: Dragos Tatulea Currently the driver has an inconsistent behaviour between modes when it comes to oversized packets that are not dropped through the physical MTU check in HW. This can happen for Multi Host configurations where each port has a different MTU. Current behavior: 1) Striding RQ in linear mode drops the packet in SW and counts it with oversize_pkts_sw_drop. 2) Striding RQ in non-linear mode allows it like a normal packet. 3) Legacy RQ can't receive oversized packets by design: the RX WQE uses MTU sized packet buffers. This inconsistency is not a violation of the netdev policy [1] but it is better to be consistent across modes. This patch aligns (2) with (1) and (3). One exception is added for LRO: don't drop the oversized packet if it is an LRO packet. As now rq->hw_mtu always needs to be updated during the MTU change flow, drop the reset avoidance optimization from mlx5e_change_mtu(). Extract the CQE LRO segments reading into a helper function as it is used twice now. [1] Documentation/networking/netdevices.rst#L205 Signed-off-by: Dragos Tatulea Signed-off-by: Tariq Toukan Reviewed-by: Jacob Keller --- .../net/ethernet/mellanox/mlx5/core/en_main.c | 25 ++----------------- .../net/ethernet/mellanox/mlx5/core/en_rx.c | 11 +++++++- include/linux/mlx5/device.h | 5 ++++ 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 96dc6a6dc737..71e663c3b421 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4716,7 +4716,6 @@ int mlx5e_change_mtu(struct net_device *netdev, int n= ew_mtu, struct mlx5e_priv *priv =3D netdev_priv(netdev); struct mlx5e_params new_params; struct mlx5e_params *params; - bool reset =3D true; int err =3D 0; =20 mutex_lock(&priv->state_lock); @@ -4742,28 +4741,8 @@ int mlx5e_change_mtu(struct net_device *netdev, int = new_mtu, goto out; } =20 - if (params->packet_merge.type =3D=3D MLX5E_PACKET_MERGE_LRO) - reset =3D false; - - if (params->rq_wq_type =3D=3D MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ && - params->packet_merge.type !=3D MLX5E_PACKET_MERGE_SHAMPO) { - bool is_linear_old =3D mlx5e_rx_mpwqe_is_linear_skb(priv->mdev, params, = NULL); - bool is_linear_new =3D mlx5e_rx_mpwqe_is_linear_skb(priv->mdev, - &new_params, NULL); - u8 sz_old =3D mlx5e_mpwqe_get_log_rq_size(priv->mdev, params, NULL); - u8 sz_new =3D mlx5e_mpwqe_get_log_rq_size(priv->mdev, &new_params, NULL); - - /* Always reset in linear mode - hw_mtu is used in data path. - * Check that the mode was non-linear and didn't change. - * If XSK is active, XSK RQs are linear. - * Reset if the RQ size changed, even if it's non-linear. - */ - if (!is_linear_old && !is_linear_new && !priv->xsk.refcnt && - sz_old =3D=3D sz_new) - reset =3D false; - } - - err =3D mlx5e_safe_switch_params(priv, &new_params, preactivate, NULL, re= set); + err =3D mlx5e_safe_switch_params(priv, &new_params, preactivate, NULL, + true); =20 out: WRITE_ONCE(netdev->mtu, params->sw_mtu); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_rx.c index 1fc3720d2201..05b682327305 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -1574,7 +1574,7 @@ static inline bool mlx5e_build_rx_skb(struct mlx5_cqe= 64 *cqe, struct mlx5e_rq *rq, struct sk_buff *skb) { - u8 lro_num_seg =3D be32_to_cpu(cqe->srqn) >> 24; + u8 lro_num_seg =3D get_cqe_lro_num_seg(cqe); struct mlx5e_rq_stats *stats =3D rq->stats; struct net_device *netdev =3D rq->netdev; =20 @@ -2058,6 +2058,15 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *= rq, struct mlx5e_mpw_info *w u16 linear_hr; void *va; =20 + if (unlikely(cqe_bcnt > rq->hw_mtu)) { + u8 lro_num_seg =3D get_cqe_lro_num_seg(cqe); + + if (lro_num_seg <=3D 1) { + rq->stats->oversize_pkts_sw_drop++; + return NULL; + } + } + prog =3D rcu_dereference(rq->xdp_prog); =20 if (prog) { diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index d7f46a8fbfa1..b37fe39cef27 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h @@ -962,6 +962,11 @@ static inline u16 get_cqe_flow_tag(struct mlx5_cqe64 *= cqe) return be32_to_cpu(cqe->sop_drop_qpn) & 0xFFF; } =20 +static inline u8 get_cqe_lro_num_seg(struct mlx5_cqe64 *cqe) +{ + return be32_to_cpu(cqe->srqn) >> 24; +} + #define MLX5_MPWQE_LOG_NUM_STRIDES_EXT_BASE 3 #define MLX5_MPWQE_LOG_NUM_STRIDES_BASE 9 #define MLX5_MPWQE_LOG_NUM_STRIDES_MAX 16 --=20 2.44.0 From nobody Sun Feb 8 00:26:40 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013018.outbound.protection.outlook.com [40.93.196.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5244C2FDC53; Tue, 3 Feb 2026 07:22:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770103339; cv=fail; b=grAaF2GI3c/C7PXgQqQO5NQpk7SHnY0XYbsS+C4B3bkj0l+GMZuhub4lYYNs6I+fDFLwAM2wTe8DT0JrIkwney5SC6czDZd3ik+eOBnvEenyI4GPnGQz1DdCEz7z1P0DnauqxMcJ2gmynHerXePHWe1XlSsLMqACEQ0JJggjqY8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770103339; c=relaxed/simple; bh=Xva6TAsRFAdampMWKbjmU570Gn8wJA3YGIqkB+aaWWk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TX60rjaW60FIby0WvsWNjR1j3cQW3k7GbN7cVv8TMrof4jShnOj0szC7PalAJ8+YiYTloL9BhdnlRadpcOXdfy/27nN3mEIWtnLTDqsjupR9DU3pWpyAfv8CBlURpt/5kKEHxFjJILXj86OFEdjk4fdgyjZ39Azqzo8HAWfTyNo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=EyghfiAu; arc=fail smtp.client-ip=40.93.196.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="EyghfiAu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Xgd3xq+Zy/imZIBmiaaFx7/s2PhfSQa9OLny2g7IIrPe30R/729bH1fgcV3FiIbGO4ml9GlKfJPfGQBKo4FtqOFER/eDj863qZlsd/a62kU5YEvf7/sQdzSrKQZmzrvH/ybrN3DZM664PJogAFUkpCqQajiyARH5xDLLY3Jmjv++TEmskJ0c6AqSo56EMmE742JElBRNdw4sXeQOW5TF7CUsN5GiGeO2Gu0ETVuxaJSiPEiMVrWYVBnfJKC7kBmUDGR7+1jbCz6VDWW666yRpJD00Z9XsqPE/DgIhq4GbKOHBTXP4dsqWuT+0Uinq5Om5qV21ka7R4jTCN6MWCqQkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wF29UUM1+iAF587z+KOYdbfuPir83YCNxwgqWFJ/UAY=; b=IVUQcJlEK/jjEAd2TJUk6LvkEVBiZiZlvmepHIpbH+h1nF0AnpEvcywbU1UW2uWiZPXXZW2rf8maDit1PrA+VQQXNFGdK1vFmwPLdJf5/Zf1xGrTw9mvlbt/Ycd3Q4aI8NgHUSr1nr4N7di01adrfvWit55690DY7venfJ37XNNAquCZK03CL2+8p3EXEXbuwqqk1ULzXF1M588Ilhe8ldqDj5P/vNMxKP3NSikOD0SMoLtRCPIfOp0jpkTeF/8W2111IiDJMpEUTDCmrB+dAc04e5EqQ95iaPiv/Tp22tcvYvjysNHBQli2tFV7SlvBXtOu20Rq4kWiQMhs3PDbPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=google.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wF29UUM1+iAF587z+KOYdbfuPir83YCNxwgqWFJ/UAY=; b=EyghfiAuDGQMFFoVSsdWc1wJStj7AUHZNpCjXo8UrU9Djk01JuH850EkDjxldF/Y6B7dtesSw2oR75/MLJX7LclC/qkAbIo7/0l/o+ep4OX0OoIWnjw+1lcWrYusu9NULV+yLsUZ3LWRWvvSvOOPD1XL/POBxyFAXRRgp9ZS59wbNtizamInMMsMQP66TM7hXhCX7KqplHXGMiomEslqqPWf8V+OXcXrKLH7dveKgqj8+ssjve4g+Z+gMrsRZx26eg5yiyHZL3uzT63SFtH8T8i5NfcL7ra06/XOz+M4/sFrkEYQnrWsAz+yNXF/8r1/ohhd6qdx2ba0A29JgR5SyA== Received: from SJ0PR13CA0211.namprd13.prod.outlook.com (2603:10b6:a03:2c1::6) by IA0PPF44635DB8D.namprd12.prod.outlook.com (2603:10b6:20f:fc04::bcc) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.7; Tue, 3 Feb 2026 07:22:11 +0000 Received: from SJ1PEPF0000231D.namprd03.prod.outlook.com (2603:10b6:a03:2c1:cafe::a6) by SJ0PR13CA0211.outlook.office365.com (2603:10b6:a03:2c1::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.12 via Frontend Transport; Tue, 3 Feb 2026 07:21:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by SJ1PEPF0000231D.mail.protection.outlook.com (10.167.242.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Tue, 3 Feb 2026 07:22:11 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 2 Feb 2026 23:22:02 -0800 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Mon, 2 Feb 2026 23:22:01 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Mon, 2 Feb 2026 23:21:58 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Saeed Mahameed , Tariq Toukan , "Mark Bloch" , Leon Romanovsky , , , , Gal Pressman , Dragos Tatulea , Cosmin Ratiu , Moshe Shemesh Subject: [PATCH net-next V2 2/2] net/mlx5e: SHAMPO, Improve allocation recovery Date: Tue, 3 Feb 2026 09:21:30 +0200 Message-ID: <20260203072130.1710255-3-tariqt@nvidia.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20260203072130.1710255-1-tariqt@nvidia.com> References: <20260203072130.1710255-1-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231D:EE_|IA0PPF44635DB8D:EE_ X-MS-Office365-Filtering-Correlation-Id: f6581eb4-429d-4d36-c041-08de62f4f276 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|30052699003|82310400026|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?INb+8XWj9xwRMjFHS3aIb7hvagQca6rfi3AJpiraI/eKrtTDT62R7an7fUNW?= =?us-ascii?Q?k9eRAi9ew9dDz6DB/DI1tQ0NBOWpJZOGz/gZwjlMLY9ignHzfam59IIWEE1P?= =?us-ascii?Q?p5iPRLnNv7ywv0jaudngEi9XN7Q6wgJdZ+SN2u84jECV3TFfFd/Ckq1Di9en?= =?us-ascii?Q?4umL0ZY9qoYDv0XJZhoJYAbrsys2Da4sqMylc2Mh5J7eGCVt4r/D7MLAl0WG?= =?us-ascii?Q?GKIutcg5VEZj74bbHNbeUSk69NQlcAeKtg87Hx+Gtq8KnBQ3tV78bf7q2wmC?= =?us-ascii?Q?Cut7L5MMfgqvvr1gTSbYvE6F5K3jaeK04PvMYuIVsjAZSfc/x39wFRsq9yBr?= =?us-ascii?Q?SjSdmPE63YvYe5l2cx8K3uqRp6boDgYLTXgxwveBq6Hr9+AEQVppECQhibpz?= =?us-ascii?Q?m730cfdYn2wXqYKeiB3ud5x8RpKEVplUVmMB/yBA6f3OUVFFYaB1lNVlPRod?= =?us-ascii?Q?042ua/JCPqD6ZUZ0N8dcrvP8cjblygbFTxeJe0eBfhjU9NLsXeY6rXUytE7q?= =?us-ascii?Q?sAxfIkXwvPJFFYpDWmmrpodCZx5Ugl/mV2GC2us7Had2pEMHXDdYPtD9tuHe?= =?us-ascii?Q?4yGbXgWXZymql2QG6poQVic2q/yFtFOiQHybORM9DZvTMbEbwXBFnOpwtqLw?= =?us-ascii?Q?I/iQ1r9m57qo3RSEJyeX7Ym6UWIcxm1ZQ85eunUsohVTwShU7Y7/y3fK3z/A?= =?us-ascii?Q?YJ00MZ26QMQXsqCvV4JshslfY70aCdQCVCWv0EtdjwkeMQh5zjvk9+zUmbhq?= =?us-ascii?Q?oClmzVcFpiLYHIs8rzNKVA8xoTrE1evvpobJoLLEcsn6lIW+I8FGDVSIAcQa?= =?us-ascii?Q?3sp1SRje9bDf4rlO/MP4MQVEcTJ+1N5TNOMKK+F8flEJ3GGyQ0T9PWFEJhpR?= =?us-ascii?Q?TSh8XUarMNTjQaERoxqd8/xDKXgyjX0zqpVivfy5yqRBkToZP8hLswFN9YPE?= =?us-ascii?Q?2lmIovSmSkxcLpsl+eSP9nSBvAF9NPbCYJAm7GAYJZLJrQocQQvJwBCh/E21?= =?us-ascii?Q?4vuEunRf02TF3oM1O3vZUgiQfDtpcwbilfuaUq/g5QIWxye/nRJbYzq/Sa8D?= =?us-ascii?Q?C2Xm4BPPpjoBWKMrA9wQ7yDVYkysXBWs4Rfvxwuxzh647z5PZ+koDzjAXyRh?= =?us-ascii?Q?FX4F6aZgxGVVO5z/b275krm6V9YnNhO+ldeXfxuZ3HlacTzOx8o1lh2IYKap?= =?us-ascii?Q?syTuw+Dd0EA7e3ocRtEYEQhwFkFORunxISMtvrswj6gGR6Kiel0EudQQSOr/?= =?us-ascii?Q?VlxaA1VNq4IwP23xxFjrj41+8uh3bLvgEPoKRm0t4m8vNtffxRvYrvOGfCMa?= =?us-ascii?Q?yjKWce/or5JJtElEHK1Avsu9vG4/xX/zq2/XDsqdFtms5Sc8ooCnilIfB89q?= =?us-ascii?Q?TBSh0a4EZJtcs4UEhMYKblNxPHchGyi8KR4YHRrrM+i2vIN4kFd9gDi9eKSU?= =?us-ascii?Q?YdqU6c8JeVcMnfZP+LXWu7f45O9utQWL56aBmYPBtKAN9vIhR6X0y9J/YPAW?= =?us-ascii?Q?wp4GYkzIo9tiX3k24n2gTJ80uPnQ4rczYvclYhvISnw4shDaPVVZEyNRHVQV?= =?us-ascii?Q?T3u3zuGQq3/qmDhfqBeIVtWZ5CUPQ8o6t29cfeKqkGNQbLp3G5dd0AQ0OSko?= =?us-ascii?Q?3RcB+IKWVMQ+x0t4FVbNOfOr8OMnO52z87pZTeTvgYNyWVGNWSC/BjwIdXdl?= =?us-ascii?Q?ty4i+A=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230040)(30052699003)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4eEzw/NrOjPaX7gH26A7Y3YEsbU3ql0X8CEG60pzG0xQIX1EUkbzmo/GbG5osRQm2to22JRnE4ILqkR8fmLtp2LP8vUrYZMBF1y1bvmT/pp3NgWh4BeyEsCaQVuBfymHea7A221jmuYrT8HqOV/lythfQH9iskxLOjp39Sn2xqHsSk2Oli9rSyEWlYED2xzKn2bq7viwMPZwF4onB7XhnwTEm+uOhNC/Pyp4NG6Klid5gqmtcJ2xNyxZ6HCRH3UbhiARKyuwefsqWmIzEtGEIWlXVafMtWSUB6kXqYNLCMDq7gpUrcusjAeh/k4Rh/mWRJivD9lu5GEpFLZ0C6m3DR1pXauhWq7kBqgE0Afq8oVVz9tZcge7cDY8LgOj9gSecscm41fed7Ql0Yc7TUMtV2A1Z2gaYCKhKJEdijRfY+hga4Lo/7prX9bx1XIGc1tc X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2026 07:22:11.2278 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f6581eb4-429d-4d36-c041-08de62f4f276 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF0000231D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PPF44635DB8D Content-Type: text/plain; charset="utf-8" From: Dragos Tatulea When memory providers are used, there is a disconnect between the page_pool size and the available memory in the provider. This means that the page_pool can run out of memory if the user didn't provision a large enough buffer. Under these conditions, mlx5 gets stuck trying to allocate new buffers without being able to release existing buffers. This happens due to the optimization introduced in commit 4c2a13236807 ("net/mlx5e: RX, Defer page release in striding rq for better recycling") which delays WQE releases to increase the chance of page_pool direct recycling. The optimization was developed before memory providers existed and this circumstance was not considered. This patch unblocks the queue by reclaiming pages from WQEs that can be freed and doing a one-shot retry. A WQE can be freed when: 1) All its strides have been consumed (WQE is no longer in linked list). 2) The WQE pages/netmems have not been previously released. This reclaim mechanism is useful for regular pages as well. Note that provisioning memory that can't fill even one MPWQE (64 4K pages) will still render the queue unusable. Same when the application doesn't release its buffers for various reasons. Or a combination of the two: a very small buffer is provisioned, application releases buffers in bulk, bulk size never reached =3D> queue is stuck. Signed-off-by: Dragos Tatulea Reviewed-by: Cosmin Ratiu Signed-off-by: Tariq Toukan Reviewed-by: Jacob Keller --- .../net/ethernet/mellanox/mlx5/core/en_rx.c | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_rx.c index 05b682327305..849e1f16482a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -1087,11 +1087,24 @@ int mlx5e_poll_ico_cq(struct mlx5e_cq *cq) return i; } =20 +static void mlx5e_reclaim_mpwqe_pages(struct mlx5e_rq *rq, int head, + int reclaim) +{ + struct mlx5_wq_ll *wq =3D &rq->mpwqe.wq; + + for (int i =3D 0; i < reclaim; i++) { + head =3D mlx5_wq_ll_get_wqe_next_ix(wq, head); + + mlx5e_dealloc_rx_mpwqe(rq, head); + } +} + INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq) { struct mlx5_wq_ll *wq =3D &rq->mpwqe.wq; u8 umr_completed =3D rq->mpwqe.umr_completed; struct mlx5e_icosq *sq =3D rq->icosq; + bool reclaimed =3D false; int alloc_err =3D 0; u8 missing, i; u16 head; @@ -1126,11 +1139,20 @@ INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_mpwqes(s= truct mlx5e_rq *rq) /* Deferred free for better page pool cache usage. */ mlx5e_free_rx_mpwqe(rq, wi); =20 +retry: alloc_err =3D rq->xsk_pool ? mlx5e_xsk_alloc_rx_mpwqe(rq, head) : mlx5e_alloc_rx_mpwqe(rq, head); + if (unlikely(alloc_err)) { + int reclaim =3D i - 1; =20 - if (unlikely(alloc_err)) - break; + if (reclaimed || !reclaim) + break; + + mlx5e_reclaim_mpwqe_pages(rq, head, reclaim); + reclaimed =3D true; + + goto retry; + } head =3D mlx5_wq_ll_get_wqe_next_ix(wq, head); } while (--i); =20 --=20 2.44.0