From nobody Sat Feb 7 17:42:24 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011033.outbound.protection.outlook.com [40.93.194.33]) (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 06C4129E0F8; Mon, 26 Jan 2026 07:15:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.33 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769411746; cv=fail; b=sYVRLIaP1qjrZhf6sXPxP72ulco5x+6WFtUZJxkOfOmZGai706jIGWVYwkUOLt3HG4eT1hXty4Jv0TUY0hWmwySxE4gPvgLjoISM/2vxedbOiEHsHhn03gUxoy9VlB00AYkC2+BDyylIantIfSxD1kNhxM9wS9ER8SyYZj+dlEQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769411746; c=relaxed/simple; bh=NWM4QMvS9zI4EEQDoWiKOxjMje65l20ac4/Lg1nfGKc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HYc61Z/b3ieoDaLWyeNgpufErTtQEEdbXjVo6sOYI/K96YgP3FLbbo0F5O2dm1gmT62OcycdCKyXsK5dQVuy1X5WtCAx3MXLdJOl4gxOZaJTptkNjg5r5dZRYQSR2M9iqiYfwJKdfu8lXtnx4YUaWziBqKI3cueipU+x7msqmaI= 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=tw4ejJZ+; arc=fail smtp.client-ip=40.93.194.33 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="tw4ejJZ+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wJy4/F7e3xhfn4qeLESkkiizyYwUH4GvePOVWDZaC9ljPTUPLB+VkG+3N1C7G1COQlGzz6LgpmxA16KaWesC8S8vxKLdzeSPD1oc/YkEXhOcs4QNvePIPb3Lw7cdDKZOsUSZ038nk2ECqzLlp7o7scIPZiBkDrZ+FM0hL/1vZ9j1lbo5fDCgKDAC/miCUdc+5yFNFM5UBgfTogDXNw5/Iy/BlekrcEBD4F4pzwimWM5YFElAt6gIEadZQah/zqMaUV8ZpHpt+I1XJtPwOZGIvP4a9nydeKTYCBRBoIR1Lm/m/LlIAFlA0k/FbrhhSIe096/XZX5frfmTLzmWx8WeXw== 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=5+CsvzdCyHwd8f4AUacSmN/xFDueuYrTwJ59RsGZR74=; b=baCFl1Uc55T7jcgyIusuthVcOJ2L3E1XFAMW8DpUI55K/z2zhCRm6Ydqqk9t1k62n07yTD3Phg7PoXfZs9G9p21Ltgd1XOnxhECzXuqoK+j+wAKhfnTFi/7UXfhB8eryB7TIOFIw2kNImrMQasYLIEQvhzEc12d4lYFmsPhyCcXjkGBEvR9oKvF7ZPBUt0Ij16tzJq6U4fBs3iYTfElYO8xvUWkD3FjX21z7L5zIQpW3eFE+oP4ceNPJ/f9d1e4uTRouaNUulpiJ//xwmKTn+aNC9HzSO/W8VlEg8s+N1dp52TgdR+PpeyGXn0yDPN3Gz5PWU5zXXMLGzOUj979e7A== 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=5+CsvzdCyHwd8f4AUacSmN/xFDueuYrTwJ59RsGZR74=; b=tw4ejJZ+/cHpPmLKMa6ufIEAFOpvW+YDlFus84qYdb9ZUNFPVYSLYXOBERupW5gNbKJsaPHjiBmNVVOwH+GY7CunYQdoFE64QPHSFBCsfTCtmlbxX/8nQoTpuGi4P//FGXlirSVhdOQjQ5ISjbn2DYAawZ6GHi6KdJ7nBmNR16VssRQ6eU5i/wciAffU90UFyx4AaGX4/oaWJAfIBY+uEROXXGt5Ynuxd4gTJ6KG2z2gOT68sjL1bL2+yzTrw64eMtbM0i/uJOE5M0UHPcE4vSIiJv2mSgZ+gK8frL916CR8bdzA6Ja4O+s+6CTt///R7M/PVYfoiOL2mjkKfnVjiw== Received: from SJ0PR05CA0143.namprd05.prod.outlook.com (2603:10b6:a03:33d::28) by CY5PR12MB6298.namprd12.prod.outlook.com (2603:10b6:930:21::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.15; Mon, 26 Jan 2026 07:15:40 +0000 Received: from CO1PEPF000044F2.namprd05.prod.outlook.com (2603:10b6:a03:33d:cafe::e6) by SJ0PR05CA0143.outlook.office365.com (2603:10b6:a03:33d::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.7 via Frontend Transport; Mon, 26 Jan 2026 07:15:07 +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 CO1PEPF000044F2.mail.protection.outlook.com (10.167.241.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3 via Frontend Transport; Mon, 26 Jan 2026 07:15:39 +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; Sun, 25 Jan 2026 23:15:22 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) 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; Sun, 25 Jan 2026 23:15:21 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 25 Jan 2026 23:15:18 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Saeed Mahameed , Leon Romanovsky , Tariq Toukan , Mark Bloch , , , , Gal Pressman , Moshe Shemesh , Shay Drory Subject: [PATCH net 1/3] net/mlx5: Fix Unbinding uplink-netdev in switchdev mode Date: Mon, 26 Jan 2026 09:14:53 +0200 Message-ID: <1769411695-18820-2-git-send-email-tariqt@nvidia.com> X-Mailer: git-send-email 2.8.0 In-Reply-To: <1769411695-18820-1-git-send-email-tariqt@nvidia.com> References: <1769411695-18820-1-git-send-email-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000044F2:EE_|CY5PR12MB6298:EE_ X-MS-Office365-Filtering-Correlation-Id: 71152abd-33e0-41b0-e0c6-08de5caab5c1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rFDKVEVBxNwuP9uT4vIF0x8YcECZu1LpgBcof7zwdpYXesdr6XiIozadscYw?= =?us-ascii?Q?wMBBER6zTwsO7Y3j+kowEnpiEWTXtJWziJ0IFcplAjhxdUYffRfj++waxhI7?= =?us-ascii?Q?bpyr2BSHmghXXXqKGYKanmR2CxzAo525YFSlUkLCdUHCDTi0z4GKJ5KG1xhN?= =?us-ascii?Q?FFmfiwceI9OQnPOvm4hwHgHm0YVN5kNT6GOoBfEDZFs/GLWebPj19+geUj1D?= =?us-ascii?Q?VPOGXYWxJVuIe0ygaJdMbEWTmq8Ed+4TYS/P8z6FBCB6n04Qi+mdNZ83WOX3?= =?us-ascii?Q?vT8p+WUA5b2W22FKCyYbqmBwXaF4KVkbtlNW5XWOLwydKktXMrfoVsTL4BDx?= =?us-ascii?Q?zWJ5C1gFxIMRIHCVGb73IAYd9RMThXgyaYWoG8YBo2XMIFh4opR4EcASvemo?= =?us-ascii?Q?HqICF0DfMfbZ1kzXxaaq1y71gwNV7P1fjV5I989XTk+HWHEIpDiTjhDIH6tM?= =?us-ascii?Q?+ikgLK7xaCERE7UUwsZhn8soHoGHo1SjYafl84fxwg4LY7V2vteB031JTwWh?= =?us-ascii?Q?lcXS0P8lC2Nylj/vQbxHzOL+HVztdbyOt9qH74vjvUdF24pQNrXHeOVRqbLy?= =?us-ascii?Q?y+qx2a0Gpp7wF61ggnqmgkuUOsTYKeVTWDpLAQMVOriJJwYxYUJf/1cGF+29?= =?us-ascii?Q?/vWXu56lJboGk3a7vun3u8mut3lSYajVwDvrKe+QtTvxnSXRsKqMZzFJRw/b?= =?us-ascii?Q?uUvU5sROxvydu82zi/moyWEwz/bLNT/orf9feT16/B4tGaIYQwOJNU9QgeYQ?= =?us-ascii?Q?KCYRwSQQqCTc7McV8aLtUGUyZRcI+FBTdnTJXOx/bolvIgdktOqctX/Zl+D8?= =?us-ascii?Q?4QVAhS9BrxzMI7aHt31qDBLQEoa8HzwwvUu/hroxI/5bLSUGA/9oWfgDX5v4?= =?us-ascii?Q?VpMbrWXBY5qhfu1zAEYoIIqtYP5K9/2vTr8wB9UcOe7mNXLDl5SjoiG2Cvdi?= =?us-ascii?Q?no07XMl2wzn3tvuCDf8akkJMCHr2c/F4nK8GgfwtYJ+IbzX0FNzdU8tHjFH/?= =?us-ascii?Q?w4/TCaTyQD23N5RKuYlkeozrIBcBUMoxDXw/plXh0uh6K9lBMSjsuYtuwn2V?= =?us-ascii?Q?p4saGw+Ad6J4QVMmpGMjs6QTiY4pT9aFuDqZXx/Pld9vHtNeufmYuFX/ROze?= =?us-ascii?Q?BnbyaJn+gdQmxEzcmXElBcfzsNFpslexKlBHM+iGGTtXsF58kTQoRvhAke2G?= =?us-ascii?Q?59GrXOBfk/1eG/hDOEFl23QCReHoQIdMhnbTxxxdVpynu/u+QiX8Z3BUir9R?= =?us-ascii?Q?HHwGglFKFavBbsQaL92c936jMPFcEek95RdJjujUK6pwemJKiFjo2NPUGl/v?= =?us-ascii?Q?U/jDMpPuSfwT2yPguQ6e6DydF/LTjjNTvaJFwHWj4z3fxlIMuad4yo/PpB0G?= =?us-ascii?Q?ZSAInYiubtKykUq/4WnJ5L9H3zX3CNUPgJoprwNqNhsIpJs/luVJPMuGZ9r2?= =?us-ascii?Q?gUUv8bh0BFa/bunNeHTYjRpRsEKLfXDxDpfIZOM9yPlXifBzZm5JTcy0wqxJ?= =?us-ascii?Q?amihf5/ICsJR8ZJ15z1+0bVRObwF2zsX+2zhAEMM1bXwPVHPJHxEqy3/URf+?= =?us-ascii?Q?dryiB1/pmzapupAUl1PW8UgLgUOK1kHvglXcY0dDyQqsAqf9TYl5v2oJawIg?= =?us-ascii?Q?S9QEonMBmrNOl1Ol6QI/WDuo+uKZBQ2f9i4l9NWCyFhRLWQlkNkT13BQ/fr+?= =?us-ascii?Q?EVrFWg=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)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:15:39.5845 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 71152abd-33e0-41b0-e0c6-08de5caab5c1 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: CO1PEPF000044F2.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6298 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shay Drory It is possible to unbind the uplink ETH driver while the E-Switch is in switchdev mode. This leads to netdevice reference counting issues[1], as the driver removal path was not designed to clean up from this state. During uplink ETH driver removal (_mlx5e_remove), the code now waits for any concurrent E-Switch mode transition to finish. It then removes the REPs auxiliary device, if exists. This ensures a graceful cleanup. [1] unregister_netdevice: waiting for eth2 to become free. Usage count =3D 2 ref_tracker: netdev@00000000c912e04b has 1/1 users at ib_device_set_netdev+0x130/0x270 [ib_core] mlx5_ib_vport_rep_load+0xf4/0x3e0 [mlx5_ib] mlx5_esw_offloads_rep_load+0xc7/0xe0 [mlx5_core] esw_offloads_enable+0x583/0x900 [mlx5_core] mlx5_eswitch_enable_locked+0x1b2/0x290 [mlx5_core] mlx5_devlink_eswitch_mode_set+0x107/0x3e0 [mlx5_core] devlink_nl_eswitch_set_doit+0x60/0xd0 genl_family_rcv_msg_doit+0xe0/0x130 genl_rcv_msg+0x183/0x290 netlink_rcv_skb+0x4b/0xf0 genl_rcv+0x24/0x40 netlink_unicast+0x255/0x380 netlink_sendmsg+0x1f3/0x420 __sock_sendmsg+0x38/0x60 __sys_sendto+0x119/0x180 __x64_sys_sendto+0x20/0x30 Fixes: 7a9fb35e8c3a ("net/mlx5e: Do not reload ethernet ports when changing= eswitch mode") Signed-off-by: Shay Drory Reviewed-by: Mark Bloch Signed-off-by: Tariq Toukan Reviewed-by: Simon Horman --- drivers/net/ethernet/mellanox/mlx5/core/dev.c | 14 ++++++++++ .../net/ethernet/mellanox/mlx5/core/en_main.c | 1 + .../net/ethernet/mellanox/mlx5/core/eswitch.h | 4 +++ .../mellanox/mlx5/core/eswitch_offloads.c | 26 +++++++++++++++++++ .../ethernet/mellanox/mlx5/core/mlx5_core.h | 1 + 5 files changed, 46 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/dev.c b/drivers/net/et= hernet/mellanox/mlx5/core/dev.c index 64c04f52990f..781e39b5aa1d 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/dev.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/dev.c @@ -575,3 +575,17 @@ bool mlx5_same_hw_devs(struct mlx5_core_dev *dev, stru= ct mlx5_core_dev *peer_dev return plen && flen && flen =3D=3D plen && !memcmp(fsystem_guid, psystem_guid, flen); } + +void mlx5_core_reps_aux_devs_remove(struct mlx5_core_dev *dev) +{ + struct mlx5_priv *priv =3D &dev->priv; + + if (priv->adev[MLX5_INTERFACE_PROTOCOL_ETH]) + device_lock_assert(&priv->adev[MLX5_INTERFACE_PROTOCOL_ETH]->adev.dev); + else + mlx5_core_err(dev, "ETH driver already removed\n"); + if (priv->adev[MLX5_INTERFACE_PROTOCOL_IB_REP]) + del_adev(&priv->adev[MLX5_INTERFACE_PROTOCOL_IB_REP]->adev); + if (priv->adev[MLX5_INTERFACE_PROTOCOL_ETH_REP]) + del_adev(&priv->adev[MLX5_INTERFACE_PROTOCOL_ETH_REP]->adev); +} diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 9042c8a388e4..f83359f7fdea 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -6842,6 +6842,7 @@ static void _mlx5e_remove(struct auxiliary_device *ad= ev) struct mlx5e_priv *priv =3D netdev_priv(netdev); struct mlx5_core_dev *mdev =3D edev->mdev; =20 + mlx5_eswitch_safe_aux_devs_remove(mdev); mlx5_core_uplink_netdev_set(mdev, NULL); =20 if (priv->profile) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h b/drivers/ne= t/ethernet/mellanox/mlx5/core/eswitch.h index e7fe43799b23..714ad28e8445 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h @@ -929,6 +929,7 @@ int mlx5_esw_ipsec_vf_packet_offload_set(struct mlx5_es= witch *esw, struct mlx5_v int mlx5_esw_ipsec_vf_packet_offload_supported(struct mlx5_core_dev *dev, u16 vport_num); bool mlx5_esw_host_functions_enabled(const struct mlx5_core_dev *dev); +void mlx5_eswitch_safe_aux_devs_remove(struct mlx5_core_dev *dev); #else /* CONFIG_MLX5_ESWITCH */ /* eswitch API stubs */ static inline int mlx5_eswitch_init(struct mlx5_core_dev *dev) { return 0= ; } @@ -1012,6 +1013,9 @@ mlx5_esw_vport_vhca_id(struct mlx5_eswitch *esw, u16 = vportn, u16 *vhca_id) return false; } =20 +static inline void +mlx5_eswitch_safe_aux_devs_remove(struct mlx5_core_dev *dev) {} + #endif /* CONFIG_MLX5_ESWITCH */ =20 #endif /* __MLX5_ESWITCH_H__ */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/d= rivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c index ea94a727633f..02b7e474586d 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -3981,6 +3981,32 @@ static bool mlx5_devlink_switchdev_active_mode_chang= e(struct mlx5_eswitch *esw, return true; } =20 +#define MLX5_ESW_HOLD_TIMEOUT_MS 7000 +#define MLX5_ESW_HOLD_RETRY_DELAY_MS 500 + +void mlx5_eswitch_safe_aux_devs_remove(struct mlx5_core_dev *dev) +{ + unsigned long timeout; + bool hold_esw =3D true; + + /* Wait for any concurrent eswitch mode transition to complete. */ + if (!mlx5_esw_hold(dev)) { + timeout =3D jiffies + msecs_to_jiffies(MLX5_ESW_HOLD_TIMEOUT_MS); + while (!mlx5_esw_hold(dev)) { + if (!time_before(jiffies, timeout)) { + hold_esw =3D false; + break; + } + msleep(MLX5_ESW_HOLD_RETRY_DELAY_MS); + } + } + if (hold_esw) { + if (mlx5_eswitch_mode(dev) =3D=3D MLX5_ESWITCH_OFFLOADS) + mlx5_core_reps_aux_devs_remove(dev); + mlx5_esw_release(dev); + } +} + int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode, struct netlink_ext_ack *extack) { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/= net/ethernet/mellanox/mlx5/core/mlx5_core.h index cfebc110c02f..99b0a25054ef 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h @@ -290,6 +290,7 @@ int mlx5_register_device(struct mlx5_core_dev *dev); void mlx5_unregister_device(struct mlx5_core_dev *dev); void mlx5_dev_set_lightweight(struct mlx5_core_dev *dev); bool mlx5_dev_is_lightweight(struct mlx5_core_dev *dev); +void mlx5_core_reps_aux_devs_remove(struct mlx5_core_dev *dev); =20 void mlx5_fw_reporters_create(struct mlx5_core_dev *dev); int mlx5_query_mtpps(struct mlx5_core_dev *dev, u32 *mtpps, u32 mtpps_size= ); --=20 2.40.1 From nobody Sat Feb 7 17:42:24 2026 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013018.outbound.protection.outlook.com [40.93.201.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 0AFFD2BE7B6; Mon, 26 Jan 2026 07:15:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769411751; cv=fail; b=QSfwVNrjmYL8SbXkf3IWl4nk95KREZcM7DqcflCiUHQwaBeu0F8ok21lFEw9wLXpzAPQXr84kQ7Xj2CK4Xm1sSSxfmPmkDxs1qSCM6JzTbLN6Nr64qguFQjXCVIfmmQERsXH5GqxayIXxfy1h3wl4DsMHbc1hqA3/pUD+FC/7cI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769411751; c=relaxed/simple; bh=+H9JObFHGFqyeYanJHGb8ctoNmuvvoCjqaEviMy7Ses=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=H34KI8QXcpupckBnECBQoGOmG6hq8HsmvhYiQ3fQLjrD5O0X6HUYzgvzXqtC6Sw8tzIlE7xCtCO324YPgfLYYk9783YfRlh+MTE61nAiiDu5NZwXpOrHfnAgUWD2Bs5zsa5p2H4s4W0BRNQ+pikorVUohFdJ14AUsw0oUb4v16I= 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=CTmVw/cJ; arc=fail smtp.client-ip=40.93.201.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="CTmVw/cJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xb6AZf7V19RU2vThg6UBbWXJ3fur1R0qFTGEORggzRFAroCN0WqhL4jUdBrCUMd98kwkIOwhX9KkIzIYdtE/pUi5zdxhA+OQ3xJsVoaq709v5MQCRPP2akIWymj1DUGhwPBw1by/3ne1wEReAHJK+/jZnX0HjgcPyPwN8io9MyEvg6O22oin7yRq+jRTWvTan2Rr6HmXxDdqtfZ02wrKqtj4HE8MWvhzwccY+MIfyMVTJRpNSfG2uiTXDb/KT3fvGTUncbtB+77dHipsEvffxED3QO/sj8HEz/e+Hf35Ya6yah45eVm4CDQDUETq383bVO2LQxnoAZNrS+CTQyb7mw== 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=LzkAdWOaRF2iclYxB0JIsKlT49ekGlmFiULCTrp8d5Y=; b=LzsfB+q5WPaUVnuN0l3NUKSydYVr5QjkXvn5gJk67Ipxzo1dP0RKsJhs2e/69Qkxv9vD6CDYJS+7ESiljSE91BJyvaOhmsswIXyCY0lG6573IiUzk0/xsTRQOUM9tBPLitEv+RC1nC6N2HPOfCIqoPUroPsbtam7iQI2u8pKJnulT6k27vnreDrQ2gdew3L/f83WiwI+d4Mpdp3GkOqoPnoUtXXSTx8f5W4TEjHdlaTXrxAqAYEiBE/W5b86Zlnv6P7Wj+JSdNCeGZwyGI8TpxX/o8BXqY7GKEvu0o+swD5agQdW5LDofhu5+JGLcJDe9SlyyuLD+huE1e34/sYnIg== 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=LzkAdWOaRF2iclYxB0JIsKlT49ekGlmFiULCTrp8d5Y=; b=CTmVw/cJSpjFEoi6oBtFRrsjxu36+M3CxnToqnmc8B5JWrbZ0HX6jddYV1fAfR56477W8Hhxcoyz5ddAenCR2jq1rGRayb0wXBdchvBhOdmSf0jPoito2Z0UdD39kipBPirxzbnlYzn8JTIEDwA5YPvL0W9bJ69yownRGNt0bE8xCkZ+MRK6sm8ApUMzDsHBhD9qwdlu4uNzAZ2fPdk3QccCp4DqwY8jrUkq2/eYMRtYhg49v3WvI06IX53dkkTgSUAu5KIcVtolv03eI1ZIzzjDcBCoBRLBUPQ4EKt3M+1UgOXk9bco8iaURiTzddrIlRH4nJFz0oeGe5TVjLBznw== Received: from SJ0PR13CA0036.namprd13.prod.outlook.com (2603:10b6:a03:2c2::11) by BY5PR12MB4163.namprd12.prod.outlook.com (2603:10b6:a03:202::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Mon, 26 Jan 2026 07:15:43 +0000 Received: from CO1PEPF000044F1.namprd05.prod.outlook.com (2603:10b6:a03:2c2:cafe::fa) by SJ0PR13CA0036.outlook.office365.com (2603:10b6:a03:2c2::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.7 via Frontend Transport; Mon, 26 Jan 2026 07:15:26 +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 CO1PEPF000044F1.mail.protection.outlook.com (10.167.241.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3 via Frontend Transport; Mon, 26 Jan 2026 07:15:43 +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; Sun, 25 Jan 2026 23:15:26 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) 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; Sun, 25 Jan 2026 23:15:25 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 25 Jan 2026 23:15:22 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Saeed Mahameed , Leon Romanovsky , Tariq Toukan , Mark Bloch , , , , Gal Pressman , Moshe Shemesh Subject: [PATCH net 2/3] net/mlx5e: TC, delete flows only for existing peers Date: Mon, 26 Jan 2026 09:14:54 +0200 Message-ID: <1769411695-18820-3-git-send-email-tariqt@nvidia.com> X-Mailer: git-send-email 2.8.0 In-Reply-To: <1769411695-18820-1-git-send-email-tariqt@nvidia.com> References: <1769411695-18820-1-git-send-email-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000044F1:EE_|BY5PR12MB4163:EE_ X-MS-Office365-Filtering-Correlation-Id: ee519cb3-e146-4bf7-b6df-08de5caab7e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IOMYF2/EGJrCbNoUpUZtjB2AfrOZ2AtltMehbTonan9ZoyBcTjMXu54Lpg6f?= =?us-ascii?Q?SL+F6IHEiYPAjfZ1DB92pCOlTMYKzj99n6eKI0yS+y7A1IoEezKIfPS2GSlZ?= =?us-ascii?Q?/Z7sT4d7tg17I21SikhpyBFxtpPqdkemU/Jgmpcq2QVIcOWD3hMCS5EfwSnf?= =?us-ascii?Q?O/242k2n1FdLcyzGW69daAjFKqenYO1j3RWQafOXZDdIzGYA53NBSYl71n/C?= =?us-ascii?Q?23Te/TOARq58gpkdKotvNhW4xENMRMSELuxaHZX9CJ0VP/YS+lJsIAx13TTI?= =?us-ascii?Q?DoWIOq70R305Gv7ZCWsq8p7gNpCmp4BvEY1vGKcn3WYksGkOSw3oJd2wtJ6I?= =?us-ascii?Q?CGdQ9O5U7h7M4RTmBFEnqEy9qYg7zv+cm3FXfccbHod6/9fYyVl+qusAxx0c?= =?us-ascii?Q?zcsICvXXaGbgifW6IZfq2deVjrB8y0A850iNpfxxxHXR6c3E3FCXzjWb9wtN?= =?us-ascii?Q?sMhcJYqmkrJDNQk96QYScGUkqtklMWK0uqvvrgP/xxMePlr1RwSVWssLRnPo?= =?us-ascii?Q?ksQCeINr9oQPN/2o4dbuATXXqJBn05vLwPLrDxqtPkHN9AqUNHaR9/r9z6f/?= =?us-ascii?Q?oeXK9QD5M6mKI16kP3vMpApIGwDf+YA1NRhmvhreLpmLTRvnKh7g16kP9usm?= =?us-ascii?Q?61iXGL7arX8gvj3bGwHPGJTwg26HTbGcQ9f+2T3FtV2E9b08jHFR7W9ynq2R?= =?us-ascii?Q?smvAGLwmrSMhucjqebMmgIBMlwQVPCDcakD3vuKx4mqItoIJ55KLK9kikyJl?= =?us-ascii?Q?vQU4ZBzxtmi/DD6RsUt6tm21c4vuCnEOmMrH02MPLjpra7tWAQgKXlx3iJD6?= =?us-ascii?Q?dMZ5ROC2sKJkNrUNM2mHYau62K5lfDQrJyc2FzPoyD3nMJvef1tzVMu3SHDm?= =?us-ascii?Q?BfFK1LAMVKfQu5v+Q3HV5jz6i+NePNUoswdPQrP+3R4XMM5ujUtijimEhyiO?= =?us-ascii?Q?Uyn6DbrFzx+P7FP3LM9QK1eEZXW8zhcnS/nSnFwm8ElwJ5f+BSvW8dZcsWCG?= =?us-ascii?Q?bNmWdWVPEGG7CGbDn1NEIAJE5dOjJzILZYu4DTlnnl3RefFzUrusNMQfI/hY?= =?us-ascii?Q?Tw7x6M47JgZ1K2Q0+RN0PiXIpq2zl4zm013V6WN9Y9nLMTeWUNBBEBjjGPv/?= =?us-ascii?Q?M5ha7G9150fHUko7W8DEOWA42K4J58YExSDYKj3Nd/3+cUNIhspfESOQImSg?= =?us-ascii?Q?6nIKm6T8S6lFWWPIAUNJig1IeKwraV9gS0lJsax6R3Jtrgm/K4qic7Mpfj8j?= =?us-ascii?Q?meIY7QR1FCWEISdoBzk4j6to0bYfMix6C9m11Xdzv54+o917T8F5R8BYCyV/?= =?us-ascii?Q?y5Pza7ZEO3le8eK6QCf03SmTFwZqHe8rJGDUdrF9dPOGJIK06Nc3mDb/jxAL?= =?us-ascii?Q?lUvvrAi+NzAnfl7dc+GzPfcazD6M9pL9l1r1AzTsQ0MR6NPxM4pb1pqCFDZC?= =?us-ascii?Q?J/trIeANAYqEx1p4Fe6blMKFapl3lxNF/zguzXrPWRDH7kgCcNk0WxxILK5b?= =?us-ascii?Q?e3IM1/I7JvA/rDU78N7rkhUmrZ+juImeJnRwCHU+oBoMBMwAjg5x0Xgib3cR?= =?us-ascii?Q?3rfIfHdD8pK/oUONkOOTxEBw5WsV8kk0SeKPKs4ID5AxzInQxfokWKXvkQax?= =?us-ascii?Q?L+ZGF+JclwhwAk0Csr2OeOtAr4vpHfDOfT32pHma2Iae9ACikDfirXcmSmLD?= =?us-ascii?Q?CE3EpA=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)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:15:43.1737 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ee519cb3-e146-4bf7-b6df-08de5caab7e4 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: CO1PEPF000044F1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4163 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mark Bloch When deleting TC steering flows, iterate only over actual devcom peers instead of assuming all possible ports exist. This avoids touching non-existent peers and ensures cleanup is limited to devices the driver is currently connected to. BUG: kernel NULL pointer dereference, address: 0000000000000008 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page PGD 133c8a067 P4D 0 Oops: Oops: 0002 [#1] SMP CPU: 19 UID: 0 PID: 2169 Comm: tc Not tainted 6.18.0+ #156 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd23= 9552ce722-prebuilt.qemu.org 04/01/2014 RIP: 0010:mlx5e_tc_del_fdb_peers_flow+0xbe/0x200 [mlx5_core] Code: 00 00 a8 08 74 a8 49 8b 46 18 f6 c4 02 74 9f 4c 8d bf a0 12 00 00 4c= 89 ff e8 0e e7 96 e1 49 8b 44 24 08 49 8b 0c 24 4c 89 ff <48> 89 41 08 48 = 89 08 49 89 2c 24 49 89 5c 24 08 e8 7d ce 96 e1 49 RSP: 0018:ff11000143867528 EFLAGS: 00010246 RAX: 0000000000000000 RBX: dead000000000122 RCX: 0000000000000000 RDX: ff11000143691580 RSI: ff110001026e5000 RDI: ff11000106f3d2a0 RBP: dead000000000100 R08: 00000000000003fd R09: 0000000000000002 R10: ff11000101c75690 R11: ff1100085faea178 R12: ff11000115f0ae78 R13: 0000000000000000 R14: ff11000115f0a800 R15: ff11000106f3d2a0 FS: 00007f35236bf740(0000) GS:ff110008dc809000(0000) knlGS:00000000000000= 00 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000008 CR3: 0000000157a01001 CR4: 0000000000373eb0 Call Trace: mlx5e_tc_del_flow+0x46/0x270 [mlx5_core] mlx5e_flow_put+0x25/0x50 [mlx5_core] mlx5e_delete_flower+0x2a6/0x3e0 [mlx5_core] tc_setup_cb_reoffload+0x20/0x80 fl_reoffload+0x26f/0x2f0 [cls_flower] ? mlx5e_tc_reoffload_flows_work+0xc0/0xc0 [mlx5_core] ? mlx5e_tc_reoffload_flows_work+0xc0/0xc0 [mlx5_core] tcf_block_playback_offloads+0x9e/0x1c0 tcf_block_unbind+0x7b/0xd0 tcf_block_setup+0x186/0x1d0 tcf_block_offload_cmd.isra.0+0xef/0x130 tcf_block_offload_unbind+0x43/0x70 __tcf_block_put+0x85/0x160 ingress_destroy+0x32/0x110 [sch_ingress] __qdisc_destroy+0x44/0x100 qdisc_graft+0x22b/0x610 tc_get_qdisc+0x183/0x4d0 rtnetlink_rcv_msg+0x2d7/0x3d0 ? rtnl_calcit.isra.0+0x100/0x100 netlink_rcv_skb+0x53/0x100 netlink_unicast+0x249/0x320 ? __alloc_skb+0x102/0x1f0 netlink_sendmsg+0x1e3/0x420 __sock_sendmsg+0x38/0x60 ____sys_sendmsg+0x1ef/0x230 ? copy_msghdr_from_user+0x6c/0xa0 ___sys_sendmsg+0x7f/0xc0 ? ___sys_recvmsg+0x8a/0xc0 ? __sys_sendto+0x119/0x180 __sys_sendmsg+0x61/0xb0 do_syscall_64+0x55/0x640 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7f35238bb764 Code: 15 b9 86 0c 00 f7 d8 64 89 02 b8 ff ff ff ff eb bf 0f 1f 44 00 00 f3= 0f 1e fa 80 3d e5 08 0d 00 00 74 13 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff = ff 77 4c c3 0f 1f 00 55 48 89 e5 48 83 ec 20 89 55 RSP: 002b:00007ffed4c35638 EFLAGS: 00000202 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 000055a2efcc75e0 RCX: 00007f35238bb764 RDX: 0000000000000000 RSI: 00007ffed4c356a0 RDI: 0000000000000003 RBP: 00007ffed4c35710 R08: 0000000000000010 R09: 00007f3523984b20 R10: 0000000000000004 R11: 0000000000000202 R12: 00007ffed4c35790 R13: 000000006947df8f R14: 000055a2efcc75e0 R15: 00007ffed4c35780 Fixes: 9be6c21fdcf8 ("net/mlx5e: Handle offloads flows per peer") Signed-off-by: Mark Bloch Reviewed-by: Shay Drori Signed-off-by: Tariq Toukan Reviewed-by: Simon Horman --- .../net/ethernet/mellanox/mlx5/core/en_tc.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_tc.c index a8773b2342c2..424786f489ec 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -2147,11 +2147,14 @@ static void mlx5e_tc_del_fdb_peer_flow(struct mlx5e= _tc_flow *flow, =20 static void mlx5e_tc_del_fdb_peers_flow(struct mlx5e_tc_flow *flow) { + struct mlx5_devcom_comp_dev *devcom; + struct mlx5_devcom_comp_dev *pos; + struct mlx5_eswitch *peer_esw; int i; =20 - for (i =3D 0; i < MLX5_MAX_PORTS; i++) { - if (i =3D=3D mlx5_get_dev_index(flow->priv->mdev)) - continue; + devcom =3D flow->priv->mdev->priv.eswitch->devcom; + mlx5_devcom_for_each_peer_entry(devcom, peer_esw, pos) { + i =3D mlx5_get_dev_index(peer_esw->dev); mlx5e_tc_del_fdb_peer_flow(flow, i); } } @@ -5513,12 +5516,16 @@ int mlx5e_tc_num_filters(struct mlx5e_priv *priv, u= nsigned long flags) =20 void mlx5e_tc_clean_fdb_peer_flows(struct mlx5_eswitch *esw) { + struct mlx5_devcom_comp_dev *devcom; + struct mlx5_devcom_comp_dev *pos; struct mlx5e_tc_flow *flow, *tmp; + struct mlx5_eswitch *peer_esw; int i; =20 - for (i =3D 0; i < MLX5_MAX_PORTS; i++) { - if (i =3D=3D mlx5_get_dev_index(esw->dev)) - continue; + devcom =3D esw->devcom; + + mlx5_devcom_for_each_peer_entry(devcom, peer_esw, pos) { + i =3D mlx5_get_dev_index(peer_esw->dev); list_for_each_entry_safe(flow, tmp, &esw->offloads.peer_flows[i], peer[i= ]) mlx5e_tc_del_fdb_peers_flow(flow); } --=20 2.40.1 From nobody Sat Feb 7 17:42:24 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012019.outbound.protection.outlook.com [52.101.48.19]) (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 4B42F2BDC0F; Mon, 26 Jan 2026 07:15:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769411756; cv=fail; b=CE79NHMZxw5i4bbPOfkkuOjwVhad1UPY84s541a6SyeIKw6SCvL1pOMQiIMfVGF1r9GScOM1GnhkVwHneRnW+yHey/PBW0QtVoDiKkWd/DgH4WhtHczsGku/ypIAx5k/S09yjtR3tOrj6SCa4d1jbkMgTsVWDuIJbqeGDbFZRDQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769411756; c=relaxed/simple; bh=OwI94IJmojNpHu2vl6hrDwIewAmA+OeX2rEvoGCi2w0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=qoZyuZf+WdAQ97k2M4H5aybekMjX+USTseUkmBqh2NXyJa9FOYsFi4WO6Z6BRMLJDy+lGWOtuc6TWVCluWmQefIrZU9d/0wQ/DmPy1iEqc1aD1pIp41NWywaSt+o+WffR7yYLRxbUHvQ599pObTT7z32q8W9VKHAF3UmV2EcGEY= 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=XQ7lG5+u; arc=fail smtp.client-ip=52.101.48.19 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="XQ7lG5+u" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lIiW/WSn/x0WcGrGUW23zJdNhVAKzao+VXCK8JaRCyD8jrkVajekXEgXE1v+3D8lzNrwnTRoRCTZr9LCruG0fRxHVbBdF/vjLj4JKxAOB+KrztYriOxNfEZHs21S+8zJ7/Txp0L9SpyieN18l2bRqMM0vxEsWb4dS+o2nKxUhsE+la2VWT6qMEtQFF+xDbjHwXOgOlgKVNpnj53DZsHrVAdL8wvs6/MPanRbUqfeWy7zR8+lThtrx9EQHBZR2R9F5lBkYSv7x9aIenF2ohA9iFZTlDxUrwcPQvDkoOMTNGntpKWXOMe1XQTfG40ih+1JizFTeZk4aUnKDR5063M50w== 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=8wyFlgnw3OQYwh5sR2TzkGh2apbMShux98lez9pwcqU=; b=d70QH+3rAO0XR/aj5S3juQA1QRssLhRkf4/PS7NTrPc8LdYzwgUIqNG7amf06afM8VMpUVl78C9dgCB1r2FC5wqpLJoueEhk52vAP2HESedf7LEI0PffMR9iOHrGQLnPLpo/17+/lrQBhgQ2DdKUBs1TvryRT+/De3d8WcLROeKVJAn3mlR24dwkrtcG0c/OBQ3b56lwGe6GrTVItI1vJd4iX2LY4Awa/H1tNyKZVZyqllIXxi+vLFMs7xJyAKHs52N4eIIfiTeYc1sg2Rf0oS61r2TGPJOE+zx+bt4K507MokHlr6Ek4M5beRGKtt00NrOZM+e8hyjf4kgo11f6eg== 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=8wyFlgnw3OQYwh5sR2TzkGh2apbMShux98lez9pwcqU=; b=XQ7lG5+ufEgIthC3TUALCvAcDNqfXp98a1Mchke6kPcatURkzmFcjo2uaDKq4RUlP0lCLahrbUFT4AIkHbf14QiavSxpfNLhqtX/wKwydbU7BKMqdsKU94o5MXDsSoEpSYN2QZJrb6KP6ZVMcDiM1ZNzbXLkwbQzHTH03fiP1R6/2mdOnWfqgRDVIuya1i8CWa5qCXdE8ZBYVOXxq4cNGV0rwuCmtRR6z1Da3hcoD5ca7HeSGwK1YpVxgTycvQHxQ4WUTnHLl9YDbtYvCPoOXggZpAuNg132/0DdaabYgPnYv67KKhfgyxccSWKIi/Dn3sXigLiJjJG9aJaI6jxlbA== Received: from SJ0PR13CA0219.namprd13.prod.outlook.com (2603:10b6:a03:2c1::14) by DM4PR12MB9072.namprd12.prod.outlook.com (2603:10b6:8:be::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.15; Mon, 26 Jan 2026 07:15:48 +0000 Received: from CO1PEPF000044F4.namprd05.prod.outlook.com (2603:10b6:a03:2c1:cafe::9e) by SJ0PR13CA0219.outlook.office365.com (2603:10b6:a03:2c1::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.6 via Frontend Transport; Mon, 26 Jan 2026 07:15:43 +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 CO1PEPF000044F4.mail.protection.outlook.com (10.167.241.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3 via Frontend Transport; Mon, 26 Jan 2026 07:15:48 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) 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; Sun, 25 Jan 2026 23:15:30 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 25 Jan 2026 23:15:29 -0800 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Sun, 25 Jan 2026 23:15:26 -0800 From: Tariq Toukan To: Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , "David S. Miller" CC: Saeed Mahameed , Leon Romanovsky , Tariq Toukan , Mark Bloch , , , , Gal Pressman , Moshe Shemesh Subject: [PATCH net 3/3] net/mlx5e: Account for netdev stats in ndo_get_stats64 Date: Mon, 26 Jan 2026 09:14:55 +0200 Message-ID: <1769411695-18820-4-git-send-email-tariqt@nvidia.com> X-Mailer: git-send-email 2.8.0 In-Reply-To: <1769411695-18820-1-git-send-email-tariqt@nvidia.com> References: <1769411695-18820-1-git-send-email-tariqt@nvidia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000044F4:EE_|DM4PR12MB9072:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a4ffcf5-51ae-4cb1-bdad-08de5caabad6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kUgrA+AZG2syNxQPADcYIhL2YUSHpRWWS9mr+veW5Z64d6CWsPVBnirpd5c0?= =?us-ascii?Q?yAstIK+TfQNi9otQKDtcGWSkVh37Bx+d25M0Vvg6TjuJ1thyDeSbXswrzSuJ?= =?us-ascii?Q?DR2MKFGlpU9xVbp+ChGV0QYGhoDU21Q3nK+W776VI7SzMA3ie2D6GA/JxchT?= =?us-ascii?Q?s+XJWjVFjt/nzh/2TliGjYts1pKh6vcVtajyzU5J+llHb4QJQNQHaB9/dyLs?= =?us-ascii?Q?Qx3RnNHmYs7+N2upkZt9qid2G8uCj8MUdQmLZ1FzjFyh00Lj+E31ABozvEGx?= =?us-ascii?Q?Rlgd+CHxBzEGKGPeOseiNmWw70oBJXY9akoFxXhFX5KRS4p8rn174rcssdxo?= =?us-ascii?Q?7/rz8RQew/l5ILOihrc38Y3vpdHXLW9rLksEvC4d9RHx+nuolpF2Cnuh8KPf?= =?us-ascii?Q?6Zu6yvISVAQR4OknJ9q2dddCBVurFgxnUkmzAhnjkrpZ/o20tYj8A+v2Jrj6?= =?us-ascii?Q?QFabtJOyTl1pLGjHffYMvFma3NvsOh3ByMfxXo3/YnUiixyLp/mu3R1lY96x?= =?us-ascii?Q?Vfa7seBeRgKbQ+bh921tEe9+xC9N3cMCPvTUKlq5FG5g0knb1rOWN9KY4p7t?= =?us-ascii?Q?LEd0nk+zYkIHAzMWrDOuIiFWCNWqkWJ+rrkKeNIZyiIDsQBDLUxI+YhQllZ+?= =?us-ascii?Q?HBhyd3cIbBJBI+39ojrSyld2vUWWQcqbNp+qVY3oKYg+0vqGTcVsK5QjN61D?= =?us-ascii?Q?Wm7Xv/xtcKDMmqdL6SH8khG2iAlJyCefB++isjwEgJjHow8Y/zjP6GKbUfQw?= =?us-ascii?Q?HUOmP4Wo9X9+WfV4FGBxPstiDfEKCxIHouFqsgWZsUiXtrrvQtITxxxt/uNT?= =?us-ascii?Q?yTEx2IRkSGBi+zuRGc4DI+uGN8Nk4ZMGa/9iYGVSuVmUp/BACpw9WQ1zco/F?= =?us-ascii?Q?8lsG9lw6w16aTa2RCqpkhz+UeV/W0JPGNCADo8HKrsAGmG4Gi9NLnfVoH8XK?= =?us-ascii?Q?12KEO4xJllmLicPsxriKGtkbShg8IbMvpZOS107QWoptA41RMcis4l0l84Jd?= =?us-ascii?Q?kc1g+ajpOj5Vb12UkVCi/by0viqL+ZMXEkuBWRgjVg5dV78IuhBKww8/Jidr?= =?us-ascii?Q?w1SqcFC2fZRymR3F93EBGFZGUSX4eqDrDqXwtYFFlaEUrygy0sL/yPHqbUZh?= =?us-ascii?Q?eY7j0QsyPK1r8ZLDoKe3lKNS8orpHlXYToSjOVJIcbD4iQsKZ3dXyGwZdGbY?= =?us-ascii?Q?Sy0d3vXtfG2pASw1Ftd33qrjFOUyDO8VQZZKuIkjOcIICZKvikvtYwp+CkjZ?= =?us-ascii?Q?rNlCRXhpE/KGeC9/Ezttu7Idp/M5uZ7McG7ZV+dDBho3qbXlopoiuipepy7K?= =?us-ascii?Q?8u8bbscVLXbtm1OmxjHdxVmUOnnvmoTpkVFdY6M29EVu9MWUwW5SS0oriwkp?= =?us-ascii?Q?BGq/mojz92z9hArxca8l8085To7g1oEIZmALitfdKz4PwuSJ+brQnbgjFZLh?= =?us-ascii?Q?5hCMZIRuRNy0smrCd+z+xtk7JHIIkYFtvVflSAIeQOaq8G8FGqYmY85YejLf?= =?us-ascii?Q?W+ICBN9DK/cxnjR3goK9vxkRB3SzWpdRRrPcVLU2BDVm6Fgio6rN98QONLGU?= =?us-ascii?Q?ZZ0B2o0Ld1vvMSfP7N9BDOHNV64suPcrK2wefJTQ/S2jVGm5oZReooMvo+9w?= =?us-ascii?Q?f0+M2/rmCQIAYEFRzouQNrw09mZtcA3jVSYQsM6yNFG/Oeluat02fwncgmRr?= =?us-ascii?Q?aHcmsQ=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)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:15:48.1121 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0a4ffcf5-51ae-4cb1-bdad-08de5caabad6 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: CO1PEPF000044F4.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB9072 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gal Pressman The driver's ndo_get_stats64 callback is only reporting mlx5 counters, without accounting for the netdev stats, causing errors from the network stack to be invisible in statistics. Add netdev_stats_to_stats64() call to first populate the counters, then add mlx5 counters on top, ensuring both are accounted for (where appropriate). Fixes: f62b8bb8f2d3 ("net/mlx5: Extend mlx5_core to support ConnectX-4 Ethe= rnet functionality") Signed-off-by: Gal Pressman Signed-off-by: Tariq Toukan Reviewed-by: Simon Horman --- .../net/ethernet/mellanox/mlx5/core/en_main.c | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 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 f83359f7fdea..4b2963bbe7ff 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4052,6 +4052,8 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_l= ink_stats64 *stats) mlx5e_queue_update_stats(priv); } =20 + netdev_stats_to_stats64(stats, &dev->stats); + if (mlx5e_is_uplink_rep(priv)) { struct mlx5e_vport_stats *vstats =3D &priv->stats.vport; =20 @@ -4068,21 +4070,21 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl= _link_stats64 *stats) mlx5e_fold_sw_stats64(priv, stats); } =20 - stats->rx_missed_errors =3D priv->stats.qcnt.rx_out_of_buffer; - stats->rx_dropped =3D PPORT_2863_GET(pstats, if_in_discards); + stats->rx_missed_errors +=3D priv->stats.qcnt.rx_out_of_buffer; + stats->rx_dropped +=3D PPORT_2863_GET(pstats, if_in_discards); =20 - stats->rx_length_errors =3D + stats->rx_length_errors +=3D PPORT_802_3_GET(pstats, a_in_range_length_errors) + PPORT_802_3_GET(pstats, a_out_of_range_length_field) + PPORT_802_3_GET(pstats, a_frame_too_long_errors) + VNIC_ENV_GET(&priv->stats.vnic, eth_wqe_too_small); - stats->rx_crc_errors =3D + stats->rx_crc_errors +=3D PPORT_802_3_GET(pstats, a_frame_check_sequence_errors); - stats->rx_frame_errors =3D PPORT_802_3_GET(pstats, a_alignment_errors); - stats->tx_aborted_errors =3D PPORT_2863_GET(pstats, if_out_discards); - stats->rx_errors =3D stats->rx_length_errors + stats->rx_crc_errors + - stats->rx_frame_errors; - stats->tx_errors =3D stats->tx_aborted_errors + stats->tx_carrier_errors; + stats->rx_frame_errors +=3D PPORT_802_3_GET(pstats, a_alignment_errors); + stats->tx_aborted_errors +=3D PPORT_2863_GET(pstats, if_out_discards); + stats->rx_errors +=3D stats->rx_length_errors + stats->rx_crc_errors + + stats->rx_frame_errors; + stats->tx_errors +=3D stats->tx_aborted_errors + stats->tx_carrier_errors; } =20 static void mlx5e_nic_set_rx_mode(struct mlx5e_priv *priv) --=20 2.40.1