From nobody Fri Oct 10 20:52:41 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2044.outbound.protection.outlook.com [40.107.236.44]) (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 C7CF8299AB3; Thu, 12 Jun 2025 15:47:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743253; cv=fail; b=XoslcXoWP+fhlnlVWU00hDPt31jsv3+8OKIcrnjYSYa3Y5iB6Rpr4itqoSO4i5E6JKsHzQ8/nmnEV5JbH4msOpIeGBkuZhyAIlB+a67GSRJHYhpVm9oBInpR/rHFmMALwpp4oGWcd0MT8Qo9KaPH/JTkBcTYPbFgGnZO6wx2O8M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743253; c=relaxed/simple; bh=cBpW0vFRslgWmkQZIMvJScA6C1rWhBAhrjH5OfMUgXI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DViFUWAP4T2B2mDJ+kBtsb9XXtxUgwhukiGFXNMUlWZH8kzk2roYNDt4V/WQNt7inXj5vCYksUR/g/tL/aYrJjom56qxQZzN+d+19n8RckrC0tFLrIQNTW4kJHtPMozeiOq7rPOqUwHDh4ikYK8yxHa/XFmW8pn6wsXukIhX1c8= 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=JPpUW6ml; arc=fail smtp.client-ip=40.107.236.44 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="JPpUW6ml" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aFzilUKOV6TQO0Ul6zBaK69RHuX7QAxT193x+Q0SiPLjzs+zCpHYSJG8+DHG9F9goxEcD2nzziRPLfhUjt+Lo23GSz9p5ulyBAhGTOIyHp/CsCbpAcYjsTWxp6GIVBphUtN3goy4PNdGHxJTWgSy4RiAYaL0FsDW/1viwjtrfYNwSy5XVc71LlsJxnDo07kNaDCmfOBQVj8pdcfWkL2O7YG4v04IFy7PoP0Get8/v0LAjf8mdvEpsmLyyoHG4l9mxD5UCV5UJPB6r+Xm9z4GuUbKepeBBV2PVRto0gyfh6i7XieKlpmgdXb8mbOSPFLazUVRXuy9H5Om+LBsRgxEDw== 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=u/2UfgajKeaXX5S7CmuBPl6iJeOl68wEF+lSMt+cegE=; b=L5CHOe5hrxOZytLd4hshr5/XNojSSACK1IqtPcSvcoiZfdJF+/2A0ZdArJtLg7IKaEkSn8IwHQ/u4mJigAj/U1Mu7QhspHemQBc3PzvV0eryQNl3qBTRP+7VRW7cAj+X9gBcGVFNWGcFf3U0bVB868uaDnOCCkLcxc/Et1YHIQoVE0ifKca/Ro2U5/JmP1xeeSVta/MmR3lTv4W/1mgZuEPYsq24pdbRWH1ADY1TOLt92K0iYHWBYq9mlFemmrYj9IRd4xAmQ3y5fUEe2Fk+W9jkgZv0ccoDRDYrOtdYY25NmJDah1yVLGKm4Do9OxW4ZVCoqKzue+vx2em4Nggrrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=u/2UfgajKeaXX5S7CmuBPl6iJeOl68wEF+lSMt+cegE=; b=JPpUW6ml10Cm7A46Zumw4zp9UZAFaCl3+rWqJz79HXLvBl+3Uy5aWflo/aKy20OAVOrPF6cU+EgB1aEKnuFnpmLAdlX3SFL+j3aGTSluiuS9TxvzAF6Wxu1MCVhnhm8uDnfy/RFe65BLsz754q8qTXVZ3ihKbYid1bRWMMsEFOxNfoLc2CRel6drhkhDb8dnnX//7MXmsI+bItwNTfzf06U6OBtBh2lioM7KrE7zwLyjKI4oXA45aBzJRtiwns5NlKt3OJsNQI1rpUEAFC1O+vjjwZrEGQaWAHwHay3jz1yOJGnC62pbCJNtnuffibi8BvmLhbN333JzbZTB6jMjCg== Received: from SN6PR16CA0059.namprd16.prod.outlook.com (2603:10b6:805:ca::36) by DS5PPFBB8C78349.namprd12.prod.outlook.com (2603:10b6:f:fc00::660) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.31; Thu, 12 Jun 2025 15:47:27 +0000 Received: from SA2PEPF00003F65.namprd04.prod.outlook.com (2603:10b6:805:ca:cafe::2f) by SN6PR16CA0059.outlook.office365.com (2603:10b6:805:ca::36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:47:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F65.mail.protection.outlook.com (10.167.248.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:47:26 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:02 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:02 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:46:56 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Mina Almasry , Cosmin Ratiu , Mark Bloch Subject: [PATCH net-next v5 01/12] net: Allow const args for of page_to_netmem() Date: Thu, 12 Jun 2025 18:46:37 +0300 Message-ID: <20250612154648.1161201-2-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F65:EE_|DS5PPFBB8C78349:EE_ X-MS-Office365-Filtering-Correlation-Id: 4881b05c-e966-4646-a651-08dda9c86e5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FFi31Hro0iT13FTwX9JXppVC0bvKO+VidEtLUYgV2iUgqQgJ4H9QyMF60XWO?= =?us-ascii?Q?V26b4VaZgfJSNDyHuFL/meWT9Qp6Bmm3MGZQGhgR8yz9rMqptmB94/8ONV1s?= =?us-ascii?Q?ASzjzJOMvEL8sVYpoRRL+yIj1H72m0A2kT03npWEwcvRmebrwn5XPZKqwCac?= =?us-ascii?Q?cFfk9OfZa4KpNmVugnJzl6VsbJRdgCEAq9gVjOx9C9Y9dG28G3SDjLFWokFY?= =?us-ascii?Q?UtjxhBmaoP0L5x3GMt0rGDDp94HMoy+7zUKrMj5pbOMUzbaS6o5w7Ztnbx/i?= =?us-ascii?Q?lufi2Iw4V/NyO53Tz5vDct4/sdzCw69QRTK7CpwMHw3w2cQAy/jJSaoZczRo?= =?us-ascii?Q?hw6nTJWR1jQaMneBTlct9tOcffjPSkJud/7/fxRZpQQwfecfzQe1zfxa8vGR?= =?us-ascii?Q?Ioh1kyM0jzWl5vzjDyYDL7AgzfJQh4rC8PXwi9ayu8j+RusKtFlAjbibq8jQ?= =?us-ascii?Q?ceXNlx+bradLfgqTq1zNYTte98ONlqCNtV8ycBB7NnBHZ/dKMyoiOrmSVF4/?= =?us-ascii?Q?95PnhZyPMJIaNvY/tT8VWFRR4Emry97dkgpv4ITGDAAn5bB5C3MNbLvPILSY?= =?us-ascii?Q?sOcDKMjjOzikuYbeTS5oRj7n76j4EXv1fPdL9BQzEWotyjROuqpaCRg80ean?= =?us-ascii?Q?c65Hx6+UWr8FtL7EqQJUgz/Dg3fiAzbWphbtZMH6NaVEXAJLPq8yXLv6IEPg?= =?us-ascii?Q?DFPPnTy8TBZtX/638yNHvD6JMDvi+QgoBXrfKbKhN4Yqk+ONUrueFuNF1cN5?= =?us-ascii?Q?IAEu3pwXtKtm9wI6WGRECfOvjI2CSgXFhJ6XFFK8ddN/IJLSVccTcF6aeUVK?= =?us-ascii?Q?GiVjYGY5snUCqPZ9gGrm5b+8e9SILyYPTugp+DT38xXWlfqBJN+jg5UAOvNZ?= =?us-ascii?Q?STc0SfGreN/2fI+gwmzN4xsx0WW0FRQPDCzDwxuOEn60BjKY2pUiQ5UFAxsJ?= =?us-ascii?Q?q2tql752DiH24FVFKOr3h7ACQPdXX+32xlXGYI22DKOXEXRA0oVD6/kidfva?= =?us-ascii?Q?lanf/0/3Z0vP3lgQ5qoAyLZuL32LrEJ8apfmCHija0yO1L2B1ZC3LKPezkT2?= =?us-ascii?Q?qC5v/EXGGUW+ttKOqVPFrMEVDcC6JOANcoOwGJMaaUofTYJUaCz7B/igCn+7?= =?us-ascii?Q?5FYjuDST6cOH+wXPBJ4gIfNQyZvZzqqx29OZaSYC5ksLO2sNa7Ctaf1AHytb?= =?us-ascii?Q?0lVFvm2LvyxOM2uwrMmj0EofCOBdnWMN2nlOE43W/rLo1G8C1p2wEc58IPVl?= =?us-ascii?Q?U8LfHvG8c4o4DZOv5iikn0wG0d2MdfQ2k5Cr6bDvLgo3fsyiiqrBZoc9XGbG?= =?us-ascii?Q?KKW2vQD5JCSBZtDzFkYr/12xVdFWMwYvKv807NvatX0PHz1ifoQNwrpMmcjI?= =?us-ascii?Q?JfFkYFnlsu+6gtqfWzB+q1vH3IErysDBbYvZ6WG/rp4DmLFFf2MLBOn/UdfZ?= =?us-ascii?Q?uvKbb+q7irM3rJPlwG5dfpOUk6jL+0hdhgEHCfcJ+cl6aNhGKfwP6YwluILf?= =?us-ascii?Q?Fr4BCcSYn73xAC9IPHqVM/sXx5KiM0Pd07km?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:47:26.5402 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4881b05c-e966-4646-a651-08dda9c86e5d X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F65.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPFBB8C78349 Content-Type: text/plain; charset="utf-8" From: Dragos Tatulea This allows calling page_to_netmem() with a const page * argument. Signed-off-by: Dragos Tatulea Reviewed-by: Mina Almasry Reviewed-by: Cosmin Ratiu Signed-off-by: Mark Bloch --- include/net/netmem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/netmem.h b/include/net/netmem.h index 386164fb9c18..caf2e773c915 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -143,7 +143,7 @@ static inline netmem_ref net_iov_to_netmem(struct net_i= ov *niov) return (__force netmem_ref)((unsigned long)niov | NET_IOV); } =20 -static inline netmem_ref page_to_netmem(struct page *page) +static inline netmem_ref page_to_netmem(const struct page *page) { return (__force netmem_ref)page; } --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2055.outbound.protection.outlook.com [40.107.220.55]) (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 1D33A298981; Thu, 12 Jun 2025 15:47:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743259; cv=fail; b=girnZWIcKM6PKPo2KZpb9z1vFlBcAW+rZ9kZbS+vpIYFW/FGaYZwkxZtF9WH4D5ScsjX4tBWBsuJ4VYIbtfIaLvbONtSacFr0M5eOqgWts4l0pLgYx7D/1O0UuR5oev/FcVL6p9yB1UGmULv02G88AqoUfi8KCMNDpiOini/IBU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743259; c=relaxed/simple; bh=Y5QrKk2GKjvlDZxqgtnc1qZkUcYlk5ODoRqJJpH58MM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=N0k6qmhYn2KK2vh4/7R5jOWeU1F9oLAG2GEzs5qnKtFYwNtRk+UyX7zrCPBuvHAWGyJYOPAuEQ/L/jeykxuw6ueA8Cj7RB+O6lcuYzwfG7ErnkmIYxBG9D5HAwAm7Q+OCnMTfdKghTd+kqJgSzLRsRrDkmhBsn9CoFFoQWNZqek= 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=uiO9juod; arc=fail smtp.client-ip=40.107.220.55 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="uiO9juod" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RUBkw48EprHkcPNkW5LaO74Rhv8JXVKv6Pe33fhqXbwDTjOLjNIAvdU0CB5Oz11CfY/t7aD7/WMbfXvw9Y/11UHBZOWjWW63lDwhhue+roHmHBtEjnqIB+1ERVYqfipS3SQ8HFGgUtFklTFRVtyrb6hLdcK5JKzpOAi33kgPd/55D7Js5tMIYHbBfWW/fAeEtAEA8YDUtFXMkG3pQgjg9P7hMBaOug0VE9E9vctY5LbVqi/L1XNSco6RPa7+UCzlE5h+I4JALxUvxbysu0sU2nvh6m/vsatC/hnI1DzoLdC3ydaUJXHHQdSB/omnCCPCwruQyEaBCDvKjOUHXEuu/g== 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=FKyo/oed8bpU2jO0DE+TE7nZpkQ1pGf0+2u2xASKhoo=; b=RiCCkip8nhKYZcaYSLlyoJwyhK8qOqF8TTTML2JWiBuzTmbR/LzAPPNBbqGULc4+kz/b20Lm9WLb7Loy7KyI8lxlk7rlK18CarQwgFBhqZfaMSR6EkYFUHjt5sTo5qSvUNwgioCs6lFc+Mpfte7oDByFLCxmrKX+dUYCkBwCbaBwHOoNCpB7shVlnMI3nZvP1jpeN1xmC2tDE0FeTvE/kMZqJ+snrcNUv5huwlLCaXBIP96WEqcJ+Eig8xgtiRJ8DtP5KOLvZpF/cGAsgrIh6J6xEHSkx1H13zwe0BvOiaCDl7aUmUOMe1zqAlOBQcZfplbddueQFKaaaU0ySIC2BQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=FKyo/oed8bpU2jO0DE+TE7nZpkQ1pGf0+2u2xASKhoo=; b=uiO9juodwV/UtaJSFsFD385ZNhaVwvIeA42rKwb6KFP7bN5+JS0vDAPb3odCnNfhQ9CS4XOOCRmcA3aWuAYqVf1wU+xT9ov+WksN57UPqbylR57BohuTYSV/eBeuOYlWGxp32ZhF5FdeJX+DKJi7QiuKPFhmuCYR3w5GLZc6zOLIjvw9Xk+PUJHDrIU5dLSU+kbaevRMWnnDOX5mbbITsqIPHrX3ReTYWiqo1j8r/Z/WVIslYK3ck4TcSCBScgubrfsg8Edyno8oEomM2/UtbqfmDs3ZnbpeV0STwTYL5jtDMF5gaOJJWMN0BaT1DWrUATVXvtkEqe7fwCQTStwG7A== Received: from SA1PR02CA0005.namprd02.prod.outlook.com (2603:10b6:806:2cf::10) by CH3PR12MB8725.namprd12.prod.outlook.com (2603:10b6:610:170::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Thu, 12 Jun 2025 15:47:32 +0000 Received: from SA2PEPF00003F64.namprd04.prod.outlook.com (2603:10b6:806:2cf:cafe::dc) by SA1PR02CA0005.outlook.office365.com (2603:10b6:806:2cf::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:47:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:47:31 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:09 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:09 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:03 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Cosmin Ratiu , Mina Almasry , Mark Bloch Subject: [PATCH net-next v5 02/12] net: Add skb_can_coalesce for netmem Date: Thu, 12 Jun 2025 18:46:38 +0300 Message-ID: <20250612154648.1161201-3-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F64:EE_|CH3PR12MB8725:EE_ X-MS-Office365-Filtering-Correlation-Id: f51ad945-6ecf-466f-5013-08dda9c87167 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kLBOnvAzXVEC21iYHzYFSbv9vNR+wU7wpN6/oUh5q/pQChiHFB+H4hGBIDrk?= =?us-ascii?Q?i6Jt8aqPx4gKWOBTgj5N6pFivQ/j+kNz6q6+oKEMxzmmNprpPOIDkr+pGbQE?= =?us-ascii?Q?eEo/01A0GkDPjzU4oev0mOh+j/0SQsCnAmmsifvDnpqmUPq0N52DS+Xhvjaz?= =?us-ascii?Q?eRYElr/yhu6kNHvB6yIL0JcqC5FcXXwtcSCGDeBvhOj6MKtrluzQmVgFnvGp?= =?us-ascii?Q?GqpYt1YhP8CTTpbmDYuX8juPUmjCuguPr+pzF9HJ1yXB7vshMtgaimLulSCa?= =?us-ascii?Q?e8HfXL14rptow8yXYjJ71HNeRyCIkhVrFlZaI1YigLC9cot5is56/UQvn2hd?= =?us-ascii?Q?VAQ0upl+tqzSh1EP2uVT6NRyaQd27XOvCjgZmfQRasBNDyiNxE597Tvt1dTc?= =?us-ascii?Q?FG/iXPtNu/lR99lLJD6aOu6rsz4j46Dncvzn1PqAM0bfYpVO8useq2K/VEhk?= =?us-ascii?Q?+xl1VBSL2neJAlGi3Lxxh7LRRNOawltGY2WspxKfT8zi49LReXd/942cIaY5?= =?us-ascii?Q?j4jyZ7F/7pA5i5a9VbCgYRgfEjTYe0vA9pDeJrnGYJX+y7PcgcmMs4DnQyr5?= =?us-ascii?Q?SEWkszwcnE2ZMv2nuwuxA2ZhPn07CVdP69tngHbdrC5h0AqbF9R++YsbDhAd?= =?us-ascii?Q?2TwtEXZSMMKzPJphMeYZcLlJsVrCc71jxh8QhRbfQVESC2MJhPYjdT3Iko9X?= =?us-ascii?Q?rqi9n8zPuLmvluzBNwyfa6B9ixBLWl7ALTiaK8HqzfD6FhWhT5+5xk+/isCS?= =?us-ascii?Q?7Wp23HVCT/gdWAhI3ZqAU8GjuDxYK1IosETfwqxbvMqbDk7EFrLsTKtCFbOC?= =?us-ascii?Q?Bb5KfMIS7OjC0FCbYHwIbJwykNwQrqP3FumnXU5y4Ztz2Pwtr49fiB8WXnC7?= =?us-ascii?Q?YwqJAy65nzRDpfW9ihOuPBBr6aBaPcKxr0ozP5str0c0vYBydgPUA9ziVcVY?= =?us-ascii?Q?vQ9iVX474B/WVNydKzyJ+JGu1lPqUZdSTbv5o+lLL2rKhOkstKPsLEyEcTF+?= =?us-ascii?Q?zeP+7o9VjmJeuZgwovK01mF4qWkvGpgngFnGPTaCDTz+P3kdRg13ZCoDBEF8?= =?us-ascii?Q?uY7htEAIU+0V4WigZpo/6/bIJ0tY5ZtSGJlZyzG+QYSO9apKVtaRcDblkc3i?= =?us-ascii?Q?/drZ0iNJuALU7tvtByoe88jjuOlOAT8o/DH49+D4lo9PMLRea9mKfBl/tNua?= =?us-ascii?Q?56XDAY4PWcDdLFU5w+e4RDKH6t/ZYzfjzgT9AgqpkL1xjkfIBxX71hjQFWvk?= =?us-ascii?Q?Zty6MtyI2xisUxtkESbb/Y0aBVzkqSNDa0GaGzz/mk+plvuvmON5H4cSnpfA?= =?us-ascii?Q?bBbzvCtVIqMFjtIWV4A4y90p9obXgFmsix3DGTqak9iMr9/OlmbbsXYJTlcF?= =?us-ascii?Q?xI0eAfElMFXSsE52QUqEB229XSqNaP//Smj3yLm5EoQil5ulQQp+ExBDZuHI?= =?us-ascii?Q?Efx22nzehdwbd2uQ0s4RAIBZLmsAQX3vdhOEi0XLSMG+Jxg1gXB6AsixKBy2?= =?us-ascii?Q?cGj0tltFyhdR0d1RZv4kQaMLP5lC2t9KPGBQ?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:47:31.6138 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f51ad945-6ecf-466f-5013-08dda9c87167 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8725 Content-Type: text/plain; charset="utf-8" From: Dragos Tatulea Allow drivers that have moved over to netmem to do fragment coalescing. Signed-off-by: Dragos Tatulea Signed-off-by: Cosmin Ratiu Reviewed-by: Tariq Toukan Reviewed-by: Mina Almasry Signed-off-by: Mark Bloch --- include/linux/skbuff.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 5520524c93bf..9508968cb300 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -3873,20 +3873,26 @@ static inline int __must_check skb_put_padto(struct= sk_buff *skb, unsigned int l bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, = struct iov_iter *i) __must_check; =20 -static inline bool skb_can_coalesce(struct sk_buff *skb, int i, - const struct page *page, int off) +static inline bool skb_can_coalesce_netmem(struct sk_buff *skb, int i, + netmem_ref netmem, int off) { if (skb_zcopy(skb)) return false; if (i) { const skb_frag_t *frag =3D &skb_shinfo(skb)->frags[i - 1]; =20 - return page =3D=3D skb_frag_page(frag) && + return netmem =3D=3D skb_frag_netmem(frag) && off =3D=3D skb_frag_off(frag) + skb_frag_size(frag); } return false; } =20 +static inline bool skb_can_coalesce(struct sk_buff *skb, int i, + const struct page *page, int off) +{ + return skb_can_coalesce_netmem(skb, i, page_to_netmem(page), off); +} + static inline int __skb_linearize(struct sk_buff *skb) { return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2067.outbound.protection.outlook.com [40.107.243.67]) (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 8D8F6298CAC; Thu, 12 Jun 2025 15:47:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743260; cv=fail; b=g6ySRNWebm4IzgaikrrUZ3KbHZZXyxb3VJz6ofy2b4E6hObo6KjyZEXQD2DTSF6vOevy7fxAfLwPSHFnL5xSlPizYsEylQgHuFbKPC6aa3oagC86e56BOLaOiWn0eb+Sw4ULsJojLLct2WMBrLrbPHL/d/l5mfPKCBIkXIcZPzM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743260; c=relaxed/simple; bh=fK31n1luX/Iewtw0abWfPxFgIyeIwopcfCtGfBUj/zQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=faGKdwSHkwDfmW+5n8BnNkSxs8zzc2n0lFNeaa9bgDN5vxNHfC5G7jbGM2OybeYuKRAvbxaqHqxtHnQRdgYS7rRHK4IzPRnINMo3hQ6MhTjscWsLCk1BzO7u9kDmInwfahtVdojst+LWJ0Mk4b+UBhRhoEHLireiKr2pa3cZiSQ= 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=dK/kBWPu; arc=fail smtp.client-ip=40.107.243.67 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="dK/kBWPu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IzOQMgVbwPJ54yRshBFtt6zcCYmfZw4V6WQo2U97e/2IBQ9Otg013Ba1C4jEtvbK1prWLni0xc96Ntym0F3jcsn9lxzyi5++NhzjpExEBJUmwNK+ofvW6Pt0LDfjVXngwTmCT391OzfQyDjK3+6XttGC9rPWVOz51ne4jAFUgo6hC5egj+j08CNwxdqHhEz032swjw5QZ30gUTsrt3sKtcvg28Pc1P7YP14f/6ui/MFl+YoImjgwlPG3E3Cqco4XyAb7tliPiTXW1aUExPkjs5gRko/yDqnUIc/NxSScQUG66+E4RgR+Kpq3b+nErNr66A9J9xuXmwBDy7nqYSDRjQ== 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=zMQMUUJjzcZTA1EgiUykQv0oxokoAAmDHIl9dLUmMMQ=; b=NtElmojtBonNlw20iDOWz56OeEvM1ZciqKiAh+qsCf79sn0DERsp2w8NZSOkgkbxn9knoRPRc35XoGa+wKk7do+OcXYOs2uQ3hizRUmAMXTX/lNdd9XEOapapNGKEICh5qsTcY0XcV1FNmnISfXXo/RnxZGxP+/aw9fF9k0ejggoKntbe6p2u6DFyMWy5sdUuMCtCw4d59rop3NbWSql50/VJFdQAqdd8kVd4LqePtcodHtwB1MV+rqMnXe0Eq1n+/GnoFfTMw0V5YSddAo+TmwQ5Iz5jCVek1QB4IftRGyuGEFNWMHCb4RKsTAcHSRNwVBefXeJ3iOHVCxMUezGOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=zMQMUUJjzcZTA1EgiUykQv0oxokoAAmDHIl9dLUmMMQ=; b=dK/kBWPuUe64I3Gy8htULobdskvS+OITIldwc1f/rserrSyPMcPh+9L4rsCg/kojDpknO9dsGFPMrJ70UvHzoJlYcDQzVe6aXylJR8kL7IJ5NKtVN3U9hAlaitEhSbzEHLhRXklaRirQ//EZjLxK/wkQaBVCorfn/2CwvQ1u9u3ds7QMHPBFHhp6XnkL432cN2ka4iW+HUoDsFAWkxYealpEpw2Z4NPWWMaxNeUJxf75QhAh03RMdrbZwJJKbqZc4tY50IJB284pYc1IBgLgz3p7tukQPICRtVKYF8QX0k2049b4PSgr+Sj0vUgZbOytWNp0b/BEyfoWBnTmuDnZyA== Received: from SA1PR02CA0003.namprd02.prod.outlook.com (2603:10b6:806:2cf::9) by SN7PR12MB7276.namprd12.prod.outlook.com (2603:10b6:806:2af::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 15:47:35 +0000 Received: from SA2PEPF00003F64.namprd04.prod.outlook.com (2603:10b6:806:2cf:cafe::1e) by SA1PR02CA0003.outlook.office365.com (2603:10b6:806:2cf::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:47:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:47:35 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:16 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:15 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:10 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Mark Bloch Subject: [PATCH net-next v5 03/12] page_pool: Add page_pool_dev_alloc_netmems helper Date: Thu, 12 Jun 2025 18:46:39 +0300 Message-ID: <20250612154648.1161201-4-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F64:EE_|SN7PR12MB7276:EE_ X-MS-Office365-Filtering-Correlation-Id: 529bccb6-a885-4c26-dc19-08dda9c87396 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|7416014|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6qxPQtbz3M+50xHaM8vk2l3zwfmC7akk3gxh0+du6bElWx+spHUqHIRYbGA9?= =?us-ascii?Q?Q6JjJK2O3lJQUwOMP/yYi9Ifrz8Wd7oaJ562k7af/iTP0c61A2mdtvKf/nVJ?= =?us-ascii?Q?s6x8a2dSmPCj6Ym8gVV8u8tJov9AZWODL/SgwihZRbF7ESbDvQnsoDlRwWMQ?= =?us-ascii?Q?6/l9CBUZQ/uenvyZ+cu+p/Cpq4cxwJ2cU2IVneemvh0HxYZQHSQ0RuEGeUGI?= =?us-ascii?Q?64OmUfXIfCjeoRPlj/5lqrRPHPcxLZtSrq0Ie9FU7KE77Uv6iNjKiXaUIfUb?= =?us-ascii?Q?3YEwIPbdBX8g9yGnXCLvApJmpP5+ju1ABAzK74p1rdXxuBWE1EGdrYJJlXXy?= =?us-ascii?Q?UY2ewv3M11ZxlOx2afSj/L1Z4M/BL3QMrYREEyViLAFB53hUn90w+acl8iDi?= =?us-ascii?Q?tuked+TUVeQbj3Yxf7EF1gjJUHO1m88/fvOxGJzX1dnopzPqJz2w8RMbNIGz?= =?us-ascii?Q?I1KTrjfAcrPrHyrgyDL7e/59er/ULXwT8J/pMlcOlsrQTZA7+jYQY7/qGsH3?= =?us-ascii?Q?7eFP1Q6bDijGNW97FjVmigmyjxIinuLUw0PDoYMH3T0k4mu6yzp6Cb8qVLOh?= =?us-ascii?Q?JY514U8fokcuURLm1g02qWV8WDrAJ8mxNn4A9k3b2Ug36Gimi7X3EOGT2BIA?= =?us-ascii?Q?QD1a8pPOAqKcctxalmTBxFTM8TLDW7DAzUbk0scSVP2fZJuqRHD0xafWGJt/?= =?us-ascii?Q?OY5r/VUuP8NPUKsxe6w8lZjHi4xc3Fbb6JYMUqJB31vHfR3Ljbe6+9/n14h+?= =?us-ascii?Q?YTbXM53I1K/HIuWp8B50VPTd4sAosn+eXEoPBaECnarh/50vT4hRh3/87dzG?= =?us-ascii?Q?UaK2x+IQXIQnV1OFVHVqFVvx3EIQWALIgK8HNg7/OCblt9njrTGh6841XoIn?= =?us-ascii?Q?hYpYgP/ZLJHE6sZQElOQZnIIKkBQP+owntZpVv0274M4XS7VngpTH2fzGCjC?= =?us-ascii?Q?A3FtEEJLW/CME0kKQi9udR/Zod+hxtdh+qwB+B4l5gzZcGPvODtunLh6VvEx?= =?us-ascii?Q?OW5bDRNnisifshT3ZiBHGdqbqmVisGZnU8rldrghuuLZcRvARA7o6nISytvS?= =?us-ascii?Q?Nxdt3tTiOL8vaI2x/Y4jw01XDJ/AjsxhSZ3Em6C8uKPaCyBKoTKHhGUReWYb?= =?us-ascii?Q?JL3ofOL3/+6QWIK+jpCHlD7s4AY79SYbraRJgKUFFPwP0vuDV/HrZphIW7pe?= =?us-ascii?Q?x7oMrPK4QRoPJXq40Sx3y1wzI9+9nHirL+JSCEc4pNn+9VYr4yiZAC0u5xGK?= =?us-ascii?Q?OWaCdoLHgqAJ+7tSb6URlFl5AnUrNjXjuyTvdfIOejNAmcNzKVG0Ev9fE/0O?= =?us-ascii?Q?OYH0R8NaU1FmMIiUWEpv7ra3hbjvcuuFvOs9vNPbCuO0BD4gTt4y1QkDxKuG?= =?us-ascii?Q?rVh0astpd8l5/bRCQLdNBcypRRGJL8NURR4pB1IqNV+8IKxIzpBbXNWKKed7?= =?us-ascii?Q?mMnQZp/vZ6glH84Jl5rgs82B4NyDsaCCjMDrNfnlnPYeRhuxLp1vH4m/sgxk?= =?us-ascii?Q?PA0wcdLlkyfO2EggsHvtY4qc1n5lkzqIX2Xg?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(7416014)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:47:35.2820 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 529bccb6-a885-4c26-dc19-08dda9c87396 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7276 Content-Type: text/plain; charset="utf-8" From: Dragos Tatulea This is the netmem counterpart of page_pool_dev_alloc_pages() which uses the default GFP flags for RX. Signed-off-by: Dragos Tatulea Signed-off-by: Mark Bloch Reviewed-by: Mina Almasry --- include/net/page_pool/helpers.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/net/page_pool/helpers.h b/include/net/page_pool/helper= s.h index 93f2c31baf9b..773fc65780b5 100644 --- a/include/net/page_pool/helpers.h +++ b/include/net/page_pool/helpers.h @@ -153,6 +153,13 @@ static inline netmem_ref page_pool_dev_alloc_netmem(st= ruct page_pool *pool, return page_pool_alloc_netmem(pool, offset, size, gfp); } =20 +static inline netmem_ref page_pool_dev_alloc_netmems(struct page_pool *poo= l) +{ + gfp_t gfp =3D GFP_ATOMIC | __GFP_NOWARN; + + return page_pool_alloc_netmems(pool, gfp); +} + static inline struct page *page_pool_alloc(struct page_pool *pool, unsigned int *offset, unsigned int *size, gfp_t gfp) --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2070.outbound.protection.outlook.com [40.107.92.70]) (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 158D5298CC9; Thu, 12 Jun 2025 15:47:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743268; cv=fail; b=TmM1+y1gQ+229Ic9jbOBoS2aaZvRtYQRE3KWankNCpGt1kF9kI+liLsySOWcmy/IzccL9iSp59XimwUVPmhU6G9u/kkYY23QLCJ4A5650wVuuGhDnzLiVRr6EDc6ab/ozUpzXZw/ihKf8M3UczdhdSVKOhKDmge9E6jEWz0Z00Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743268; c=relaxed/simple; bh=Xgx/dPfVS+Tkzxi3CaWGdOyCIJe70pIQDr2I5eF6M04=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rAqFMz4Mb8c4BxE+DRtmb90Qiqm9GqA3dPQiBUfJjgJ9R7WvqiS4xAyBq+xYEKafq0OvVY8Xgz/JztrR6SlCSZP5yhYBHSgioBb+4xSZncmEyKANocYEq1qc9rikE31l0PokanCo8GNmZUEGasZLqbdUB1rFw76l/tIeDp/7w80= 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=gPWmXISy; arc=fail smtp.client-ip=40.107.92.70 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="gPWmXISy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XAmA9eD6/URMfc5gu0rfgm9bxLlpesOLwaU4H2Vancf7e/uJTnEF/Jd5LKaMPvuOmn5s/YRiIJDRb+RjPdCGK8jQ0XsZelEDxwqSKu6UWauXgTQlhTPEE8CeFIIT/Z9I7Otm277lAooU2yMPnSwkyL90H4bhEtVPW3fqRp5iqkmdiM1NnXQvwA6VyjxSVlBoPPjSO+kF7T6TqrgkMJ4bb7ZCyK4O44U8OQSz0sw4Wdqb8vpynHXIImV6mgVqsxj+9S7GP1jUz9yj6nI/qr5E7VLF2XLvI2MSqeUIcCO3tJQMfeZDFIJhVa03hViHMwXhu5PNklXtk76TYrEQ90nUaw== 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=HZmdD+pOnRRieqlX3rygkvIpgIXGt0BMPDG4T0Q4HmY=; b=ee2HQS+4z13VyM4STAjw33FgnSGnKKtWWXyDOJBJmxqf5qG9D0FKTvHMWwockZNT3urPNJs1sLNg3Cwh0zBLMofFRgtfVu0HpqHRCWkKDAXCIaju+/46+U9KQV6nVOcoiC8Qqb69nKMDk+ZaMz15ZUYC3I4b17mYweJf8lw/S9Clcd9VsNjweyD9lBlQgtuDVaLRAj6fYfnaO4Wx+5GsCBxEnO0HyB25xyIImMEf8Oc48e821wvsW93pp8y2Y/apv2lgftwBI45nU95g7zmepe8BZVy8uOzbYDFQOaCtOnQRieJDzos6fYmNh/hqfvV3ZDMj4wpLAYcj28mtkefnCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=HZmdD+pOnRRieqlX3rygkvIpgIXGt0BMPDG4T0Q4HmY=; b=gPWmXISyXRJXQWPuAB4Zbhid0bD32UQRLuALXrCc5iGMQczUWKkFQL+OH+E7dDCd8fsWI3MAEiTzygcDOqZFDLYCgLzNxb6LjzuuX76Ug1cDF+b+C4A/6dDME8KcEZ95E+dNcZrkL+qxGjFyl7Tx5hx+A3qE94DOXOxcLmVxRbak1Ut4NnUkoqsWMCoi0TY+mG7DXXB+cxWBs/CSJFvVcIWTiDgjgEFiQQpt7B3tFlJIvG3hSgaskv28bakaK9X1jOl0yZmHFXGNo87HUmxtyzPT2JwqHyu3U3iASqBH9EKPCxLu4hxrTA8Q5m+WisuLddkF2KuwF6oxT+5tC3q+jA== Received: from SA1PR02CA0009.namprd02.prod.outlook.com (2603:10b6:806:2cf::14) by DM6PR12MB4252.namprd12.prod.outlook.com (2603:10b6:5:211::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Thu, 12 Jun 2025 15:47:41 +0000 Received: from SA2PEPF00003F64.namprd04.prod.outlook.com (2603:10b6:806:2cf:cafe::a) by SA1PR02CA0009.outlook.office365.com (2603:10b6:806:2cf::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:47:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:47:40 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:24 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:24 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:16 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Cosmin Ratiu , Mark Bloch Subject: [PATCH net-next v5 04/12] net/mlx5e: SHAMPO: Reorganize mlx5_rq_shampo_alloc Date: Thu, 12 Jun 2025 18:46:40 +0300 Message-ID: <20250612154648.1161201-5-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F64:EE_|DM6PR12MB4252:EE_ X-MS-Office365-Filtering-Correlation-Id: d8ba1ffa-15f4-4abd-cc77-08dda9c876d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?sKy0kdpaR1zAZEWO65tkbLjZbAutDjJOKQAlznjU9b43WrJmRUJp3j5bfNJt?= =?us-ascii?Q?sGuEDFI2EhSuEc7Yx/Wfpj/wae2H0nmG2t/yX3+ETVkD6wy3Fa+CHcIWXTI6?= =?us-ascii?Q?d1AI3TFNsXy6k1HIvUNFTdPv5TTTs8hJu560DCcllGA49wCbZjVmwEtCXkp9?= =?us-ascii?Q?yl635oC6364h2Lk2/tZOrhgcuBR28MjO8K0BdgAdH5e5tOiE9R9c3ZYex0nL?= =?us-ascii?Q?ExC1JImU55ITKnohe9xsOZ7BqdDTXvh88HEbM/lgt9VsifEavyFgw+lv4Znt?= =?us-ascii?Q?JIGQbS3Z6pndzvGOPaK61cvWz0iuRuvATkkoetCnVOFdS4q2e24ENTQLSUR6?= =?us-ascii?Q?RufWTAjN0c4VKD7G4fN6Aeql8vlY5K21ZIigWg37Zc8nZW1xnOtayVmq1z3j?= =?us-ascii?Q?sgWZV1tdeegOBMfqeb0Dxxm7b86W4KwIMd8pVaLuSdhg83bpoVYfarbnpLsq?= =?us-ascii?Q?v1+rXGpokAa1Zq5x1PcyJpBof42Oa16NtErA8MMzq0OwU1game51NMRXsDh2?= =?us-ascii?Q?W0HiEG3BSLe73gC9OCH+XTBFmKU15E/0jpxwe5DdbQzRp2YSgy9K/b3D+KL+?= =?us-ascii?Q?Fz//vwzCZ8HswmgYVc2GenrHJEKSzMi30I6b62ZVtfMDVaLBGLWeT1GmJYe0?= =?us-ascii?Q?3NtWV3ds7jePEOp+vnf4yqwqLEXQsx0C7DrSq/2uYXlKuvretvRTvf93I+z9?= =?us-ascii?Q?JecT4gmX5rpMYh/J76f1ZRjO4Hb0E8SM++GHSeVtf1lSmSPaGNIIpOW1qcZT?= =?us-ascii?Q?G9Y8+eb0mKN0Xb/38RNJPZjwClIEF81oNhlFbn2+XUIZJB/3UyU1ydXUPtQV?= =?us-ascii?Q?rrRmlPRPrDEUhznkpvgMsz9UROccenoQzR1+ylI70gcaBQL+u0vGDhW5z7xY?= =?us-ascii?Q?wY37olYCVC8DMsLEBFERsct68UHuoLv5+3j1WPrMuLL/ym2Nnq33YBrHf5EX?= =?us-ascii?Q?edRVoErxB6I1BgOOpyTX20vA6yIzBZHh/yaxo1u0Uq9PSEINVn+gGisotwBf?= =?us-ascii?Q?aklMVIateQIvDUZQkF3G6Mav2bp4+cH155c9JZmzwFP8txxQTWvnRksFXgox?= =?us-ascii?Q?WLVCIdpz6PZE3V8BDUzq4Q+uCW2Gob++vWEhS1Kc27/BpjZ0gXJe1lr02xeY?= =?us-ascii?Q?Et3hlPjIPULlQpFU+zkCt0Y9GTeI8TPrnTeUSFDxU0K1iBzKr0xPH58f3Kaw?= =?us-ascii?Q?p6fMuGxZTC/5DwPp+w8kN2M/6GUlcIcae87n9PZq41oyvSto/4F4AWPxGnb9?= =?us-ascii?Q?ztNq5hL+BImvhNWQprzvPkH8pw4QB92vWOZrfrDdIT0w/ozAFCt9O5qhfBiH?= =?us-ascii?Q?Rm5HU9f5WvFIpahxW7pyxL0oKix7bbL+Ep5t/EzvgdHMbAYh38f1/M0Twtm6?= =?us-ascii?Q?q0J63r9/UDr0XkJkbEYHzSbHLv+E6Owp6skkyojU0ADJrHnP7WdzQ0HfPGDe?= =?us-ascii?Q?EJz08C8GmQw7nFKf3OxECo//1zMCIADx/kX83t/VeRLhUFc2HEJByh/CS5bm?= =?us-ascii?Q?pFoov+1G7RMv7/z70LCrX/r1v1PzOJc+7kPo?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:47:40.7351 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d8ba1ffa-15f4-4abd-cc77-08dda9c876d7 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4252 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed Drop redundant SHAMPO structure alloc/free functions. Gather together function calls pertaining to header split info, pass header per WQE (hd_per_wqe) as parameter to those function to avoid use before initialization future mistakes. Allocate HW GRO related info outside of the header related info scope. Signed-off-by: Saeed Mahameed Reviewed-by: Dragos Tatulea Signed-off-by: Cosmin Ratiu Reviewed-by: Tariq Toukan Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 1 - .../net/ethernet/mellanox/mlx5/core/en_main.c | 135 +++++++++--------- 2 files changed, 66 insertions(+), 70 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/eth= ernet/mellanox/mlx5/core/en.h index 5b0d03b3efe8..211ea429ea89 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -638,7 +638,6 @@ struct mlx5e_shampo_hd { struct mlx5e_frag_page *pages; u32 hd_per_wq; u16 hd_per_wqe; - u16 pages_per_wq; unsigned long *bitmap; u16 pi; u16 ci; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index ea822c69d137..3d11c9f87171 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -331,47 +331,6 @@ static inline void mlx5e_build_umr_wqe(struct mlx5e_rq= *rq, ucseg->mkey_mask =3D cpu_to_be64(MLX5_MKEY_MASK_FREE); } =20 -static int mlx5e_rq_shampo_hd_alloc(struct mlx5e_rq *rq, int node) -{ - rq->mpwqe.shampo =3D kvzalloc_node(sizeof(*rq->mpwqe.shampo), - GFP_KERNEL, node); - if (!rq->mpwqe.shampo) - return -ENOMEM; - return 0; -} - -static void mlx5e_rq_shampo_hd_free(struct mlx5e_rq *rq) -{ - kvfree(rq->mpwqe.shampo); -} - -static int mlx5e_rq_shampo_hd_info_alloc(struct mlx5e_rq *rq, int node) -{ - struct mlx5e_shampo_hd *shampo =3D rq->mpwqe.shampo; - - shampo->bitmap =3D bitmap_zalloc_node(shampo->hd_per_wq, GFP_KERNEL, - node); - shampo->pages =3D kvzalloc_node(array_size(shampo->hd_per_wq, - sizeof(*shampo->pages)), - GFP_KERNEL, node); - if (!shampo->bitmap || !shampo->pages) - goto err_nomem; - - return 0; - -err_nomem: - bitmap_free(shampo->bitmap); - kvfree(shampo->pages); - - return -ENOMEM; -} - -static void mlx5e_rq_shampo_hd_info_free(struct mlx5e_rq *rq) -{ - bitmap_free(rq->mpwqe.shampo->bitmap); - kvfree(rq->mpwqe.shampo->pages); -} - static int mlx5e_rq_alloc_mpwqe_info(struct mlx5e_rq *rq, int node) { int wq_sz =3D mlx5_wq_ll_get_size(&rq->mpwqe.wq); @@ -584,19 +543,18 @@ static int mlx5e_create_rq_umr_mkey(struct mlx5_core_= dev *mdev, struct mlx5e_rq } =20 static int mlx5e_create_rq_hd_umr_mkey(struct mlx5_core_dev *mdev, - struct mlx5e_rq *rq) + u16 hd_per_wq, u32 *umr_mkey) { u32 max_ksm_size =3D BIT(MLX5_CAP_GEN(mdev, log_max_klm_list_size)); =20 - if (max_ksm_size < rq->mpwqe.shampo->hd_per_wq) { + if (max_ksm_size < hd_per_wq) { mlx5_core_err(mdev, "max ksm list size 0x%x is smaller than shampo heade= r buffer list size 0x%x\n", - max_ksm_size, rq->mpwqe.shampo->hd_per_wq); + max_ksm_size, hd_per_wq); return -EINVAL; } - - return mlx5e_create_umr_ksm_mkey(mdev, rq->mpwqe.shampo->hd_per_wq, + return mlx5e_create_umr_ksm_mkey(mdev, hd_per_wq, MLX5E_SHAMPO_LOG_HEADER_ENTRY_SIZE, - &rq->mpwqe.shampo->mkey); + umr_mkey); } =20 static void mlx5e_init_frags_partition(struct mlx5e_rq *rq) @@ -758,6 +716,35 @@ static int mlx5e_init_rxq_rq(struct mlx5e_channel *c, = struct mlx5e_params *param xdp_frag_size); } =20 +static int mlx5e_rq_shampo_hd_info_alloc(struct mlx5e_rq *rq, u16 hd_per_w= q, + int node) +{ + struct mlx5e_shampo_hd *shampo =3D rq->mpwqe.shampo; + + shampo->hd_per_wq =3D hd_per_wq; + + shampo->bitmap =3D bitmap_zalloc_node(hd_per_wq, GFP_KERNEL, node); + shampo->pages =3D kvzalloc_node(array_size(hd_per_wq, + sizeof(*shampo->pages)), + GFP_KERNEL, node); + if (!shampo->bitmap || !shampo->pages) + goto err_nomem; + + return 0; + +err_nomem: + kvfree(shampo->pages); + bitmap_free(shampo->bitmap); + + return -ENOMEM; +} + +static void mlx5e_rq_shampo_hd_info_free(struct mlx5e_rq *rq) +{ + kvfree(rq->mpwqe.shampo->pages); + bitmap_free(rq->mpwqe.shampo->bitmap); +} + static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *mdev, struct mlx5e_params *params, struct mlx5e_rq_param *rqp, @@ -765,42 +752,52 @@ static int mlx5_rq_shampo_alloc(struct mlx5_core_dev = *mdev, u32 *pool_size, int node) { + void *wqc =3D MLX5_ADDR_OF(rqc, rqp->rqc, wq); + u16 hd_per_wq; + int wq_size; int err; =20 if (!test_bit(MLX5E_RQ_STATE_SHAMPO, &rq->state)) return 0; - err =3D mlx5e_rq_shampo_hd_alloc(rq, node); - if (err) - goto out; - rq->mpwqe.shampo->hd_per_wq =3D - mlx5e_shampo_hd_per_wq(mdev, params, rqp); - err =3D mlx5e_create_rq_hd_umr_mkey(mdev, rq); + + rq->mpwqe.shampo =3D kvzalloc_node(sizeof(*rq->mpwqe.shampo), + GFP_KERNEL, node); + if (!rq->mpwqe.shampo) + return -ENOMEM; + + /* split headers data structures */ + hd_per_wq =3D mlx5e_shampo_hd_per_wq(mdev, params, rqp); + err =3D mlx5e_rq_shampo_hd_info_alloc(rq, hd_per_wq, node); if (err) - goto err_shampo_hd; - err =3D mlx5e_rq_shampo_hd_info_alloc(rq, node); + goto err_shampo_hd_info_alloc; + + err =3D mlx5e_create_rq_hd_umr_mkey(mdev, hd_per_wq, + &rq->mpwqe.shampo->mkey); if (err) - goto err_shampo_info; + goto err_umr_mkey; + + rq->mpwqe.shampo->key =3D cpu_to_be32(rq->mpwqe.shampo->mkey); + rq->mpwqe.shampo->hd_per_wqe =3D + mlx5e_shampo_hd_per_wqe(mdev, params, rqp); + wq_size =3D BIT(MLX5_GET(wq, wqc, log_wq_sz)); + *pool_size +=3D (rq->mpwqe.shampo->hd_per_wqe * wq_size) / + MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; + + /* gro only data structures */ rq->hw_gro_data =3D kvzalloc_node(sizeof(*rq->hw_gro_data), GFP_KERNEL, n= ode); if (!rq->hw_gro_data) { err =3D -ENOMEM; goto err_hw_gro_data; } - rq->mpwqe.shampo->key =3D - cpu_to_be32(rq->mpwqe.shampo->mkey); - rq->mpwqe.shampo->hd_per_wqe =3D - mlx5e_shampo_hd_per_wqe(mdev, params, rqp); - rq->mpwqe.shampo->pages_per_wq =3D - rq->mpwqe.shampo->hd_per_wq / MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; - *pool_size +=3D rq->mpwqe.shampo->pages_per_wq; + return 0; =20 err_hw_gro_data: - mlx5e_rq_shampo_hd_info_free(rq); -err_shampo_info: mlx5_core_destroy_mkey(mdev, rq->mpwqe.shampo->mkey); -err_shampo_hd: - mlx5e_rq_shampo_hd_free(rq); -out: +err_umr_mkey: + mlx5e_rq_shampo_hd_info_free(rq); +err_shampo_hd_info_alloc: + kvfree(rq->mpwqe.shampo); return err; } =20 @@ -812,7 +809,7 @@ static void mlx5e_rq_free_shampo(struct mlx5e_rq *rq) kvfree(rq->hw_gro_data); mlx5e_rq_shampo_hd_info_free(rq); mlx5_core_destroy_mkey(rq->mdev, rq->mpwqe.shampo->mkey); - mlx5e_rq_shampo_hd_free(rq); + kvfree(rq->mpwqe.shampo); } =20 static int mlx5e_alloc_rq(struct mlx5e_params *params, --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2074.outbound.protection.outlook.com [40.107.237.74]) (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 68C6A298CDC; Thu, 12 Jun 2025 15:47:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.74 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743277; cv=fail; b=Cr7a3IWVv1dKXeMHGHpdDi66EUEgG1nEGXPTRnl8iwqaaEnLieqKTNVjkyolX1MpATRL6GednMCSFJhnzUJexiFXhc7K6A+njUsudPS/csdp9GTX5ATV1WOiSggteu82hB4MxtaP7QJsi+xyD5FxSfKLyDBU3qReBpPNagBOVyI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743277; c=relaxed/simple; bh=ZKP5AowOc91bfxJMYUruwyj4KjjnoRH/G5O+SG8VUW4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LbwHkiBSyJnpj759YEK9hpCpirSwQW9RfhDvEkEhEuSykY8f8Sr0pSHt6QwP0Srd5WgXGP8dbFyr8q+E1DRG2COF5eDK5JZFgpGnnwgSITxpbuEySb2KPITcigOijW7iOnRBDCRPmqnOWpvdX3QbbpE2kRMtCjYWrewYvo/CbkI= 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=OzbLwe5e; arc=fail smtp.client-ip=40.107.237.74 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="OzbLwe5e" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ATJy6mwX0qbeCsehDs44RyH8d1iCxRGB2OmDcc42m8bRduyLWcZhZ6xKTP8P0kPouvp2y0KsfJTZbFdgVtfrSq82DxWXU4BE7JSDxg66+svWwql2jL0T0TQh18aGu1ary7Wd6mbx6OSpm79lfslFOw8osnNXVf8xG7boQ6BwlY8LYcYXyq2xo107nHfpcIEnxKieImL39xwUX7cuvOCQOk9EcVDAM0LRy3B5ZUd6mvPIO58IXeJpb8J9r4JwRehi0YZhMnzXGWrmS2BkLYiIamF4m2r77kJ7qrn3dR6sLEOLelhrmls18n3mGDVj3mTghsvZ0iUBifhVC2Ln1hjJmw== 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=bgz1OGLRs37uvqGlZMMC1EsF9CaynvpaVkKMug3Cphs=; b=QYtkxs5qDTXX8/tiQRJFmJfoOoZsB4Nt6QlyfYUIKt35lXD9ckJAGm+boENYGmYHOexk6UjqXZvB8cSOoRUmX6z1KzS+b1V6vOufYGSBcELm+aHlAMIV6Dn5sUUYXNi0NnFW8yovGxIm0bneDLGiS+zFGylwZkMv2gbgz6QR7gjk8npGc6nWAiHV8b8Ie7jlOhCk6rS9mqfZ32m9Yn9IlELgEJ7WpID/cj97XU18zv3Z1eaffFGSOPLPGkhNhGVU7EXGzVvpiM2Qt7zL9oOcp1us3x3C0LVh45bQ1/nNTOp3IiZ6sbKEahItZnU1Mmm9Viow0KmFeRsSY0Hgve+P6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=bgz1OGLRs37uvqGlZMMC1EsF9CaynvpaVkKMug3Cphs=; b=OzbLwe5e2yv1jeuB5sNwf1nXX97ItgO0ofYhgcf5yzEr9mEX0C9iKY3PEVNynvg6/M5rraEBMaBiIO05SgfPLYkXddg0J6l3OBJF2npcF6ud16bioE9C7mwodC+yjWerbFU7B8buBXaqKDCxBpsW9jzkVzwA0z+01PHM/TZseowwKrbAZhoNpd/JzMTi63OLsBv+GYhJuPub79ZLvoJsdVwDehzrk493j3iKbmM7eNIet0ZyCzSDe7qISoX8jx89KpfV4wWhc9PhJmeR+tyAHdTjVqmy/71i0trCQHykLjNBeNuE4JasQ8YBrIZQRPpOHyHmflHL9eo0TmfsDedLdg== Received: from SN6PR16CA0050.namprd16.prod.outlook.com (2603:10b6:805:ca::27) by DM4PR12MB6400.namprd12.prod.outlook.com (2603:10b6:8:b9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.23; Thu, 12 Jun 2025 15:47:52 +0000 Received: from SA2PEPF00003F65.namprd04.prod.outlook.com (2603:10b6:805:ca:cafe::c5) by SN6PR16CA0050.outlook.office365.com (2603:10b6:805:ca::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8769.19 via Frontend Transport; Thu, 12 Jun 2025 15:47:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F65.mail.protection.outlook.com (10.167.248.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:47:51 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:33 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:32 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:25 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Cosmin Ratiu , Mark Bloch Subject: [PATCH net-next v5 05/12] net/mlx5e: SHAMPO: Remove redundant params Date: Thu, 12 Jun 2025 18:46:41 +0300 Message-ID: <20250612154648.1161201-6-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F65:EE_|DM4PR12MB6400:EE_ X-MS-Office365-Filtering-Correlation-Id: cf8f3849-6d91-40ac-ce3f-08dda9c87d87 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NK2pCEyDNWj3o2BV38VF1dT8SS3qL32IdUGUacGry0TJIZCsY/H+KeKimUqE?= =?us-ascii?Q?9SNUHFM8cJrRHhQ8itTnGjaBn2dj0QhWUK82qoNBmIVnIhlEOLso4YxalOlT?= =?us-ascii?Q?+lU3XrHZDlQFxjBPdA5Me+m4d0T6GO1WwfyzJSUzuWfFTCNMAitOdgBGAMTb?= =?us-ascii?Q?F7i9/AY8KLa12FUFZdHHe07Dva8FWDFp2HwI10pSVCYuHL31CqbgKvXXXMvo?= =?us-ascii?Q?q79A30Oiyy+RidWHyStUy/ewfK/CRqfgOtSexmtpdCPTjv9XbaDaq39PkpK5?= =?us-ascii?Q?X8ZoolSQkkQAGc98iG2Y7sgQe2mz6yqI7C/qs7VhCz/I7LbY4KtCGCpIIu6j?= =?us-ascii?Q?25fhuygajNaihiJ3IiTrxBBrrLMSaO1VrK9B6ZxbC/TOUY66zp0wyjE3Ok4J?= =?us-ascii?Q?CtUz1yA+T75lEyXA3B0Rw4UYRMtYkgRS2Dvoa6Y6GTBqJPRvjMPQQzTzmRLe?= =?us-ascii?Q?5u2cM6DvFRv7ZyPoeJKqrHirTSbcyfq/Z+TeLAKHrhmsfek2I6IneL+bOhi3?= =?us-ascii?Q?xK7l64gqi8Z831x5U/CjT40FoZlGwATb7ZjU9GOaZXu6umf9m3gtnNJEuo8w?= =?us-ascii?Q?iOPetCVX2Kyn7DvslnrV57dSOgsEUnO3gp26VL1SQEgJdh3f9MBnRVPLje7y?= =?us-ascii?Q?S+KC0FTJ9SY4tDaMq64Z4iCXvqQOMI+87B6CrSiVHC31vR4REwkWjSSJGq1Z?= =?us-ascii?Q?Fn2+kGU3ZIXdCgbDJbzl1gSnKI77itsPCkUjZ2jF1qg19dYS+lO3CYu6muYS?= =?us-ascii?Q?NE7J4fMsiTAXDATWa7BLIMcKwOo1kbPmpKN70rP73d8y/T8GShWlQG0cO8tm?= =?us-ascii?Q?gCtatmG2vscPWwCBGC3I924/EQ1Rni3emubS+SWAMgNpW7F6AIksJUaoZIR0?= =?us-ascii?Q?pL3UYW5eHV0sLQtZXeaJBGU0tt0LBZfeyJw4+e9qD7TS/CTnCtHckVzEm9yZ?= =?us-ascii?Q?3/5iPv2GnHfLcY3Y651UB02izP+SSfFi2X9SxsyRoVNqznwQNR+0yDtmPlCY?= =?us-ascii?Q?i+URrANYM1Sq2OHTVVDMG0F8uOZd88mSnYlIeVi3LFCz9HexP3etNivdi0JO?= =?us-ascii?Q?QTF+5c19h/JqMSyHaBLRAxsHyzoMWORoCxgMwUUwqVi2Yk60Xop4iDHEUu8W?= =?us-ascii?Q?b+WGJ+2VkmF2qlrXWhgkNJBE8e2/9uOz/HwudKdVSxN/dKI1rrl7Q96ZyowV?= =?us-ascii?Q?T/w2GhAVCIUVhyf0ybAoMoW7ATEL0jh7yklzLAuoXZb1z7MYdgq0J96HrRrv?= =?us-ascii?Q?sDkwRVi5SpHO9jS6Y6hRvuqC3KIB23plbQy2whfBFvOnH1gAt/l8Bn65B8Yu?= =?us-ascii?Q?w4APGxE2oKRo7JynjeBsHS92y/Q4LqDrXBfvIOaUJD8Q+3yatLnVlhyblXm0?= =?us-ascii?Q?U0XKvZ0V5a8Cr2cVeCUFUPByHPI8FBeTstYOXDQog6NyV3y3b7VgKqh4956f?= =?us-ascii?Q?WhzPgf+Dnbw2SNXiKIRJSbKOAAcIGsK9vTI6H2EYkffQtRCNMAx1PI2+OlEF?= =?us-ascii?Q?PP7Vgre+msc8dNDruw37of7PgAeR2/fd8pLC?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:47:51.9558 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf8f3849-6d91-40ac-ce3f-08dda9c87d87 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F65.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6400 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed Two SHAMPO params are static and always the same, remove them from the global mlx5e_params struct. Signed-off-by: Saeed Mahameed Reviewed-by: Dragos Tatulea Signed-off-by: Cosmin Ratiu Signed-off-by: Tariq Toukan Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 --- .../ethernet/mellanox/mlx5/core/en/params.c | 36 ++++++++++--------- .../net/ethernet/mellanox/mlx5/core/en_main.c | 4 --- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/eth= ernet/mellanox/mlx5/core/en.h index 211ea429ea89..581eef34f512 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -278,10 +278,6 @@ enum packet_merge { struct mlx5e_packet_merge_param { enum packet_merge type; u32 timeout; - struct { - u8 match_criteria_type; - u8 alignment_granularity; - } shampo; }; =20 struct mlx5e_params { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/params.c b/drivers/= net/ethernet/mellanox/mlx5/core/en/params.c index 58ec5e44aa7a..fc945bce933a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/params.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/params.c @@ -901,6 +901,7 @@ int mlx5e_build_rq_param(struct mlx5_core_dev *mdev, { void *rqc =3D param->rqc; void *wq =3D MLX5_ADDR_OF(rqc, rqc, wq); + u32 lro_timeout; int ndsegs =3D 1; int err; =20 @@ -926,22 +927,25 @@ int mlx5e_build_rq_param(struct mlx5_core_dev *mdev, MLX5_SET(wq, wq, log_wqe_stride_size, log_wqe_stride_size - MLX5_MPWQE_LOG_STRIDE_SZ_BASE); MLX5_SET(wq, wq, log_wq_sz, mlx5e_mpwqe_get_log_rq_size(mdev, params, xs= k)); - if (params->packet_merge.type =3D=3D MLX5E_PACKET_MERGE_SHAMPO) { - MLX5_SET(wq, wq, shampo_enable, true); - MLX5_SET(wq, wq, log_reservation_size, - mlx5e_shampo_get_log_rsrv_size(mdev, params)); - MLX5_SET(wq, wq, - log_max_num_of_packets_per_reservation, - mlx5e_shampo_get_log_pkt_per_rsrv(mdev, params)); - MLX5_SET(wq, wq, log_headers_entry_size, - mlx5e_shampo_get_log_hd_entry_size(mdev, params)); - MLX5_SET(rqc, rqc, reservation_timeout, - mlx5e_choose_lro_timeout(mdev, MLX5E_DEFAULT_SHAMPO_TIMEOUT)); - MLX5_SET(rqc, rqc, shampo_match_criteria_type, - params->packet_merge.shampo.match_criteria_type); - MLX5_SET(rqc, rqc, shampo_no_match_alignment_granularity, - params->packet_merge.shampo.alignment_granularity); - } + if (params->packet_merge.type !=3D MLX5E_PACKET_MERGE_SHAMPO) + break; + + MLX5_SET(wq, wq, shampo_enable, true); + MLX5_SET(wq, wq, log_reservation_size, + mlx5e_shampo_get_log_rsrv_size(mdev, params)); + MLX5_SET(wq, wq, + log_max_num_of_packets_per_reservation, + mlx5e_shampo_get_log_pkt_per_rsrv(mdev, params)); + MLX5_SET(wq, wq, log_headers_entry_size, + mlx5e_shampo_get_log_hd_entry_size(mdev, params)); + lro_timeout =3D + mlx5e_choose_lro_timeout(mdev, + MLX5E_DEFAULT_SHAMPO_TIMEOUT); + MLX5_SET(rqc, rqc, reservation_timeout, lro_timeout); + MLX5_SET(rqc, rqc, shampo_match_criteria_type, + MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_EXTENDED); + MLX5_SET(rqc, rqc, shampo_no_match_alignment_granularity, + MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_STRIDE); break; } default: /* MLX5_WQ_TYPE_CYCLIC */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 3d11c9f87171..e1e44533b744 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4040,10 +4040,6 @@ static int set_feature_hw_gro(struct net_device *net= dev, bool enable) =20 if (enable) { new_params.packet_merge.type =3D MLX5E_PACKET_MERGE_SHAMPO; - new_params.packet_merge.shampo.match_criteria_type =3D - MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_EXTENDED; - new_params.packet_merge.shampo.alignment_granularity =3D - MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_STRIDE; } else if (new_params.packet_merge.type =3D=3D MLX5E_PACKET_MERGE_SHAMPO)= { new_params.packet_merge.type =3D MLX5E_PACKET_MERGE_NONE; } else { --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2068.outbound.protection.outlook.com [40.107.93.68]) (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 2E90329993B; Thu, 12 Jun 2025 15:48:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743292; cv=fail; b=FPW02FXKJ4sK2H7mMQWjuyYU0VTJX/tGtDbI9fEm6jJEqTC1CNuA3ZMMYYviHukVZQScu+rwIxeCV3bghx8sHGIg6mAoBC5PmAQXajkZ1LcyTluL6uAGRskPi1HLI0geGZGevubLZunyKlk0YAd6JBs24uVfpVKOO965IfkPtKY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743292; c=relaxed/simple; bh=Y2ui4bpyi2StrG03Rxz/C3o+qK4XzXlFkCTpwgp/vNM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=baou1gsH9wt1JWgULjH/natIWQZ6T7W9mEQ3wzjxlKoEbPGNZ/jJOgJbesEoWilYuBm/FFTpRbMKlGon0Jj5KOfJQsBdF1Yytoaa1huJGKguSSMbe0MIt6BpIKtJ084TK1Tauy8HiZemagEvomSb1prIkMGItZcExkuVxMDVHJQ= 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=TY+Olkod; arc=fail smtp.client-ip=40.107.93.68 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="TY+Olkod" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uIycImbEsk3GBO7juMmPu0FdZ4gY/uktIaBUxWChdLilnkbW8htwKEDHIFD7kzPm/iub5vUZvX35fkY35As7l6bg3F0LB1f3+Eycsr7ad3fnyIZ/v5+cnLYXBV9+wbtFNbRn48p39gZzPmctluAmWJhz+WzNlqaEBf090ro6OxYy8z01YxEVpnU6tlQUW7EcrDPCQ5Ni2sKo2GRXBqbWzTOSSuFf4WKLuMaQcD/fhXF57QaeRdFidUQAh4NhsF3kTQRiZkbjK2Y1O1qhd1DKBUyL2PAz1m+0tsOhnIBPoR54+6VWrDD15BONfbHbcqlArkdyUoaOnlks44s1cr4Iew== 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=ffOldQx4EhzLumaUO4DQI/K6c9IeBAfc4wzdVLLPS+U=; b=OhGCKpjhumjbCQMU/ZNiW4LYcIhuBrICT21wmlMxqfnmAHy9NaU+wbCY0IqcQmuo3ZSHqUo2e0G6irJ+POxXsBsTFysl7Eica7EXHb4Cp1Hp2Lgfn2MmokPuQoFuUtvhdVnF4Ve7NGeJPzosIyPU6e2Z5ikBWBvFyWtmg8FZjGivxweg7wwFvZ/OkvOM8Z3E0Byc37zWEbuYU1lvN8uoBpvBU0Nu6rc3AsJ81z2MQw/Vg5RP3KykzZm0QGvuailJiABq9vHU+zh1I96STqjDlWx9+vuiiRq96XNULA9QCLLIlPOeg5oRUo42uWcinFVXinxdT/2n41BTXHgXKn19eA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=ffOldQx4EhzLumaUO4DQI/K6c9IeBAfc4wzdVLLPS+U=; b=TY+OlkodIjPfG31Q0Kp7p6pfrFCBF2s2fyooulfu/Ze/gaTNN1UoWLiUaAsvmHZwHCJnH+HhlJasyi8gqr3zkptlzuyq5eOpfFHAC224DP9KYM8p940Ejf7bSluGzsnEtHerQu0pHf5Dd7z6ikJVrD8KB1X6FY/fE0YzffTzPYsOe0BGQEmaa5atb/vPgSPFskTD74Ky/LWfUHzBmAn8hDk+3QL8+aV8LGJ0zXkDMqSCWCYgd38FpAeXyxHDSkgG5sXj9lykU9qQTu8+b8iAIZ3qKYMkH+HNfov7hbR0FEwKLtNqHyRmKAYnkxvPUoL02jJdDr8cCmgQidaEycdSdA== Received: from SA1P222CA0107.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:3c5::28) by DM4PR12MB8523.namprd12.prod.outlook.com (2603:10b6:8:18e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.34; Thu, 12 Jun 2025 15:48:05 +0000 Received: from SA2PEPF00003F63.namprd04.prod.outlook.com (2603:10b6:806:3c5:cafe::25) by SA1P222CA0107.outlook.office365.com (2603:10b6:806:3c5::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:48:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F63.mail.protection.outlook.com (10.167.248.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:04 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:41 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:41 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:34 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Cosmin Ratiu , Mark Bloch Subject: [PATCH net-next v5 06/12] net/mlx5e: SHAMPO: Improve hw gro capability checking Date: Thu, 12 Jun 2025 18:46:42 +0300 Message-ID: <20250612154648.1161201-7-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F63:EE_|DM4PR12MB8523:EE_ X-MS-Office365-Filtering-Correlation-Id: 51b9fc7b-23aa-4b1a-fe4a-08dda9c88504 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6xhmG2skokOypU17Xi3ugg6uSJJHqawAHtxIzBiSe7xmAiE1aMCEPlxga+DY?= =?us-ascii?Q?dGzn3xCu6CfqrnWCwEWbciPtoUhT00MNf3ky9DM4/h9QTCbOkDsNfs1bVL3S?= =?us-ascii?Q?BP+nhr7vfQ86mCmRifjLOI2q/LpaQPpX609Sho1XrOJAWhFcYOyy7lBkTWuH?= =?us-ascii?Q?9kaILpv+A62vTYPUltgrTCrm84lYvzlkEisETLh2PEVdweJFRf2jHhv2yt0y?= =?us-ascii?Q?lam4OcT8eFi/kS3Tfm5yH0doKY912UfdIzPg1g3IjZgWPFfQViXJ7W4P4hxu?= =?us-ascii?Q?mXHgAM4np4+Fcu3j4Hqr9s1D61S7/H8GlAKF1RoTJVuTduWtZ4KSVZzWVk6g?= =?us-ascii?Q?D5KsrzRDm2F1hJ1N0Bl5exPLXNVyz6pBJYhwDdXXsFgLtdzGemNkpLKiJVxY?= =?us-ascii?Q?9qdfCJXYaIubxK4anc7EXJyVttxzrE2UfEsQDBAe0HgaTBIiuxA4/Iqpq9ih?= =?us-ascii?Q?VbmUI1dBZ9H4eRrDiZrKl2xD0mgl5Pxb/o+q4756Q2M2H2FQDyNO9Ari3j9v?= =?us-ascii?Q?z7a8XLLV6E39sriH7PDlUgpMpD1T4xGUU7EZTJcYltN/9PLeWf9iIiIgx5qv?= =?us-ascii?Q?m5dm06JDHuSRE1l7wZ8+m69XFG+jKixIdHfV+NU1YK55RUTxAgMUKvmBsjs5?= =?us-ascii?Q?l6aA6HZgj4RF4hRc8Z2szJSkU2L5KJJQ0/4PdpyYJaEaAQmFhx0l+gjXMA3Z?= =?us-ascii?Q?FaWZxmmsy65/4N3afWKvPY4w8C6VMl8C/mR2wMXUhsZ+LUww0eS942HC7WCy?= =?us-ascii?Q?LDOed0ou9OtXKuUd9+Y5Lrraplsxf9WTVL6JLC5C3Y2A4s6aVYXroA4gH7RH?= =?us-ascii?Q?cKTexkr/XMOZzvmAakw9x1aP6INON5AKZp00xNmCSuvdFyTKTdTjKQJpZmmn?= =?us-ascii?Q?nadgegg8H63GvgWM6w7Yn/B7KQ4hguPSV5stsGPrGEmrBzXREA16auC0DhKz?= =?us-ascii?Q?59dLBUJ6B0VYr6WxphrPjkNLsYy8QZ6O57kluOI8sWUoMkMkTb0u5vSuyxr1?= =?us-ascii?Q?f9AbxNG0NzZV1bTQZOAT+3T+F5CmSlRShX/oj2K//dF7ze4R2ATfzc+q4hTf?= =?us-ascii?Q?I+PoANjsWadhPszknTKnQrX4rL9Ih5jwpEjeDU5BSrxHAeIjayPlPEjGjlh4?= =?us-ascii?Q?irOB1wWzXiQ4WwyvPe5+q7kvUtKbY+3+qULc3K1H1HiKaiiGuQo7B59ugjhT?= =?us-ascii?Q?B/opQ4TcXs4Yi/vLv2gP1WtL0vLSIlYXUj6DJgmRCGq5HpvzWo2Y3k+dHZUj?= =?us-ascii?Q?ZUrRDrFOsZs9j20ZK7bO5niXKlcA8DqaG2jk/Rxb2HKUnbdpU8BrodW6WW7O?= =?us-ascii?Q?EnvhHMCQSW4UvmUUcDYbtQb3lgKTTDGwexiuF9qns717prl9Fc4yOLI4QiJa?= =?us-ascii?Q?JZpaYCksHYAgERdntZcKkZ/wAo59rP9biXQ9ycQtsAOLXO0nA66rUI4n7Ciw?= =?us-ascii?Q?9bympz8gpFJ94uOjWLfcwhlm1N7LLSIn0Wb6OTKII74onAF7OYti5P2+2Oes?= =?us-ascii?Q?vYEpd7bR3xOadTJrhYw6gLHVK6ck2ap7ZPGK?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:04.5082 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 51b9fc7b-23aa-4b1a-fe4a-08dda9c88504 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F63.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8523 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed Add missing HW capabilities, declare the feature in netdev->vlan_features, similar to other features in mlx5e_build_nic_netdev. No functional change here as all by default disabled features are explicitly disabled at the bottom of the function. Signed-off-by: Saeed Mahameed Reviewed-by: Dragos Tatulea Signed-off-by: Cosmin Ratiu Signed-off-by: Tariq Toukan Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 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 e1e44533b744..a81d354af7c8 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -78,7 +78,8 @@ =20 static bool mlx5e_hw_gro_supported(struct mlx5_core_dev *mdev) { - if (!MLX5_CAP_GEN(mdev, shampo)) + if (!MLX5_CAP_GEN(mdev, shampo) || + !MLX5_CAP_SHAMPO(mdev, shampo_header_split_data_merge)) return false; =20 /* Our HW-GRO implementation relies on "KSM Mkey" for @@ -5499,17 +5500,17 @@ static void mlx5e_build_nic_netdev(struct net_devic= e *netdev) MLX5E_MPWRQ_UMR_MODE_ALIGNED)) netdev->vlan_features |=3D NETIF_F_LRO; =20 + if (mlx5e_hw_gro_supported(mdev) && + mlx5e_check_fragmented_striding_rq_cap(mdev, PAGE_SHIFT, + MLX5E_MPWRQ_UMR_MODE_ALIGNED)) + netdev->vlan_features |=3D NETIF_F_GRO_HW; + netdev->hw_features =3D netdev->vlan_features; netdev->hw_features |=3D NETIF_F_HW_VLAN_CTAG_TX; netdev->hw_features |=3D NETIF_F_HW_VLAN_CTAG_RX; netdev->hw_features |=3D NETIF_F_HW_VLAN_CTAG_FILTER; netdev->hw_features |=3D NETIF_F_HW_VLAN_STAG_TX; =20 - if (mlx5e_hw_gro_supported(mdev) && - mlx5e_check_fragmented_striding_rq_cap(mdev, PAGE_SHIFT, - MLX5E_MPWRQ_UMR_MODE_ALIGNED)) - netdev->hw_features |=3D NETIF_F_GRO_HW; - if (mlx5e_tunnel_any_tx_proto_supported(mdev)) { netdev->hw_enc_features |=3D NETIF_F_HW_CSUM; netdev->hw_enc_features |=3D NETIF_F_TSO; --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2056.outbound.protection.outlook.com [40.107.96.56]) (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 EF2A729A9E4; Thu, 12 Jun 2025 15:48:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.96.56 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743294; cv=fail; b=YDQ5nAHoNJvPYufi691zZ1DaGyoRzbrmNJHJ1Z7OZ7lIOeX/x2kB2LvsOI14wkARbhnZ5Jq/N83o2oz7f8f1QAYhOH6zo1cOnMFF48ehP9M2w05RAsjkmGfuD+xBvyhlTCKlL/20j/ZZIkjwUnLmTrnfvXLpTc1dzIpovQJRr2g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743294; c=relaxed/simple; bh=udq+3o5ZtYamRoeM1huBcSpYT2n1uJTiwgb8yhgZkg0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=gOqg3SUVkVvXvhrC5foleq0tH6gg07qjB0Y1sQnN/S/ZruQdMVJO9lUFtnV2vHtKSjr66He7ofF0IYkiWL8pm1uPXetB/VKa6iidOrmVgdS62nZz4OunK/ZX47ozyHOwjuUwM1GdXPWE04Tj3xdlD9EHoP5OVb94bwkCYIEav+o= 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=L4n8CPrL; arc=fail smtp.client-ip=40.107.96.56 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="L4n8CPrL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EEpbCqYa9/TrLeuT8c6uc6M0EkTLmg386tyLlDv/Imp+9MfpMj5SseYGqQUIx+to+iJlnNqBXupDwce7JyDby/fdLVhfSQdshf1q+H2bGwe5CBVJEjsdfPqNX1pj6f+x4KVfyHJd2Zg4EouUTGc89CCOM5XK4FxG3uulSjU4d2/RlOc5XEHjYZ6WCffe8ZVGVO+LMXcAady80cZ/I2tq1+ct3JdE/pLtV71sIk4g2SrVN0By64d/g3Ncz3eGQAQ6dxY8Z7xnXfXMUuwCkRkP29GRlWmr92Z2fSUJ31N0+D6DU8hYTFXNc14D2mhX9TyWOH4leZ/koacgGYKa6dHWcg== 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=dsH3dcWUuviSyLvD16PIq0Dl8w+NXzoh610l+FCu6N4=; b=UIFuo0rsNni+7Y9E3dklB0KF3Q5yhN5LA+dGKcIAh7aXC9foMxeCzNNgptf/gJAAh7Fnb+ZJh4R6cJwcQVrFwaVIBrrzsJSjyc4LUaPOuUqzLLqS3e7L2zK5cvebYTV9WCSjeYX2KiB7B3zYGUFUZcEjpPYJwBAtEEePh68buFNdaoreUzgGXlMOUueJBYCmQ2YvfRDOCQ9nxfD4EMChjxQsa3vJzJtMqJOg/R7LkqNnQ1rHa7ZZfmUByv4fDC1TakduXKXYQpy4OIRMKejdOfukcKEHnxXVON6hYuUwnqCU8uCHQWDHzq9Ls/HpXxiOHq2Nd+Jjjk2VpLQoElN2Fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=davemloft.net 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=dsH3dcWUuviSyLvD16PIq0Dl8w+NXzoh610l+FCu6N4=; b=L4n8CPrLJslPRVkTE8K6jERQKk7YVn3awV3EHqTjI4zy0+4W2O00c/qcSxdyHlHcyCNbwZIYbk3Fx9mgxWYsI6m4nGKSyf4JJ+5J/sbGSR0UIt8ObYPeKaCtxBgqa2NYijfJK13ebO8Twz+4A+90EM5TuzrgHSZBIMNqc4HZnztLkak9sdIWC4D7yxXEcdefRh08UhqwQQF6z0YuRriPXAxuN5XUmlbqMGO+KCcjxqoicMqv1la8QIV9YhDg0B3gQpNbELP5Fo5g6uYP0rfCrLZq+j0AIFgM9gSVdtxVFeNB7DSetFd2wJ88Se1+QzkpAh5j+HrTuirNijU1RMgEOw== Received: from CH0PR03CA0014.namprd03.prod.outlook.com (2603:10b6:610:b0::19) by SA1PR12MB8986.namprd12.prod.outlook.com (2603:10b6:806:375::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.25; Thu, 12 Jun 2025 15:48:09 +0000 Received: from CH1PEPF0000AD77.namprd04.prod.outlook.com (2603:10b6:610:b0:cafe::96) by CH0PR03CA0014.outlook.office365.com (2603:10b6:610:b0::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8792.35 via Frontend Transport; Thu, 12 Jun 2025 15:48:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CH1PEPF0000AD77.mail.protection.outlook.com (10.167.244.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:08 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:48 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:48 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:42 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Cosmin Ratiu , Mark Bloch Subject: [PATCH net-next v5 07/12] net/mlx5e: SHAMPO: Separate pool for headers Date: Thu, 12 Jun 2025 18:46:43 +0300 Message-ID: <20250612154648.1161201-8-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD77:EE_|SA1PR12MB8986:EE_ X-MS-Office365-Filtering-Correlation-Id: e766b0f5-0bcd-4432-4aef-08dda9c88774 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?OGtvIt/hbGb1rNkx8xYNUWNXXyM3xJFfQJKNlPMQudo2zivE+vhz5s2BRVd/?= =?us-ascii?Q?7yxC+2IuZ2fv9I/KBhV9TaY5NbUzEo0mYGc6tScvuuEA/G0LnXwIphZ4NNTZ?= =?us-ascii?Q?aS7ZZ0aY7K3z3+goXfmLHd7YNUWhmF9MCNHvfk2mjJCukaJmSxZI3wjCwN/e?= =?us-ascii?Q?OAaFQsyNDcg4AEmRyjG1GN8QlLdyTkqzC9nMsRGJJUkFbrrB8NvMm8TKdqKv?= =?us-ascii?Q?iaJ2PUy2F42udN7AnsDz0nrqUpum139tUdMWtg/xfKG/Ld1+55Nmmk6ol8xm?= =?us-ascii?Q?FVdZ9Wuz19sDYbnDL1eW0pFonJKFUN5Z2YfuDHyOyx6cTZZJkSoALMRkGHmd?= =?us-ascii?Q?0qdJ1z5z9I94GVYGOd/Vy/JRvwQ9pHEyC4bty8z4IDeAmZhG0FV2xWDmr7e9?= =?us-ascii?Q?nv9ir17gHvEf2KSB5AiJ/sRXCsvfhHovRewOP8d9ZA5vm7a32D/1lx6bvucp?= =?us-ascii?Q?DBEwF5nUIuAu+4SzzBkDYPwzjLVuRGNoTOeOLcTrT6uthNBqUyonXtAr7Yl8?= =?us-ascii?Q?p0wbHuZnusHcVOU7/Wd8kyKEvaOFnLhnbrQVvF/sIGeIu9UV4flMDuyf/3wp?= =?us-ascii?Q?MEPP7pMFT4QsLrNXkA81qJ7bLequgwe/mZMN+4yjKX7LPXleWRA+YPoIPj4m?= =?us-ascii?Q?9KfSY4vMJf1QcAt4dae8J5zSVucg24HUgfbTGKGB8wcok2G+3kl/81CR5oN8?= =?us-ascii?Q?tO+VdD8ho5cuEox+g38sGWV/2C0blFsiseC7j3guB6a36ScniFsK7JEaFXKI?= =?us-ascii?Q?0R5lcLD+O0y4o/J4h8NG4DKzyOdEtZQpEv5J0hJM+gieptsk6J+6ZVzSen0i?= =?us-ascii?Q?9I3RMxc90FcfpfkTMKxvFu7Bs4DkEwhHMuhxKbaVeSbYaAEDgUi4SKDvmhg7?= =?us-ascii?Q?Kls+5Nh+fqstZVXM7fiMeTWV4fsydy0mTEbncX4SWS4cP6V9Vdf3b5AYh9Y0?= =?us-ascii?Q?aLNghbbpEa2/AnNSMnPZ0Cf+fFRz2/Rzgo7oZC6ulzt+YfpvNHDBEpdSwHgP?= =?us-ascii?Q?QFOKvu/Eqal4oT60KyQon5wR1VpxIUUQ+GZjhcwHFMKzHMfpSOKLLYpqvv9V?= =?us-ascii?Q?3tw8U5GWUvecdIbXaeQLOZJCvIUI+ZyOg9MeN8tolTJNqreYqh7lEg1JzPlh?= =?us-ascii?Q?+aVcKay4xauGEr1tMppPDQGBlpUyndvXXY/fEWxFIPOdCWe5P9DSAqk38KJG?= =?us-ascii?Q?MoUHK5lUxcAqQXfQvRAGMiXJ8/zfpJeQ76zI84XGv+lRR06fIY2I6WjvSEJ0?= =?us-ascii?Q?Gj93pMpkAP+k6Z0YNaVoF2+iXrK1EZuiTRHcvk3zkMt6qwFcI476s9SW6YQE?= =?us-ascii?Q?HN0BWEied72uZR/avus1rYNtISKxdoIlgd1sS18lnAg/iQ8xMUe2wUpIZtIa?= =?us-ascii?Q?LVKZY8fxOKjNF/jUVisN+xAkSlf+Idhnys12fR1t5lnPM4SLXTHu3Ij3R4lK?= =?us-ascii?Q?74q/4jsD959YLVegYbthIIndZ43Pbnzwx7AA+lHN6zonI6wLdtCTCOebY7XP?= =?us-ascii?Q?6EATHSeLNq5qdKn0n7TOpAO2lt2hVRlCik65?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:08.5997 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e766b0f5-0bcd-4432-4aef-08dda9c88774 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000AD77.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8986 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed Allow allocating a separate page pool for headers when SHAMPO is on. This will be useful for adding support to zc page pool, which has to be different from the headers page pool. For now, the pools are the same. Signed-off-by: Saeed Mahameed Reviewed-by: Dragos Tatulea Signed-off-by: Cosmin Ratiu Signed-off-by: Tariq Toukan Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 ++ .../net/ethernet/mellanox/mlx5/core/en_main.c | 43 ++++++++++++++++++- .../net/ethernet/mellanox/mlx5/core/en_rx.c | 41 ++++++++++-------- 3 files changed, 69 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/eth= ernet/mellanox/mlx5/core/en.h index 581eef34f512..c329de1d4f0a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -716,7 +716,11 @@ struct mlx5e_rq { struct bpf_prog __rcu *xdp_prog; struct mlx5e_xdpsq *xdpsq; DECLARE_BITMAP(flags, 8); + + /* page pools */ struct page_pool *page_pool; + struct page_pool *hd_page_pool; + struct mlx5e_xdp_buff mxbuf; =20 /* AF_XDP zero-copy */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index a81d354af7c8..5e649705e35f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -746,6 +747,11 @@ static void mlx5e_rq_shampo_hd_info_free(struct mlx5e_= rq *rq) bitmap_free(rq->mpwqe.shampo->bitmap); } =20 +static bool mlx5_rq_needs_separate_hd_pool(struct mlx5e_rq *rq) +{ + return false; +} + static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *mdev, struct mlx5e_params *params, struct mlx5e_rq_param *rqp, @@ -754,6 +760,7 @@ static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *m= dev, int node) { void *wqc =3D MLX5_ADDR_OF(rqc, rqp->rqc, wq); + u32 hd_pool_size; u16 hd_per_wq; int wq_size; int err; @@ -781,8 +788,34 @@ static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *= mdev, rq->mpwqe.shampo->hd_per_wqe =3D mlx5e_shampo_hd_per_wqe(mdev, params, rqp); wq_size =3D BIT(MLX5_GET(wq, wqc, log_wq_sz)); - *pool_size +=3D (rq->mpwqe.shampo->hd_per_wqe * wq_size) / - MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; + hd_pool_size =3D (rq->mpwqe.shampo->hd_per_wqe * wq_size) / + MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; + + if (mlx5_rq_needs_separate_hd_pool(rq)) { + /* Separate page pool for shampo headers */ + struct page_pool_params pp_params =3D { }; + + pp_params.order =3D 0; + pp_params.flags =3D PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV; + pp_params.pool_size =3D hd_pool_size; + pp_params.nid =3D node; + pp_params.dev =3D rq->pdev; + pp_params.napi =3D rq->cq.napi; + pp_params.netdev =3D rq->netdev; + pp_params.dma_dir =3D rq->buff.map_dir; + pp_params.max_len =3D PAGE_SIZE; + + rq->hd_page_pool =3D page_pool_create(&pp_params); + if (IS_ERR(rq->hd_page_pool)) { + err =3D PTR_ERR(rq->hd_page_pool); + rq->hd_page_pool =3D NULL; + goto err_hds_page_pool; + } + } else { + /* Common page pool, reserve space for headers. */ + *pool_size +=3D hd_pool_size; + rq->hd_page_pool =3D NULL; + } =20 /* gro only data structures */ rq->hw_gro_data =3D kvzalloc_node(sizeof(*rq->hw_gro_data), GFP_KERNEL, n= ode); @@ -794,6 +827,8 @@ static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *m= dev, return 0; =20 err_hw_gro_data: + page_pool_destroy(rq->hd_page_pool); +err_hds_page_pool: mlx5_core_destroy_mkey(mdev, rq->mpwqe.shampo->mkey); err_umr_mkey: mlx5e_rq_shampo_hd_info_free(rq); @@ -808,6 +843,8 @@ static void mlx5e_rq_free_shampo(struct mlx5e_rq *rq) return; =20 kvfree(rq->hw_gro_data); + if (rq->hd_page_pool !=3D rq->page_pool) + page_pool_destroy(rq->hd_page_pool); mlx5e_rq_shampo_hd_info_free(rq); mlx5_core_destroy_mkey(rq->mdev, rq->mpwqe.shampo->mkey); kvfree(rq->mpwqe.shampo); @@ -939,6 +976,8 @@ static int mlx5e_alloc_rq(struct mlx5e_params *params, rq->page_pool =3D NULL; goto err_free_by_rq_type; } + if (!rq->hd_page_pool) + rq->hd_page_pool =3D rq->page_pool; if (xdp_rxq_info_is_reg(&rq->xdp_rxq)) err =3D xdp_rxq_info_reg_mem_model(&rq->xdp_rxq, MEM_TYPE_PAGE_POOL, rq->page_pool); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_rx.c index 84b1ab8233b8..e34ef53ebd0e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -273,12 +273,12 @@ static inline u32 mlx5e_decompress_cqes_start(struct = mlx5e_rq *rq, =20 #define MLX5E_PAGECNT_BIAS_MAX (PAGE_SIZE / 64) =20 -static int mlx5e_page_alloc_fragmented(struct mlx5e_rq *rq, +static int mlx5e_page_alloc_fragmented(struct page_pool *pool, struct mlx5e_frag_page *frag_page) { struct page *page; =20 - page =3D page_pool_dev_alloc_pages(rq->page_pool); + page =3D page_pool_dev_alloc_pages(pool); if (unlikely(!page)) return -ENOMEM; =20 @@ -292,14 +292,14 @@ static int mlx5e_page_alloc_fragmented(struct mlx5e_r= q *rq, return 0; } =20 -static void mlx5e_page_release_fragmented(struct mlx5e_rq *rq, +static void mlx5e_page_release_fragmented(struct page_pool *pool, struct mlx5e_frag_page *frag_page) { u16 drain_count =3D MLX5E_PAGECNT_BIAS_MAX - frag_page->frags; struct page *page =3D frag_page->page; =20 if (page_pool_unref_page(page, drain_count) =3D=3D 0) - page_pool_put_unrefed_page(rq->page_pool, page, -1, true); + page_pool_put_unrefed_page(pool, page, -1, true); } =20 static inline int mlx5e_get_rx_frag(struct mlx5e_rq *rq, @@ -313,7 +313,8 @@ static inline int mlx5e_get_rx_frag(struct mlx5e_rq *rq, * offset) should just use the new one without replenishing again * by themselves. */ - err =3D mlx5e_page_alloc_fragmented(rq, frag->frag_page); + err =3D mlx5e_page_alloc_fragmented(rq->page_pool, + frag->frag_page); =20 return err; } @@ -332,7 +333,7 @@ static inline void mlx5e_put_rx_frag(struct mlx5e_rq *r= q, struct mlx5e_wqe_frag_info *frag) { if (mlx5e_frag_can_release(frag)) - mlx5e_page_release_fragmented(rq, frag->frag_page); + mlx5e_page_release_fragmented(rq->page_pool, frag->frag_page); } =20 static inline struct mlx5e_wqe_frag_info *get_frag(struct mlx5e_rq *rq, u1= 6 ix) @@ -584,7 +585,8 @@ mlx5e_free_rx_mpwqe(struct mlx5e_rq *rq, struct mlx5e_m= pw_info *wi) struct mlx5e_frag_page *frag_page; =20 frag_page =3D &wi->alloc_units.frag_pages[i]; - mlx5e_page_release_fragmented(rq, frag_page); + mlx5e_page_release_fragmented(rq->page_pool, + frag_page); } } } @@ -679,11 +681,10 @@ static int mlx5e_build_shampo_hd_umr(struct mlx5e_rq = *rq, struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, i= ndex); u64 addr; =20 - err =3D mlx5e_page_alloc_fragmented(rq, frag_page); + err =3D mlx5e_page_alloc_fragmented(rq->hd_page_pool, frag_page); if (unlikely(err)) goto err_unmap; =20 - addr =3D page_pool_get_dma_addr(frag_page->page); =20 for (int j =3D 0; j < MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; j++) { @@ -715,7 +716,8 @@ static int mlx5e_build_shampo_hd_umr(struct mlx5e_rq *r= q, if (!header_offset) { struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, = index); =20 - mlx5e_page_release_fragmented(rq, frag_page); + mlx5e_page_release_fragmented(rq->hd_page_pool, + frag_page); } } =20 @@ -791,7 +793,7 @@ static int mlx5e_alloc_rx_mpwqe(struct mlx5e_rq *rq, u1= 6 ix) for (i =3D 0; i < rq->mpwqe.pages_per_wqe; i++, frag_page++) { dma_addr_t addr; =20 - err =3D mlx5e_page_alloc_fragmented(rq, frag_page); + err =3D mlx5e_page_alloc_fragmented(rq->page_pool, frag_page); if (unlikely(err)) goto err_unmap; addr =3D page_pool_get_dma_addr(frag_page->page); @@ -836,7 +838,7 @@ static int mlx5e_alloc_rx_mpwqe(struct mlx5e_rq *rq, u1= 6 ix) err_unmap: while (--i >=3D 0) { frag_page--; - mlx5e_page_release_fragmented(rq, frag_page); + mlx5e_page_release_fragmented(rq->page_pool, frag_page); } =20 bitmap_fill(wi->skip_release_bitmap, rq->mpwqe.pages_per_wqe); @@ -855,7 +857,7 @@ mlx5e_free_rx_shampo_hd_entry(struct mlx5e_rq *rq, u16 = header_index) if (((header_index + 1) & (MLX5E_SHAMPO_WQ_HEADER_PER_PAGE - 1)) =3D=3D 0= ) { struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, h= eader_index); =20 - mlx5e_page_release_fragmented(rq, frag_page); + mlx5e_page_release_fragmented(rq->hd_page_pool, frag_page); } clear_bit(header_index, shampo->bitmap); } @@ -1100,6 +1102,8 @@ INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_mpwqes(str= uct mlx5e_rq *rq) =20 if (rq->page_pool) page_pool_nid_changed(rq->page_pool, numa_mem_id()); + if (rq->hd_page_pool) + page_pool_nid_changed(rq->hd_page_pool, numa_mem_id()); =20 head =3D rq->mpwqe.actual_wq_head; i =3D missing; @@ -2004,7 +2008,8 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *r= q, struct mlx5e_mpw_info *w if (prog) { /* area for bpf_xdp_[store|load]_bytes */ net_prefetchw(page_address(frag_page->page) + frag_offset); - if (unlikely(mlx5e_page_alloc_fragmented(rq, &wi->linear_page))) { + if (unlikely(mlx5e_page_alloc_fragmented(rq->page_pool, + &wi->linear_page))) { rq->stats->buff_alloc_err++; return NULL; } @@ -2068,7 +2073,8 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *r= q, struct mlx5e_mpw_info *w =20 wi->linear_page.frags++; } - mlx5e_page_release_fragmented(rq, &wi->linear_page); + mlx5e_page_release_fragmented(rq->page_pool, + &wi->linear_page); return NULL; /* page/packet was consumed by XDP */ } =20 @@ -2077,13 +2083,14 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq = *rq, struct mlx5e_mpw_info *w mxbuf->xdp.data - mxbuf->xdp.data_hard_start, 0, mxbuf->xdp.data - mxbuf->xdp.data_meta); if (unlikely(!skb)) { - mlx5e_page_release_fragmented(rq, &wi->linear_page); + mlx5e_page_release_fragmented(rq->page_pool, + &wi->linear_page); return NULL; } =20 skb_mark_for_recycle(skb); wi->linear_page.frags++; - mlx5e_page_release_fragmented(rq, &wi->linear_page); + mlx5e_page_release_fragmented(rq->page_pool, &wi->linear_page); =20 if (xdp_buff_has_frags(&mxbuf->xdp)) { struct mlx5e_frag_page *pagep; --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2082.outbound.protection.outlook.com [40.107.220.82]) (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 7DF9E29AB16; Thu, 12 Jun 2025 15:48:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.82 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743306; cv=fail; b=DqY5N057E8+IcZc9GxrTk7F/0SWHRMrhN7e3hp9Mlml2U8Ndbno2yu8goHfgq+0J62dqVfC3Ptp/u8wUXx02I7293nLM2fxACYWBNPQdbaouo44xPCFWVsi+bdJByOSHY6df3dcO7I1RS1HC5T5smQEwBfVJcqxJOFQ71GIpzqM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743306; c=relaxed/simple; bh=IgPRg2Z6oPvS5AnDgfyZfrLCEfntAHIivx4D4Z0if20=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bHNywL0J5vGpbFBNWs2uzSDViBppWIPP8FpGcp3xAR1hws/e/cPOl+PUthvcFzmLq677nrToKDe6M/p8PZ5dGjpr2InZ/1G0G+FwgCwJt5O7UpxNmTPopb25PrPcXQGJTl9nClCL02zFQrLaLzwDawjcuqG0vw2Gt6hNqK1cI3U= 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=Oulq2TD3; arc=fail smtp.client-ip=40.107.220.82 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="Oulq2TD3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TNCy0XXgTN1JBJ4F+xe3YlirazgHZdK9FIEfa3flqjJtINpaviVvSoz5QDn9VpRtitPMUFZzJyTD6WRvkTKEzWEH9Vu4YIm4NbS6+zoVp3iTCNodHsgfxV+PxIZckKWc25dcUwdla6EXdNjzJ1D2s1IUFWMVTkAQTrMWsuZyQeq+ZvUHIEhwWUSuMVLHgn1kbDBVddGWkZgqeNSi/kypyfQfUjBMyJF3b1fXfpoVzW6fAqJ9A6ODhq1eRk+ix95T+mI+RDoQGIfRSXXTcQSX6dAyh/pYnaQvXq8xEnl1Kfs24HQPFPDRhZ8CEDE5aVghFd1rdAh8xsFcu/Bsuizjrg== 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=+eZS3AV9PNli/fxdufttwlf/CrH7qfP7WTjeuTTH4kM=; b=jrBCsi3Ht5nHsBb7BcxxN/F4MqfOkOtAB/uRxlaNIP6nkoJk/V1IilLVIuz8NqFygf6OBgRbGpbdjb64AwKuyGHLnfdZNGmJ1zwLgV+qQ0X7PAovWfbwohqq/qHFt4eSK6Nn1S5f1pVlP+wMTBTam7llBVFECMe+Vr3HP4THcVGS8N42N9Pwl9v2yRFLKmsfw93wbBwv7u1N09ZlZYtEwHgdv3/BGV20tkTZlkLPniNTo8P49Hzr/VxOB6M18Uk7X/kbNyxvN+prsBmtZ6BqTPXpqZkFSXQOlrr0HlDSE5Gjg213p+RPNZfuetU18WfCySDb+zS9VVSbEaMH7yQG3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=+eZS3AV9PNli/fxdufttwlf/CrH7qfP7WTjeuTTH4kM=; b=Oulq2TD34hM6r43dVSGhIL0mypIIdVW6B98oNSbkRbdTyiAK75VYF0n0Xio0kHWcrXVyPbm+Cc6ijDh8vRJj07de1YY/dZaIorkHm3eLErJS/QJ2v2IaTREGw88fhg4Gfofhq8k0HoBGY10v/EfzhqqG73Hl7XbIo7rAigMzwO5xRayWVYyYgav6rl4nxcDfsAs8LiIPHSJ/o3Y/4t7omK09PEV7bBAh5Et5TCUsC11pjcQK557zoCHcqBfq3RvyZmy+5yBQUB4DD3tHIfm4wUvU4hrW8P8nsFwijO/IDx6TwtD91TcSFH8veUYtpWeSjGBrGU31LCTZt7VQZdWDww== Received: from SN7PR04CA0038.namprd04.prod.outlook.com (2603:10b6:806:120::13) by PH8PR12MB7351.namprd12.prod.outlook.com (2603:10b6:510:215::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Thu, 12 Jun 2025 15:48:19 +0000 Received: from SA2PEPF00003F66.namprd04.prod.outlook.com (2603:10b6:806:120:cafe::e4) by SN7PR04CA0038.outlook.office365.com (2603:10b6:806:120::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.22 via Frontend Transport; Thu, 12 Jun 2025 15:48:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F66.mail.protection.outlook.com (10.167.248.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:18 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:47:55 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:47:54 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:49 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Mina Almasry , Mark Bloch Subject: [PATCH net-next v5 08/12] net/mlx5e: Convert over to netmem Date: Thu, 12 Jun 2025 18:46:44 +0300 Message-ID: <20250612154648.1161201-9-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F66:EE_|PH8PR12MB7351:EE_ X-MS-Office365-Filtering-Correlation-Id: d6b1552b-2132-4cba-0e2f-08dda9c88d20 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NhAF8SzvEjQixmLpIX804k1CcATG4OWTnYIKJrI2KDDAB3IdIkr/qSWGZaNC?= =?us-ascii?Q?qMCOLA9tN5WL9YQQy4BZ/3tHkUR3ADvsvrRN3bTjMoNEory++Q2T/TQFUWXR?= =?us-ascii?Q?BD77AFsr86M8+DUWmocCg429ux09zA4Gsv7o/Uk2B1t0L8zAUZI0s9YKkJUX?= =?us-ascii?Q?0HIWyAP7aMAvRoZV/e+kOo2n3ButSz6Xvs9h/BeOT+qX59sDQFAEt4jvK0Vw?= =?us-ascii?Q?34el/qlVkgTRrf2dl4NCWgc4QBK+18e0S8+ffQ8rWTyDffVFpkJcvNOVdyI1?= =?us-ascii?Q?HWsQp06k0HwitqmH3iSw8wZujzqk7Y/63Cf0xWokQNm9zYiUBnlPo0jZOrBL?= =?us-ascii?Q?iAaNAODEXgSiIyonKs8X8BNWTvBdT6uWctW+RaOhrrew0vUacAy2bIsfGhTU?= =?us-ascii?Q?PvNxYYY3Bais04++jxrIF+G2DiVfCOicUkOU+W9tg7x1unmlOiZUCT7Nfmsm?= =?us-ascii?Q?efp4himeMbWrvn9gNEM0qY3SNunJpJaWNC9AXAl8PTI632937bHipqfg4hsL?= =?us-ascii?Q?4A9EtMuuX4eliD2d0ZA3dKtd4BMOWwUjvTwh1kukhojQaauWZ5lxlhiVreUt?= =?us-ascii?Q?Ji4RXz3hATo5UwTVn3SP495G7Vq4N354s+9zamVrsKImpPXobD88AaSMZu72?= =?us-ascii?Q?fuPgmPJ5AIrS85uFxKJkH/IvgigAhVUpnIF3W5x73m1gOMg6mI1TzPNtB/rW?= =?us-ascii?Q?kbfuoP/XKwwGkFPbTwx1F+5y6lCnJByuXjVP4VCfvHxlxUmk1yb0dOVdxaYs?= =?us-ascii?Q?Z0iql3SxH8zsTRxzh9NSy7fscv70jiPkhfKUy8lrdBN/j6i9xleo85NOnFvL?= =?us-ascii?Q?zyhBzkb8YWJnHm8wct443TtDIAnMsx+UqnkUNFAo/KzU3YbwPzHNvgCXmaP9?= =?us-ascii?Q?/NyRQiw4pBJ3zk/t3MAfuaGlZPcDlejWca42zt51kvNhIETMIvfSQ89w7W22?= =?us-ascii?Q?n/b6cbaILISpgdenCkP4LjI6x1KYfuZttq601hJOEeBUvqZyucA1KodvLIPk?= =?us-ascii?Q?kN22IHSHCUQgCXcbe1sG3yIBx9NylpE49aOsjlROeoc6VBjt+/TA4HR8Ha0w?= =?us-ascii?Q?GeUBCBb4l3aV77SHlojy08ztSQdjHgpdilKmHAbn4bM3x9sn8xMYiDMPZTlB?= =?us-ascii?Q?TjrZdIzoihfTpAZ2wbM+3SiP5k1g8vtBNkPX4jCtvH30Ja/A1bQD08AXsLXi?= =?us-ascii?Q?0FiqKN4tHTHryqEysUZkJeLuOwfVLkoZGYMcuOx9QP3NStpajt+jH4KzcWkb?= =?us-ascii?Q?32o8eearGHNPLsc8xmNhj+ycX81cYFiYbkxplEikIyGonFg4R9kfxx05m6dD?= =?us-ascii?Q?Ue5U0Xd+aDIw0Rx4qNK8uRcWIH5QXQaZsSHVgbvqH46LMcY6BchJVgBDN3eJ?= =?us-ascii?Q?QZaOKQNjfZM+yeFqADl97kR5TVyhNWRKV/UbdZ4pMmyiW0fb2HVL55QuepE2?= =?us-ascii?Q?mgJZHKJ6ikQSR51z1Yxb68VAbK0REpag2avdgPJCfC3afHLzqjJ5rwa5Im/p?= =?us-ascii?Q?xfqInqiQRwuYhSiSwZmgqZlXFoqa9n2+CP9A?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:18.1255 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6b1552b-2132-4cba-0e2f-08dda9c88d20 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F66.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7351 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed mlx5e_page_frag holds the physical page itself, to naturally support zc page pools, remove physical page reference from mlx5 and replace it with netmem_ref, to avoid internal handling in mlx5 for net_iov backed pages. SHAMPO can issue packets that are not split into header and data. These packets will be dropped if the data part resides in a net_iov as the driver can't read into this area. No performance degradation observed. Signed-off-by: Saeed Mahameed Signed-off-by: Dragos Tatulea Reviewed-by: Dragos Tatulea Reviewed-by: Tariq Toukan Reviewed-by: Mina Almasry Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +- .../net/ethernet/mellanox/mlx5/core/en_rx.c | 105 +++++++++++------- 2 files changed, 63 insertions(+), 44 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/eth= ernet/mellanox/mlx5/core/en.h index c329de1d4f0a..65a73913b9a2 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -553,7 +553,7 @@ struct mlx5e_icosq { } ____cacheline_aligned_in_smp; =20 struct mlx5e_frag_page { - struct page *page; + netmem_ref netmem; u16 frags; }; =20 diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_rx.c index e34ef53ebd0e..2bb32082bfcc 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -273,33 +273,32 @@ static inline u32 mlx5e_decompress_cqes_start(struct = mlx5e_rq *rq, =20 #define MLX5E_PAGECNT_BIAS_MAX (PAGE_SIZE / 64) =20 -static int mlx5e_page_alloc_fragmented(struct page_pool *pool, +static int mlx5e_page_alloc_fragmented(struct page_pool *pp, struct mlx5e_frag_page *frag_page) { - struct page *page; + netmem_ref netmem =3D page_pool_dev_alloc_netmems(pp); =20 - page =3D page_pool_dev_alloc_pages(pool); - if (unlikely(!page)) + if (unlikely(!netmem)) return -ENOMEM; =20 - page_pool_fragment_page(page, MLX5E_PAGECNT_BIAS_MAX); + page_pool_fragment_netmem(netmem, MLX5E_PAGECNT_BIAS_MAX); =20 *frag_page =3D (struct mlx5e_frag_page) { - .page =3D page, + .netmem =3D netmem, .frags =3D 0, }; =20 return 0; } =20 -static void mlx5e_page_release_fragmented(struct page_pool *pool, +static void mlx5e_page_release_fragmented(struct page_pool *pp, struct mlx5e_frag_page *frag_page) { u16 drain_count =3D MLX5E_PAGECNT_BIAS_MAX - frag_page->frags; - struct page *page =3D frag_page->page; + netmem_ref netmem =3D frag_page->netmem; =20 - if (page_pool_unref_page(page, drain_count) =3D=3D 0) - page_pool_put_unrefed_page(pool, page, -1, true); + if (page_pool_unref_netmem(netmem, drain_count) =3D=3D 0) + page_pool_put_unrefed_netmem(pp, netmem, -1, true); } =20 static inline int mlx5e_get_rx_frag(struct mlx5e_rq *rq, @@ -359,7 +358,7 @@ static int mlx5e_alloc_rx_wqe(struct mlx5e_rq *rq, stru= ct mlx5e_rx_wqe_cyc *wqe, frag->flags &=3D ~BIT(MLX5E_WQE_FRAG_SKIP_RELEASE); =20 headroom =3D i =3D=3D 0 ? rq->buff.headroom : 0; - addr =3D page_pool_get_dma_addr(frag->frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag->frag_page->netmem); wqe->data[i].addr =3D cpu_to_be64(addr + frag->offset + headroom); } =20 @@ -500,9 +499,10 @@ mlx5e_add_skb_shared_info_frag(struct mlx5e_rq *rq, st= ruct skb_shared_info *sinf struct xdp_buff *xdp, struct mlx5e_frag_page *frag_page, u32 frag_offset, u32 len) { + netmem_ref netmem =3D frag_page->netmem; skb_frag_t *frag; =20 - dma_addr_t addr =3D page_pool_get_dma_addr(frag_page->page); + dma_addr_t addr =3D page_pool_get_dma_addr_netmem(netmem); =20 dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, rq->buff.map_d= ir); if (!xdp_buff_has_frags(xdp)) { @@ -515,9 +515,9 @@ mlx5e_add_skb_shared_info_frag(struct mlx5e_rq *rq, str= uct skb_shared_info *sinf } =20 frag =3D &sinfo->frags[sinfo->nr_frags++]; - skb_frag_fill_page_desc(frag, frag_page->page, frag_offset, len); + skb_frag_fill_netmem_desc(frag, netmem, frag_offset, len); =20 - if (page_is_pfmemalloc(frag_page->page)) + if (netmem_is_pfmemalloc(netmem)) xdp_buff_set_frag_pfmemalloc(xdp); sinfo->xdp_frags_size +=3D len; } @@ -528,27 +528,29 @@ mlx5e_add_skb_frag(struct mlx5e_rq *rq, struct sk_buf= f *skb, u32 frag_offset, u32 len, unsigned int truesize) { - dma_addr_t addr =3D page_pool_get_dma_addr(frag_page->page); + dma_addr_t addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); u8 next_frag =3D skb_shinfo(skb)->nr_frags; + netmem_ref netmem =3D frag_page->netmem; =20 dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, rq->buff.map_dir); =20 - if (skb_can_coalesce(skb, next_frag, frag_page->page, frag_offset)) { + if (skb_can_coalesce_netmem(skb, next_frag, netmem, frag_offset)) { skb_coalesce_rx_frag(skb, next_frag - 1, len, truesize); - } else { - frag_page->frags++; - skb_add_rx_frag(skb, next_frag, frag_page->page, - frag_offset, len, truesize); + return; } + + frag_page->frags++; + skb_add_rx_frag_netmem(skb, next_frag, netmem, + frag_offset, len, truesize); } =20 static inline void mlx5e_copy_skb_header(struct mlx5e_rq *rq, struct sk_buff *skb, - struct page *page, dma_addr_t addr, + netmem_ref netmem, dma_addr_t addr, int offset_from, int dma_offset, u32 headlen) { - const void *from =3D page_address(page) + offset_from; + const void *from =3D netmem_address(netmem) + offset_from; /* Aligning len to sizeof(long) optimizes memcpy performance */ unsigned int len =3D ALIGN(headlen, sizeof(long)); =20 @@ -685,7 +687,7 @@ static int mlx5e_build_shampo_hd_umr(struct mlx5e_rq *r= q, if (unlikely(err)) goto err_unmap; =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); =20 for (int j =3D 0; j < MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; j++) { header_offset =3D mlx5e_shampo_hd_offset(index++); @@ -796,7 +798,8 @@ static int mlx5e_alloc_rx_mpwqe(struct mlx5e_rq *rq, u1= 6 ix) err =3D mlx5e_page_alloc_fragmented(rq->page_pool, frag_page); if (unlikely(err)) goto err_unmap; - addr =3D page_pool_get_dma_addr(frag_page->page); + + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); umr_wqe->inline_mtts[i] =3D (struct mlx5_mtt) { .ptag =3D cpu_to_be64(addr | MLX5_EN_WR), }; @@ -1216,7 +1219,7 @@ static void *mlx5e_shampo_get_packet_hd(struct mlx5e_= rq *rq, u16 header_index) struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, he= ader_index); u16 head_offset =3D mlx5e_shampo_hd_offset(header_index) + rq->buff.headr= oom; =20 - return page_address(frag_page->page) + head_offset; + return netmem_address(frag_page->netmem) + head_offset; } =20 static void mlx5e_shampo_update_ipv4_udp_hdr(struct mlx5e_rq *rq, struct i= phdr *ipv4) @@ -1677,11 +1680,11 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, stru= ct mlx5e_wqe_frag_info *wi, dma_addr_t addr; u32 frag_size; =20 - va =3D page_address(frag_page->page) + wi->offset; + va =3D netmem_address(frag_page->netmem) + wi->offset; data =3D va + rx_headroom; frag_size =3D MLX5_SKB_FRAG_SZ(rx_headroom + cqe_bcnt); =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, frag_size, rq->buff.map_dir); net_prefetch(data); @@ -1731,10 +1734,10 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, s= truct mlx5e_wqe_frag_info *wi =20 frag_page =3D wi->frag_page; =20 - va =3D page_address(frag_page->page) + wi->offset; + va =3D netmem_address(frag_page->netmem) + wi->offset; frag_consumed_bytes =3D min_t(u32, frag_info->frag_size, cqe_bcnt); =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, rq->buff.frame0_sz, rq->buff.map_dir); net_prefetchw(va); /* xdp_frame data area */ @@ -2007,13 +2010,14 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq = *rq, struct mlx5e_mpw_info *w =20 if (prog) { /* area for bpf_xdp_[store|load]_bytes */ - net_prefetchw(page_address(frag_page->page) + frag_offset); + net_prefetchw(netmem_address(frag_page->netmem) + frag_offset); if (unlikely(mlx5e_page_alloc_fragmented(rq->page_pool, &wi->linear_page))) { rq->stats->buff_alloc_err++; return NULL; } - va =3D page_address(wi->linear_page.page); + + va =3D netmem_address(wi->linear_page.netmem); net_prefetchw(va); /* xdp_frame data area */ linear_hr =3D XDP_PACKET_HEADROOM; linear_data_len =3D 0; @@ -2124,8 +2128,8 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *r= q, struct mlx5e_mpw_info *w while (++pagep < frag_page); } /* copy header */ - addr =3D page_pool_get_dma_addr(head_page->page); - mlx5e_copy_skb_header(rq, skb, head_page->page, addr, + addr =3D page_pool_get_dma_addr_netmem(head_page->netmem); + mlx5e_copy_skb_header(rq, skb, head_page->netmem, addr, head_offset, head_offset, headlen); /* skb linear part was allocated with headlen and aligned to long */ skb->tail +=3D headlen; @@ -2155,11 +2159,11 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq= , struct mlx5e_mpw_info *wi, return NULL; } =20 - va =3D page_address(frag_page->page) + head_offset; + va =3D netmem_address(frag_page->netmem) + head_offset; data =3D va + rx_headroom; frag_size =3D MLX5_SKB_FRAG_SZ(rx_headroom + cqe_bcnt); =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset, frag_size, rq->buff.map_dir); net_prefetch(data); @@ -2198,16 +2202,19 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, stru= ct mlx5e_mpw_info *wi, struct mlx5_cqe64 *cqe, u16 header_index) { struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, he= ader_index); - dma_addr_t page_dma_addr =3D page_pool_get_dma_addr(frag_page->page); u16 head_offset =3D mlx5e_shampo_hd_offset(header_index); - dma_addr_t dma_addr =3D page_dma_addr + head_offset; u16 head_size =3D cqe->shampo.header_size; u16 rx_headroom =3D rq->buff.headroom; struct sk_buff *skb =3D NULL; + dma_addr_t page_dma_addr; + dma_addr_t dma_addr; void *hdr, *data; u32 frag_size; =20 - hdr =3D page_address(frag_page->page) + head_offset; + page_dma_addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); + dma_addr =3D page_dma_addr + head_offset; + + hdr =3D netmem_address(frag_page->netmem) + head_offset; data =3D hdr + rx_headroom; frag_size =3D MLX5_SKB_FRAG_SZ(rx_headroom + head_size); =20 @@ -2232,7 +2239,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct= mlx5e_mpw_info *wi, } =20 net_prefetchw(skb->data); - mlx5e_copy_skb_header(rq, skb, frag_page->page, dma_addr, + mlx5e_copy_skb_header(rq, skb, frag_page->netmem, dma_addr, head_offset + rx_headroom, rx_headroom, head_size); /* skb linear part was allocated with headlen and aligned to long */ @@ -2326,11 +2333,23 @@ static void mlx5e_handle_rx_cqe_mpwrq_shampo(struct= mlx5e_rq *rq, struct mlx5_cq } =20 if (!*skb) { - if (likely(head_size)) + if (likely(head_size)) { *skb =3D mlx5e_skb_from_cqe_shampo(rq, wi, cqe, header_index); - else - *skb =3D mlx5e_skb_from_cqe_mpwrq_nonlinear(rq, wi, cqe, cqe_bcnt, - data_offset, page_idx); + } else { + struct mlx5e_frag_page *frag_page; + + frag_page =3D &wi->alloc_units.frag_pages[page_idx]; + /* Drop packets with header in unreadable data area to + * prevent the kernel from touching it. + */ + if (unlikely(netmem_is_net_iov(frag_page->netmem))) + goto free_hd_entry; + *skb =3D mlx5e_skb_from_cqe_mpwrq_nonlinear(rq, wi, cqe, + cqe_bcnt, + data_offset, + page_idx); + } + if (unlikely(!*skb)) goto free_hd_entry; =20 --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2054.outbound.protection.outlook.com [40.107.223.54]) (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 7D86E29A9E4; Thu, 12 Jun 2025 15:48:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743307; cv=fail; b=t+YgZzbMZXZCgk/MJ4y3XqLQpkw2i+xybRidsuaBEDYXDt9F3n9IBjG7rHp3jBvymASmjAldVX83JTcwbLsT6I6jluyu3v10WSv6DfQLxY4l7kfDuTTpAos32VAqZgqIt9U0xINE6i3gNk4ePSXpK9sPmrkKDr2+cOAzo4e8c2Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743307; c=relaxed/simple; bh=v/5hYEvABqD3wtOGv4j5we30H/IpXCScHgL1Y82Mi1Q=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=G58bN7BECVPIGCJ+PWfHDVow911POoUvIiCMX8KAOqIQe/4w/489gQ24m4Me5DZ7YgBllsO0+nT/ZIy3WFSB0og2ypz4xQL0p8FbFuowcgW3bhjlcMbN4iiDm6wS+dlZJIZjBksqtHo0s75kbzKKqYHz0oS0ukGcf256wmsqDPQ= 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=c7XEc1gj; arc=fail smtp.client-ip=40.107.223.54 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="c7XEc1gj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ot1k09MDWo+pUvxsQ4CqrYg6rmetdfbTSwqcn78qUDwEgsITiTwNFEwE+cwho7JXa+7iFblfv9ebHECHHC6oONNKxfd7jP1hBQjo1ZVh8/IouPIlwE3EhV9ewAEROlL68XTAFsb1hCjCgYV64/j70KOlxaQev2akeqhstVSRoG6zHSO6LfgYK4Y8QbzgYLZYL5AyMh4wAQLgC6M+UObDQwFarrTZOgkwd+sHwgpTQexDltlPCYAMZePQNdQif8cUjAGwVYScwAVuCzIYed3f7oRfZahcOCF4v2GZccCCL7GCFIF0tzC0wWdtmuiweYQ+Yifmz06EV67xMAzW4YRCeQ== 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=SDcXD133STGLLBQJAZk5dcrajsAm+ih5Ccq3EiaEKkU=; b=r9xSb3hnwSeqGLuD5cYQQNlLZwmA3LMsdODzfhek6npOxyULXcEPqEhi61vNr4k4ozFY7jp0m9vwYMHgyrM7iNYTqhwyV/qRWxHFpygVaHhqkAZfp1OTWnRCCmV9RCaABKNhsNnKHc9MGlf1i4Fak4Ue5RXH+hhBXmpLxzoooF0xG02MKNGcXGpgBnYZCW06mQV1xgllhifH/61PHdiG3WkzMGGtck2u2qFIbfJpOSAVpe3SBEi9fe2W0AYqLBBvn83TWvc/UoU2TMeiBABjNNIlnPtoY3iOmWKPN6TH2cwdazAyNes5aRq52ppmBqMbLl2J9FcEuUN/g+daZSHwbA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=davemloft.net 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=SDcXD133STGLLBQJAZk5dcrajsAm+ih5Ccq3EiaEKkU=; b=c7XEc1gjlamx6fYXi8bEeeRi8Wy1ZwDh8WzDi8gFJnsjWXQ+imtU+6ZGo0mKeNmHMznfKcsCKwF8IkPhDLQAIENj+3xRK96EmPRNgdGttNNb7InssRfKPMmfz9hCEkw586KLGAosvyB+kJkKmdhVO07S5tBSlk0w3yTpi6ZylchSLW8M8Qr024E8IA1Sl6RAUAs977RbgEO8bDVqSTGQDYKPvS5WO6g4imZno8guqSMT0PehKGfXODX6tM+flyX6jmurX0QwGGaGAbh7FctXYdzbtrWHOfF7QhlvYVcxzFMGYG7FO2SvPHLdRUQvn7Om5DlwJ6K7I4ahUYAKqlogUA== Received: from CH0P221CA0042.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:11d::26) by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 15:48:20 +0000 Received: from CH1PEPF0000AD7B.namprd04.prod.outlook.com (2603:10b6:610:11d:cafe::86) by CH0P221CA0042.outlook.office365.com (2603:10b6:610:11d::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:48:20 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CH1PEPF0000AD7B.mail.protection.outlook.com (10.167.244.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:19 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:48:03 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:48:02 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:47:56 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Mina Almasry , Mark Bloch Subject: [PATCH net-next v5 09/12] net/mlx5e: Add support for UNREADABLE netmem page pools Date: Thu, 12 Jun 2025 18:46:45 +0300 Message-ID: <20250612154648.1161201-10-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7B:EE_|DS7PR12MB9504:EE_ X-MS-Office365-Filtering-Correlation-Id: 551f40a4-e012-4df6-808d-08dda9c88e0f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|7416014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?S5BqKVU8uyjqhBzR7aYpur5QIljpZwd409iStopOgBKmY8cZ15OA/S0LDEpx?= =?us-ascii?Q?WJfRxDeHDGRoHIgGXMf079eh2bEypWlQqTcPkBW5YHw/RpkGERPSq+p5fcJG?= =?us-ascii?Q?54DxHD6Lv7pn2tieIujS15g4BLUXjtPlvRs8FkMI+5IUwUKy5aVRNz03eK+O?= =?us-ascii?Q?63vx/CTsi+qs+BTWYc4eaDAX1ibBB+TfbI13mpQYXxKmGAVOW2vE0HP4Xdp2?= =?us-ascii?Q?DqyfVPSPDx1vDvW3bHyGxYm8r+T8DL1B+t28Oh/Fu1ERfKNmqTu5ItCF+Eb3?= =?us-ascii?Q?ztRR9NoZ570r4XisaqTDAdBrXDh308pYTVet/QL+C9qbTVWEJDanY2evOqJw?= =?us-ascii?Q?2VybM7wQwnFBLCW1GEgfSE+coDIOt9Cx1Cyo7l7AG70wC7wRQN5dBx3ocM1D?= =?us-ascii?Q?FzfOvw1dUvFzM7oiqnq5WKtwrvemQh+TPPld36yp03q7B179pA0FjttktTOg?= =?us-ascii?Q?1lQU8gXsfAU8eb7DkJIKgMhra+1p7igElUzuU9tSaAjEymxglqskDPh082D8?= =?us-ascii?Q?6PanT+p/HqZhzzhhAm6fZp1406tTPzRpdtvpDvTKMvjoTYVqKZ14dWCG045J?= =?us-ascii?Q?Vd4O+/X72q8/l2gSvi5gcTUgSWUn/jk+QnIl17NRlb3kATnhFYyCE1VQfAV3?= =?us-ascii?Q?iUysWCKKBZeESwjpcY2usq/L1yWm7W2xTaAX/hMlR7IXUoqw8B1nCKeAjV4c?= =?us-ascii?Q?yStgvD7fymFrkvbvxuAt2Jgg+hA/gYufyCfZ6DoVM9N9bag3kzx96WtTtntT?= =?us-ascii?Q?+n06VEbwnEcuef0tQiqfUYsgrufCLy4vZnFIjdhUurkpyLtojSiqRmT/vxfV?= =?us-ascii?Q?w+Ym6ZZjNJ+nL+bZjqCSBsN+4Sx0T9g68cXr98iZUMBB3iCIvivEgTSWVlw3?= =?us-ascii?Q?Vpv6i2184jUUep0oDvjrQBwygRkwMa88Y0FfBzwg1UMIoA4YozjHSihQFpVf?= =?us-ascii?Q?CiYLbW+dC06zBgZe1bKR4I3kN9Yk9YiVkF0fQUFzntU/xxxyQRZXCq7tG1ij?= =?us-ascii?Q?M9Wz60ZZqiMrqRjpRFaOaSBsNp2uphY30UlLjevEbjIIhNBat+sY0CoNO01L?= =?us-ascii?Q?1vYq1wO6RcjCPPwKI+jCAxGI1tKZCV/6SYg2KWVaGffDPOLK5kyn4XLDW5b+?= =?us-ascii?Q?7rhoXrdNjRhtyn+GyeRXUvHGxvH24q6CWTz4Vva1Vw1jCjP8/egEScOKimgD?= =?us-ascii?Q?nhdK7e8kHXuM8FzqrbHfDjnPk9XmpZWY00VBr24n1xa46Y94MuxtCNzhQh8R?= =?us-ascii?Q?jyvzRcIDi9ucZUCM4h8RRFpiV3xKF8zuSHzixGr5z5W9ziQgAni8TnD41ZYF?= =?us-ascii?Q?qggH6IT3YCVUuRRLbO6o/dVg2XfQOWn/io5Lu2AYjy3vHITMBr3WzrlMfCom?= =?us-ascii?Q?4Xs2KB6i4LWfUN+NFki/i03OL9HnAWZlXrmfHYLfC8LvBhQQrthBT+vkIJn4?= =?us-ascii?Q?tLwwTYAmek8scTs+5veAFdVfESCCP9CfexsvwEkpCrINhdaQY78Py5qY0S8Q?= =?us-ascii?Q?1N0/rYnbnRTMNqbNfWx5G0BVj7MMYJwHZGU7?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(7416014)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:19.7053 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 551f40a4-e012-4df6-808d-08dda9c88e0f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000AD7B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed On netdev_rx_queue_restart, a special type of page pool maybe expected. In this patch declare support for UNREADABLE netmem iov pages in the pool params only when header data split shampo RQ mode is enabled, also set the queue index in the page pool params struct. Shampo mode requirement: Without header split rx needs to peek at the data, we can't do UNREADABLE_NETMEM. The patch also enables the use of a separate page pool for headers when a memory provider is installed for the queue, otherwise the same common page pool continues to be used. Signed-off-by: Saeed Mahameed Reviewed-by: Dragos Tatulea Reviewed-by: Tariq Toukan Reviewed-by: Mina Almasry Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 5e649705e35f..a51e204bd364 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -749,7 +749,9 @@ static void mlx5e_rq_shampo_hd_info_free(struct mlx5e_r= q *rq) =20 static bool mlx5_rq_needs_separate_hd_pool(struct mlx5e_rq *rq) { - return false; + struct netdev_rx_queue *rxq =3D __netif_get_rx_queue(rq->netdev, rq->ix); + + return !!rxq->mp_params.mp_ops; } =20 static int mlx5_rq_shampo_alloc(struct mlx5_core_dev *mdev, @@ -964,6 +966,11 @@ static int mlx5e_alloc_rq(struct mlx5e_params *params, pp_params.netdev =3D rq->netdev; pp_params.dma_dir =3D rq->buff.map_dir; pp_params.max_len =3D PAGE_SIZE; + pp_params.queue_idx =3D rq->ix; + + /* Shampo header data split allow for unreadable netmem */ + if (test_bit(MLX5E_RQ_STATE_SHAMPO, &rq->state)) + pp_params.flags |=3D PP_FLAG_ALLOW_UNREADABLE_NETMEM; =20 /* page_pool can be used even when there is no rq->xdp_prog, * given page_pool does not handle DMA mapping there is no --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2086.outbound.protection.outlook.com [40.107.223.86]) (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 972A22D1F7C; Thu, 12 Jun 2025 15:48:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743315; cv=fail; b=ELVBm1x5Hbnk7RK2VexEbdiEhwUKL4a9kK33Zv1urqp2TsMfrbtnXoKrsvftGw5e4IRnhbd/APYA7EbhBQalNh4+oGoWy0y65IDYHwUE+5VJiy/CzLXV774kwO3UDNrrv1T8Naa0YUHriimhBZ2BaEvZ5le3jJAI4gsCKVFKWB8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743315; c=relaxed/simple; bh=fNDNijacQ6HXnsRmJVmczVXKMRsVzC5YyMTw3RBQ2KU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Puj+VtqyIV4Tk2ldBrapg5txR4DN0wAL9uyKGF8Gyw4OQDcgYtilpam1s8J8MWsRcLF2aORh/fwJIHs0rZYFgv3y+I7vnsaobGF4iW96BHs8HH+UtE9orU+QkJWnbHKx6JabpWhZRd3uTVtO0Kh5tYQrwohtOgq/9XrK1NBfUnw= 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=Wb9GF0LV; arc=fail smtp.client-ip=40.107.223.86 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="Wb9GF0LV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ffvLHcHE++bJq6h1oWZuNLAEc1CqtxJWuC6NOKlbcNipp3Wy1ndiF1PN6fkzn/I8Mz/4twtp1DF7JhhmUITh1fxKJBXOEcxkqFqzHU3ds4C1gubeH22iUrnWmdlB/kOdsVrw/wXDCzsDtZkKOOA0WRm1/YusS3FC/9sazoNJ20BQ4f50aVi8RK0i58XKAQZdPdHfyzZWBxqwuqGrE2v9xVBdGaYUukr7yO2i9CSJ6SLgvpY70R20SWjaWjZXJ/nFnSkQEbZhiEq9BzLWvyLB49frCasLqAZjP5f/RGW2L9SPmk07gv/+wwkrotlSh5egf5CbVRSbFgqI+JPj6cr/kQ== 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=b4qaGDM9Nndt87AehHjDKTRzHc2WBx8aTjZcpC7LM6w=; b=NLIpwVaB4n9RZH3haCrWIOoRQ86F1+ZG3liVCiWtcfU5BaWF2slvJv1+n5sfoUJtLiacKo6Qh2sEpd4oQWNpeRxhFg8K1wCTVv1lCAX8srYg0tWx3QwUvLcwiDR5JGKjm11+ftJFqNj3KlT4VRfQhY8l4pULvlp0Jatc13RvbLAHX0gyuatFlfd6s4bdOwEvHdCfeeU3v79Xv9MPq7OYdPW+GcYhdHQFcdBltpe9WMDUcZurU/JZmQG1gMW3M6fl1qP/+S4oPLxduhwOXC/AISrgTjUY2J0+Hl39fB7W3OCePb0UydFARO8mssoK13wBuu6YUkFugWFzv7+IJBFFBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=davemloft.net 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=b4qaGDM9Nndt87AehHjDKTRzHc2WBx8aTjZcpC7LM6w=; b=Wb9GF0LVgfONlAs4DJFj8bvoOLOXKnzamNfAXFX5FNe/wcIT7VBkjCNKI53Ki/jPWnyewXy5ousVp7WCs4dBWtKsjeEZwn/fG1Ia8mkJfoss3SDShCbc90ypsAhoskWWaU+gpSi4WBM6aGGtMjd1mWanCfLagZUQaOVboEoEvN89JSbO7EQHksm7biEMuUgXlqaKPEjabgvAOl0UtdM7rHh6UMIGkCgHpvYCs6sUm+0x+o4aFLKSC1WGVVF9HCtyGNFNmT5XQIgYt9Q7x45Sq5fg8sMtwsAUROrpseYe9X+YkbXpODLUdeXXfOOWuQW3ukybOtjEzKve7/gtyJGuHQ== Received: from CH0PR03CA0002.namprd03.prod.outlook.com (2603:10b6:610:b0::7) by MN2PR12MB4333.namprd12.prod.outlook.com (2603:10b6:208:1d3::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 15:48:25 +0000 Received: from CH1PEPF0000AD7A.namprd04.prod.outlook.com (2603:10b6:610:b0:cafe::30) by CH0PR03CA0002.outlook.office365.com (2603:10b6:610:b0::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8792.24 via Frontend Transport; Thu, 12 Jun 2025 15:48:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CH1PEPF0000AD7A.mail.protection.outlook.com (10.167.244.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:25 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:48:11 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:48:10 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:48:04 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Mark Bloch Subject: [PATCH net-next v5 10/12] net/mlx5e: Implement queue mgmt ops and single channel swap Date: Thu, 12 Jun 2025 18:46:46 +0300 Message-ID: <20250612154648.1161201-11-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7A:EE_|MN2PR12MB4333:EE_ X-MS-Office365-Filtering-Correlation-Id: 441ada30-a63c-42f2-7a2b-08dda9c89156 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kKOwkE5Z0VKUqGvTS6uB3ViOlbH+EM7NPToZ0YvTef2nM/4a478EBFH7BJ47?= =?us-ascii?Q?gJHFv+tA4btyl1PqYM5gTryY5GiNPQU2kaDtBFQXKvZjhaIFT6aiM9tNZrzs?= =?us-ascii?Q?vwyQMCNLETaNKgFzN1NickoAMJtXO/V3Ez0rksxl9V2MKhRGOCgxL2SZ76Kn?= =?us-ascii?Q?aDp3wsMepYPiC/o1EKebfchPGkRX3xkhAvCxPWKEAz9QEQADqFzTqZL/9IxT?= =?us-ascii?Q?YQQ3HhLRUwydXarg9IhbKB+iwhJFnQdFYkLY8jvZWC81W2h1pAz/ZS1ztM4v?= =?us-ascii?Q?yFStdRPwPUK6frIkyaIG2VYFzXcWveUWxYy1bHPSDAzscFs4oRLOFT97Zulf?= =?us-ascii?Q?GOGWhJh87JvUPfE2+mGfY7Gltg8kD0UCAt3mzlQ/x7oGyG6x01c/1MSsldYM?= =?us-ascii?Q?EcxCFMwvD7CB2qdBJMWjM82Pbs/AixpQ2Ap5SD8j8wBZZsNqx2ra2JnKQmMQ?= =?us-ascii?Q?E4Qim1nXxeiVrl2zJqE4019pvcSr86ng3ZiOt9DFUgwB4k1JJB9nki08Fb+Z?= =?us-ascii?Q?2Dtlns/9R0qv+Jz22tBXjwt1N3GuBF9JmrtGE/c0XaSLUOHwELItJLYkOxtU?= =?us-ascii?Q?/7WRGB6jNP+pIthnEYAnZhP2F3gpm6biQL0zoAcU6cGRSbDMDq2uao30Pm2u?= =?us-ascii?Q?Bw6de37uJ3wQ8v1uPKSaH3xP35FezY9cacNyy+3mfPeJ70J1RcqChWmscBvv?= =?us-ascii?Q?rQTI24msO3Iy0xCxmKB6spsOvacsGds4alRp3plODianmrvKXgBkxJzreHRi?= =?us-ascii?Q?a66opJcLz9JLfiNxU4N/Tg/dCF0GVA5OEAoS1O88vri/XMUYWzSmKuXDNcaS?= =?us-ascii?Q?HGzU8NB31+bzvlAn6gJPXdsMS/It72ucs0+AEKO+LEmxjMpUan+8Lb+T2iGY?= =?us-ascii?Q?5patS7USnFK5ayVzPv+UOaToMKVgS1ItUNSTaC3nBcVHP05mZAc0F/kIYKsw?= =?us-ascii?Q?1fazO3lW6Lq4B1TgbYK0H0Ec5qewfX1DOxa7zMfdE877h2qTkL+PzTJZYJWy?= =?us-ascii?Q?Gf47346N6BQ/nfBqzF9KTn7Dbz9bw2OSrX4wUntXGiufF06L56sw9C9/IAGq?= =?us-ascii?Q?aqGfKeYRFWTgwMUvdYViUK+OAHXpvewOeLeOQR6qW2RBOnapR71DvClJGCg+?= =?us-ascii?Q?PAL5gZ0ncFD5DK0L8dn5ogRhO3ACLHVWOwkviR/bgbXpBfixDKsmwhpuC63v?= =?us-ascii?Q?qp2GetG8k636RelK6Y4igTaqU7svEKlF52Fk+j6KA/4SIlywet1XXZ3TG0JO?= =?us-ascii?Q?Xk3hJ+yEfk83GyakDsq3NwDHFCreNrzsWBKxLO1JyOVFnbeGrAwlhWVi9wRh?= =?us-ascii?Q?IMPFmhpY+wWVHC56yH1XHHLdhY6WTvfX/wP3SGsbuiX53GGRMagRbbUAMW+F?= =?us-ascii?Q?8npruXho9xC7a7hyk1gpQiiSlupi3hOlt8xgyOLW4mr+M+g5lbItWSkJMvzI?= =?us-ascii?Q?IC7VO4OR/YzGbHsHrCjEA/0K4P0SlglDZBvp7NgIAa41PzjbQkbzAp+EYcJP?= =?us-ascii?Q?9p/x432irxRzW0J74xx/rTZW0SrEcpFmrb9o?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(376014)(7416014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:25.1744 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 441ada30-a63c-42f2-7a2b-08dda9c89156 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000AD7A.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4333 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed The bulk of the work is done in mlx5e_queue_mem_alloc, where we allocate and create the new channel resources, similar to mlx5e_safe_switch_params, but here we do it for a single channel using existing params, sort of a clone channel. To swap the old channel with the new one, we deactivate and close the old channel then replace it with the new one, since the swap procedure doesn't fail in mlx5, we do it all in one place (mlx5e_queue_start). Signed-off-by: Saeed Mahameed Reviewed-by: Dragos Tatulea Reviewed-by: Tariq Toukan Signed-off-by: Mark Bloch --- .../net/ethernet/mellanox/mlx5/core/en_main.c | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index a51e204bd364..06a057ecaecc 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -5494,6 +5494,100 @@ static const struct netdev_stat_ops mlx5e_stat_ops = =3D { .get_base_stats =3D mlx5e_get_base_stats, }; =20 +struct mlx5_qmgmt_data { + struct mlx5e_channel *c; + struct mlx5e_channel_param cparam; +}; + +static int mlx5e_queue_mem_alloc(struct net_device *dev, void *newq, + int queue_index) +{ + struct mlx5_qmgmt_data *new =3D (struct mlx5_qmgmt_data *)newq; + struct mlx5e_priv *priv =3D netdev_priv(dev); + struct mlx5e_channels *chs =3D &priv->channels; + struct mlx5e_params params =3D chs->params; + struct mlx5_core_dev *mdev; + int err; + + mutex_lock(&priv->state_lock); + if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) { + err =3D -ENODEV; + goto unlock; + } + + if (queue_index >=3D chs->num) { + err =3D -ERANGE; + goto unlock; + } + + if (MLX5E_GET_PFLAG(&chs->params, MLX5E_PFLAG_TX_PORT_TS) || + chs->params.ptp_rx || + chs->params.xdp_prog || + priv->htb) { + netdev_err(priv->netdev, + "Cloning channels with Port/rx PTP, XDP or HTB is not supported\n"); + err =3D -EOPNOTSUPP; + goto unlock; + } + + mdev =3D mlx5_sd_ch_ix_get_dev(priv->mdev, queue_index); + err =3D mlx5e_build_channel_param(mdev, ¶ms, &new->cparam); + if (err) + goto unlock; + + err =3D mlx5e_open_channel(priv, queue_index, ¶ms, NULL, &new->c); +unlock: + mutex_unlock(&priv->state_lock); + return err; +} + +static void mlx5e_queue_mem_free(struct net_device *dev, void *mem) +{ + struct mlx5_qmgmt_data *data =3D (struct mlx5_qmgmt_data *)mem; + + /* not supposed to happen since mlx5e_queue_start never fails + * but this is how this should be implemented just in case + */ + if (data->c) + mlx5e_close_channel(data->c); +} + +static int mlx5e_queue_stop(struct net_device *dev, void *oldq, int queue_= index) +{ + /* mlx5e_queue_start does not fail, we stop the old queue there */ + return 0; +} + +static int mlx5e_queue_start(struct net_device *dev, void *newq, + int queue_index) +{ + struct mlx5_qmgmt_data *new =3D (struct mlx5_qmgmt_data *)newq; + struct mlx5e_priv *priv =3D netdev_priv(dev); + struct mlx5e_channel *old; + + mutex_lock(&priv->state_lock); + + /* stop and close the old */ + old =3D priv->channels.c[queue_index]; + mlx5e_deactivate_priv_channels(priv); + /* close old before activating new, to avoid napi conflict */ + mlx5e_close_channel(old); + + /* start the new */ + priv->channels.c[queue_index] =3D new->c; + mlx5e_activate_priv_channels(priv); + mutex_unlock(&priv->state_lock); + return 0; +} + +static const struct netdev_queue_mgmt_ops mlx5e_queue_mgmt_ops =3D { + .ndo_queue_mem_size =3D sizeof(struct mlx5_qmgmt_data), + .ndo_queue_mem_alloc =3D mlx5e_queue_mem_alloc, + .ndo_queue_mem_free =3D mlx5e_queue_mem_free, + .ndo_queue_start =3D mlx5e_queue_start, + .ndo_queue_stop =3D mlx5e_queue_stop, +}; + static void mlx5e_build_nic_netdev(struct net_device *netdev) { struct mlx5e_priv *priv =3D netdev_priv(netdev); @@ -5504,6 +5598,7 @@ static void mlx5e_build_nic_netdev(struct net_device = *netdev) SET_NETDEV_DEV(netdev, mdev->device); =20 netdev->netdev_ops =3D &mlx5e_netdev_ops; + netdev->queue_mgmt_ops =3D &mlx5e_queue_mgmt_ops; netdev->xdp_metadata_ops =3D &mlx5e_xdp_metadata_ops; netdev->xsk_tx_metadata_ops =3D &mlx5e_xsk_tx_metadata_ops; netdev->request_ops_lock =3D true; --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2060.outbound.protection.outlook.com [40.107.243.60]) (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 99D3611CA0; Thu, 12 Jun 2025 15:48:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743328; cv=fail; b=oPxfZXsCl/59HB45wZymBYhbQIR2adKAbKfBWNW7hB6F+2m3sl9MNq5sRv2P2QCEoaJMDkiNLQJMUGfD4cAtSQYdIfn1vUPefsn+Em2haNs3nTiTt4dFB/wf4/+T6mK2yCHv34WJmqwq6phyFUF0kZ6ckif2Hi9RpN+8MtfHhkc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743328; c=relaxed/simple; bh=u5bCwSYJn2a1dX0NlLwRZShpAYJyAY8+sGmxjkf803s=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=RzzMTZI2rt6ka/DqnMt9VBgxKdyfycCEpI21AmhNwVB/SDdFwaBZ2XASVww4xTLp+r5icl5LYxpicnUqoozVvygElajrZCsnzS6vJ/9iDQuW4hj0SjYHj/TaF2IK2Ysk6n8CpfaPBSYlxI6BXUy2CuIa2hOBWBLhdt2maUfH6tY= 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=Su5xITaQ; arc=fail smtp.client-ip=40.107.243.60 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="Su5xITaQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fgfZdnTpvyPTvQHIiGRDi5aQxAdnbjrAkWKWCJmDgZZQc3bz5Mtfz3BbJ+0smJGhA74F3BWivIxeF6NkkhcD6KQcfCc4srpqqD/N8M26UAx3bJl/3qZ5ddX+BSmUG4WHH1FHk5tfYmFtMt+02YY2JZvGTYuB8G+Y6j8jZVu7Io7OPAFP7kX1EZpsLDc34PbejPs3tNvaebxBuxdMIcx0XEze+wGGPPWMFAXPV6wE7AbMh1491UuOt1AJ2Z9IrZj/bKKorX7tHKIFxgO2zaWYpk9sKRcE0ilbDOBDIH8u4UFBnclKQ4zY9GqOhvJq3qJKz8bTokBRAYBz8hOgSVjnqg== 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=GxJaiiPbsvq9+bJ7i5vFS+MBlGVWQgIlqwUhdOE3M0o=; b=Uq7zzhzv4kbErKRnGiEOVaZxFO4VvV3V3jZvG2guDnxP6ircVFrZkY/zwxXD5L43iyHxzula7xG0tTJ2gSp0mBMn+SN9nLMQQrCxu0CYFGHoYsfGyg7zWxz/mxGCsbYr/fST2LC/mBAOuUajW6mGBKnCQ0OW6QnlJx8Opr+UcqoWN3o7r/SX15OPhJDG4ewp2YNETzXJYBrZwtkOhUEP0PF6pahoOv4SOo11BWIEW3NUtcIu7BGj0mCtJHK62n/T0RAHknRfVDkgxbIPOjjA2o2Stak4eSrhUPFbyAk36tn8RiA9/pq1g3wXJCCmMuzKOrFROfl5IjAr2lfdvhRcAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=davemloft.net 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=GxJaiiPbsvq9+bJ7i5vFS+MBlGVWQgIlqwUhdOE3M0o=; b=Su5xITaQke9TRLAiG2T7GNlvCrn2Y/6Nu1Zdc/g/xfEBbAVV1Ey0cVu+EzLoh/CCveVsIi4y252XSDv51cST6q3BobtviHHiBKoDQI7QccLLCI2DewOIuzI+0xCPRVw19TTUScZ74WwjhRNSa54unhAOqxOq4ArkREYLwT976/FsCl6Irufhfz9kWmqLoIXxeHCxwGiFABwaoFRnOkfsrXATmdGaE8rkQbL4+w+K0LAQ7R2V6pmv60SqP5BTJgJzVjklyum3mT9ovll0R6sdm6wMrFAfe41GrBIDXmg7tp5Q9D7NyIOhALm3pkhV/0DK5ik+CiO56uwnjeada/pXnA== Received: from SA1PR02CA0007.namprd02.prod.outlook.com (2603:10b6:806:2cf::18) by SA1PR12MB6751.namprd12.prod.outlook.com (2603:10b6:806:258::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.36; Thu, 12 Jun 2025 15:48:40 +0000 Received: from SA2PEPF00003F64.namprd04.prod.outlook.com (2603:10b6:806:2cf:cafe::a6) by SA1PR02CA0007.outlook.office365.com (2603:10b6:806:2cf::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 15:48:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:40 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:48:20 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:48:18 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:48:12 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Cosmin Ratiu , Dragos Tatulea , Mark Bloch Subject: [PATCH net-next v5 11/12] net/mlx5e: Support ethtool tcp-data-split settings Date: Thu, 12 Jun 2025 18:46:47 +0300 Message-ID: <20250612154648.1161201-12-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F64:EE_|SA1PR12MB6751:EE_ X-MS-Office365-Filtering-Correlation-Id: ac38f44e-d126-44f5-4a4a-08dda9c89a47 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ODcFnLHmtQy5rLSYPdR/QtWX/TrJ51iBcfg2d3yrAxyIPGaH/O/Xsd18E5Py?= =?us-ascii?Q?qOpYfrCfdYxzk/HImE6tmW2wATtPbOr5/L98gsQiayhp5M538RI6aLF8Skj4?= =?us-ascii?Q?/Y2LCFcKmzB/pKHwDLUhkmLGDia6fA+rffx/xb2UN/w2QcqpO6q4qx8lOzkA?= =?us-ascii?Q?szmJJVA81JWWtOGn7Q1+zFe7SYDCN9f1iPgcvZz3vzlC+QaIAZ38hk1FvIKQ?= =?us-ascii?Q?RYtQ3Lr0qYP1nxr6c8i+1lqBCw4OblKzr44fioy2jgWWIFeURpblE3fR/XUd?= =?us-ascii?Q?IrQCYc6c4Leu44mwbZrAUsNTbtz3fNFs/iOqakaoBGavchFOzGPNvDnjr0l9?= =?us-ascii?Q?kB6z8CLJy7b/jgroeFCj6fyzkZWvCP9qvQfgIkln37y5t7TQctKd85Ott1fd?= =?us-ascii?Q?uGDbnPxkK0wGN5YZ7hnzukYCOlbLuZpIw+oDAGbAfh26xT/NRM0yv+8OdgSq?= =?us-ascii?Q?OwC2c8Ryzpu6wdXOOAapFBV8DhrYKtcyIjbA1JtcVLDlH/EYYpDkgkyeST1b?= =?us-ascii?Q?ON93L0k0y7I+eTJNmno7rCPc5H91Bqi0PMaEZ3qoi1dgu3DJ/Ddo4s9PAzwt?= =?us-ascii?Q?n4cjKWRtLxcZnUsbLPAbqHTCMGxfDD0cI2pQ6iJ4nVlV5yMOJ9+ml+fTKB9h?= =?us-ascii?Q?W4xzNA30Q/QdO5bseJ2Svadb2vEZMCZP/Eb0KK00NfiVzNE/PzYeLTRhGcPy?= =?us-ascii?Q?cl59hz5v7ViqwJdKmNOowsUF+rtJiBuLeCBnn62vsHY8RCWGuKfInpuZ6U8R?= =?us-ascii?Q?4CMx9ZmWYzyJ9WBkGcJjm1OxkWopCBMVmMzqzljLF7thymQvGPPZOXW/VRlD?= =?us-ascii?Q?FOr/2EY1Qn4mMsGnlmWcK5oy8RYkMnWHnzDNbMK7sT46mYG8xUn56lJDG/pe?= =?us-ascii?Q?h0CBdRJohDaF85Gpw7c5ethXffIHs/55K+X3hjHOKgGhfH40jeq+FJt+pCeM?= =?us-ascii?Q?3Y2UKMn/S2VVMyomWRH6D3WHk+Ci0SL6a3P0wqRX1OgkJgkp+fi7IwgK8yqS?= =?us-ascii?Q?c3V3qbAlEZg8PSDxTIlgkG3xude+ek+815oCwe6lVkYaMDpjtr0SBuSjmzXi?= =?us-ascii?Q?Ndlq5OWr5Dpb6MS5ACl2zXhJLPWP4vwpY+dIuW+MCaXeRLrmI4OfJbvszQHv?= =?us-ascii?Q?AO48LJoOxkk+OHkPzZ5+TYOcNuL4ULC6zcYLD5M82W0ZgIrJqDAkGOOR8UFr?= =?us-ascii?Q?proy0Y+KSF3nb+qRdyDLF9Yi8yP7Q/pGLxrH9ckUUk1kCrgVMIQEMXYwExSq?= =?us-ascii?Q?EBt0KVuKIRB//C1xYGnHxw1Ux5zTPjDTO3Ks0l1cxaKpkXgkSSkqQhz4Evaw?= =?us-ascii?Q?nNFfV8eHnaDIRGKB4+iYG91k+sGpKn0HSBS5+1cOWUXRC7loygCvZyBVATv8?= =?us-ascii?Q?/IoKfSCJDf0S13LZP7+04DZOsTuYkRdLFj8hYryqwqJqI3dQT7F6acnjAPNu?= =?us-ascii?Q?dtsuLimGzf9tbQu1mRSOlnsYRZo1tnqWsu25MSwQYQd0LNySPgT90XJKBuMQ?= =?us-ascii?Q?4Qw6va6hBNS5pLjR7lcbgX10iFZ6W1suYdeU?= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:40.1898 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac38f44e-d126-44f5-4a4a-08dda9c89a47 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6751 Content-Type: text/plain; charset="utf-8" From: Saeed Mahameed In mlx5, tcp header-data split requires HW GRO to be on. Enabling it fails when HW GRO is off. mlx5e_fix_features now keeps HW GRO on when tcp data split is enabled. Finally, when tcp data split is disabled, features are updated to maybe remove the forced HW GRO. Signed-off-by: Saeed Mahameed Signed-off-by: Cosmin Ratiu Reviewed-by: Dragos Tatulea Reviewed-by: Tariq Toukan Signed-off-by: Mark Bloch --- .../ethernet/mellanox/mlx5/core/en_ethtool.c | 33 ++++++++++++++++--- .../net/ethernet/mellanox/mlx5/core/en_main.c | 8 +++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers= /net/ethernet/mellanox/mlx5/core/en_ethtool.c index ea078c9f5d15..1761945e858c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c @@ -32,6 +32,7 @@ =20 #include #include +#include =20 #include "en.h" #include "en/channels.h" @@ -366,11 +367,6 @@ void mlx5e_ethtool_get_ringparam(struct mlx5e_priv *pr= iv, param->tx_max_pending =3D 1 << MLX5E_PARAMS_MAXIMUM_LOG_SQ_SIZE; param->rx_pending =3D 1 << priv->channels.params.log_rq_mtu_frames; param->tx_pending =3D 1 << priv->channels.params.log_sq_size; - - kernel_param->tcp_data_split =3D - (priv->channels.params.packet_merge.type =3D=3D MLX5E_PACKET_MERGE_SHAMP= O) ? - ETHTOOL_TCP_DATA_SPLIT_ENABLED : - ETHTOOL_TCP_DATA_SPLIT_DISABLED; } =20 static void mlx5e_get_ringparam(struct net_device *dev, @@ -383,6 +379,27 @@ static void mlx5e_get_ringparam(struct net_device *dev, mlx5e_ethtool_get_ringparam(priv, param, kernel_param); } =20 +static bool mlx5e_ethtool_set_tcp_data_split(struct mlx5e_priv *priv, + u8 tcp_data_split, + struct netlink_ext_ack *extack) +{ + struct net_device *dev =3D priv->netdev; + + if (tcp_data_split =3D=3D ETHTOOL_TCP_DATA_SPLIT_ENABLED && + !(dev->features & NETIF_F_GRO_HW)) { + NL_SET_ERR_MSG_MOD(extack, + "TCP-data-split is not supported when GRO HW is disabled"); + return false; + } + + /* Might need to disable HW-GRO if it was kept on due to hds. */ + if (tcp_data_split =3D=3D ETHTOOL_TCP_DATA_SPLIT_DISABLED && + dev->cfg->hds_config =3D=3D ETHTOOL_TCP_DATA_SPLIT_ENABLED) + netdev_update_features(priv->netdev); + + return true; +} + int mlx5e_ethtool_set_ringparam(struct mlx5e_priv *priv, struct ethtool_ringparam *param, struct netlink_ext_ack *extack) @@ -441,6 +458,11 @@ static int mlx5e_set_ringparam(struct net_device *dev, { struct mlx5e_priv *priv =3D netdev_priv(dev); =20 + if (!mlx5e_ethtool_set_tcp_data_split(priv, + kernel_param->tcp_data_split, + extack)) + return -EINVAL; + return mlx5e_ethtool_set_ringparam(priv, param, extack); } =20 @@ -2625,6 +2647,7 @@ const struct ethtool_ops mlx5e_ethtool_ops =3D { ETHTOOL_COALESCE_USE_ADAPTIVE | ETHTOOL_COALESCE_USE_CQE, .supported_input_xfrm =3D RXH_XFRM_SYM_OR_XOR, + .supported_ring_params =3D ETHTOOL_RING_USE_TCP_DATA_SPLIT, .get_drvinfo =3D mlx5e_get_drvinfo, .get_link =3D ethtool_op_get_link, .get_link_ext_state =3D mlx5e_get_link_ext_state, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 06a057ecaecc..1be149aca1e2 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4413,6 +4413,7 @@ static netdev_features_t mlx5e_fix_uplink_rep_feature= s(struct net_device *netdev static netdev_features_t mlx5e_fix_features(struct net_device *netdev, netdev_features_t features) { + struct netdev_config *cfg =3D netdev->cfg_pending; struct mlx5e_priv *priv =3D netdev_priv(netdev); struct mlx5e_vlan_table *vlan; struct mlx5e_params *params; @@ -4479,6 +4480,13 @@ static netdev_features_t mlx5e_fix_features(struct n= et_device *netdev, } } =20 + /* The header-data split ring param requires HW GRO to stay enabled. */ + if (cfg && cfg->hds_config =3D=3D ETHTOOL_TCP_DATA_SPLIT_ENABLED && + !(features & NETIF_F_GRO_HW)) { + netdev_warn(netdev, "Keeping HW-GRO enabled, TCP header-data split depen= ds on it\n"); + features |=3D NETIF_F_GRO_HW; + } + if (mlx5e_is_uplink_rep(priv)) { features =3D mlx5e_fix_uplink_rep_features(netdev, features); netdev->netns_immutable =3D true; --=20 2.34.1 From nobody Fri Oct 10 20:52:41 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2041.outbound.protection.outlook.com [40.107.94.41]) (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 60CD629ACDB; Thu, 12 Jun 2025 15:48:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743332; cv=fail; b=RAhWAX3SdLkJdL9qqRyJo22NdyHzr2DOS65Fjj7si6gCinAEXTJEP8WDP/DbHsHwfkT5EVITqyMOJ70rv6deDmywY9FCPB3hEop8Dnyq4lVln/t6ejrlGlLO4WJIEJ/LDHo9isRpPlvw7IDmlbVDEosPfJhfIAO3Bau2fIlPfyc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749743332; c=relaxed/simple; bh=ypQJG+aDW97no7gmy42u0A1zXaglAwSjDgNH18DbhY0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JeRfo8S+HPtPxNwH+eG2v8EQuueeMFmPNVPeuS9ZfDar18f5BW4CXdn+fIovU5SLlngN5aiunrbqmkijrg7msikNl+zjXv3J+nqHZ08a/lS/otFeWg8yuiMPZr1hlk3LyFH2vQ4IosOlWFBgbCJN7QfFo53370l0g4O8fmkX+eQ= 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=dDXWLFhT; arc=fail smtp.client-ip=40.107.94.41 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="dDXWLFhT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J7YpEgKf+SpDkNvFiXLSuJwgm1mMfKDHM7YBR3UUO/kJ1i6DHrd9Z7E40NLK0Ekt2DZryVo+RFnZsrIxUsoXfraoH9llnZhfdg6/iY9Rp3WzvPmhUQU5IaEscJmPrxtM+ucoIK677eKwQQhcU8nSBD69wOmh/1hI2fmRsMRVobOTjlxb3up3LFauV6A3AueVqPdSwM1G2oMiSkRPveXJomkZWHN2SUC6VPt5GVb1AmxsiqzYgjVWp0RmP1i1TaXM6x6zPRQk+tLMV1RqZJs7jdU2fst5bWiNqJx2qw3qbpv8Z3RV8lauKYL8JH2d8j6ANYz0QflAjsf8vABsEmmy2Q== 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=T3d+rp+RzV0WEVN0O9fYlYB8x0LoR+hZjfBHGlNCoyE=; b=LNF1YlZQh1Er9BfWIxj5WNsGZNVUG0ClMJGq51s9Td8Ad3CEScg1WIq4Z2lZbIQYScqjqbyBuvTgsNGMotg6VkViQKOHFP06pcngZmGwxoMchRTvCQur390TIKNgVE9TE6l3noqRL3chKHZB6bS1qjUwve1l1joC4ZRy0qXC5xsbPj1Mj72imBFo0s0442aDRUMYsl+3dNAUap1OqGSNdO9kQI3DdyxMvW/DPdWYlSz6IBfAgosefzNuONqRjpLs4Ivcv1SlA0KJdNYh+NiCUUu5tC2o527SbVajS+iRoDFQ467jHGEppC9S51mta5dJIRjf4Ry/ojuaRmkK/NyRGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=davemloft.net 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=T3d+rp+RzV0WEVN0O9fYlYB8x0LoR+hZjfBHGlNCoyE=; b=dDXWLFhTJ/Qcr6jZbDtEkRcu1o2etpDciBMfVAYPwbfxnOQA+eJE06ofjCp6GQH7BYbZmKj1O4c5NHA1l5xXrGKcKUZ12IMaL6g81+B7VkA6ghkiL3GBzSgwfgiR/sWo41vB1NK+pihB+/vpW0/a7/W6w/RkVyE6rixS0U3Du05hBYYw6s7bbKvsPeJPmwJX4fAHerHXH7sWhUsWOPpwFEFA3X++JjSIedhALpovAuZ/1wd8GUAYbty7Wm/Xn5PeEVXhSZhH9SWqK6dIoQZqit2QFbCESKfbQ6aXB/KHshwtR8Bn2iRF6zuYujifReJ103pFxKp67GSTvss9P6VKrw== Received: from CH0P221CA0035.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:11d::22) by CH2PR12MB9496.namprd12.prod.outlook.com (2603:10b6:610:27e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Thu, 12 Jun 2025 15:48:46 +0000 Received: from CH1PEPF0000AD7B.namprd04.prod.outlook.com (2603:10b6:610:11d:cafe::44) by CH0P221CA0035.outlook.office365.com (2603:10b6:610:11d::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8792.24 via Frontend Transport; Thu, 12 Jun 2025 15:48:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CH1PEPF0000AD7B.mail.protection.outlook.com (10.167.244.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 15:48:46 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 12 Jun 2025 08:48:26 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 12 Jun 2025 08:48:26 -0700 Received: from vdi.nvidia.com (10.127.8.10) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 12 Jun 2025 08:48:20 -0700 From: Mark Bloch To: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Eric Dumazet , "Andrew Lunn" , Simon Horman CC: , , , , Leon Romanovsky , "Jesper Dangaard Brouer" , Ilias Apalodimas , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , John Fastabend , , , , , Dragos Tatulea , Mina Almasry , Mark Bloch Subject: [PATCH net-next v5 12/12] net/mlx5e: Add TX support for netmems Date: Thu, 12 Jun 2025 18:46:48 +0300 Message-ID: <20250612154648.1161201-13-mbloch@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250612154648.1161201-1-mbloch@nvidia.com> References: <20250612154648.1161201-1-mbloch@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: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7B:EE_|CH2PR12MB9496:EE_ X-MS-Office365-Filtering-Correlation-Id: c522e589-4f01-4edd-3aae-08dda9c89e3c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|7416014|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DOxzg3+8mhzAZG0Gd7EEJvzQAYkexC6cQ2aesOHWP3/XByr3geFc6lEqWi5w?= =?us-ascii?Q?mtQiGWkNam40BHSlRj/qZXDdStnNIfK5nv+r52xtit0Rqco1fXWwe9vmUvVo?= =?us-ascii?Q?/Teqj+uUVesaj4+CuaTYEzOh6w/LmNwcVm0dZxbxVyavqbklMCZ4cr7cJL0N?= =?us-ascii?Q?U3O+7jRsbOTNMOyDioyN+KOZgTr30HQ/AdYYfTHCFfwrR05aqUlHaS6w9Y37?= =?us-ascii?Q?7bP0ro8k1IXfAK61/2mey5KgD923BtojRp1dvwVoBzQq0ja6+Km/rJxawEr+?= =?us-ascii?Q?kZEjnaWM5R4wqYjG/mI5aI1h6t5OJYbJpGhlhZjPnW9wrkt6JuFBicer4j4Y?= =?us-ascii?Q?6yKDA0H1VuRyzP26Dl2mbPf7yLPIYkIxxYGrIjVPAB7yGYBx7Ri1DtIyM7/H?= =?us-ascii?Q?Q2VfiyyklEMqBf53/rirYOsICQEZ5YC3+wG04N7X7gLHYc4b3RRybOzCHLA6?= =?us-ascii?Q?v+ILSkCgNaNf2S+f5wcQ4bTl8Jnt0N8BpqmxD3x8eEA+Ym7cszcMCkjM1zqq?= =?us-ascii?Q?fsFx9xXCedOZhu/ExDMEPmsSoQ55xEg/McrMwkDGAA55QajZpmMkn0x9x6p2?= =?us-ascii?Q?z3qu+2jl7Y4GbQ099CyS7aj6kmj8mkMn0xmCq/KfQn/kIL0v7o5Ws84nd6hX?= =?us-ascii?Q?LxoiH7+MWeoF3hQVW2VG7CwvcRbrVfB+uDo7bqOjMNyhGAv24oRIb5KwTop8?= =?us-ascii?Q?AzWk3Uh0bCZeAYTd3YpWQy/JcQ2BAzW0nrZcBG6VktE+cb01ZHVbUCXrJPgs?= =?us-ascii?Q?PYlI3a++HaE1Frj96EzDQiSEId5VAjiiVS3SLe8QxGpNz9agmCfJOi27+2AG?= =?us-ascii?Q?0U58z9dIQyVLlvLLPKquWuZC8z+yNTdmOSULoajKmMbL3Lp0u5YfhyxMJgyi?= =?us-ascii?Q?oUncci/vGMRkkONMQ5MWRunLpHQpobjt+cNvpihQI46rbulJuR9l3uslpyZt?= =?us-ascii?Q?AP40iOdj9UVd7gj/ZiMHRdm8elxAfnj8G4c42z64DK9Dki5Ua/rx3ciFSqvM?= =?us-ascii?Q?AIc4QVycy/ofQzk3PlxqjiOPxbgQWlheko27MH4qoanD+YWX1f3STNzmohuk?= =?us-ascii?Q?bMM5JC+S/4LfD6nEYtRz9pnOiGhasoLez8eU4Hxv6H8O3h69kdcX5YB+f/CN?= =?us-ascii?Q?pDkxLxGDZ0WelGuaxlNzlYGEm74Hu8NLsKujqxntczd7lExmtsnhQ4+a/ovL?= =?us-ascii?Q?ufwyNhdoOz4mWytl4++DGPb14ZBFJ0XqAxbSBx8/l/TLGOH2RzQVu53/LIBN?= =?us-ascii?Q?fVG8xnREEPWX4r2zc5xjHhN0ggPGQrc1Ny5wDcEt6rFfzvnnJJIaH2p0yx5n?= =?us-ascii?Q?4kZHnkHrgvwJ8+eg2PA2sdIQz1bBVJDO2Xgr4wh8gTMnmKA6iomxRQH+jzKh?= =?us-ascii?Q?k104MXf3LPNgeyQvfgI2+GJzXQYcaXl+hTuM76hAU5V74SvZifJKEuUHr5Iz?= =?us-ascii?Q?SetfzFg5PAY2DdR0qFonVvKr7UskdjLDikZw7XF+EGwIevUegzbZgHUG1HJd?= =?us-ascii?Q?YBa+CcJXAbV+mY46+5pTXcAxahcZ2BxsUc4j?= X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(7416014)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 15:48:46.8201 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c522e589-4f01-4edd-3aae-08dda9c89e3c X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000AD7B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB9496 Content-Type: text/plain; charset="utf-8" From: Dragos Tatulea Declare netmem TX support in netdev. As required, use the netmem aware dma unmapping APIs for unmapping netmems in tx completion path. Signed-off-by: Dragos Tatulea Reviewed-by: Tariq Toukan Reviewed-by: Mina Almasry Signed-off-by: Mark Bloch --- drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h | 3 ++- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h b/drivers/ne= t/ethernet/mellanox/mlx5/core/en/txrx.h index e837c21d3d21..6501252359b0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h @@ -362,7 +362,8 @@ mlx5e_tx_dma_unmap(struct device *pdev, struct mlx5e_sq= _dma *dma) dma_unmap_single(pdev, dma->addr, dma->size, DMA_TO_DEVICE); break; case MLX5E_DMA_MAP_PAGE: - dma_unmap_page(pdev, dma->addr, dma->size, DMA_TO_DEVICE); + netmem_dma_unmap_page_attrs(pdev, dma->addr, dma->size, + DMA_TO_DEVICE, 0); break; default: WARN_ONCE(true, "mlx5e_tx_dma_unmap unknown DMA type!\n"); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 1be149aca1e2..288a7c46d564 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -5738,6 +5738,8 @@ static void mlx5e_build_nic_netdev(struct net_device = *netdev) =20 netdev->priv_flags |=3D IFF_UNICAST_FLT; =20 + netdev->netmem_tx =3D true; + netif_set_tso_max_size(netdev, GSO_MAX_SIZE); mlx5e_set_xdp_feature(netdev); mlx5e_set_netdev_dev_addr(netdev); --=20 2.34.1