From patchwork Fri Apr 11 09:57:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048057 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7494CC36010 for ; Fri, 11 Apr 2025 10:23:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=d9WL0+AV2BogW3yxQPNXOraeFYikHLIuBh4yYBScqho=; b=w6qRt8lLB0kTvhL4WVdqbEGL56 Apy5QaxkDA1vUEhVEwIAkuz69wy2tRQq0ai52lXgPCt8vju/DHE5Hv1DP050omGAM6bxs6Nke1/mV tSpduEhCEuywLIh9WQHH43DhmuXl41PobGfc0Bkx75RsB3XvlAnfb86TqVvcRc3PdK9/2oCBr/Rse a7jC0Cb492n2nYDOMJCILkNTXDa7H9SzR8o6dlOpl9/xM5vbXj4C+dSmpVXbvHZV1MiIfMwXu96xC 3RV6SoLadDtao4tOtmOjn8yotRNaz7QBY5EJvoi1ww98A3cj+dXUiiLABOQeFbv7gLcDDB08tDZgN sS5JZzhQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BY2-0000000DNhb-20ht; Fri, 11 Apr 2025 10:23:46 +0000 Received: from mail-am6eur05on2060a.outbound.protection.outlook.com ([2a01:111:f403:2612::60a] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BRc-0000000DLXm-0poW for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VpFgSP5+qts7pOWc4uSt80XIgewy+Mbr9Q4jATBGofC6YPp9KZXxDXPLGz7RQpilXByaT9Jm5g7iSmdoiLcDeqMiD/fTUGtpywG0ArYZCQZcpT4B/0AAZ2tcw/lGEEszXEmkdsnxs3m1odnHQqF6AnAEl8ZdRxrAXYKMrKWTcVipxpeEQZeodKgrdDjctWoRPVDBtWk4q1OS13tHyfexQR6WCYV0XZMZ6NzUdtrWmmKaqwGvxSyZ/DJKo5FIp+9ZOKzN4uq774VtvI5SSfh2potEFlqDM/hQCU5VSZjVrt7KooOG3plpANwgqa9zzLS64pKuzwEQKxgtPbRKkpV5dQ== 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=d9WL0+AV2BogW3yxQPNXOraeFYikHLIuBh4yYBScqho=; b=gcjEOXM4hE4jqqV6MIfRubDpqD9uOGzHFo7kLLuBxSLv65nSeKDHWGJVoLZr1AHC5NZrL8uUxPe5iWQCaGXk+lBEwFcALrXd65KSGU2wdHiEJkeGbnwz7UhQU7lWJahuzW6A/n/s7M1dJnwIgntQ9AJXJwUHlCzNYoL/eMXeixdrMKLewz0Qiieznd8KXUpYpmhnbv86NvUx6YEIiOJig0G9zYx3OOVin/s8bYhLu/8Nc1jaPMZYAtdIKH858otPw6udrqjGeQWPYIQBArV9ppA7Es59RM2y7pJd3AWPKgTbbXSeJNy8yVGRG5CtZlrxsfOxbyJb0xzGbt9N4s51Ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d9WL0+AV2BogW3yxQPNXOraeFYikHLIuBh4yYBScqho=; b=O6A8fbGRQShMrWWdsgENmdLFnKc/KEvU4o0zR7CoJy4m86s4/O5jugNlqqqDu2ql2LAXHWPOcSF4IHNBgLT39PIyFBKu1AuhWc8xHrMDK+mUdr/FegV9a3XHCOWT5CG9G1Eyjv5Hq1WeuOt2vQwvAFaInYZRMNKZyr+0aNBbyCxjCZa57GHfxZQxZ86p4yqOm3aNOBncRKdlA03p0HBbljdIgh6h7CPdh9a7KK+/Vi0MJFvQ4YE53EEY/u2AXuoUFWug0wQJxbGqG5osKk0gJuO1yY4B2lWqZCA+vx5LZJbPKCRnhAkxe6FQcSRdKAOlgcXOEnZvzCN0t8fCE2fB7Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AM9PR04MB7603.eurprd04.prod.outlook.com (2603:10a6:20b:2d6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:03 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:03 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 01/14] net: enetc: add initial netc-lib driver to support NTMP Date: Fri, 11 Apr 2025 17:57:39 +0800 Message-Id: <20250411095752.3072696-2-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AM9PR04MB7603:EE_ X-MS-Office365-Filtering-Correlation-Id: 30317cbc-03ad-4e2a-0c11-08dd78e200a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: ONTZBLQrDKK833C+rn6IlohXH2H2ZXu7ZVrWdeiR0xAXrgxJqUMaKDOovk32JcOQkJPXcJ8/kzoDyMWbpBEI4LPOB69j+aTuHDFaYtXvLp6v8mqAC6AALy21YtKowrMLvdUuWINWYinzy784c+SN3uvXuU4MvugrzLZx21u48TaAQ+oIuQyZ24/Mkse34FZiv+SUwBE0CIwlM4FRKGJDwLrzWkqb9LDjPYUESzvnhiLbNH2XkHh310WrQxuol/VEK14mOvtYr9WrtwWK8c42HIsWgSzEfPQ526ALqwaRsZImoTMxeIE+80+FNSIgphCbEnNU+xRtc1scJ2eKvfDKFE6evTXHz0thKG/fgf5s4k9LNIi9vG99fOHlU0UCpOckI8H2ALqhWWvCMZMoGCnGcjLA0sYiKzML5XmLbpX3Au3DU7DWnXgQYSMJvSplNxqlw58HBhF+TGbTKaBL6Te9BwiWUq4OhLEJqY0ybgm0qOiuRqP5IP0bOzHjbOc1L46Uxliu5Ijm/VlvI4+6YykFH9v4E21cHcKm0wIANorj1OJI68iTe5GM08TfL+NeCeeXkJ1JX7REMQvpH5b46TAFTw3FOY7KhgOSg9yN9K6aEiVW1i37ldUrpo6cFssphyaYwJu6DPZYgftRoPAbvdmNfIgCF9Sj4A1vrNjUCtfwM+DB/xFSQIKTecW6dkJ6gdDC/rgiBWOepdS++NWMYyJHM9zY3e1TrZbnHGL7WNIJXsZXcUt5LgPpx1SwuRBjazB332UoO6zQX0ikdpPWFA2qBqFrkOpJV4ky6TanhBhfNn7C2ntp/o/m/8/aK8MvtGYEt+yBf9d7mfFfQxMckczr5Rhum1xCmNgAus7L/w6wZnm1aqHPO4d2k2GdSwlf1ykcklkd85kJEH/7wqyPPHyjJXfpqeL42OKP55CVZhCqaTdrw4ipBsj8sBSQUoVnVp+TZTqmCMZOwzDTB7tfLhR8QiEZtCvM+BKqY6UWAudb+ItBiORnEfNGV1mhcXTxzN4isE9KOgN7Yjpwxdszgd95i24YvoEqhsoJmQg3z4SDi3GdJbv9ghKGzsq4l8A0LIwBBiPVDM766i55I7B2MPhOOZSRdU2ncSB9LPf+mfHVuY144qoFw8y3Yv/DQG0xFLUU3F6DzcUyKTj9mWiOVAqeyj+/pmQiSH/3wsUYjfKVffSfxOjeIo+shI492pi+T4G3w41Z5KOfjWVA9MvYvF70NZ4PKBkhAhFm+996LEZA11m0axmItUoUYlo3Iuu8auU9PNC7FQjBUh9exfgeSHzNtCiZHOmTAuPNj6ivzEZOllwg2j/OFb5I+n4oLyPff8iI6EXkV1JqzTjp5G2VXd8SehCXG9ljB6EXUGh2vNAUh+r1PFrPW3nJtGer5Pw75yvXfyPZLg/Xy1yEpylhwZmOiYOg4Uw56IcWXPFJDFlzq8EGyNfryCUg4nk+eF+p2sSrOc7E07uXvd1c6gBHjdylHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YcOZR0wgwoTuP1lt3V8S5CXZPNryrr+2hfffJ/1tOK67AOZPBqwU3ieQDC5q1LdjGSekcHC5C1ULT33xW6S4PS/qCFOX4OjqPm6hetTEveRo8jwPkLHwINKTSgGGEVZrU/zROEE88WYBnS7OSA3NkImLW6JJ1ImXuqKHTxfsqKXKP2ttWoMFirqUJZeIixn5GER11xmIeMgnqhBLAptS1llDxV24XkR5IwwnvV6FYNckbf1ME6fe7fk6CYAN8SrexazWfnhbvdOjy9TjAiMS4kynrLokroMc5Uaxj7ry2oIFk8lx/lg8Ao3MvQxgyrIZQINApUBIHj/1FTBgCIfgFgq+TAPjFcO8Xz5yn+FnOdB6RTx7/0+yj257mMbe2t0bDqogBoV6bPFwaqcozyVPSi0uYAAiRgg75U9mc5npR2v4nYRncdbC3iw2Uc3NMGkzwyRV4rqbhBATwozO/EFyhJ71U9UwRYQPPQ5TMieHM0qOPV5mliGCEoKSxOWY2YjiSGWam2c63yeEGQsqCMIrz29iL67gMq7zXMRo4BSq0oGoNVq70es/NxwYe7z3R96K5riDvPtoNETTtRw8fDNAe/5/1lWHFyTjj79a02usyXeuSlZkBRGMiKb0KUSJB9XDI+4ZNmEiVuCKhw+6JQcRlK1A2MHhKYmI2yHZTYuuqGRd2KerTGxsXuTXGipSCmaZ9d8OGzN7397jDaYI1Ls/H3GuHrs6/7Y8V51tEcpjckuCaFxlP/kLqKiYH6Xf9wYWTMzWInmSots/vuVZbJD7TUz34DoYpcsDJHqwg1zfN1iagD6NyU6govc9GNTjnYrfOgu1mBG3t/VGB/fjpqNVCeuFRkCZOnqBJjBh52DgpghfjoIqElUijwMNOO6WVhkY2A2uXddLgO+Svi3hIFaca4BRhDLZDVXbOcUfq/CW/xnSR3XXZ3ULeRq3qUFcdUEKvHV7GtE9rblZapNKW69HaSjUr5XH6tWx/psfo4uHXmYltlYQv7iRTNe0WLWdcj2V3+gOYR8Ec50XMkddgzlmOJ0BUsZNBQIyiZDEPwI+HozPVhkHB43DZzMtiVHYxiHIojTClHwz1dkI2/oc7nZ6uOV/eYYfdGUHVgz67b9Uk9XF/uGbO4aUhHjXILn9ARovsu3YvKi+2PiNpQFyX3bhxoyk90/fNL0W//vns1kTiN3N037LHkDxoOZ67ZwWB57filq9QBv9tM3ahv6Kr8E9Z4eNdOMaavKYxweLfzI+xA+8deMoJiaJ5Rkq16Ejsvl9yqwmOJKR3t73CLl01hZi2fWNeWd+gF28YV6zLNSibTn1Hqgm3Zab5xsYKBMVaG72EMrJ69+cNOb33U5rHzpSx89im7mRJWGawImF7gfoIsBC8Ik9CQePqOfDsjvHD+vLHHNopO2fFdGb42mKBX9iAqu4L2cwr76+MMk//xyeSiNCwiezIclYThFLPPDoK6oS5nEOx3GKSZMT1b6m2+HlEgwqu+SACB3wQAEYxNAgM20hzlyhRQR3iB6szQvBcYYZi5/R7I4CVRqusw7fQHyo6Y5hpozgsOtqSoq3Toh6l/4SkMIWw/v9DCIHXUUr8/jm X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30317cbc-03ad-4e2a-0c11-08dd78e200a4 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:03.0326 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FRVPfpVNRCkJuy5aqb+f3UkloRb2FUgkwRIG9rSyXhcHmRrl5LenCzOHUO5bOHRt3bPbYOyBpDRoe+lOCBau2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB7603 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031708_396524_2F5FEF95 X-CRM114-Status: GOOD ( 24.64 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Some NETC functionality is controlled using control messages sent to the hardware using BD ring interface with 32B descriptor similar to transmit BD ring used on ENETC. This BD ring interface is referred to as command BD ring. It is used to configure functionality where the underlying resources may be shared between different entities or being too large to configure using direct registers. Therefore, a messaging protocol called NETC Table Management Protocol (NTMP) is provided for exchanging configuration and management information between the software and the hardware using the command BD ring interface. For i.MX95, NTMP has been upgraded to version 2.0, which is incompatible with LS1028A, because the message formats have been changed. Therefore, add the netc-lib driver to support NTMP 2.0 to operate various tables. Note that, only MAC address filter table and RSS table are supported at the moment. More tables will be supported in subsequent patches. It is worth mentioning that the purpose of the netc-lib driver is to provide some NTMP-based generic interfaces for ENETC and NETC Switch drivers. Currently, it only supports the configurations of some tables. Interfaces such as tc flower and debugfs will be added in the future. Signed-off-by: Wei Fang --- v5 changes: 1. Add the change of MAINTAINERS to this patch 2. Rename ntmp_fill_request_headr() to ntmp_fill_request_hdr() 3. Split ntmp_rsst_query_or_update_entry() into ntmp_rsst_query_or_update_entry() and ntmp_rsst_query_entry() 4. Add "ntmp_" prefix to struct cmn_resp_query and cmn_req_data. 5. Remove struct common_resp_nq and netc_dev_type 6. Correct the definition of NTMP_TBL_VER 7. Remove struct netc_cbdrs and rename ntmp_priv to ntmp_user 8. Improve the error log 9. Remove NTMP_NULL_ENTRY_ID check from ntmp_delete_entry_by_id() 10. Remove netc_select_cbdr() 11. Move union netc_cbd from ntmp.h to ntmp_private.h --- MAINTAINERS | 1 + drivers/net/ethernet/freescale/enetc/Kconfig | 8 + drivers/net/ethernet/freescale/enetc/Makefile | 3 + drivers/net/ethernet/freescale/enetc/ntmp.c | 442 ++++++++++++++++++ .../ethernet/freescale/enetc/ntmp_private.h | 106 +++++ include/linux/fsl/ntmp.h | 126 +++++ 6 files changed, 686 insertions(+) create mode 100644 drivers/net/ethernet/freescale/enetc/ntmp.c create mode 100644 drivers/net/ethernet/freescale/enetc/ntmp_private.h create mode 100644 include/linux/fsl/ntmp.h diff --git a/MAINTAINERS b/MAINTAINERS index 4c5c2e2c1278..2ae3fb3a0297 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -9374,6 +9374,7 @@ F: Documentation/devicetree/bindings/net/nxp,netc-blk-ctrl.yaml F: drivers/net/ethernet/freescale/enetc/ F: include/linux/fsl/enetc_mdio.h F: include/linux/fsl/netc_global.h +F: include/linux/fsl/ntmp.h FREESCALE eTSEC ETHERNET DRIVER (GIANFAR) M: Claudiu Manoil diff --git a/drivers/net/ethernet/freescale/enetc/Kconfig b/drivers/net/ethernet/freescale/enetc/Kconfig index 6c2779047dcd..c8efbb6f2055 100644 --- a/drivers/net/ethernet/freescale/enetc/Kconfig +++ b/drivers/net/ethernet/freescale/enetc/Kconfig @@ -15,6 +15,13 @@ config NXP_ENETC_PF_COMMON If compiled as module (M), the module name is nxp-enetc-pf-common. +config NXP_NETC_LIB + tristate + help + This module provides common functionalities for both ENETC and NETC + Switch, such as NETC Table Management Protocol (NTMP) 2.0, common tc + flower and debugfs interfaces and so on. + config FSL_ENETC tristate "ENETC PF driver" depends on PCI_MSI @@ -40,6 +47,7 @@ config NXP_ENETC4 select FSL_ENETC_CORE select FSL_ENETC_MDIO select NXP_ENETC_PF_COMMON + select NXP_NETC_LIB select PHYLINK select DIMLIB help diff --git a/drivers/net/ethernet/freescale/enetc/Makefile b/drivers/net/ethernet/freescale/enetc/Makefile index 6fd27ee4fcd1..707a68e26971 100644 --- a/drivers/net/ethernet/freescale/enetc/Makefile +++ b/drivers/net/ethernet/freescale/enetc/Makefile @@ -6,6 +6,9 @@ fsl-enetc-core-y := enetc.o enetc_cbdr.o enetc_ethtool.o obj-$(CONFIG_NXP_ENETC_PF_COMMON) += nxp-enetc-pf-common.o nxp-enetc-pf-common-y := enetc_pf_common.o +obj-$(CONFIG_NXP_NETC_LIB) += nxp-netc-lib.o +nxp-netc-lib-y := ntmp.o + obj-$(CONFIG_FSL_ENETC) += fsl-enetc.o fsl-enetc-y := enetc_pf.o fsl-enetc-$(CONFIG_PCI_IOV) += enetc_msg.o diff --git a/drivers/net/ethernet/freescale/enetc/ntmp.c b/drivers/net/ethernet/freescale/enetc/ntmp.c new file mode 100644 index 000000000000..07cf88968d5e --- /dev/null +++ b/drivers/net/ethernet/freescale/enetc/ntmp.c @@ -0,0 +1,442 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * NETC NTMP (NETC Table Management Protocol) 2.0 Library + * Copyright 2025 NXP + */ + +#include +#include +#include + +#include "ntmp_private.h" + +#define NETC_CBDR_TIMEOUT 1000 /* us */ +#define NETC_CBDR_MR_EN BIT(31) + +#define NTMP_BASE_ADDR_ALIGN 128 +#define NTMP_DATA_ADDR_ALIGN 32 + +/* Define NTMP Table ID */ +#define NTMP_MAFT_ID 1 +#define NTMP_RSST_ID 3 + +/* Generic Update Actions for most tables */ +#define NTMP_GEN_UA_CFGEU BIT(0) +#define NTMP_GEN_UA_STSEU BIT(1) + +#define NTMP_ENTRY_ID_SIZE 4 +#define RSST_ENTRY_NUM 64 +#define RSST_STSE_DATA_SIZE(n) ((n) * 8) +#define RSST_CFGE_DATA_SIZE(n) (n) + +int netc_setup_cbdr(struct device *dev, int cbd_num, + struct netc_cbdr_regs *regs, + struct netc_cbdr *cbdr) +{ + size_t size; + + size = cbd_num * sizeof(union netc_cbd) + NTMP_BASE_ADDR_ALIGN; + cbdr->addr_base = dma_alloc_coherent(dev, size, &cbdr->dma_base, + GFP_KERNEL); + if (!cbdr->addr_base) + return -ENOMEM; + + cbdr->dma_size = size; + cbdr->bd_num = cbd_num; + cbdr->regs = *regs; + + /* The base address of the Control BD Ring must be 128 bytes aligned */ + cbdr->dma_base_align = ALIGN(cbdr->dma_base, NTMP_BASE_ADDR_ALIGN); + cbdr->addr_base_align = PTR_ALIGN(cbdr->addr_base, + NTMP_BASE_ADDR_ALIGN); + + cbdr->next_to_clean = 0; + cbdr->next_to_use = 0; + spin_lock_init(&cbdr->ring_lock); + + /* Step 1: Configure the base address of the Control BD Ring */ + netc_write(cbdr->regs.bar0, lower_32_bits(cbdr->dma_base_align)); + netc_write(cbdr->regs.bar1, upper_32_bits(cbdr->dma_base_align)); + + /* Step 2: Configure the producer index register */ + netc_write(cbdr->regs.pir, cbdr->next_to_clean); + + /* Step 3: Configure the consumer index register */ + netc_write(cbdr->regs.cir, cbdr->next_to_use); + + /* Step4: Configure the number of BDs of the Control BD Ring */ + netc_write(cbdr->regs.lenr, cbdr->bd_num); + + /* Step 5: Enable the Control BD Ring */ + netc_write(cbdr->regs.mr, NETC_CBDR_MR_EN); + + return 0; +} +EXPORT_SYMBOL_GPL(netc_setup_cbdr); + +void netc_teardown_cbdr(struct device *dev, struct netc_cbdr *cbdr) +{ + /* Disable the Control BD Ring */ + netc_write(cbdr->regs.mr, 0); + dma_free_coherent(dev, cbdr->dma_size, cbdr->addr_base, + cbdr->dma_base); + memset(cbdr, 0, sizeof(*cbdr)); +} +EXPORT_SYMBOL_GPL(netc_teardown_cbdr); + +static int netc_get_free_cbd_num(struct netc_cbdr *cbdr) +{ + return (cbdr->next_to_clean - cbdr->next_to_use - 1 + + cbdr->bd_num) % cbdr->bd_num; +} + +static union netc_cbd *netc_get_cbd(struct netc_cbdr *cbdr, int index) +{ + return &((union netc_cbd *)(cbdr->addr_base_align))[index]; +} + +static void netc_clean_cbdr(struct netc_cbdr *cbdr) +{ + union netc_cbd *cbd; + int i; + + i = cbdr->next_to_clean; + while (netc_read(cbdr->regs.cir) != i) { + cbd = netc_get_cbd(cbdr, i); + memset(cbd, 0, sizeof(*cbd)); + i = (i + 1) % cbdr->bd_num; + } + + cbdr->next_to_clean = i; +} + +static int netc_xmit_ntmp_cmd(struct ntmp_user *user, union netc_cbd *cbd) +{ + union netc_cbd *cur_cbd; + struct netc_cbdr *cbdr; + int i, err; + u16 status; + u32 val; + + /* Currently only i.MX95 ENETC is supported, and it only has one + * command BD ring + */ + cbdr = &user->ring[0]; + + spin_lock_bh(&cbdr->ring_lock); + + if (unlikely(!netc_get_free_cbd_num(cbdr))) + netc_clean_cbdr(cbdr); + + i = cbdr->next_to_use; + cur_cbd = netc_get_cbd(cbdr, i); + *cur_cbd = *cbd; + dma_wmb(); + + /* Update producer index of both software and hardware */ + i = (i + 1) % cbdr->bd_num; + cbdr->next_to_use = i; + netc_write(cbdr->regs.pir, i); + + err = read_poll_timeout_atomic(netc_read, val, val == i, + 10, NETC_CBDR_TIMEOUT, true, + cbdr->regs.cir); + if (unlikely(err)) + goto cbdr_unlock; + + dma_rmb(); + /* Get the writeback command BD, because the caller may need + * to check some other fields of the response header. + */ + *cbd = *cur_cbd; + + /* Check the writeback error status */ + status = le16_to_cpu(cbd->resp_hdr.error_rr) & NTMP_RESP_ERROR; + if (unlikely(status)) { + err = -EIO; + dev_err(user->dev, "Command BD error: 0x%04x\n", status); + } + + netc_clean_cbdr(cbdr); + dma_wmb(); + +cbdr_unlock: + spin_unlock_bh(&cbdr->ring_lock); + + return err; +} + +static int ntmp_alloc_data_mem(struct ntmp_dma_buf *data, void **buf_align) +{ + void *buf; + + buf = dma_alloc_coherent(data->dev, data->size + NTMP_DATA_ADDR_ALIGN, + &data->dma, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + data->buf = buf; + *buf_align = PTR_ALIGN(buf, NTMP_DATA_ADDR_ALIGN); + + return 0; +} + +static void ntmp_free_data_mem(struct ntmp_dma_buf *data) +{ + dma_free_coherent(data->dev, data->size + NTMP_DATA_ADDR_ALIGN, + data->buf, data->dma); +} + +static void ntmp_fill_request_hdr(union netc_cbd *cbd, dma_addr_t dma, + int len, int table_id, int cmd, + int access_method) +{ + dma_addr_t dma_align; + + memset(cbd, 0, sizeof(*cbd)); + dma_align = ALIGN(dma, NTMP_DATA_ADDR_ALIGN); + cbd->req_hdr.addr = cpu_to_le64(dma_align); + cbd->req_hdr.len = cpu_to_le32(len); + cbd->req_hdr.cmd = cmd; + cbd->req_hdr.access_method = FIELD_PREP(NTMP_ACCESS_METHOD, + access_method); + cbd->req_hdr.table_id = table_id; + cbd->req_hdr.ver_cci_rr = FIELD_PREP(NTMP_HDR_VERSION, + NTMP_HDR_VER2); + /* For NTMP version 2.0 or later version */ + cbd->req_hdr.npf = cpu_to_le32(NTMP_NPF); +} + +static void ntmp_fill_crd(struct ntmp_cmn_req_data *crd, u8 tblv, + u8 qa, u16 ua) +{ + crd->update_act = cpu_to_le16(ua); + crd->tblv_qact = NTMP_TBLV_QACT(tblv, qa); +} + +static void ntmp_fill_crd_eid(struct ntmp_req_by_eid *rbe, u8 tblv, + u8 qa, u16 ua, u32 entry_id) +{ + ntmp_fill_crd(&rbe->crd, tblv, qa, ua); + rbe->entry_id = cpu_to_le32(entry_id); +} + +static int ntmp_delete_entry_by_id(struct ntmp_user *user, int tbl_id, + u8 tbl_ver, u32 entry_id, u32 req_len, + u32 resp_len) +{ + struct ntmp_dma_buf data = {.dev = user->dev}; + struct ntmp_req_by_eid *req; + union netc_cbd cbd; + u32 len; + int err; + + data.size = req_len >= resp_len ? req_len : resp_len; + err = ntmp_alloc_data_mem(&data, (void **)&req); + if (err) + return err; + + ntmp_fill_crd_eid(req, tbl_ver, 0, 0, entry_id); + len = NTMP_LEN(req_len, resp_len); + ntmp_fill_request_hdr(&cbd, data.dma, len, tbl_id, + NTMP_CMD_DELETE, NTMP_AM_ENTRY_ID); + + err = netc_xmit_ntmp_cmd(user, &cbd); + if (err) + dev_err(user->dev, "Delete table (id: %d) entry failed: %pe", + tbl_id, ERR_PTR(err)); + + ntmp_free_data_mem(&data); + + return err; +} + +static int ntmp_query_entry_by_id(struct ntmp_user *user, int tbl_id, + u32 len, struct ntmp_req_by_eid *req, + dma_addr_t dma, bool compare_eid) +{ + struct device *dev = user->dev; + struct ntmp_cmn_resp_query *resp; + int cmd = NTMP_CMD_QUERY; + union netc_cbd cbd; + u32 entry_id; + int err; + + entry_id = le32_to_cpu(req->entry_id); + if (le16_to_cpu(req->crd.update_act)) + cmd = NTMP_CMD_QU; + + /* Request header */ + ntmp_fill_request_hdr(&cbd, dma, len, tbl_id, cmd, NTMP_AM_ENTRY_ID); + err = netc_xmit_ntmp_cmd(user, &cbd); + if (err) { + dev_err(dev, "Query table (id: %d) entry failed: %pe\n", + tbl_id, ERR_PTR(err)); + return err; + } + + /* For a few tables, the first field of their response data is not + * entry_id, so directly return success. + */ + if (!compare_eid) + return 0; + + resp = (struct ntmp_cmn_resp_query *)req; + if (unlikely(le32_to_cpu(resp->entry_id) != entry_id)) { + dev_err(dev, "Table (id: %d) query EID: 0x%x, response EID: 0x%x\n", + tbl_id, entry_id, le32_to_cpu(resp->entry_id)); + return -EIO; + } + + return 0; +} + +int ntmp_maft_add_entry(struct ntmp_user *user, u32 entry_id, + struct maft_entry_data *maft) +{ + struct ntmp_dma_buf data = {.dev = user->dev}; + struct maft_req_add *req; + union netc_cbd cbd; + int err; + + data.size = sizeof(*req); + err = ntmp_alloc_data_mem(&data, (void **)&req); + if (err) + return err; + + /* Set mac address filter table request data buffer */ + ntmp_fill_crd_eid(&req->rbe, user->tbl.maft_ver, 0, 0, entry_id); + req->keye = maft->keye; + req->cfge = maft->cfge; + + ntmp_fill_request_hdr(&cbd, data.dma, NTMP_LEN(data.size, 0), + NTMP_MAFT_ID, NTMP_CMD_ADD, NTMP_AM_ENTRY_ID); + err = netc_xmit_ntmp_cmd(user, &cbd); + if (err) + dev_err(user->dev, "Add MAFT entry failed (%pe)\n", + ERR_PTR(err)); + + ntmp_free_data_mem(&data); + + return err; +} +EXPORT_SYMBOL_GPL(ntmp_maft_add_entry); + +int ntmp_maft_query_entry(struct ntmp_user *user, u32 entry_id, + struct maft_entry_data *maft) +{ + struct ntmp_dma_buf data = {.dev = user->dev}; + struct maft_resp_query *resp; + struct ntmp_req_by_eid *req; + int err; + + data.size = sizeof(*resp); + err = ntmp_alloc_data_mem(&data, (void **)&req); + if (err) + return err; + + ntmp_fill_crd_eid(req, user->tbl.maft_ver, 0, 0, entry_id); + err = ntmp_query_entry_by_id(user, NTMP_MAFT_ID, + NTMP_LEN(sizeof(*req), data.size), + req, data.dma, true); + if (err) + goto end; + + resp = (struct maft_resp_query *)req; + maft->keye = resp->keye; + maft->cfge = resp->cfge; + +end: + ntmp_free_data_mem(&data); + + return err; +} +EXPORT_SYMBOL_GPL(ntmp_maft_query_entry); + +int ntmp_maft_delete_entry(struct ntmp_user *user, u32 entry_id) +{ + return ntmp_delete_entry_by_id(user, NTMP_MAFT_ID, user->tbl.maft_ver, + entry_id, NTMP_EID_REQ_LEN, 0); +} +EXPORT_SYMBOL_GPL(ntmp_maft_delete_entry); + +int ntmp_rsst_update_entry(struct ntmp_user *user, const u32 *table, + int count) +{ + struct ntmp_dma_buf data = {.dev = user->dev}; + struct rsst_req_update *req; + union netc_cbd cbd; + int err, i; + + if (count != RSST_ENTRY_NUM) + /* HW only takes in a full 64 entry table */ + return -EINVAL; + + data.size = struct_size(req, groups, count); + err = ntmp_alloc_data_mem(&data, (void **)&req); + if (err) + return err; + + /* Set the request data buffer */ + ntmp_fill_crd_eid(&req->rbe, user->tbl.rsst_ver, 0, + NTMP_GEN_UA_CFGEU | NTMP_GEN_UA_STSEU, 0); + for (i = 0; i < count; i++) + req->groups[i] = (u8)(table[i]); + + ntmp_fill_request_hdr(&cbd, data.dma, NTMP_LEN(data.size, 0), + NTMP_RSST_ID, NTMP_CMD_UPDATE, NTMP_AM_ENTRY_ID); + + err = netc_xmit_ntmp_cmd(user, &cbd); + if (err) + dev_err(user->dev, + "Update RSS table entry failed (%pe)\n", ERR_PTR(err)); + + ntmp_free_data_mem(&data); + + return err; +} +EXPORT_SYMBOL_GPL(ntmp_rsst_update_entry); + +int ntmp_rsst_query_entry(struct ntmp_user *user, u32 *table, int count) +{ + struct ntmp_dma_buf data = {.dev = user->dev}; + struct ntmp_req_by_eid *req; + union netc_cbd cbd; + int err, i; + u8 *group; + + if (count != RSST_ENTRY_NUM) + /* HW only takes in a full 64 entry table */ + return -EINVAL; + + data.size = NTMP_ENTRY_ID_SIZE + RSST_STSE_DATA_SIZE(count) + + RSST_CFGE_DATA_SIZE(count); + err = ntmp_alloc_data_mem(&data, (void **)&req); + if (err) + return err; + + /* Set the request data buffer */ + ntmp_fill_crd_eid(req, user->tbl.rsst_ver, 0, 0, 0); + ntmp_fill_request_hdr(&cbd, data.dma, NTMP_LEN(sizeof(*req), data.size), + NTMP_RSST_ID, NTMP_CMD_QUERY, NTMP_AM_ENTRY_ID); + err = netc_xmit_ntmp_cmd(user, &cbd); + if (err) { + dev_err(user->dev, + "Query RSS table entry failed (%pe)\n", ERR_PTR(err)); + goto end; + } + + group = (u8 *)req; + group += NTMP_ENTRY_ID_SIZE + RSST_STSE_DATA_SIZE(count); + for (i = 0; i < count; i++) + table[i] = group[i]; + +end: + ntmp_free_data_mem(&data); + + return err; +} +EXPORT_SYMBOL_GPL(ntmp_rsst_query_entry); + +MODULE_DESCRIPTION("NXP NETC Library"); +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/drivers/net/ethernet/freescale/enetc/ntmp_private.h b/drivers/net/ethernet/freescale/enetc/ntmp_private.h new file mode 100644 index 000000000000..039ab9c8fdda --- /dev/null +++ b/drivers/net/ethernet/freescale/enetc/ntmp_private.h @@ -0,0 +1,106 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* + * NTMP table request and response data buffer formats + * Copyright 2025 NXP + */ + +#ifndef __NTMP_PRIVATE_H +#define __NTMP_PRIVATE_H + +#include + +#define NTMP_EID_REQ_LEN 8 + +union netc_cbd { + struct { + __le64 addr; + __le32 len; +#define NTMP_RESP_LEN GENMASK(19, 0) +#define NTMP_REQ_LEN GENMASK(31, 20) +#define NTMP_LEN(req, resp) (FIELD_PREP(NTMP_REQ_LEN, (req)) | \ + ((resp) & NTMP_RESP_LEN)) + u8 cmd; +#define NTMP_CMD_DELETE BIT(0) +#define NTMP_CMD_UPDATE BIT(1) +#define NTMP_CMD_QUERY BIT(2) +#define NTMP_CMD_ADD BIT(3) +#define NTMP_CMD_QD (NTMP_CMD_QUERY | NTMP_CMD_DELETE) +#define NTMP_CMD_QU (NTMP_CMD_QUERY | NTMP_CMD_UPDATE) +#define NTMP_CMD_AU (NTMP_CMD_ADD | NTMP_CMD_UPDATE) +#define NTMP_CMD_AQ (NTMP_CMD_ADD | NTMP_CMD_QUERY) +#define NTMP_CMD_AQU (NTMP_CMD_AQ | NTMP_CMD_UPDATE) + u8 access_method; +#define NTMP_ACCESS_METHOD GENMASK(7, 4) +#define NTMP_AM_ENTRY_ID 0 +#define NTMP_AM_EXACT_KEY 1 +#define NTMP_AM_SEARCH 2 +#define NTMP_AM_TERNARY_KEY 3 + u8 table_id; + u8 ver_cci_rr; +#define NTMP_HDR_VERSION GENMASK(5, 0) +#define NTMP_HDR_VER2 2 +#define NTMP_CCI BIT(6) +#define NTMP_RR BIT(7) + __le32 resv[3]; + __le32 npf; +#define NTMP_NPF BIT(15) + } req_hdr; /* NTMP Request Message Header Format */ + + struct { + __le32 resv0[3]; + __le16 num_matched; + __le16 error_rr; +#define NTMP_RESP_ERROR GENMASK(11, 0) +#define NTMP_RESP_RR BIT(15) + __le32 resv1[4]; + } resp_hdr; /* NTMP Response Message Header Format */ +}; + +struct ntmp_dma_buf { + struct device *dev; + size_t size; + void *buf; + dma_addr_t dma; +}; + +struct ntmp_cmn_req_data { + __le16 update_act; + u8 dbg_opt; + u8 tblv_qact; +#define NTMP_QUERY_ACT GENMASK(3, 0) +#define NTMP_TBL_VER GENMASK(7, 4) +#define NTMP_TBLV_QACT(v, a) (FIELD_PREP(NTMP_TBL_VER, (v)) | \ + ((a) & NTMP_QUERY_ACT)) +}; + +struct ntmp_cmn_resp_query { + __le32 entry_id; +}; + +/* Generic structure for request data by entry ID */ +struct ntmp_req_by_eid { + struct ntmp_cmn_req_data crd; + __le32 entry_id; +}; + +/* MAC Address Filter Table Request Data Buffer Format of Add action */ +struct maft_req_add { + struct ntmp_req_by_eid rbe; + struct maft_keye_data keye; + struct maft_cfge_data cfge; +}; + +/* MAC Address Filter Table Response Data Buffer Format of Query action */ +struct maft_resp_query { + __le32 entry_id; + struct maft_keye_data keye; + struct maft_cfge_data cfge; +}; + +/* RSS Table Request Data Buffer Format of Update action */ +struct rsst_req_update { + struct ntmp_req_by_eid rbe; + u8 groups[]; +}; + +#endif diff --git a/include/linux/fsl/ntmp.h b/include/linux/fsl/ntmp.h new file mode 100644 index 000000000000..c64da8364c39 --- /dev/null +++ b/include/linux/fsl/ntmp.h @@ -0,0 +1,126 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* Copyright 2025 NXP */ +#ifndef __NETC_NTMP_H +#define __NETC_NTMP_H + +#include +#include + +#define NETC_CBDR_BD_NUM 256 + +struct maft_keye_data { + u8 mac_addr[ETH_ALEN]; + __le16 resv; +}; + +struct maft_cfge_data { + __le16 si_bitmap; + __le16 resv; +}; + +struct netc_cbdr_regs { + void __iomem *pir; + void __iomem *cir; + void __iomem *mr; + + void __iomem *bar0; + void __iomem *bar1; + void __iomem *lenr; +}; + +struct netc_tbl_vers { + u8 maft_ver; + u8 rsst_ver; +}; + +struct netc_cbdr { + struct netc_cbdr_regs regs; + + int bd_num; + int next_to_use; + int next_to_clean; + + int dma_size; + void *addr_base; + void *addr_base_align; + dma_addr_t dma_base; + dma_addr_t dma_base_align; + + /* Serialize the order of command BD ring */ + spinlock_t ring_lock; +}; + +struct ntmp_user { + int cbdr_num; /* number of control BD ring */ + int cbdr_size; /* number of BDs per control BD ring */ + struct device *dev; + struct netc_cbdr *ring; + struct netc_tbl_vers tbl; +}; + +struct maft_entry_data { + struct maft_keye_data keye; + struct maft_cfge_data cfge; +}; + +#if IS_ENABLED(CONFIG_NXP_NETC_LIB) +int netc_setup_cbdr(struct device *dev, int cbd_num, + struct netc_cbdr_regs *regs, + struct netc_cbdr *cbdr); +void netc_teardown_cbdr(struct device *dev, struct netc_cbdr *cbdr); + +/* NTMP APIs */ +int ntmp_maft_add_entry(struct ntmp_user *user, u32 entry_id, + struct maft_entry_data *maft); +int ntmp_maft_query_entry(struct ntmp_user *user, u32 entry_id, + struct maft_entry_data *maft); +int ntmp_maft_delete_entry(struct ntmp_user *user, u32 entry_id); +int ntmp_rsst_update_entry(struct ntmp_user *user, const u32 *table, + int count); +int ntmp_rsst_query_entry(struct ntmp_user *user, + u32 *table, int count); +#else +static inline int netc_setup_cbdr(struct device *dev, int cbd_num, + struct netc_cbdr_regs *regs, + struct netc_cbdr *cbdr) +{ + return 0; +} + +static inline void netc_teardown_cbdr(struct device *dev, + struct netc_cbdr *cbdr) +{ +} + +static inline int ntmp_maft_add_entry(struct ntmp_user *user, u32 entry_id, + struct maft_entry_data *maft) +{ + return 0; +} + +static inline int ntmp_maft_query_entry(struct ntmp_user *user, u32 entry_id, + struct maft_entry_data *maft) +{ + return 0; +} + +static inline int ntmp_maft_delete_entry(struct ntmp_user *user, u32 entry_id) +{ + return 0; +} + +static inline int ntmp_rsst_update_entry(struct ntmp_user *user, + const u32 *table, int count) +{ + return 0; +} + +static inline int ntmp_rsst_query_entry(struct ntmp_user *user, + u32 *table, int count) +{ + return 0; +} + +#endif + +#endif From patchwork Fri Apr 11 09:57:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048058 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 94315C36010 for ; Fri, 11 Apr 2025 10:25:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=A7uhTuoOWZX14HXS0JHUlxopZ8af5BKGhxb+yYy1rGw=; b=w06OBeCwdD9XA1uu7N32GgJMHX K2oCUPuh6pHpD+iLVjO/UR8sR1xnkFoMme6mlsvyLapC/uYrTK7aOh8H4I31X4lhe0CyJkweOg7J7 P4RUskb0f/cOFq56Ok49fce3/nuqTtm8LFc31VuuBWqzqFXTNYPVLgDUn13kXnIl6D1boqzi7FmQZ jo/USIi8+dzqxV32dIBeran4TuznKAxsmTGhJuIRzQtbaR2bWU4ZdMO/bJLVlZnJkvw8HVSKlw039 h/Pc5yLI/htgLzooM0NMu5nCAA+4yQ9yLS+YrcsC6f7pUa/PJL9TCavOtUO/UThJP6dNqNndO+H7X TZGpCbww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BZp-0000000DO1u-1Bp5; Fri, 11 Apr 2025 10:25:37 +0000 Received: from mail-am6eur05on2060a.outbound.protection.outlook.com ([2a01:111:f403:2612::60a] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BRe-0000000DLXm-0Mx0 for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LF3hTDPu5Jkq5YC+dC30YykgPk+hTxRX4gZGpngHB1mAlRTxZIRqoT6VJ93xBuq4O3luzu/EyG/6lI3rur2Os8bDuTZw4108BKdobHHi3RgHvdzRgvRyl4YmQbQwGQDYmyqwshsyUlt2ZUM+IO0bB5RonElPxppDabcz1i1CEbXG40F6QtpMEILyCPwREqcpoDxozUCXL+npcK8mJR6uIpsOFdnOIOUChEz8ZWCqF8oSSZ2lJBrBYkNJ2VnETxOBql3f+7wWm+WiQ38DfqIyRaOl0Ko7d16r3N0Cx6aws8/Bs5Zzs08hm5iIjRCu7QKMK4rBQXHbplzysQ4+YfPlPQ== 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=A7uhTuoOWZX14HXS0JHUlxopZ8af5BKGhxb+yYy1rGw=; b=bDXuKMqbeNNKjj6XoTcYdbV/7DRxjUS4pP4kqPhlUx9jcfSWw+2RwmYrRGfNTqqChgKBpDr8QGydrZjYYKL9q396BvSABNBldFyXSEXDNdRNSPXgQ8wg8PrvlgJzdeVM61+xy5mtFTPzNm0KszWqCpNacCVQ/xRyvXaFoOOdSWKZZkKEhikrsJY4dik0T9lV0SAXfRmhnWkPJwZJJXBB7PrtVWLaVsJ82IJtNB4f4ggxTO/fFtDECsfrWh1Suj2gPvsp+Utx1UgwZWIdSwlzTJs0veLhUZicwUz78Fc61n0iR1Uhmja0bXba8duBzxrKkFIjwGhoozh2EfCjkpzFaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A7uhTuoOWZX14HXS0JHUlxopZ8af5BKGhxb+yYy1rGw=; b=RBI8aCXqMBxN2gQZjYb0I+FRrmeyP3xozuYBFv4VP+6+t5E0EjeTS77Hd3JYRlhLwZAKE7O8NyijQEtE6EFvWlaS2DIu7X/t4nJ7Q55TMQKfDU36RtDM3SDBlEe9QHi6U31W+79eVdaLPQeLioWXRdDkHtcCGa/Y4ArdQ3wvFB4sPUmUiWF7nZZA103uEqGXdmJwSipMPBvozQZ8yTatsdi4DZUY4aomFgevJdWaxkZqhCKZOpGYU0Rp1rKDuvpGRmvkaqzDGOHdMAto3bsxd4YArhaMWjnqQiHVdjbsZ9ru7biPpPR182XA31mGVzIXH6L4Qjh9PoxC4QstWM4SQg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AM9PR04MB7603.eurprd04.prod.outlook.com (2603:10a6:20b:2d6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:07 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:07 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 02/14] net: enetc: add command BD ring support for i.MX95 ENETC Date: Fri, 11 Apr 2025 17:57:40 +0800 Message-Id: <20250411095752.3072696-3-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AM9PR04MB7603:EE_ X-MS-Office365-Filtering-Correlation-Id: d57e2c45-f5c4-4e36-5437-08dd78e203a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: 5b5BtGq+iQAubAl/myfmxebExZbnmo7yPUJZpbSbvscRU7wds42R9w7ruB/CSQtpqVepS3KVohY69RbKUeXN9hqXlBzqtePgJEXYds4ZWsJsFeyIw80ZBeB8jK3SDgAC/e5czQJ2EGyAtjxOq0Xf4Qv4nBJPtSQLjUj1Sc1o26NNCZjR7+y3Onr1aI2QsFHwm8b7H4i5/88l8YWT412Hwt+mhddPfW+Lx862zyfpM/TQodAlKgBoUokQTViDsU3CIMnvXZZdOcLPlbE5GSH5z5eHwB0jUT9a4PqNj2YkCPM8KMhn4SIIzTpdovxARWgdkbxrxZqo5Wa1WvVSGBau2HPs+zcbLv6mJR/3fnfrkdRt0f5/doQPRGgz1oxLKt+4yhfe9G2JC2VwI8XSlDfv70qpgZJgBopoidq8mUiQ4XqGiGzRDgihTV8sh8avNpvJ0VUwwZR2OQ+7dR9cUHxogteRh72kxk5JP//n7n39cvrAsFrPpiIylmLgvGQoEKQEnKNa41WR21Qk9ei4JBWFZSIFjHXGmnGjCxw20+pYbKaEgSKr1uMeLI2f6ugNpb5fpqnIiWXJgaMncKj3AwkJdP3cwkSwQxOjZvmW8Mv3xI405Uz32/Yicxsl/+KWEVyXy3BIUx053vq+BAjvocZqigqhajb9dAph7nalcnQZajGLwNlTGylcL8P8HC9vz7DldxQZ8h3hhyTQ0a78aXJAOInXaMxRw8aS+NN8zAXBAMM6o0c7L/TNufTzghZLZlg8I4i9/ElAOWbzTMSfVlH0XPqIpClmBAUfhri9njsDJA8yLbmOPgN4rK26E4Eej8jm3gC0WreVl2nexIlYyTmj7kN76ixw1r9+Yxf4gaMYq3JH+uxtd7TZcBSsJ3Updr1+B8UVrYU+VtLyF1vfIVmfAEImoix5YLW8QfQp+T3O8BtB6CdpwLVK4AIyko4c++BPDO7oIQHrziCkSufLN03v38mZWAy3/W6DovrcTBEv9+lAZw4qDBkCo9hMwRVZVeIqLVp8+Qmal3xzBzoKpHnEhxRc7RUz3E0GqhL/FDOPNip6pDi9QfWySpPZF5k+anTPz/a11uJRizViIXS7DPHM3cHxWtT+qPNmqkKvr5zcUGZTHgPbXezWQfOoCVPckVP8JGRUr+R0FPH8E2ggOjuDIZ7PqTzffSqwViv+IRVkBFvK4hTTe0aj7TH6kuLQkh+sMeDT0MGE2bNhGus0jxNNzQA9AZJklYZsuKXPHC9+KMkJ6ad+fbF1It63TkOpI8aAlLhtxHqpaIuNONntJaHmlgCKJv/DFkwWitHUPjBnPNpbVMtqB4YAorcFv2IQghGQ7N9ldoh/86+bbUyI7UyADw67JaprwA7Dt4JecBbzjzGuuiSyEnNYfnHrRGwBkOC83DeStn9A2I5udNebTz/1KFH5P/xPEfQjwbTZuD0RF/snMvtX8vy8B5HcPeaqMApsp773/Yad+ksnqfLjKjT/xA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: whBKRZsVie7vrozd/jz74ki+28CB9eoeyXn1s8TK8st/e7xZuxaM1CSRdQps7mhVdblyY4XWMME1fpIoBK5S/2/w+0TiS5/Ie69G4LzqLol/fX9OAoOiuwOwwFrHyuhB7LVEn3DruZ20p4NrLYUpRtD5EA/1g/yYBxIQ+N+ZFtM746uTHQVdY4hKBPaDu27GNw2jfhTVs2JsbxT+eMcAVAQHdulS7UtA9yUhD55gd0Y0cQDTOP4cZRQhVvyopHeT/r+/8yP4NIV3pb6mLIEkNgi51f+voIjp+Zy5NwTbdDV6icLUUdwYx9y6+th8PdQnIiDy6RkbGs5jlBkqNXRlUWVWX4nYyOswcHR1u6y1OIA97uw7GkINtrGeeBaSubjV53sVqyUJz5q5sMCvm1n+azaqWUPSWqHVp3cgGT/EpS0bcN+IdOiWSTKukxq6zLIymBuFfMxvHM6/3BZnyCyBAMa/KJFG6UjvFx2s/+daMOKakEd72On5rBO3FJFSqhWbeykQz0RdcQXt45BGKUnXZigvcrHbQJU8S1A/euvfXdy3v4pILM5A92JSiOEPo5Uy1Yvs2G3O26PI1yPhD2fWO5vZgqOL3+dqJ0Wp9xdbdHYWp1FW6FAzRuCaETTdfVaRE9g7RDnpaDT/HZnMeOCBjxJw+VV5qgb9J6JqdTKmgtihohvpJG4GOcpe1/1wHOH+xDWKDIJFRtI8RZMv/wTW733PYa3kzSN7gd7UDFcf1Xj3yThqMTv2GhO7P41wP76WDplTq/EKjXhn4SjgPcZfosdtHW/6qeE1W0rRPX5KMyNr02CL9X/lRW6PYKFkXh5f87LI7WJMygmSrD41nOWwWoMeXoklXEDAWL17bjqeRUHE0IXM77yCFLpGsjVUmWe8Epzy4JCePqmr5xA6+7Jmx9D9yGYv92zJCt1OjhGIrOeV8wcr1C3jrEO0YF/dxrbzOc9qO/RyTeqBhIAEWOnwpjspAuPUehBy7+kiYMOdtFnRWBOkzjGIeRTPQACCAQERhBnye4q+qDmgwiP2lciAqdIZj8gYt5Q+3RXQv4Vi/porojVEsq3H/Wq7/+DGaw8W61R10124cPQlzFAMv7hFAElMV07umnGnyFMzt+v5+TxeCpAtfrzc5n88G7Y/QqSnxYXW/7pZYQlmxUo6XiPMG9d3GfgDM0ZnGfX2UAW/cyoh2xVtEqBZKvCioIDICXxu9erpp5MBUCG6QZJRPoMEryFiUR//JitLf5Mwz+uLLwIkoGllwfoD7MpBWLEvjut0t77vy3V5CWVJDZfZAhWooxaxVFnzBCTsSgK+E+fvMK3fbiP6gXguQd6jVxDLo+Iykg/7KWIlE1aevWQ7372eZfRoAEfpqdqCAF0zvVzyTVRnLE9geewbS7Gj77uAiFgSa1eaXJoIS5pzwECCc4vKa3uOli/98C9A32+6yyk+k4gLe6G0axKgij98WjYdNvTbOGCL3Ph48MhXvz2yJwd9CJhrTs6Af4XKj1L7wbF+1zM3Q52XhcovMQc5KI/crSElgkwYe9k5OEjnLBE9jFSFClyLvH2SEhGtQQd5zUWDB9BBgacrA7kNe/odMajlQrFx X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d57e2c45-f5c4-4e36-5437-08dd78e203a0 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:07.8077 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9QPs90WEami1t8k/sHkJnlfItroWZvmHQ0I4uunLf4mUvbJbPhHhTDMDdmIsb97tUElzM7rVd52n1LQ0p+iilg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB7603 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031710_127864_99D1E27D X-CRM114-Status: GOOD ( 20.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The command BD ring is used to configure functionality where the underlying resources may be shared between different entities or being too large to configure using direct registers (such as lookup tables). Because the command BD and table formats of i.MX95 and LS1028A are very different, the software processing logic is also different. So add enetc4_setup_cbdr() and enetc4_teardown_cbdr() for ENETC v4 drivers. Signed-off-by: Wei Fang --- v5 changes: 1. Remove setup_cbdr() and teardown_cbdr() hooks 2. Rename enetc4_init_ntmp_priv() to enetc4_init_ntmp_user() 3. Modify the commit message --- drivers/net/ethernet/freescale/enetc/enetc.h | 9 ++++- .../net/ethernet/freescale/enetc/enetc4_pf.c | 39 ++++++++++++++++++- .../net/ethernet/freescale/enetc/enetc_cbdr.c | 39 +++++++++++++++++++ 3 files changed, 85 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index 4ad4eb5c5a74..384e0bded87f 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -274,7 +275,10 @@ struct enetc_si { struct net_device *ndev; /* back ref. */ - struct enetc_cbdr cbd_ring; + union { + struct enetc_cbdr cbd_ring; /* Only ENETC 1.0 */ + struct ntmp_user ntmp_user; /* ENETC 4.1 and later */ + }; int num_rx_rings; /* how many rings are available in the SI */ int num_tx_rings; @@ -284,6 +288,7 @@ struct enetc_si { u16 revision; int hw_features; const struct enetc_drvdata *drvdata; + const struct enetc_si_ops *ops; }; #define ENETC_SI_ALIGN 32 @@ -493,6 +498,8 @@ void enetc_mm_commit_preemptible_tcs(struct enetc_ndev_priv *priv); int enetc_setup_cbdr(struct device *dev, struct enetc_hw *hw, int bd_count, struct enetc_cbdr *cbdr); void enetc_teardown_cbdr(struct enetc_cbdr *cbdr); +int enetc4_setup_cbdr(struct enetc_si *si); +void enetc4_teardown_cbdr(struct enetc_si *si); int enetc_set_mac_flt_entry(struct enetc_si *si, int index, char *mac_addr, int si_map); int enetc_clear_mac_flt_entry(struct enetc_si *si, int index); diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index 73ac8c6afb3a..175eebadde76 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -260,6 +260,21 @@ static void enetc4_configure_port(struct enetc_pf *pf) enetc4_enable_trx(pf); } +static int enetc4_init_ntmp_user(struct enetc_si *si) +{ + struct ntmp_user *user = &si->ntmp_user; + + /* For ENETC 4.1, all table versions are 0 */ + memset(&user->tbl, 0, sizeof(user->tbl)); + + return enetc4_setup_cbdr(si); +} + +static void enetc4_free_ntmp_user(struct enetc_si *si) +{ + enetc4_teardown_cbdr(si); +} + static int enetc4_pf_init(struct enetc_pf *pf) { struct device *dev = &pf->si->pdev->dev; @@ -272,11 +287,22 @@ static int enetc4_pf_init(struct enetc_pf *pf) return err; } + err = enetc4_init_ntmp_user(pf->si); + if (err) { + dev_err(dev, "Failed to init CBDR\n"); + return err; + } + enetc4_configure_port(pf); return 0; } +static void enetc4_pf_free(struct enetc_pf *pf) +{ + enetc4_free_ntmp_user(pf->si); +} + static const struct net_device_ops enetc4_ndev_ops = { .ndo_open = enetc_open, .ndo_stop = enetc_close, @@ -728,14 +754,25 @@ static int enetc4_pf_probe(struct pci_dev *pdev, enetc_get_si_caps(si); - return enetc4_pf_netdev_create(si); + err = enetc4_pf_netdev_create(si); + if (err) + goto err_netdev_create; + + return 0; + +err_netdev_create: + enetc4_pf_free(pf); + + return err; } static void enetc4_pf_remove(struct pci_dev *pdev) { struct enetc_si *si = pci_get_drvdata(pdev); + struct enetc_pf *pf = enetc_si_priv(si); enetc4_pf_netdev_destroy(si); + enetc4_pf_free(pf); } static const struct pci_device_id enetc4_pf_id_table[] = { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c b/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c index 20bfdf7fb4b4..ecb571e5ea50 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c @@ -60,6 +60,45 @@ void enetc_teardown_cbdr(struct enetc_cbdr *cbdr) } EXPORT_SYMBOL_GPL(enetc_teardown_cbdr); +int enetc4_setup_cbdr(struct enetc_si *si) +{ + struct ntmp_user *user = &si->ntmp_user; + struct device *dev = &si->pdev->dev; + struct enetc_hw *hw = &si->hw; + struct netc_cbdr_regs regs; + + user->cbdr_num = 1; + user->cbdr_size = NETC_CBDR_BD_NUM; + user->dev = dev; + user->ring = devm_kcalloc(dev, user->cbdr_num, + sizeof(struct netc_cbdr), GFP_KERNEL); + if (!user->ring) + return -ENOMEM; + + /* set CBDR cache attributes */ + enetc_wr(hw, ENETC_SICAR2, + ENETC_SICAR_RD_COHERENT | ENETC_SICAR_WR_COHERENT); + + regs.pir = hw->reg + ENETC_SICBDRPIR; + regs.cir = hw->reg + ENETC_SICBDRCIR; + regs.mr = hw->reg + ENETC_SICBDRMR; + regs.bar0 = hw->reg + ENETC_SICBDRBAR0; + regs.bar1 = hw->reg + ENETC_SICBDRBAR1; + regs.lenr = hw->reg + ENETC_SICBDRLENR; + + return netc_setup_cbdr(dev, user->cbdr_size, ®s, user->ring); +} +EXPORT_SYMBOL_GPL(enetc4_setup_cbdr); + +void enetc4_teardown_cbdr(struct enetc_si *si) +{ + struct ntmp_user *user = &si->ntmp_user; + + netc_teardown_cbdr(user->dev, user->ring); + user->dev = NULL; +} +EXPORT_SYMBOL_GPL(enetc4_teardown_cbdr); + static void enetc_clean_cbdr(struct enetc_cbdr *ring) { struct enetc_cbd *dest_cbd; From patchwork Fri Apr 11 09:57:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048060 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E62A4C369A8 for ; Fri, 11 Apr 2025 10:27:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=sLNW82CmmqrFkuFUjFOhZNNgPhyoY6P3ZKpewLAraXY=; b=Gsgr26yeZiEDlFuaXnxQ19UQmG mVl/mx5MEWzsir/fl/SfwAX/undTpnHwza9Fxu1RESSuHmzD5gfqmOy8SNf6t4UCCrM/cwLtivaL6 T1l3awt/zbQjntoyy6ZFGHEEplhYmc2Me9G2/vMr0BEPAPgUO/M6ncl5NRDjNVGtqSw5wwQPRSzz+ UhJoKPgRjrd5whxCKH48BqKEMR0JbfOKSxLe+sJP7R21jTVnSw8zblfHgAKLpmyfu760Q1ix5GmoI sf3wWCm3gPBgl/xMpBDik+u8s7XQAPWgfKJjBEwTRMz77KYTh90ySLb4XvQ70dy7A7RQg9FZ2wv0d EzAnQ9bw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3Bbc-0000000DOSi-49DS; Fri, 11 Apr 2025 10:27:28 +0000 Received: from mail-am6eur05on20630.outbound.protection.outlook.com ([2a01:111:f403:2612::630] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BRl-0000000DLb6-2Uy8 for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OFRV1F6QV3zh16aYd1Myqs7daBeBitBzO3QfF+qTS0N9H2e+X2vvEw9ABTXesmKP6KJhk6ZxsZqRgaeEzbQxzUlK+C1RJDULqMy6SBtm8bBxln6rV1YAn9AslAMf4RD3bZXSIyXJsyq3Al4Z7+A5lslAQXediPfyOrZh+BvtSlokr4f87QLC7siU3WCLnbr/C9Jz02yw7ZY8xaxwerrCQQ/qwQZUDeiCSE5Tdr2KrG4tqKtpiEgxN4bUUNVnRzaTQcXU+xEVbnBiOqihrJDRXBVb6Fc7AeaD05a2YY/O4IG/hbDovIvA3XAIjN4Sw0IKSAICuN2iudhInK1KTRF5cg== 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=sLNW82CmmqrFkuFUjFOhZNNgPhyoY6P3ZKpewLAraXY=; b=Ga1WbAA982W5OMxyKWf/YtRZtqkW0ATI7GG1p6gqpDVFoVymphReEvfkeF7U2fcWFWX0fi61lwPJpurizpLdvacwJMlgySpcXwx8oCTVRyQElYjMIBSrbE2mnAJMmklN5PB33STjqmmjnxYw3SjkC1IVNNW/FEe5qXLzENFNum0i9k+JAH0xx2aRPcyeDFuO7T6B07t1aNAYMO3ljpuJyv67niXcb5XfV30s9KdIawf6/i4gLA99h1RaUM7/e37TsYAoSqPpkdgvD9Hq7dFmlhkn3VcTMkhnCxqZZa6Srd/PkBHbJAQuUV+2FiofFrmLnFX9xybrktfXXGAURggWSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sLNW82CmmqrFkuFUjFOhZNNgPhyoY6P3ZKpewLAraXY=; b=fnMMQh7VqgpRyrCHZAzQHz/yoOUghKXTEjEgM2w//xwqzUSLQYZQSrdI92m4DwPzlu8ORDH2CCmmG+StZloHVJeHBDdlYzi6Ky5K8E8h9eKLOjcyE2vmmHEyCj2iBWEVt6OWxMLainholVQLYaUas7rle9/+xTAQ1E1UepSWmX0v/YWrxLEjJAnb8ai29JrV4BpcLe+Wg4duCim8tCF5Qul3hVk+JjZlkjGiqohDrUI03TLXcBSI6nQUa91zWBdHOELINEApkY/n5aGZUWRluXjcakBRwdx60C1xVadIswjlCG83hl7fApKuDgwKq7lh5h7wt3d2kG42EMrzDtP0+g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:12 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:12 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 03/14] net: enetc: move generic MAC filtering interfaces to enetc-core Date: Fri, 11 Apr 2025 17:57:41 +0800 Message-Id: <20250411095752.3072696-4-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 0eeec554-1983-4879-1a8a-08dd78e2069f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: Y3tB/BdzydsNWqmQYVNxvXKUn6K2jn02r2ppsxUQOQUmpCwgZEvYnaSL4BbYlSkCuLmY/HooqDHxPzIl7maR4Ox5eGc54GHTjeSM7tktWTR350/eFuzKXZJspiJgfndwa6YwpQfqtFn2Tpx0uiLmOaXzQINg1CjqYCXjPBOo+QS6LnPZsIpBMW+TPfgBKl1okNloWm8Pfgzpb9DpOZhsVgrXXOpzcqjgSJ+lHbuxnjWy5ZRJRGeTFt/VopoC5PS4Dezv19imva6WTVTkNjaLl/QCZvl0++skgCb8ZxW8kHyZaoY5jPGRYlLoRcLixq9PH+mtB02n9gpTRf2RTB5q/+Qs5uoOd3hwKIw7WaUBK77/3erfK7emM1eVkWTlu3YpDsGvb/Wn4N7co+lWT3+2gXUflXKGvIO3FLIHvd3ueGJfJy5D8hHBh87ZBzNxUTwoWIv4VEL6oO3S+nXqRutudv5X1o0b6uECh2FfOQU32rczv1DPNpWHCklUbjfxPo6Ik/S7zDC1ucZ22/lN/DX2mgzDzc4qfcSQac8uT9Sy6vqvTUGwSwnZjF9XfkcZt85lNiP/1AkbQUPTj92EifSnBfao3rUrI10gHddxBzRQLLG3saSk2D3SgjhJjtBuCSK3k4sAtrFT9cLXJwkXFXmDp/4+HvVyUXIo7OnFCemlzyE1o5yB/h3SFnCAkppO1daB3Zu1ksIEP54OIrs/2VGtyaZWRVNoMHzZXL9ODokxIojf4d84/GBzqksv0iB+ZhbPNBfE8w8a2qs9W2/iw+JA73oe3kJsAHBKpYjMZOx1Y4eUaY2epBZASEFtFiegLCMzCoApXYYWloslgzipKIIMovoO1mrg5fB8xwRnzFGrCro4quKmUOz0XraCorVYpHDAC4cFtL1OgkDUrQ84rI7KQ78NMOBcFWTo52FvOK1tbm0CDgyrwcop7W4/NYg+t1XYPRCgvfSFOubQn2iVQI96fwc5p1OcSv7G23+6ctk7OgHw8xnQQN1r7cuRAd6MGyprLQkbr1d2/mGDXzjMPdJEYg05CNacPxVlbHKD4u/5ca6UAZHpL+dCOtOq0YFg8eQ8IZ0GNqfUcncaJpGv7uxgAzxbKzLOVR4v+rxYr43hlKXGIpfjclrX1n+TNLG/ife8bqGomW2Z4DEeNDYj6j+BUmN7WP2eHlGxBWSeJF8iQSNczTG86dCA5U1WMuPz4ezAgvXifDtsL1T/9sNbDQIKeo54I70WRDxZOcLU2iZwujHz0eWSE8D4Y/u+jLYfkFBgRKpMPlpdy9mW1cHMeD5Sv8f5mlsnpWzRfPskGqjW6BSxNiZhaF/6FQkaY7ymugGwcH3xjjedXefpAxEhWcGgb29zP3JbnpjPUAxwr0abfuCwkz8+M/+vv2toiODJJdkU3sRgXXyfFqQDM43dbHr3p2pNBtI6zHaEx9kOGNxRxzL63A3kfhCQoQs0MMk/9niPhEyh/gJh+qodBS56bAVIWw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MNkgo6T0CaB7rn/3dQntTg9+3y1NTQdNAxmy28TAlZNLrsqlacBLRjGgU27QrtS7w5MwMliiHoN4q0R5hoM4Qzs/PMOWMst+wW8wlr9Mcq8EQ87jvrjWhYPnlfq0JtU7G+zod0uUagsRzgeqiAZgapYjCIoxBK94vHvOcIgN+ZkDOWlYC/xTNKT3KXr2FJofRCHElKi+5sP5O82pzxif0Av9vH6nqGDLSpUmHlkVdSkvo+DJXiqF0X/eTRdglZlUFspluLIwdPQKduLy2XTLoWyrWsX5FBn/6Wk49wmSrRxqiHSXpLJfRxHnNAMyJckZR5LEbY2YV6LStTbqWxTtk8Q03+GAepbP+EOvdjrMcLgCj6BI8P6DDZvA0PitaLnElqNfUAi77Pa9fh/jx0Ar63XkIio5clZyI1ISCGVyB/mEu3ncWEI4J0+LqxIG1CXH9EHsdKvRCfrQBylYtt8eXy8FmDf63Tc1a9UqQfYvREA3UXQ94Fw54cK3pZBITeZtKCIRx8eIPrheIyXBToe7xg45wiOutvgK0fuwOQqIxlReIx2k9IBQPRD14xFZghRVgbZg0H1Hltxfy7kL1eyYIYz1e4yMbu50upmpnVJSjfKeQPKc9al815dGeZTqlGVTCIh7uaa63/FnM9hVSNdp7oR24MWhJjnIodbNu/6AgeaXtdvXIqpAeKE7YSKIqOAjEDPqZMcl57ufxV4NtXE2am+7Ntg2/iSgzbRtA8H+ypGvQNxYR+B+8TIxTRS8se36gBBYb/5xBFBZXh6bz5dLEtZFj9+iiqEoqSg0JMpQ63Xa9DPdDjQzvpQkh66j1SwbyLkoz8NMNcQETuLPHf9W2iOQkf9iFy1Ttrj2iIRTepJpjeGs4aJInbWkCIwSTe6sko6zjnNTidoaVQTI23PGHA/3P/8h4L4poCWWUiIrODajWx9f85eTTF5ZJ6LrNwGXOyFYEFFtlvWc2/bqZEDZwCW30P4R5yx4+2GCdFegPeYie/k3+S19ZGRtLuV5t3UnquibnSldt1KYWsGIlkzUUp8dW35w3E25DD2eTnZaZvGhvfWvr+8C3Cs8tLIsH+PbpaM/9EpDsBN/DdPuaFDGMkI0WXr5vmeP4iPPEIxQPHHCsw+DZDr5ldEMH7+nT3dCTD8gr85uXISnoakYtugU3y/8wWdk7F49Sk+/Ae4qxTtXb1j3XtOTDrWDHw7clc60OlBwipsHj7AOgsIxqkrFmUqXSDGdYAKHUFhrkrFMSp+nLOjP1BsMe7Yld9DN6H7OrbzIM/Ed0loqf8f8JwkM3NuWlQj082K73VqtR4w00C/kZOz1drwOuE91QjM5890QKKoSzGAAcCsls7LRHc/HvWnqwzz6bfJMhwix7ki0ipTaclwTYZ8TALcxSfqrFX6SGvEUgx5voF4C5r7QSvBr53w811TYmwq0jQCUR7cS66RrcO+YoOmv/DDUUJeIo+o+BXG5//L01YNzQDw1cPxp8QJOUpx+I9VsJXLJut1A7GEdoXlYClw5Nw0tqkIJa3yOk3U13haOtzjDLAWxk1vO8Wn5W0mQVfbAj0QOSggsUebR2cT7xkFDqYeNKDY+6/Wk X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0eeec554-1983-4879-1a8a-08dd78e2069f X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:12.7427 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tpxQDEphZSE4Vnscn6pInJBuI3oCIwqMXpgKOfb/SamXrK9MKl1JE5Sw1+i5D+WFF/vjOsQ7gjZDI1XnueHXSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031717_644216_19DBCB4E X-CRM114-Status: GOOD ( 17.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Although only ENETC PF can access the MAC address filter table, the table entries can specify MAC address filtering for one or more SIs based on SI_BITMAP, which means that the table also supports MAC address filtering for VFs. Currently, only the ENETC v1 PF driver supports MAC address filtering. In order to add the MAC address filtering support for the ENETC v4 PF driver and VF driver in the future, the relevant generic interfaces are moved to the enetc-core driver. This lays the basis for i.MX95 ENETC PF and VFs to support MAC address filtering. Signed-off-by: Wei Fang --- v5 changes: 1. Keep mac_filter in struct enetc_pf 2. Modify the commit message --- drivers/net/ethernet/freescale/enetc/enetc.c | 36 +++++++++++++++++++ drivers/net/ethernet/freescale/enetc/enetc.h | 15 ++++++++ .../net/ethernet/freescale/enetc/enetc_pf.c | 34 ------------------ .../net/ethernet/freescale/enetc/enetc_pf.h | 11 ------ 4 files changed, 51 insertions(+), 45 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 2106861463e4..3832d2cd91ba 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -36,6 +36,42 @@ static void enetc_change_preemptible_tcs(struct enetc_ndev_priv *priv, enetc_mm_commit_preemptible_tcs(priv); } +static int enetc_mac_addr_hash_idx(const u8 *addr) +{ + u64 fold = __swab64(ether_addr_to_u64(addr)) >> 16; + u64 mask = 0; + int res = 0; + int i; + + for (i = 0; i < 8; i++) + mask |= BIT_ULL(i * 6); + + for (i = 0; i < 6; i++) + res |= (hweight64(fold & (mask << i)) & 0x1) << i; + + return res; +} + +void enetc_add_mac_addr_ht_filter(struct enetc_mac_filter *filter, + const unsigned char *addr) +{ + int idx = enetc_mac_addr_hash_idx(addr); + + /* add hash table entry */ + __set_bit(idx, filter->mac_hash_table); + filter->mac_addr_cnt++; +} +EXPORT_SYMBOL_GPL(enetc_add_mac_addr_ht_filter); + +void enetc_reset_mac_addr_filter(struct enetc_mac_filter *filter) +{ + filter->mac_addr_cnt = 0; + + bitmap_zero(filter->mac_hash_table, + ENETC_MADDR_HASH_TBL_SZ); +} +EXPORT_SYMBOL_GPL(enetc_reset_mac_addr_filter); + static int enetc_num_stack_tx_queues(struct enetc_ndev_priv *priv) { int num_tx_rings = priv->num_tx_rings; diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index 384e0bded87f..c3ebb32ce50c 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -23,6 +23,18 @@ #define ENETC_CBD_DATA_MEM_ALIGN 64 +#define ENETC_MADDR_HASH_TBL_SZ 64 + +enum enetc_mac_addr_type {UC, MC, MADDR_TYPE}; + +struct enetc_mac_filter { + union { + char mac_addr[ETH_ALEN]; + DECLARE_BITMAP(mac_hash_table, ENETC_MADDR_HASH_TBL_SZ); + }; + int mac_addr_cnt; +}; + struct enetc_tx_swbd { union { struct sk_buff *skb; @@ -471,6 +483,9 @@ int enetc_alloc_si_resources(struct enetc_ndev_priv *priv); void enetc_free_si_resources(struct enetc_ndev_priv *priv); int enetc_configure_si(struct enetc_ndev_priv *priv); int enetc_get_driver_data(struct enetc_si *si); +void enetc_add_mac_addr_ht_filter(struct enetc_mac_filter *filter, + const unsigned char *addr); +void enetc_reset_mac_addr_filter(struct enetc_mac_filter *filter); int enetc_open(struct net_device *ndev); int enetc_close(struct net_device *ndev); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index 203862ec1114..f76403f7aee8 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -72,30 +72,6 @@ static void enetc_set_isol_vlan(struct enetc_hw *hw, int si, u16 vlan, u8 qos) enetc_port_wr(hw, ENETC_PSIVLANR(si), val); } -static int enetc_mac_addr_hash_idx(const u8 *addr) -{ - u64 fold = __swab64(ether_addr_to_u64(addr)) >> 16; - u64 mask = 0; - int res = 0; - int i; - - for (i = 0; i < 8; i++) - mask |= BIT_ULL(i * 6); - - for (i = 0; i < 6; i++) - res |= (hweight64(fold & (mask << i)) & 0x1) << i; - - return res; -} - -static void enetc_reset_mac_addr_filter(struct enetc_mac_filter *filter) -{ - filter->mac_addr_cnt = 0; - - bitmap_zero(filter->mac_hash_table, - ENETC_MADDR_HASH_TBL_SZ); -} - static void enetc_add_mac_addr_em_filter(struct enetc_mac_filter *filter, const unsigned char *addr) { @@ -104,16 +80,6 @@ static void enetc_add_mac_addr_em_filter(struct enetc_mac_filter *filter, filter->mac_addr_cnt++; } -static void enetc_add_mac_addr_ht_filter(struct enetc_mac_filter *filter, - const unsigned char *addr) -{ - int idx = enetc_mac_addr_hash_idx(addr); - - /* add hash table entry */ - __set_bit(idx, filter->mac_hash_table); - filter->mac_addr_cnt++; -} - static void enetc_clear_mac_ht_flt(struct enetc_si *si, int si_idx, int type) { bool err = si->errata & ENETC_ERR_UCMCSWP; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/ethernet/freescale/enetc/enetc_pf.h index a26a12863855..a8b3c8d14254 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -5,19 +5,8 @@ #include #define ENETC_PF_NUM_RINGS 8 - -enum enetc_mac_addr_type {UC, MC, MADDR_TYPE}; #define ENETC_MAX_NUM_MAC_FLT ((ENETC_MAX_NUM_VFS + 1) * MADDR_TYPE) -#define ENETC_MADDR_HASH_TBL_SZ 64 -struct enetc_mac_filter { - union { - char mac_addr[ETH_ALEN]; - DECLARE_BITMAP(mac_hash_table, ENETC_MADDR_HASH_TBL_SZ); - }; - int mac_addr_cnt; -}; - #define ENETC_VLAN_HT_SIZE 64 enum enetc_vf_flags { From patchwork Fri Apr 11 09:57:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048204 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 703DEC369AA for ; Fri, 11 Apr 2025 11:19:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=WcrAIZirgylUNH88LMf2DUxNmDSlX2T413+4Roorcwg=; b=Xw/LkRUqMkuc+jUgMzj5r1VTpY kXivqnDLCeWDY7o2VbOkVUnAGyxEByx1ZOEF8z7a6xRJj0Ulf8DMiVB7AzzPj7u/0F/HcSUSGUcvS 20u+99n6qnKw6JmzsKG8Xa/dJl8ir4NkBNCiCCOecEy9RjHNLGWJG5s2BQg+k8lXOz0NP8wtT6z3L c9yLYF2QTzRwww9OdiutmSxVSsXWX6nnl9gMr2nkQibshVEV3vNhK/4oya8V/Mea3c4msw1Lul2Gl 0oE53poQQbHl0z6VL5eLblgFBt1AoTIuNtxmdoWCs9dP7jiMCLZgFLy4btltXShYKwRUQIa5ZkL+j +eUW4+fA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPY-0000000DUvw-2Za4; Fri, 11 Apr 2025 11:19:04 +0000 Received: from mail-am6eur05on20630.outbound.protection.outlook.com ([2a01:111:f403:2612::630] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BRn-0000000DLb6-120S for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MqKcrzIBFpd4Q7+7KpWLbHAJukzBGdHYDJnMNTHVPkntFh0Jh2v4lh4/5e0WhfOOnGSoo6vR8GM0I+KMVP7BGV30w1paUgFR/sGuySpR2ThzXMIYzY3n3qES1wwhojVtAZxXqOU3LCPujFCld22f/XjaD6vkbtXLqsC+HRXafJmLxWsZ1vHcdnKTjSiK2PquGvUw3BwdWt+LCAPsdjsOu53sCiKocgy6YCrcaP6y3KJYb9Q8yeoJqX11gy0tDO+tqWbsqbkXyyx2DIY8/u6RuT18/mGTGkdtzw9ubjprrgkPgz+a895yho4cXdOO0BDJeYxTfBC4/b4OkkJBr76fOQ== 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=WcrAIZirgylUNH88LMf2DUxNmDSlX2T413+4Roorcwg=; b=fn5NKeU5hgfvPkMV7r+9yiU0MYU2LnDPqAFcdwp1FanfHon4oZ9ZWkWHyDpL5XPSPX5UsGeid5eNyhuPiU1R4RrieBCDLBbn83S56koR8hRpcM04/wKlULfUHaZmn9GS2kGRJBSlC6gGLHzl7B/7/8dA/vjtKf0vjWmlg5cc0zVnVwLGdQouo+nn32kSTNmK1TdC3bGnHzPqDeSo2h1y682mbbUF/wnADA676gO1oT3uVDYPpTwGyJbbM5EZm0FqqHFvueJA6U96bT70XaEUv7wN36xVztZj4bpaIHS4w9wZY+YCP3Mf884hyilPAkywK9sVwlQ2zzzqG4yV1JWMZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WcrAIZirgylUNH88LMf2DUxNmDSlX2T413+4Roorcwg=; b=JMlCuX9JVfeNLMovDfrZvJo0lv+R3id47rdrWHElkYXlDQ2w0DTpP1F8MtjQH8vOpugFwe64L7QeIjmQa+b0D7ZE3gT9iMAlDKf2eQr4xkkxbpH+EsBEZQg7xLcWPHRgpzQ0RRm/Dm/7v0PSgKMpozp/mQ1B+dUSXYopwo1wl+a2INltoHnCJHhZXRBipZa2SIa+pxZQ/ukvoasQmWIBwZOpvs8gaz92ccOfxbmO+SP9BjpPwTlGDQhl9uCgeZUDpnr+7HH81FAC6XohMux89mLDNGf0tVn0HbujfTXIVs45ig9wgn55igBeyPawLHXjQ4z8eobVOC1h6rue6z8qzA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:17 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:17 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 04/14] net: enetc: add MAC filtering for i.MX95 ENETC PF Date: Fri, 11 Apr 2025 17:57:42 +0800 Message-Id: <20250411095752.3072696-5-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 00a7158e-7647-473f-dcbe-08dd78e2095f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: pnxPhnxYFphRnq6cNTIxJ404F6lKYlz5004fkhw4pk4kNbAqUddMpFnVmJdnhee7MBLdTiVvbVjMEm1SS8yi3Zf8maLB5Gds0uepy3AFJWSQY8Ns3S2miceugV+K6ibHzgIKJvD4NVLGayoYIuZcPuwzF7cXQp8ylkpV/DmiMEO2FqN8LeTyYmHaYo+E0llDIWfkyj+3Prt7XJLA19BrE6kcRt2BIM0O7TNN2XfNZmXAENRqgZ5LuuT9i6FTM/pd8YYDlqGyv+2J0PIXMxMye9E5DV2IgJXRiM7znXSvPclDAK2Hfa50JgwdVzCp+91gVPce5lXl2OfksUHrQQAWGTod3UfA7iKntGbHG7tj6qT4Gx699VUWxkFMiVtLz+iOUSbw9/hHpX+wjThbQPiIaPM4hvhCehijBOTtg50pIu/hyZV4A0wI0uK+0+eo2JHmRQ3Kqc1TkNdGh8YZwopzqfy05PuX+5pBEp/fdCK/7yBvvkWYEcnxQVBqYzvsTjOaX5yc4CJlBZ/AG6LnMS++INJDV1JwpT24zdw3s5EfB0ntwaSXjwhM0XoNhZKLDclrPJu0Wc5sDxl9jhzn8cpf194vK4ujE7OD4TZFhsUNNmnLiIel1i6IGGu3EBoKKd6EDfQWXjZ+HbT94sNCcYo4T1F2CYYeBYqB836PbpaAbM2WWTGTjWMlCfMP7YfCsQ8RjLj5yK6KxrN+h61PyXG0wPzP92X2yT5d17wIZdF3y2qHOMz3FCw8xFfIL8ilLYIBRYxjhKg2v5j/sDu5KJwfQgUZ/Rc2SM1Cq0N8q5Q1gMnC0sLCqhzYyD4WhlSOq6zbv3r9rxpZ0ClVSt9y/A69UgEwy6HCAh4JCJXSih9UdENTFGnAQ45DpB20jVA6nXomI22iNvrxww1RXuODKOhYOOWKeP40cKE6Q0Zq+AZa7NUDf9TiEQoCQbyGwWdNP0WmlnZJ0Ds4rzEL3TakGn/u2DYV+t4iE8Nvye0CSZL8KvMl+TfpOnfIOb0bBejEmYo6qMIXEXJ6wSVGeVM9qPPmNOyJPtzSqEX3S4KJCan82HMkAOeBkOKLJS1lzUha5IXVGESO+EKcZpg27S4jjAOxyj0kyBxIcOCjCLUR4dRWFK905VQDwRFRlHRDxcjV9QSYoLq2CWHPBXHbobOIqMesJ3294PEY57W0ZccEvlljwasCdNnaTC1Matp2Rnq7lJzyx4/+ab0ow+a9+vqYkUwOVQ1yIC1xOlzQIdYY214rE2kgq4Z1NwzzC6jMQYEWznfGxH9qoY/MNw2PXasLu2Yufmxb1swq1i3Kzb/yMCiSSdfTBTFMj8dyukXss7c5LaN3efzpwgDB0ulKJdBDkI6reSQeGg4ihKcGJj6c3nFOdnyrSfUoIPpLWjermHcvsDMXbPIrzEsjuBKFEH+anfdE++kZu54Ba5xy10/Ps+t+zqjhxs3mPRobDKdP2zOH+z0X/rPN2TszvGAVcYlorImdvg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yyLzRBkBVCJvTGR8tM5zPbYV1c7pPBfyUcOvszvFtkuu9UnOFb+zVutNTeAV0QmNjo9PFuVbzZI1uVxFryNgdebs7dzJu45AB7Lt0g8urHCbLzS9ECDlqV1Ns4yXObOI3n9JkzDigdjeFS8QvNw4mKmXZ9SVUXchditZY/e76tney93U5W8XDv+HVywfckNfkrTittc/xUbJ5Q9tPwZXswyTWbKhTPmhkQyssympjoFZ/rC1gvbxkqLILzQLP9p/eowbtXwgAVLFkDPJa7eMPCZqNmDvnQw7Cw0m1zTmGJ4mCaECS5dx61G5d5fq3C8IsYZ7/VLillxIyJJvmOSbTIlrw+KBfL7ZNAqrzjeJyFsoPHwmelU1Fq0g+x3XV5sTReC/X1uBUtPrMHNdRge2/mbSwAri6BBrQkZCY8q2wdaxsjXquHLifNjNJ83rqT0bN44+7A/8rKewUo5MrW5DNscQyaNxz2r4mUu+hkN8Vcj4vojnXqL/Bz7/5cyuchgvFAup0i1c/2PQq6EH/Db+ToVh6NE28juWCMPF2ljN4MKld1bHI8k3dHYZ4c/zCH1ZSh1MlI8EF/DU7TOuho+cUMyYKGMB/CUvuTG0vJ/32GNS2kvxRgy/fZSdurPRci+NbSXc5pFhbgi8kiPLBACoSONdpi+lLXSFxgnxQmwY1j5p4PybqwSY/fc4V86mvyCpjuBISO0dYSpV9Fb2NRH83OfwRNxqdwGml3q154JXVfFft6xTHXaZ+VPBdVcAf+SR6WAe2Tmpn9BbcLyjIvi3hzCTq8MZpbsbRLW/l5mPVt9RzHK+tG1Yqcdb4ypUmqCrq5O7cKIKyxVohloJGssnqH0usIJ7wrDbe/cUue4Fg6Marhywh2wgPZ1ZUx5KfyFMNzKmv1H0YtXDc4oPkKs76kF7g/pUiloA7ZazZufR1SAmV0YfCZyZyPdJ/Txch51sywo94Bredw0dw28YePvRXxHW1KJz5I/X8qJhFZjb46HYeBk2424s5qxP2OrPeZlMTMWeEPKyEqjqsnNq0Gs4qAchcxjtYEutiXWnL6YI7GS/tmjzNqoyeNNDYcas2Ewq5+Sll3BMOsV1I0QwrVdW5D256j7/aLrMapxj+BU4KiWBuNTOYgHkyQJP5IJkZyT+hXwD1r738tavrchmp1jNIxRwurDcS2pHSRwTS2GUYIYhbGlni2t9T/QGEXC8BY6Z/WKF0A184xYgd12PpBHZsk1P69A7w3Z8wRQHi5uTs63uKWBpYSxXYipFBU2yHs/svOV8r3Pfqwn2x7vAIAdyc0et1zII4koEX4iwy6aG5kjoq1aFtYnwB922BVInN2sEG0shgUkG8ZpYQ+2xG9Dxz2/9K8qlTynuKEJtSMGV4bbxiG3FvbDF3kRQhwLCsNhqCkljV+W+y+lxtYSc783EZGSO7tUuGc3T2YtkxifSh5gdsxhTLcteD6MklV43h3sTEhbAQbhmjjQkVX2X8Re0Z3xlEDLIsiQEzM8JzFL/zBph2oYAKfU+pRFSrYDxu2Kws6YINhpAvWuis2QXVSSzgr8Dr3Y10I+3G60GITsO51q3/t315d2kd5duX+CAI0Zp X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00a7158e-7647-473f-dcbe-08dd78e2095f X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:17.5395 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Qj9W8xPiVgU1eWThy47m6cl/uAebtELvU0F5j8EZeGlpZ3tHU39lGdn9zpS2WrfqjEbpBKGWAJ1lqME5K+nHqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031719_291661_9FFFA56B X-CRM114-Status: GOOD ( 22.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The i.MX95 ENETC supports both MAC hash filter and MAC exact filter. MAC hash filter is implenented through a 64-bit hash table to match against the hashed addresses, PF and VFs each have two MAC hash tables, one is for unicast and the other one is for multicast. But MAC exact filter is shared between SIs (PF and VFs), each table entry contains a MAC address that may be unicast or multicast and the entry also contains an SI bitmap field that indicates for which SIs the entry is valid. For i.MX95 ENETC, MAC exact filter only has 4 entries. According to the observation of the system default network configuration, the MAC filter will be configured with multiple multicast addresses, so MAC exact filter does not have enough entries to implement multicast filtering. Therefore, the current MAC exact filter is only used for unicast filtering. If the number of unicast addresses exceeds 4, then MAC hash filter is used. Note that both MAC hash filter and MAC exact filter can only be accessed by PF, VFs can notify PF to set its corresponding MAC filter through the mailbox mechanism of ENETC. But currently MAC filter is only added for i.MX95 ENETC PF. The MAC filter support of ENETC VFs will be supported in subsequent patches. Signed-off-by: Wei Fang --- v5 changes: 1. Refactor enetc4_pf_set_si_mac_promisc() 2. Split enetc4_pf_set_si_mac_hash_filter() into enetc4_pf_set_si_uc_hash_filter() and enetc4_pf_set_si_mc_hash_filter() 3. Rename enetc4_pf_wq_task_init() to enetc4_psi_wq_task_init() 4. Rename enetc4_pf_do_set_rx_mode() to enetc4_psi_do_set_rx_mode() 5. Remove mac_list_lock and mac_list related functions 6. Add enetc4_pf_clear_maft_entries() and enetc4_pf_add_maft_entries() 7. Refactor enetc4_pf_set_mac_exact_filter() and rename it to enetc4_pf_set_uc_exact_filter() --- drivers/net/ethernet/freescale/enetc/enetc.h | 3 + .../net/ethernet/freescale/enetc/enetc4_hw.h | 8 + .../net/ethernet/freescale/enetc/enetc4_pf.c | 251 +++++++++++++++++- .../net/ethernet/freescale/enetc/enetc_pf.h | 3 + 4 files changed, 264 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index c3ebb32ce50c..1573ff06fcf4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -301,6 +301,9 @@ struct enetc_si { int hw_features; const struct enetc_drvdata *drvdata; const struct enetc_si_ops *ops; + + struct workqueue_struct *workqueue; + struct work_struct rx_mode_task; }; #define ENETC_SI_ALIGN 32 diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h index 695cb07c74bc..826359004850 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h @@ -99,6 +99,14 @@ #define ENETC4_PSICFGR2(a) ((a) * 0x80 + 0x2018) #define PSICFGR2_NUM_MSIX GENMASK(5, 0) +/* Port station interface a unicast MAC hash filter register 0/1 */ +#define ENETC4_PSIUMHFR0(a) ((a) * 0x80 + 0x2050) +#define ENETC4_PSIUMHFR1(a) ((a) * 0x80 + 0x2054) + +/* Port station interface a multicast MAC hash filter register 0/1 */ +#define ENETC4_PSIMMHFR0(a) ((a) * 0x80 + 0x2058) +#define ENETC4_PSIMMHFR1(a) ((a) * 0x80 + 0x205c) + #define ENETC4_PMCAPR 0x4004 #define PMCAPR_HD BIT(8) #define PMCAPR_FP GENMASK(10, 9) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index 175eebadde76..4c2d944d6b05 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -11,6 +11,15 @@ #define ENETC_SI_MAX_RING_NUM 8 +#define ENETC_MAC_FILTER_TYPE_UC BIT(0) +#define ENETC_MAC_FILTER_TYPE_MC BIT(1) +#define ENETC_MAC_FILTER_TYPE_ALL (ENETC_MAC_FILTER_TYPE_UC | \ + ENETC_MAC_FILTER_TYPE_MC) + +struct enetc_mac_addr { + u8 addr[ETH_ALEN]; +}; + static void enetc4_get_port_caps(struct enetc_pf *pf) { struct enetc_hw *hw = &pf->si->hw; @@ -26,6 +35,9 @@ static void enetc4_get_port_caps(struct enetc_pf *pf) val = enetc_port_rd(hw, ENETC4_PMCAPR); pf->caps.half_duplex = (val & PMCAPR_HD) ? 1 : 0; + + val = enetc_port_rd(hw, ENETC4_PSIMAFCAPR); + pf->caps.mac_filter_num = val & PSIMAFCAPR_NUM_MAC_AFTE; } static void enetc4_pf_set_si_primary_mac(struct enetc_hw *hw, int si, @@ -56,6 +68,180 @@ static void enetc4_pf_get_si_primary_mac(struct enetc_hw *hw, int si, put_unaligned_le16(lower, addr + 4); } +static void enetc4_pf_set_si_mac_promisc(struct enetc_hw *hw, int si, + bool uc_promisc, bool mc_promisc) +{ + u32 val = enetc_port_rd(hw, ENETC4_PSIPMMR); + + if (uc_promisc) + val |= PSIPMMR_SI_MAC_UP(si); + else + val &= ~PSIPMMR_SI_MAC_UP(si); + + if (mc_promisc) + val |= PSIPMMR_SI_MAC_MP(si); + else + val &= ~PSIPMMR_SI_MAC_MP(si); + + enetc_port_wr(hw, ENETC4_PSIPMMR, val); +} + +static void enetc4_pf_set_si_uc_hash_filter(struct enetc_hw *hw, int si, + u64 hash) +{ + enetc_port_wr(hw, ENETC4_PSIUMHFR0(si), lower_32_bits(hash)); + enetc_port_wr(hw, ENETC4_PSIUMHFR1(si), upper_32_bits(hash)); +} + +static void enetc4_pf_set_si_mc_hash_filter(struct enetc_hw *hw, int si, + u64 hash) +{ + enetc_port_wr(hw, ENETC4_PSIMMHFR0(si), lower_32_bits(hash)); + enetc_port_wr(hw, ENETC4_PSIMMHFR1(si), upper_32_bits(hash)); +} + +static void enetc4_pf_clear_maft_entries(struct enetc_pf *pf) +{ + int i; + + for (i = 0; i < pf->num_mfe; i++) + ntmp_maft_delete_entry(&pf->si->ntmp_user, i); + + pf->num_mfe = 0; +} + +static int enetc4_pf_add_maft_entries(struct enetc_pf *pf, + struct enetc_mac_addr *mac, + int mac_cnt) +{ + struct maft_entry_data maft = {}; + u16 si_bit = BIT(0); + int i, err; + + maft.cfge.si_bitmap = cpu_to_le16(si_bit); + for (i = 0; i < mac_cnt; i++) { + ether_addr_copy(maft.keye.mac_addr, mac[i].addr); + err = ntmp_maft_add_entry(&pf->si->ntmp_user, i, &maft); + if (unlikely(err)) { + pf->num_mfe = i; + goto clear_maft_entries; + } + } + + pf->num_mfe = mac_cnt; + + return 0; + +clear_maft_entries: + enetc4_pf_clear_maft_entries(pf); + + return err; +} + +static int enetc4_pf_set_uc_exact_filter(struct enetc_pf *pf) +{ + int max_num_mfe = pf->caps.mac_filter_num; + struct enetc_mac_filter mac_filter = {}; + struct net_device *ndev = pf->si->ndev; + struct enetc_hw *hw = &pf->si->hw; + struct enetc_mac_addr *mac_tbl; + struct netdev_hw_addr *ha; + int i = 0, err = 0; + int mac_cnt; + + netif_addr_lock_bh(ndev); + + mac_cnt = netdev_uc_count(ndev); + if (mac_cnt > max_num_mfe) { + err = -ENOSPC; + goto unlock_netif_addr; + } + + /* No need to set MAC exact filter */ + if (!mac_cnt) + goto unlock_netif_addr; + + mac_tbl = kcalloc(mac_cnt, sizeof(*mac_tbl), GFP_ATOMIC); + if (!mac_tbl) { + err = -ENOMEM; + goto unlock_netif_addr; + } + + netdev_for_each_uc_addr(ha, ndev) { + enetc_add_mac_addr_ht_filter(&mac_filter, ha->addr); + ether_addr_copy(mac_tbl[i++].addr, ha->addr); + } + + netif_addr_unlock_bh(ndev); + + /* Set temporary unicast hash filters in case of Rx loss when + * updating MAC address filter table + */ + enetc4_pf_set_si_uc_hash_filter(hw, 0, *mac_filter.mac_hash_table); + enetc4_pf_clear_maft_entries(pf); + + if (!enetc4_pf_add_maft_entries(pf, mac_tbl, i)) + enetc4_pf_set_si_uc_hash_filter(hw, 0, 0); + + kfree(mac_tbl); + + return 0; + +unlock_netif_addr: + netif_addr_unlock_bh(ndev); + + return err; +} + +static void enetc4_pf_set_mac_hash_filter(struct enetc_pf *pf, int type) +{ + struct net_device *ndev = pf->si->ndev; + struct enetc_mac_filter *mac_filter; + struct enetc_hw *hw = &pf->si->hw; + struct netdev_hw_addr *ha; + + netif_addr_lock_bh(ndev); + if (type & ENETC_MAC_FILTER_TYPE_UC) { + mac_filter = &pf->mac_filter[UC]; + enetc_reset_mac_addr_filter(mac_filter); + netdev_for_each_uc_addr(ha, ndev) + enetc_add_mac_addr_ht_filter(mac_filter, ha->addr); + + enetc4_pf_set_si_uc_hash_filter(hw, 0, + *mac_filter->mac_hash_table); + } + + if (type & ENETC_MAC_FILTER_TYPE_MC) { + mac_filter = &pf->mac_filter[MC]; + enetc_reset_mac_addr_filter(mac_filter); + netdev_for_each_mc_addr(ha, ndev) + enetc_add_mac_addr_ht_filter(mac_filter, ha->addr); + + enetc4_pf_set_si_mc_hash_filter(hw, 0, + *mac_filter->mac_hash_table); + } + netif_addr_unlock_bh(ndev); +} + +static void enetc4_pf_set_mac_filter(struct enetc_pf *pf, int type) +{ + /* Currently, the MAC address filter table (MAFT) only has 4 entries, + * and multiple multicast addresses for filtering will be configured + * in the default network configuration, so MAFT is only suitable for + * unicast filtering. If the number of unicast addresses exceeds the + * table capacity, the MAC hash filter will be used. + */ + if (type & ENETC_MAC_FILTER_TYPE_UC && enetc4_pf_set_uc_exact_filter(pf)) { + /* Clear the old MAC exact filter */ + enetc4_pf_clear_maft_entries(pf); + /* Fall back to the MAC hash filter */ + enetc4_pf_set_mac_hash_filter(pf, ENETC_MAC_FILTER_TYPE_UC); + } + + if (type & ENETC_MAC_FILTER_TYPE_MC) + enetc4_pf_set_mac_hash_filter(pf, ENETC_MAC_FILTER_TYPE_MC); +} + static const struct enetc_pf_ops enetc4_pf_ops = { .set_si_primary_mac = enetc4_pf_set_si_primary_mac, .get_si_primary_mac = enetc4_pf_get_si_primary_mac, @@ -303,12 +489,55 @@ static void enetc4_pf_free(struct enetc_pf *pf) enetc4_free_ntmp_user(pf->si); } +static void enetc4_psi_do_set_rx_mode(struct work_struct *work) +{ + struct enetc_si *si = container_of(work, struct enetc_si, rx_mode_task); + struct enetc_pf *pf = enetc_si_priv(si); + struct net_device *ndev = si->ndev; + struct enetc_hw *hw = &si->hw; + bool uc_promisc = false; + bool mc_promisc = false; + int type = 0; + + if (ndev->flags & IFF_PROMISC) { + uc_promisc = true; + mc_promisc = true; + } else if (ndev->flags & IFF_ALLMULTI) { + mc_promisc = true; + type = ENETC_MAC_FILTER_TYPE_UC; + } else { + type = ENETC_MAC_FILTER_TYPE_ALL; + } + + enetc4_pf_set_si_mac_promisc(hw, 0, uc_promisc, mc_promisc); + + if (uc_promisc) { + enetc4_pf_set_si_uc_hash_filter(hw, 0, 0); + enetc4_pf_clear_maft_entries(pf); + } + + if (mc_promisc) + enetc4_pf_set_si_mc_hash_filter(hw, 0, 0); + + /* Set new MAC filter */ + enetc4_pf_set_mac_filter(pf, type); +} + +static void enetc4_pf_set_rx_mode(struct net_device *ndev) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_si *si = priv->si; + + queue_work(si->workqueue, &si->rx_mode_task); +} + static const struct net_device_ops enetc4_ndev_ops = { .ndo_open = enetc_open, .ndo_stop = enetc_close, .ndo_start_xmit = enetc_xmit, .ndo_get_stats = enetc_get_stats, .ndo_set_mac_address = enetc_pf_set_mac_addr, + .ndo_set_rx_mode = enetc4_pf_set_rx_mode, }; static struct phylink_pcs * @@ -714,6 +943,19 @@ static void enetc4_pf_netdev_destroy(struct enetc_si *si) free_netdev(ndev); } +static int enetc4_psi_wq_task_init(struct enetc_si *si) +{ + char wq_name[24]; + + INIT_WORK(&si->rx_mode_task, enetc4_psi_do_set_rx_mode); + snprintf(wq_name, sizeof(wq_name), "enetc-%s", pci_name(si->pdev)); + si->workqueue = create_singlethread_workqueue(wq_name); + if (!si->workqueue) + return -ENOMEM; + + return 0; +} + static int enetc4_pf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -748,10 +990,14 @@ static int enetc4_pf_probe(struct pci_dev *pdev, return err; pf = enetc_si_priv(si); - err = enetc4_pf_init(pf); + err = enetc4_psi_wq_task_init(si); if (err) return err; + err = enetc4_pf_init(pf); + if (err) + goto err_pf_init; + enetc_get_si_caps(si); err = enetc4_pf_netdev_create(si); @@ -762,6 +1008,8 @@ static int enetc4_pf_probe(struct pci_dev *pdev, err_netdev_create: enetc4_pf_free(pf); +err_pf_init: + destroy_workqueue(si->workqueue); return err; } @@ -773,6 +1021,7 @@ static void enetc4_pf_remove(struct pci_dev *pdev) enetc4_pf_netdev_destroy(si); enetc4_pf_free(pf); + destroy_workqueue(si->workqueue); } static const struct pci_device_id enetc4_pf_id_table[] = { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/ethernet/freescale/enetc/enetc_pf.h index a8b3c8d14254..ae407e9e9ee7 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -23,6 +23,7 @@ struct enetc_port_caps { int num_msix; int num_rx_bdr; int num_tx_bdr; + int mac_filter_num; }; struct enetc_pf; @@ -60,6 +61,8 @@ struct enetc_pf { struct enetc_port_caps caps; const struct enetc_pf_ops *ops; + + int num_mfe; /* number of mac address filter table entries */ }; #define phylink_to_enetc_pf(config) \ From patchwork Fri Apr 11 09:57:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048199 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7ADBBC36010 for ; Fri, 11 Apr 2025 11:19:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=KXE6mMkbt6EIDL5T75YbEsWR/LDSOOWXmbxGTZ1Wjys=; b=n9DKw1X6d1imPHaaeK2QnEXYk1 Et9myGtavSp9kloRgufKRwNV7q/cfdirVFwAiRk/ObdujFk7JKMi3DBJuGD4U9dYlKB1bfN6g8aTf 1NoUF/7VyEnnqNp+9ySHPhO8IGk2Ve3lx9uQcdgi5NIewhL89AZuqPUaMT5pNpULU+eGWPI36eJeq MQOiQk1yKC0CEvBX0DWw5ixLljaVdy1qeYQY6iGYluh966JIpt8/4OgbTDGXcip46ieZG/IhAmHn3 Q+OynUyeJbx+u5L1xVQ0RgPWSrM3yLvH2xLNO49fnS9IXkQ/775f8M3wRjd7kzi+FHMsbrXOnrnrE DUdgNVyA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPZ-0000000DUw2-0myQ; Fri, 11 Apr 2025 11:19:05 +0000 Received: from mail-am6eur05on2062a.outbound.protection.outlook.com ([2a01:111:f403:2612::62a] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BRu-0000000DLcq-285m for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J7NqVmPkWxieedXA9viTrGVjO9R6acYIQSrXcjpmEsxFr2+QlvLJpO8pLgwKC7+QJVrvANhPWR5HNHz12fDuI5EOXhYhR1NzRuUvQAGfOn+3P8Vcu/bS0Gw/nrqwO6g/jABt1nfsocywszeQyOy5cvSOmTOW0hb/WZyVSGYZHKRB8ZFIoKUwDhLphY9qTgt/ps86u21CUKIc1GA0HRcg/w3qtt+8Fryu8prBgYGqT4xgMqy4eb7gNS3tGnCKEN1HEMDX1BRdunHu1PQ2v8xQRzg0161Z/sB5UsUjtuVxwsdKywkiq+MxTDYWHmfT65Jq4KXWEBLK4w8beaBPrkyDeQ== 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=KXE6mMkbt6EIDL5T75YbEsWR/LDSOOWXmbxGTZ1Wjys=; b=Gtbb9ugYiTJLrGD7rEaDMp6eFrHsR47inX1+jZ3tWGvMyMvH2mvovl1UL9fqYpWjG1zOGsmDfejKE+jb+X1WDrqRP6EXIr88OvWa3nA/MIwWgrVXNulA71/kIkDzm9cVrZgDa17jf8A1Imzv6Ik5g2HovJTf5mirHaUkjjii8TZgGJ8QhygqLLoL+JFjKcv9MljwJUWKWY6VMS6zDQdgRbCyRykwfdu54IATAoLC/feUfoD7+7Q7C6ttg/+Cc2OLe097r20V36BPp1s7/hK/KoAK106xifeKrRJ5UzPkqjwimxLdHKc+raWtzyzlLeXD5bMaTrc20FIYSxoVSsJXpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KXE6mMkbt6EIDL5T75YbEsWR/LDSOOWXmbxGTZ1Wjys=; b=Z4JtJUVAUn8EV/215lb3dwZVPGw7ykkw0qYC9AqOQbM/xKUVfyAQuiSuf/Gsg77bY1loBvHc52rDDxEz4BU8DlaMxzDSMGZy3+7vFg5I+m9uYITkAjcmCt10Sd5SuWkR8vVIu3OEeEJCxF6jlL7m4nKYVxsOnCtq6jVOVK7NY0DyAWNr+NyZ9VePxfeQWcauVMG5hpMjYSXLoHtjHkzxYJ0MI3wT+HMckjcgtwQZX/H0klv2EeKiGPN39LTmXYDbG2Dejz5P8pFKGAezUdDyipak+W0s9aIB0r/SjZf+qPHLD4LHwkAKefCGw4gKUravcjFMDvPGTcnYeDHzujTivg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:22 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:22 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 05/14] net: enetc: add debugfs interface to dump MAC filter Date: Fri, 11 Apr 2025 17:57:43 +0800 Message-Id: <20250411095752.3072696-6-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: a1a12d4d-4cc1-4be6-fcb7-08dd78e20c52 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: xOGqvCplIxIWBX6Bq4N5WaG2C+gD2MDA3TxZfkGqNKGT6KflR7ThzS22Cf0eN8YftJ+y0W0sT7+OSJUg5YG2dc1yXtzDI6T2IV4PmypaEArbrMdXqG30QNQXgiOHTq7FfuQE4Ihn65s8K2NOjcDHmJR5U8pbyHwmcQVQ9HsYqTi28WdMptAUDB2f/GOcUccP1f6jprDdHsw68c/vBz+mPkHss1TxXB02oZ7i1DCKG7C9Py66+5FENdSVMpF9IEetACUNobNGJRLh4zj9jHs8QGp0R4Um6JJ4rvFoxIAzqMYWe9OyQHI76XF/hBg3Bx79ZXbVTRz0weQShEmJEdfZPaPebcd1KVn3DDvfPmFsqNnxYhXQvajYcyT0viM0TsmpOhr0GtiB6XZCBDt+skSUxkreQtztWz/OJb6Q+t2p9dt+kQpjaMgNgGxAIpHDzwyT0MoVWy0BQ3r9z3v3YXtCJjE0zTk5NX3YWCuV5cPV7y3I0SJfASKNuehzLRN+zSaIzZ1dRK/+Zw4DmGEo4Y6hc8qNFOvpT1Lrnv7ZJoxz10QJnJqSXVlAVA1TBh7GNQvVKCx/FlX6p+om8eGaGg9kddeL3u3+nZsJJb7AQNfe5iPafxUyLkznI8FOAQBQOLOHX/KAnrevC7CRcsgE2DH6zdD+X2Z9Jjo/WVqst0i9OgwlSnK4lHusCxYqnoE+J3vVOZCv9MvUFHyQbjRrlgcyjT76IuD7wO6I51LGh8mUgZSOwNGgd03hTn3bUvGxK6gVMDnFvNm0CMr35Sdxnn2ngQ8xWJa+VgtQ1sUshVdzSsntSZd5boiauI6uxFI7JPqTwE3Mtqwj3BMOyqtg7eYUd2nAclUpfln/xXHQE15qdoxWMhUXI5QnYpyVCQZ8hFJQIApVDchyplwK6PPPZOfRk2umJwrzSifz5MC79s4hdgvb9/FBNYNJWN0KJUKpo2x3Rs9RJ5/vE+IqXQXjXvVhVKMXiL9jPRLI3oCi0LWvFI1sgk24uW/F892s+XDAaYuj9DYhSD46nFYnCK/WdpQJYvQj2PovGLPDqPWFGeTFo2XAEYug60kJWlLwPRa2Y3yXdg1FAw2NAkxeuVBus70D1WwDPyJQ8EJzrf/hoRqQsYllJVK3u+R+UAQA3fFQfTFdbZ3+8q6tGhTZmu3c+yXikjOzWRrhmpGdlZqGHMmhNYEa4b90y9wrJepOUMd7wNGJrOiXrg9sbu/Kg/ZN2fKcuogoKhjCbP3KKqh03irUp08XmvAd4iWXXteVRdSGVoxD/cWczVwEIig4tBd6QwEYuoZa74a1o876QccdMvqV2+MSFlrNohelAN1ADwqy6k8jcufMpQ2QviUEUezcQ0rUn9GdSmnx0MQ0QXKu2W1TbHaO9jEQLKjf8wRP/EhpPX0r1Jn7OWf6/iRSTnDxKR3zBbu8Hw1lXfJOWfvM41KQ8droahfFYGU9trxNJlE12/4wsUSB7tFRxE4YeUkbtQMi1A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lU0/YiSO+5DTOmWuaHWiY7sjebAZlWU+64RONbRusBX6N22N4lvAnmMRVgusSUbmMn/F6wuSo1VPomiFQDUy0Eljtg09ekLn4sPLZrOcbkRI574XBJs8MJXrhVWjrP0gdxj+pZrQp3VoImGXsZdNM2nQSB+4wCbRAAXKPo3+fVlJkFCS3c2AHN/it+bfAbzbBmwW5EWJk/HBRFsITttXLQYvSbg8fZjiAvHlrrMFyGB7geuQQArphAbmR42fwVdJw7scwgVOtkyZyfAW8ofZMqS1Ha9sLxr/I/legbP6icGAWaQRHvvuulgQ+Hs+5BNO5l2cyvJBG9Bvc60oabb3jjaKEjKR45Kpil+1iTPUDTljX4kN0iZ0DnA17VsVzNGJrwjqjFTbX/xwwgCYEgrv8E4SSk+oomSTrmNKy8kg1SxFY8Rl6q1+VbEGI8WbMqSV5Xo+gKCAR1jtv9rKS3T3WPyi+msmZGZDA3Qho9RTDKGVPEL8HDl+P+l3JhmldUn6BipSI32xOC68zv8WkJvB/6JT0dskUDqmxNNy7DzUS70Gv5ExeQ6nYERtm56rKpe1rbErKAntXEPvxr6UTYu0fPw/F+nn50HNnypohf9hHW1zLe6VzmysofpaAh/7GjMBttvDMs0MCV618823Moe3uOuhMoRCyQPGhpEv/nQfW+vbvhVm0AZ8ZmNj/Hk3wK3SkzjMfWBT3PrJdCdbRvCNvJ+cM66dN2mJzO7sshq6inr7AKakhzBCWAiaI08uh6lelgn0ApiEhO/RVfDQczz6/zR5aE61VEzXKpYNFbK501zyLSl/mndwA+zHkYwHWMr8niuNsWX9dwRLT400N8D04y6JjrOcZGrujcr8lR8drplyNhshBUYBzgcKZSgpRbU/ajLynge3y66TyoWgv4/XjkbY6IEf0A8iPkNOrCIUssldHiG+BK756zJzX3N1FNDceAZeZg2bSZvIfLbUQ37J+VN9opw9SYIZ48oNlS34x/UeU62QqIimEG5tB+Mv8ntMHirncpEbbO17pQp3vbddtJeB2OjMV+nr6RbCQdCz8Y9C6AhP5h+JUlv/h8AKSngeet0xPSp7wU9YJgDc+JfFFHCsKQ19j2dr3Q36aaFXLTyFycl6J6sAnOb14pLAvb5R9rX5z/5KHd8J27SLEWj6VlSAmjLuczLLm5TwFYEfaVct1B6o6tV6FMPBu1Fru7nIrg4ASnIP6i3lI8cLlI81Nc8yUL6oCENhO/CBJZElgBvbWsZ5FFomFdxu/vucxQDdkHMMeBpgBsgqDKEFF5/6KKoMgBRckcZI5uTUMjf87Wuu/S7dXaNS04CuYZDfttQBaANquALDD0NGAtRZ5CDUcPS/x/p1RxQ2176nKg8cR4M8rSePBJmHh0lP3vqPXINPUd0d1cdYevzsR5mCHdvvQidWSEfJfOVHQm2HQJctPMgl/zaQQ9OA0pqKe6Qts8/d19cbl47XyXY8pgSXwSixITWjzpVnyOzbRocZi+aU/TR/w8FDs+Lovx9oYt/pZPyqtNrxzMY2D3HlcAxGzVygGdp/6oLUV14UV7c1DP88EYvaqXvjxt4Fm+adOv+VhZVF X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1a12d4d-4cc1-4be6-fcb7-08dd78e20c52 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:22.4749 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WZ7pzdvn+GpqgZe9ggv9GGibbqtEOPtVHAuTr2aBwkfIts9VxQfqFNbZOtRXoXMkaqwzfebe+433fBjj+ckY4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031726_696427_E8639FCC X-CRM114-Status: GOOD ( 22.87 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org ENETC's MAC filter consists of hash MAC filter and exact MAC filter. Hash MAC filter is a 64-bit entry hash table consisting of two 32-bit registers. Exact MAC filter is implemented by configuring MAC address filter table through command BD ring. The table is stored in ENETC's internal memory and needs to be read through command BD ring. In order to facilitate debugging, added a debugfs interface to get the relevant information about MAC filter. Signed-off-by: Wei Fang --- v5 changes: 1. Replace is_en() with str_enabled_disabled() 2. Remove superfluous "Show" in the debug log 3. Remove keye variable from enetc_mac_filter_show() --- drivers/net/ethernet/freescale/enetc/Makefile | 1 + drivers/net/ethernet/freescale/enetc/enetc.h | 1 + .../ethernet/freescale/enetc/enetc4_debugfs.c | 90 +++++++++++++++++++ .../ethernet/freescale/enetc/enetc4_debugfs.h | 20 +++++ .../net/ethernet/freescale/enetc/enetc4_pf.c | 4 + 5 files changed, 116 insertions(+) create mode 100644 drivers/net/ethernet/freescale/enetc/enetc4_debugfs.c create mode 100644 drivers/net/ethernet/freescale/enetc/enetc4_debugfs.h diff --git a/drivers/net/ethernet/freescale/enetc/Makefile b/drivers/net/ethernet/freescale/enetc/Makefile index 707a68e26971..f1c5ad45fd76 100644 --- a/drivers/net/ethernet/freescale/enetc/Makefile +++ b/drivers/net/ethernet/freescale/enetc/Makefile @@ -16,6 +16,7 @@ fsl-enetc-$(CONFIG_FSL_ENETC_QOS) += enetc_qos.o obj-$(CONFIG_NXP_ENETC4) += nxp-enetc4.o nxp-enetc4-y := enetc4_pf.o +nxp-enetc4-$(CONFIG_DEBUG_FS) += enetc4_debugfs.o obj-$(CONFIG_FSL_ENETC_VF) += fsl-enetc-vf.o fsl-enetc-vf-y := enetc_vf.o diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index 1573ff06fcf4..b53ecc882a90 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -304,6 +304,7 @@ struct enetc_si { struct workqueue_struct *workqueue; struct work_struct rx_mode_task; + struct dentry *debugfs_root; }; #define ENETC_SI_ALIGN 32 diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_debugfs.c b/drivers/net/ethernet/freescale/enetc/enetc4_debugfs.c new file mode 100644 index 000000000000..3479c0abe9e6 --- /dev/null +++ b/drivers/net/ethernet/freescale/enetc/enetc4_debugfs.c @@ -0,0 +1,90 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* Copyright 2025 NXP */ + +#include +#include +#include +#include + +#include "enetc_pf.h" +#include "enetc4_debugfs.h" + +static void enetc_show_si_mac_hash_filter(struct seq_file *s, int i) +{ + struct enetc_si *si = s->private; + struct enetc_hw *hw = &si->hw; + u32 hash_h, hash_l; + + hash_l = enetc_port_rd(hw, ENETC4_PSIUMHFR0(i)); + hash_h = enetc_port_rd(hw, ENETC4_PSIUMHFR1(i)); + seq_printf(s, "SI %d unicast MAC hash filter: 0x%08x%08x\n", + i, hash_h, hash_l); + + hash_l = enetc_port_rd(hw, ENETC4_PSIMMHFR0(i)); + hash_h = enetc_port_rd(hw, ENETC4_PSIMMHFR1(i)); + seq_printf(s, "SI %d multicast MAC hash filter: 0x%08x%08x\n", + i, hash_h, hash_l); +} + +static int enetc_mac_filter_show(struct seq_file *s, void *data) +{ + struct enetc_si *si = s->private; + struct enetc_hw *hw = &si->hw; + struct maft_entry_data maft; + struct enetc_pf *pf; + int i, err, num_si; + u32 val; + + pf = enetc_si_priv(si); + num_si = pf->caps.num_vsi + 1; + + val = enetc_port_rd(hw, ENETC4_PSIPMMR); + for (i = 0; i < num_si; i++) { + seq_printf(s, "SI %d Unicast Promiscuous mode: %s\n", i, + str_enabled_disabled(PSIPMMR_SI_MAC_UP(i) & val)); + seq_printf(s, "SI %d Multicast Promiscuous mode: %s\n", i, + str_enabled_disabled(PSIPMMR_SI_MAC_MP(i) & val)); + } + + /* MAC hash filter table */ + for (i = 0; i < num_si; i++) + enetc_show_si_mac_hash_filter(s, i); + + if (!pf->num_mfe) + return 0; + + /* MAC address filter table */ + seq_puts(s, "MAC address filter table\n"); + for (i = 0; i < pf->num_mfe; i++) { + memset(&maft, 0, sizeof(maft)); + err = ntmp_maft_query_entry(&si->ntmp_user, i, &maft); + if (err) + return err; + + seq_printf(s, "Entry %d, MAC: %pM, SI bitmap: 0x%04x\n", i, + maft.keye.mac_addr, le16_to_cpu(maft.cfge.si_bitmap)); + } + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(enetc_mac_filter); + +void enetc_create_debugfs(struct enetc_si *si) +{ + struct net_device *ndev = si->ndev; + struct dentry *root; + + root = debugfs_create_dir(netdev_name(ndev), NULL); + if (IS_ERR(root)) + return; + + si->debugfs_root = root; + + debugfs_create_file("mac_filter", 0444, root, si, &enetc_mac_filter_fops); +} + +void enetc_remove_debugfs(struct enetc_si *si) +{ + debugfs_remove_recursive(si->debugfs_root); + si->debugfs_root = NULL; +} diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_debugfs.h b/drivers/net/ethernet/freescale/enetc/enetc4_debugfs.h new file mode 100644 index 000000000000..96caca35f79d --- /dev/null +++ b/drivers/net/ethernet/freescale/enetc/enetc4_debugfs.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ +/* Copyright 2025 NXP */ + +#ifndef __ENETC4_DEBUGFS_H +#define __ENETC4_DEBUGFS_H + +#if IS_ENABLED(CONFIG_DEBUG_FS) +void enetc_create_debugfs(struct enetc_si *si); +void enetc_remove_debugfs(struct enetc_si *si); +#else +static inline void enetc_create_debugfs(struct enetc_si *si) +{ +} + +static inline void enetc_remove_debugfs(struct enetc_si *si) +{ +} +#endif + +#endif diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index 4c2d944d6b05..bbe16c140875 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -8,6 +8,7 @@ #include #include "enetc_pf_common.h" +#include "enetc4_debugfs.h" #define ENETC_SI_MAX_RING_NUM 8 @@ -1004,6 +1005,8 @@ static int enetc4_pf_probe(struct pci_dev *pdev, if (err) goto err_netdev_create; + enetc_create_debugfs(si); + return 0; err_netdev_create: @@ -1019,6 +1022,7 @@ static void enetc4_pf_remove(struct pci_dev *pdev) struct enetc_si *si = pci_get_drvdata(pdev); struct enetc_pf *pf = enetc_si_priv(si); + enetc_remove_debugfs(si); enetc4_pf_netdev_destroy(si); enetc4_pf_free(pf); destroy_workqueue(si->workqueue); From patchwork Fri Apr 11 09:57:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048195 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 94E66C369A8 for ; Fri, 11 Apr 2025 11:19:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version: Content-Transfer-Encoding:Content-Type:References:In-Reply-To:Message-Id:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=o4PDo7S25nbumDzP4V65kvg0syGRtWi02tga+8OkrCg=; b=qOCwY+p55+AoN9om8YuxjPFzTv ACscoOaYHgiExUeBjm7bmYexwabs3FFh+KVhG7JqtIt2xPmrCHsoo9OkmQOqa/EQ+5D1ReeWKTPVe PStiN4LyioVaBfcSmtONFxDoE/4v6ZH2SgCe3MxHb7cluodYtmrSa1dWjrlcshCP1aBtmj3b+kTly 4idpWLSHW5P2GVxwbZRNDnEi4gXqHO05N6poojhWfPDGOSELQeJDTohXQyo4BhzkwdOUZf2lvgWrV Qs9bOEjJxKjX8JFmxrfNzhMTSk3i1PVWEoZHgyaBKzGItGn75MxRciG6Ya084tuCndQ4B7rbsiY7p hGrzTl9g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPZ-0000000DUwF-3KuB; Fri, 11 Apr 2025 11:19:05 +0000 Received: from mail-am6eur05on2060b.outbound.protection.outlook.com ([2a01:111:f403:2612::60b] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BRx-0000000DLdw-35v5 for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WKqv6f4ddR4OTn8JqtxsKvMsx2lkEvmjuFLI4kyrxKUOpnt/Mo3hf3Br5pvX+0esSmnB/FHfRTGEonKPL5vN8j2763gkDKoq18RMhfQ+eAX6lY1nmyN1u6bAJuhv3bz9YJe9PDN2il/1cytSfIwy96szCZG4u5OQmjWXPsv1QG5FIwSuLuZSSPn6V6un+w4gEAiuGi7wUmWbGGPVXP3OIcHqNzQzdYZ/oGW+JitQUSeceQ3datEdq8z1XcFQTMkhmYxfRqTcwTC6RvTs/uhMwG2JuG9j9TyuTnwbD1iyTI2bUKlL+/8NVezUxVE99iFhmhTrjWBwikDefQ7+NtcOhw== 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=o4PDo7S25nbumDzP4V65kvg0syGRtWi02tga+8OkrCg=; b=bHmnDTn5d6115L1Vn4oFiWT3xBNlfS8Uvcycv4knu4PJPKWnzxwVXkJR1sbyZcOfQI8evFi53IfhuLNkt6Jlw0bAKE80CoEw1HHRxQHkuJEnH/phAfpyeuwUEos63v+PPu3k0tTq6lJZC4qBLx09k8Am1ibHxStRiv3/SCRrTAbkBsnB3dyx+gNiyFzftgIqbuo2MwijG+qA9m3oYzYJze7MjhOZrQ7JVhBB0lgZaprQ/UmQ3MWhPuSFkQPi/0j04AU95J7TGBTP/U/Thy2qrvYT0w/IG1azHEAMqqpnVMfBierjvaGtXhOOoMdnw7yX2EwN93KWCvdCbeiDfTz08A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o4PDo7S25nbumDzP4V65kvg0syGRtWi02tga+8OkrCg=; b=Ot9KRibOTrEdm2oi8sPQvSE3SKHWcs61gog3zrKz05/9UPP47sE+FSdujs9+b8sZZNtXAJoPrNSmGJtQecAVuCgvWdL7j3TX3JTzmZUopzgcuXT8mkEqGqwIvRjVFmVGpKdN5Kb/CynNUWNX5QCHgkOAGOX52dGXuFuaxaq/TOPH5ME7KZ7/Jc6qNqLTghy82flDjnM+4UDKIXSe/qAMYxRTI0UVr3c1U6yr0sEOZkUIF+M1OUeWeJDXv5FBwOnrVQVTcOvv3B4GNFic3Pwu+O+imJjGoGC/BdKs9XIjX2K2rrN6nd1dZcknbHO6lXkSrGdcR1OQC5SxT2vWuQrROg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:27 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:27 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 06/14] net: enetc: add set/get_rss_table() hooks to enetc_si_ops Date: Fri, 11 Apr 2025 17:57:44 +0800 Message-Id: <20250411095752.3072696-7-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 230eab67-0320-4b00-984b-08dd78e20f3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: DtU1GYkQw+Va4TiSKMefucmgO1bxV28elFhWUCdjnLuvd/6ZzVKNK6MytYMUh6TAuGcwXYt+bHYxx/YNcA9UrnYiOsISFbXqm5gunzY2jBeRdqxBLnOgPRewaXZVza99lxE7GZ7MIrEZDcsETv/V8xYlTxHTqYbzUXGBqOVx1rjxoGgTCUYeqJozJilD8xSFMEWCr+cxMmQjhry1Feg/D9B0nsT+WXuM3eTJ1tKf7ssJh5q88R6eP4SmpnnGs+nbIhxDajuTHGmKCailDmG0VqTQp4TBrJf/oGwU7UCvByvYt1rcDbzzWzrlb61fhJAc4eV4vAiMNFJnCup3x/jhMEv7M1NUXhzI2hsMetC4utZaBHK6hhN20k2fC7gqlmlaM9MvuDOy8p81EEK1dzxhpNCsc2ZE9qLcYe679voN6ACQwMN+/Oiunw+zoi9V22R6FkMQ5vH4l4Q4sPJOCU9ZY/YWH9NQfwzMsxst6rgaIuduwnuj634rPLR+S79GwQdoqK5zi0qMb6HCnxyvb3t4bFQIM/YN2lf/fa/swWjKgpGbaVulaDuKwxWByr0SBzVDw0BhDigmukKzX2dkX2Hy8t7KBfT6ELR67hte1eoUNkDcMBCCSKmdEve386/rD1x9AHGHgpyiXy2zGnZzLgNYa3bw7VzzjvHDpIz1ySkJ1a5TNNIvgI68V8ilJHvSaUjbAl7NGbF76OXpsU7icOQ3RxhrmZlPsAiKwzXWnATNFl/LLheeuZ/1rVZXXl7e7UevsJGLzqGIfEVvLLpMsGCpApTr/kuyQ1w3GWRkXfKICwAYxhvYSRak6ub38652QtoHBprN++AYi5yl1eEx5IWzaa85YGwnCU1acgdoVNShKKqpzK+tNdRF9W8iQNOF+3mg57M2hRhi6/4MKEXh1r/IfdJrLzxK5z47Ap9ZSuxLMGgaTDALM+jh0nlnQx3Aica3pCg5s1NlJorEjaWxCRJP2p6rHU6efLXIyRIWJkkoVC3KGhiz186ozwprGC/zL5sv6deMaeeb6EImGHeHGt7V5K6ZAnAUugu64t+xBX3Yzum3ByNW1YHBXzWtLQTcEjDuxqXyRwmSYwa0zNALt7yev91kEmYGo/XPrr6vxpOCzTXHVfsTGNp7htKlTR7yTD3dsK760K0N3Ja1NWiFYFCS+UEJB4Z4IpZupXlYhdy7KBYszqJRF+5XrJa0YiU56KUliiTaeG2kGdOiYnSqrN7niApDg2yXNcj883jVh49dlTvdHA4XBC1YBYikLdVDl5doGRn50ZQP8BGfhsLU6p3RwU4EyippQfiWlIKAxwMBCXTbqm8kyBe3AK3eyx6kEdI74wpbfUHxfHU15qB8DTrIdHp2tCdd6/PopleGIq1WmLN8rjsv2XTQFMftr94fnIzqK2dGRtDwDPp7Zz/cGfj9dQswQM9lzimqsPufA3toeZl1lcAtSIIo/gouVBNVAxxYKC/2ZqBynIrxA1/vv7jPLA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sUBMES6LazVP78TZsd5nfmMJmrrSZxtZUSsFHMfklWA5yfTxMWufExT3PPPsSN4Jd9mKLlqiv0yUeNBxQy/7X6451CtG3TZT0OAC5RkwTLNRawHZ57H5CyLmL08HxLB63vMFieqwOTo4/wUEXsdDUAn+f0GVndHg/9Xf/wZBwkEhxWhg4Da8+5uhLqnDCBScaLQj/2/6eXJhkawvCJS4YiWfE+7bUUPsge7yzKYbLILpXAcznW31QbWtryhmLMBBR3mP7Q9EueWQU1Wyt5OKK/a6/cGUHcFe8YRit5asl4JjrwsOmgavfsyBlQlA9ZuoeMlgJZkKmsvwO9uip+kizLTgBb3U/VBXMtEChpTfL7hwtOWosYvZzM/4pmbWSqWpwD8mLHA0rRwbWneNowqStn7OxL+hXsWdNvpQ6cmvRWvyPJutVjr3643sxlFOdRqv78U2XEV58X/OsQuwHTJHNk1IjZ6SesnKF1tC0sk1GrzXGiSctIoc5n7feIxlChlDb4KGc9mTaM/BL3HMsA6rHvxKBu2volyM9d/VwISd9ZG5W/peLaX2AidfP/SxcmWH2JFI/MTaGZULv7uLePRQeDwJtcTNEUokVAUKJ6MEJ80xQjUBlXIsX6y5MTTm7WgaaQfDLltQq1Nkli/FEKkV2GJsXm1nV76vC1e7bomSUgQpT712RryXjMG9fndLr7MLMkbLQ7pUvLmZ/VBnsD4x8OPDKmfM75zFAJ0Zj2olXC4WeM+7a6RG46S3vWpYkv3qu/aY2/lC35SkzIB4Sfa707034ESXKIP1t4jppo/QkpmnbYy62SBjYV2JWIeJsvvTRvtSddEtnNtzhCyS1AxGTItxG8KE1VusglC7ihuIShMprssl+6QyrDHrogF+CkkhS4+rUFM/92L7vmkMu2BehULPfXiEWnexfDEzGXwBrhb6LiEhSYQKpqE/cxPu+kGBk64Esw3if8IZplfdUICDKkuF473KfUD3RS4Ag7lfEapCjauY4GSGiGtz+vs4uz/Vk6jcWxF3Z1mo0hHijb54nd4LWm7KiqD0p0QVJKdFOQ2247T+UMLr1MwU3yAyiw8TGAXofHtOSAnbVJIB5qrnOjUHjuX0UkzD6ag834IDL4anlXMqxQD13srhrJ7wLgUEwc5gVfeqFlPo5Tw/dLwUSzPrVGZmxBVrubD26qbREzwFmurEhkFH0VHD4R1fsWZPzknE4Q4ZDD/qhibZkNWUSBWef5CcrbWkF+igm0/ZPDiJ38BAHWCWyl0VfENRzFj/TXdbMhML5BmR1bToqKN9+dJfY/lDDKFPehhZ2QGomik+ZEodNc4dXARfPhoZxCcbJs71peHpNvUc/Ow8QUliqvY8q6Ecdluzn0sg3my7xDXFvCHJUvPcXFkRTuU1O2mrR9edFrphCEuCMJuI9p8TMFHZ6WwCSyVu1UfzXeP1d2hvBWzPKvkSnmFA35NkqLwTvit5zvgkneIPeCSlRn9v1MkTMtrCASbegqrCt0XPf5ITB27i0fYYopmO6hbj1ihzsO+aopRzY5tRGxQwFYvZEs3z7l1VDkDCmF1fgNRjklj3cEEjYldH89u/8z5pM6UJ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 230eab67-0320-4b00-984b-08dd78e20f3a X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:27.2615 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 17XxcBPXkxXiTiyrZIVzF4BIhvaOjG7jO8A7rXOUZfIye1hR9Zieh3229UVXB7wklrYIpuGLKTfTBBgwqxgXHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031729_781868_73209CEB X-CRM114-Status: GOOD ( 15.90 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Since i.MX95 ENETC (v4) uses NTMP 2.0 to manage the RSS table, which is different from LS1028A ENETC (v1). In order to reuse some functions related to the RSS table, so add .get_rss_table() and .set_rss_table() hooks to enetc_si_ops. Signed-off-by: Wei Fang --- v5 changes: Add enetc_set_default_rss_key() to enetc_pf_common.c and use it in both enetc v1 and v4 drivers --- drivers/net/ethernet/freescale/enetc/enetc.c | 2 +- drivers/net/ethernet/freescale/enetc/enetc.h | 13 +++++++++++++ .../net/ethernet/freescale/enetc/enetc_ethtool.c | 12 ++++++------ drivers/net/ethernet/freescale/enetc/enetc_pf.c | 6 ++++++ drivers/net/ethernet/freescale/enetc/enetc_vf.c | 6 ++++++ 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 3832d2cd91ba..2a8fa455e96b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2405,7 +2405,7 @@ static int enetc_setup_default_rss_table(struct enetc_si *si, int num_groups) for (i = 0; i < si->num_rss; i++) rss_table[i] = i % num_groups; - enetc_set_rss_table(si, rss_table, si->num_rss); + si->ops->set_rss_table(si, rss_table, si->num_rss); kfree(rss_table); diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index b53ecc882a90..786042029b1e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -279,6 +279,19 @@ struct enetc_platform_info { const struct enetc_drvdata *data; }; +struct enetc_si; + +/* + * This structure defines the some common hooks for ENETC PSI and VSI. + * In addition, since VSI only uses the struct enetc_si as its private + * driver data, so this structure also define some hooks specifically + * for VSI. For VSI-specific hooks, the format is ‘vf_*()’. + */ +struct enetc_si_ops { + int (*get_rss_table)(struct enetc_si *si, u32 *table, int count); + int (*set_rss_table)(struct enetc_si *si, const u32 *table, int count); +}; + /* PCI IEP device data */ struct enetc_si { struct pci_dev *pdev; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c index ece3ae28ba82..d14182401d81 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c @@ -681,7 +681,8 @@ static int enetc_get_rxfh(struct net_device *ndev, struct ethtool_rxfh_param *rxfh) { struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_hw *hw = &priv->si->hw; + struct enetc_si *si = priv->si; + struct enetc_hw *hw = &si->hw; int err = 0, i; /* return hash function */ @@ -695,8 +696,7 @@ static int enetc_get_rxfh(struct net_device *ndev, /* return RSS table */ if (rxfh->indir) - err = enetc_get_rss_table(priv->si, rxfh->indir, - priv->si->num_rss); + err = si->ops->get_rss_table(si, rxfh->indir, si->num_rss); return err; } @@ -715,7 +715,8 @@ static int enetc_set_rxfh(struct net_device *ndev, struct netlink_ext_ack *extack) { struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_hw *hw = &priv->si->hw; + struct enetc_si *si = priv->si; + struct enetc_hw *hw = &si->hw; int err = 0; /* set hash key, if PF */ @@ -724,8 +725,7 @@ static int enetc_set_rxfh(struct net_device *ndev, /* set RSS table */ if (rxfh->indir) - err = enetc_set_rss_table(priv->si, rxfh->indir, - priv->si->num_rss); + err = si->ops->set_rss_table(si, rxfh->indir, si->num_rss); return err; } diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index f76403f7aee8..8dabb80ec04c 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -905,6 +905,11 @@ static int enetc_pf_register_with_ierb(struct pci_dev *pdev) return enetc_ierb_register_pf(ierb_pdev, pdev); } +static const struct enetc_si_ops enetc_psi_ops = { + .get_rss_table = enetc_get_rss_table, + .set_rss_table = enetc_set_rss_table, +}; + static struct enetc_si *enetc_psi_create(struct pci_dev *pdev) { struct enetc_si *si; @@ -924,6 +929,7 @@ static struct enetc_si *enetc_psi_create(struct pci_dev *pdev) } si->revision = enetc_get_ip_revision(&si->hw); + si->ops = &enetc_psi_ops; err = enetc_get_driver_data(si); if (err) { dev_err(&pdev->dev, "Could not get PF driver data\n"); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_vf.c b/drivers/net/ethernet/freescale/enetc/enetc_vf.c index 3768752b6008..4fafe4e18a37 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -162,6 +162,11 @@ static void enetc_vf_netdev_setup(struct enetc_si *si, struct net_device *ndev, enetc_load_primary_mac_addr(&si->hw, ndev); } +static const struct enetc_si_ops enetc_vsi_ops = { + .get_rss_table = enetc_get_rss_table, + .set_rss_table = enetc_set_rss_table, +}; + static int enetc_vf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -176,6 +181,7 @@ static int enetc_vf_probe(struct pci_dev *pdev, si = pci_get_drvdata(pdev); si->revision = ENETC_REV_1_0; + si->ops = &enetc_vsi_ops; err = enetc_get_driver_data(si); if (err) { dev_err_probe(&pdev->dev, err, From patchwork Fri Apr 11 09:57:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048193 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 98819C369A9 for ; Fri, 11 Apr 2025 11:19:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ATGfGtT6ew6tjSWw3jWVFcGS37VS71SRdhIcPtDdGNc=; b=eXvxGdHJsIEGamSQZEPxyyXQ6r Zlk38hx6+Y5942/5xmQOccgPPFdyL5bBpglNwbTzz+dY7qIXpvS8I9BNLpgFgy8sRUDk4J7LHJq8u Bkv8tWoGtifjc0XSmA63ygq1yYDNl83eIHjDjr5kA7rMxDCf/tgmiWouJZYQT3KtdJCDrDakeYhsx IONxqUS+d/khYUs5R5Zvo7vLhKozoIbcfsMD1o6q3JDcWVzFJn5a/sPgeZwBGNIlCKUMR4P8LTXc9 Unq7y9syAm8HJAx+thEaOIGTx2M+L2H9Fpy6U376WWT/Sn3kMHXznxOYc1TjaxUn56NBM0ZOtfuH7 PVUi7AQg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPa-0000000DUwT-1bjm; Fri, 11 Apr 2025 11:19:06 +0000 Received: from mail-db8eur05on20606.outbound.protection.outlook.com ([2a01:111:f403:2614::606] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BS2-0000000DLes-38Us for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=isGmHQn6GEQoFUWhpRhjQD84G0ko7LtShQ42suyvZjTaF8hbeAczcFVEpImdCBWJaV0PFd/sjxmY/LLr87y+qec/HYj60tjCy1h0M6WhnTZhJImGuZeDB8T95CUL6NVaeTbaJd+VITV5spGHL4NwUyN9OwtcvTHygJynP9dLJz5VxwLl5k1So5I71nlCfsl+OGoV1SI0XUjsdNEXpfbxkPYn4j4xFBljwoicE18LuD8ydFfEmiQ3KZcUj6YKZazkIpwrAubuD/8UVL4sR/KAq+6TEnQhp7vhYzM1a/fwycW3hPGMdfH+Hif17FCKe07IM6KVdzM9M7q1TAVFbwucgQ== 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=ATGfGtT6ew6tjSWw3jWVFcGS37VS71SRdhIcPtDdGNc=; b=Z5gRqOiq0yK96LBJKxvQAs5gmk4vzEanNsAEZYacJgVYKVA1or2OWgn6+l2pk7lLUnR+HHFjQBdMLgRTgO6qC0nCbu7BWmIp8XyLcxbksMWzQRpuhuxrLtmyqDO2VcTduU4+jBE6fsTpokr1w6oQIsaokCC1hZ2OYuXOACO5NtkNtGvA768Bz4OT272Q+OUgBoKgjGSYTRlcCRTYZZB8eVyhHPP9X14f55FHAsqWqGmC4/EqFO2vJll+mSayOTjNU+BXi/Okj6KqH5hSYc8tEUM89wg37VXy37XRsKABs+WUyJmSTwdFIxfIW650lvcoG+JFBRNw86PnrToNdEXBPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ATGfGtT6ew6tjSWw3jWVFcGS37VS71SRdhIcPtDdGNc=; b=kJFQYhYhBGKL760sh+WDorlnSKSpcH5y3pDGE4OF+bJ82j5PSZl0Vw8WJpFWihYfDhf9qgzkN4LOr6XqBpD4mOMIxpdsOx+DRTP5xGqHJfEaVBAt7LNjPVlnX5t3Pk3pZD3yQynTJa/Q65pfnPnUCYq/c3tO9AXUqpZt7qX9SmEa7yZq0+PoSem1WtU/E5EO+8e7/Ns0tBwADtqxY5Xt6/oobCaumN5TvERRzLajMpemrhAxYetypMlUyegw80BtkGFuXmCll84vByZ3UQu3e1BGbm9YhsUM3ZNEvR+hPcjRz1EoklP9eKk/MaMl7DeXZWtOGLaPl1lNCJUoQ3xFyw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:32 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:32 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 07/14] net: enetc: make enetc_set_rss_key() reusable Date: Fri, 11 Apr 2025 17:57:45 +0800 Message-Id: <20250411095752.3072696-8-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ca83c6a-ef7b-4c53-b5e2-08dd78e21219 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: tUIJ8TMpAh8FR+/RMAANdXfK0RwoTIm6ps0ZDBMvKmDuRacJeAKODgBjy01GVUYgGkATmO36J4FYp7/gfiWNY2raAtDT9ryxEhNZ5db3MX+KWkZljAxj3aKLJGuMHlo3jxgMuN7hUQ3hk37xkU3eyDy79UCW0+eaSIyYjHzAPF01s0+Ed/V9MG1HZVQKW9ugkqqJNTXA3+Lc581SwKfd6oRjU/1hwf63MgbeyaI9vcpKLboRgQEOboBKqh0SsEXEBHckZ43AKDwCOSDU1yJxpF7cByuEkjEAilw0RRKFkfUuRmQrlLNDhPfIFIfvzrQgcIb88TCSHsaFuIV/GrLSaokWml4Ih8YsARO7JQeYj+znbfsL+GB1iS0nKq3c45kwpDYBPR07A9Z3FSpptYyjRoWMsBklaKqPU/pKEOYRi5tNbN2Ed57ER87T/5f/ErNvPTf+DubyInzVBLPrms6duP/x+JyVb6N6PeDzW65/43cmjUilYzKS73ATXL37xFC6sAL+RhcHXJ8N3W0xVgYxVJv2yi4lCp7YihE6zXEyN7bt3keEmpfwaO8LN4udW0XZnb34eJLBL76i4AwWRKfYHoq//BvdK7/pMOU1AOv2U8R2D0n8o6L2Oi3BUgDxQOmDcev2ApeOhs+XYSsrb8Hh4CjHdApkPpjU3VUhtKa4vaIXNELPek+PIO9YP046Be+4yDjZg87L5XGn60cHC+T0fS1+b/2pVDrnuxstxe3tSZM0I96KoH+K5oHJyv9RVCS2sa+D/IhmcSdpoETuOtjE5tLAU8Ev/Z+1cpYLN6qMYu06mUOm6Ecn+04y34GoZFgdOQ4yOSKKgtJ+mxWQYdNSWwAnBkF2BwoiSvq/4DuwNOWwVKbjWZYsDnuNv/MKxt50XMrtjoIC0b4uIEvSr2t/JkhdWEVI4wa7AIVI+F/2GWWA2JaGzaiLGsGZi1NdUgPsBYKyff3hzqggXVjGLftjTyBqUwbLQD2/qqDGn1i0KDXgimmhMqdkv7298Tgw3j0Bu1+/N1Mz1mZbij5IzJfD+3RZCM5tNwbEtTdM0YuPQ5JdBUfMOwttD0xEPaWCkBy083B+oAKrtv7yakg88fHhHYv8hvE3pdfBmz1JIm0t7C1J7UKRUrKoDxTpNi5xztzRpJiRRvZczhC8ml1mvEguh6HrgMnbeZNUlr1P6972UdFop1D9slBK3x4/LlbSKKMex6GDYFHG736LHgHefqFhzaOkfxweGa6MSroqO/BoNi9YEuNJSzWDslj9QsweTB6XHrI2hMKBuUKqxf6BHklG7Z3Gr79eQyEEc4aJlepfk5gtdhWm7vUNqX8bSZUb37PhWccl7Q0Q58Ck4beAOxvDYnbGcIILjdWNYu7bYyKSVkLO/tUlqwtIZynQ1hugVMsLAwauChYIStMoQ7ps7xs5/clsAzEdEbogCIhYUMYKS5Q0eeiN2HcaSsVvKPzCQj0oUHGUNlcPyo3YwoRbDhqixg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CcaFeQkRdV3gYwchvJHVN+bvGS/Wg1IxhGVnGxnhBfuk2NlLRKLk0EugKgw/t9r7GcoVVdtoZf+YRgAgIba7K9XfN4HpHEeLprAZvhUdP/y0gE423MHel089pE72xfuAlBOr6NQk8t+Q2fFsHGeYd3i5M8kRBePPmT2HwiJg2KVO0oN/OgtTeF9uwRco7H4HVVsVO9N4ufF53LKB2Wit9iaLj4JkFXATYiV46OSmLYNFiWIKT1gz47g9j3zGUSXj4OLqN4osPCuQxuwOEHwtt6F+h75LJPD6+W1CHGqnIixJji5McA+N7NvnGplHGBtyxoz5SmO1U2hXnMRHc0CTP6C0irgsZFqYfv+cSoM+dqVPQ/OZhXhruVywvFrFbodrey8O5bHLcIjihajJj0OizGFfzZHnx2WSfhiNFXNWqoz5yDY2SnazGy9fTQnp6uxYNdlhm+J48fE479c78F2Pdeml9vIyJgCifhNO+4VI7hm+hEQ1vAQDO0aCj2i6kOsLnFZFUC5n+MJLdUweuMAegnZMpo15mB1WVI2KdZyx4pqwfByZBVgRYeh9Nxi07cjO86CedYbqf6m7ql42xE1GbmzjgesH39OupnxeEUmKszE3JRIcppm6IMfJtYvXstZtl6runwypDwXuvRbL8kESIKeesMEZFDgt3cFXRbAlCaiNZ8eeJ5GN2FBwBROt3Lk4Ehb4ZfL4E75BMne2V4PSwuEKJEg/ev1SdDfr33NrHNeyH/1ZTqalxzmQ5bmIb8106qXE1ZlWSnH6eJLBSnZ69PEeTMcul8LefBZVZjILFD9ykd+EIOJNlbcasm8sfHR41giFjcsaGYnFUeNgCDywkFbnqZFNer1+PqQopUcF8VFy5f2MZvCom9t/6YVq15cW8AczZ4MHc4b1fa7RDlGDkMiEFLWKQ1LIkUzosllXCj4UB0joSUFhSrraFnY7SiYgvl+ckcA4Jf4uDURCiZ/P/XFrZCE9dgT+avZPcTP+1uekSBYR6xGVvg+B5k/CG+M3c4tWygCHE1WhJmYNbJXYkq1xMCfhWQH2TZOI3yCcPo2yhHdlOddJYvxBVNE5QdCeP5rNe6htTRLmXzu19kKxkTKkjEW8NC/dCtW3f78Guq9gYUlBu13EmiWhY2OGHAKHEc+lXByDukCmLrJ6T7sHuskVZD9RK6bVaZ8f/yWstBufjeAPN7PBEhHvKn62lWEnC+POdbtTPks8rq4mtVEkkZa8w9itsqGXaJQO3TeeonyjlUAJf5ZEOOfATYmy18CwZ546njA/oA7yyVbgNA9O4jKcFFD/BtDdg4Isr42OyWe0Nb6MVuqak8rmnKO8yGgcnwZLbJetCdXl+oUo3EHh49gki1Iy2FK0W6MEtBPbMegEMR6PB+vXVf+T2wJmjuEsjtoZR54rpoPQjINQz8eAbwJICZonv6cuE1RFi8mxxIWhaXQLVGPTXKUJBj4AbwcU59qY+KSiCOJSJYnde5lrf1pwjoHBjW/6ac0gm0UxU/TfrtLfrla+nsOcpqtJAHHD1mzV0Bk02K0Ksf7ap+Vr9HrB8HcXoPp0cxjJCx85IFKPvIBvJg12R2q4elRJ9G4u X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ca83c6a-ef7b-4c53-b5e2-08dd78e21219 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:32.0448 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Zu2aIaa3hb4XOoWC9WPj5CqBHWF7AFicF8Vr+tBQ8OuYNKAFQHOI2p7euMK1gfgDiwOoqM+X4kykDNwp+dzmSQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031734_927944_361AF270 X-CRM114-Status: GOOD ( 17.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Since the offset of the RSS key registers of i.MX95 ENETC is different from that of LS1028A, so add enetc_get_rss_key_base() to get the base offset for the different chips, so that enetc_set_rss_key() can be reused for this trivial thing. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc.h | 2 +- .../net/ethernet/freescale/enetc/enetc4_pf.c | 20 +------------------ .../ethernet/freescale/enetc/enetc_ethtool.c | 19 +++++++++++++----- .../net/ethernet/freescale/enetc/enetc_pf.c | 4 +--- .../freescale/enetc/enetc_pf_common.c | 10 ++++++++++ .../freescale/enetc/enetc_pf_common.h | 1 + 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index 786042029b1e..e49c1626e7e5 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -537,7 +537,7 @@ int enetc_set_mac_flt_entry(struct enetc_si *si, int index, int enetc_clear_mac_flt_entry(struct enetc_si *si, int index); int enetc_set_fs_entry(struct enetc_si *si, struct enetc_cmd_rfse *rfse, int index); -void enetc_set_rss_key(struct enetc_hw *hw, const u8 *bytes); +void enetc_set_rss_key(struct enetc_si *si, const u8 *bytes); int enetc_get_rss_table(struct enetc_si *si, u32 *table, int count); int enetc_set_rss_table(struct enetc_si *si, const u32 *table, int count); int enetc_send_cmd(struct enetc_si *si, struct enetc_cbd *cbd); diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index bbe16c140875..b72a365625d2 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -413,24 +413,6 @@ static void enetc4_set_trx_frame_size(struct enetc_pf *pf) enetc4_pf_reset_tc_msdu(&si->hw); } -static void enetc4_set_rss_key(struct enetc_hw *hw, const u8 *bytes) -{ - int i; - - for (i = 0; i < ENETC_RSSHASH_KEY_SIZE / 4; i++) - enetc_port_wr(hw, ENETC4_PRSSKR(i), ((u32 *)bytes)[i]); -} - -static void enetc4_set_default_rss_key(struct enetc_pf *pf) -{ - u8 hash_key[ENETC_RSSHASH_KEY_SIZE] = {0}; - struct enetc_hw *hw = &pf->si->hw; - - /* set up hash key */ - get_random_bytes(hash_key, ENETC_RSSHASH_KEY_SIZE); - enetc4_set_rss_key(hw, hash_key); -} - static void enetc4_enable_trx(struct enetc_pf *pf) { struct enetc_hw *hw = &pf->si->hw; @@ -443,7 +425,7 @@ static void enetc4_configure_port(struct enetc_pf *pf) { enetc4_configure_port_si(pf); enetc4_set_trx_frame_size(pf); - enetc4_set_default_rss_key(pf); + enetc_set_default_rss_key(pf); enetc4_enable_trx(pf); } diff --git a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c index d14182401d81..1a8fae3c406b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c @@ -677,6 +677,14 @@ static u32 enetc_get_rxfh_indir_size(struct net_device *ndev) return priv->si->num_rss; } +static int enetc_get_rss_key_base(struct enetc_si *si) +{ + if (is_enetc_rev1(si)) + return ENETC_PRSSK(0); + + return ENETC4_PRSSKR(0); +} + static int enetc_get_rxfh(struct net_device *ndev, struct ethtool_rxfh_param *rxfh) { @@ -701,12 +709,14 @@ static int enetc_get_rxfh(struct net_device *ndev, return err; } -void enetc_set_rss_key(struct enetc_hw *hw, const u8 *bytes) +void enetc_set_rss_key(struct enetc_si *si, const u8 *bytes) { + int base = enetc_get_rss_key_base(si); + struct enetc_hw *hw = &si->hw; int i; for (i = 0; i < ENETC_RSSHASH_KEY_SIZE / 4; i++) - enetc_port_wr(hw, ENETC_PRSSK(i), ((u32 *)bytes)[i]); + enetc_port_wr(hw, base + i * 4, ((u32 *)bytes)[i]); } EXPORT_SYMBOL_GPL(enetc_set_rss_key); @@ -716,12 +726,11 @@ static int enetc_set_rxfh(struct net_device *ndev, { struct enetc_ndev_priv *priv = netdev_priv(ndev); struct enetc_si *si = priv->si; - struct enetc_hw *hw = &si->hw; int err = 0; /* set hash key, if PF */ - if (rxfh->key && hw->port) - enetc_set_rss_key(hw, rxfh->key); + if (rxfh->key && enetc_si_is_pf(si)) + enetc_set_rss_key(si, rxfh->key); /* set RSS table */ if (rxfh->indir) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index 8dabb80ec04c..8f2616fd83d2 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -515,7 +515,6 @@ static void enetc_mac_enable(struct enetc_si *si, bool en) static void enetc_configure_port(struct enetc_pf *pf) { - u8 hash_key[ENETC_RSSHASH_KEY_SIZE]; struct enetc_hw *hw = &pf->si->hw; enetc_configure_port_mac(pf->si); @@ -523,8 +522,7 @@ static void enetc_configure_port(struct enetc_pf *pf) enetc_port_si_configure(pf->si); /* set up hash key */ - get_random_bytes(hash_key, ENETC_RSSHASH_KEY_SIZE); - enetc_set_rss_key(hw, hash_key); + enetc_set_default_rss_key(pf); /* split up RFS entries */ enetc_port_assign_rfs_entries(pf->si); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c index 3fd9b0727875..0a95f2ac781a 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -341,5 +341,15 @@ void enetc_phylink_destroy(struct enetc_ndev_priv *priv) } EXPORT_SYMBOL_GPL(enetc_phylink_destroy); +void enetc_set_default_rss_key(struct enetc_pf *pf) +{ + u8 hash_key[ENETC_RSSHASH_KEY_SIZE] = {0}; + + /* set up hash key */ + get_random_bytes(hash_key, ENETC_RSSHASH_KEY_SIZE); + enetc_set_rss_key(pf->si, hash_key); +} +EXPORT_SYMBOL_GPL(enetc_set_default_rss_key); + MODULE_DESCRIPTION("NXP ENETC PF common functionality driver"); MODULE_LICENSE("Dual BSD/GPL"); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h index 48f55ee743ad..e07cf3c35001 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h @@ -12,6 +12,7 @@ void enetc_mdiobus_destroy(struct enetc_pf *pf); int enetc_phylink_create(struct enetc_ndev_priv *priv, struct device_node *node, const struct phylink_mac_ops *ops); void enetc_phylink_destroy(struct enetc_ndev_priv *priv); +void enetc_set_default_rss_key(struct enetc_pf *pf); static inline u16 enetc_get_ip_revision(struct enetc_hw *hw) { From patchwork Fri Apr 11 09:57:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048201 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5769FC369AA for ; Fri, 11 Apr 2025 11:19:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=bbGbelVGIDrNnjV2eRO7q/HwO7+XyPyDxKBfklRgjWM=; b=hHyj1m4jqsBjraqMCLCwPqUrDP Sl8ZHLUasHBJ6iMnzSj83iXJzNsJbXU3z872ieo0P4iZajxgSpi901U2+72oTN7qyFEapniCTrumE AyEGdA2xuTG1dbaXFaPPDyRn9psg6aIK7QOycgTBSlyIDQJwF3s+2AQj0rbExhDZnYuMl8QAuzC// xuTR4YKIBj0OJlJIUnaWRaj4SifSvaa8HGyULjyBl0x0Yi4nnJqO2LyNxenKnIRp0d9IYvk55kcFb XFyubSOSYSFhI9s/6Ok7csRmILRL4p8d51VX+b/zbPWzfKOEQ0WE2SCVrPgSGKhq6Jp6aLPHLWnYp OtZ/GjBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPa-0000000DUwn-3zDs; Fri, 11 Apr 2025 11:19:06 +0000 Received: from mail-vi1eur05on2061f.outbound.protection.outlook.com ([2a01:111:f403:2613::61f] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BS9-0000000DLgz-13C5 for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P6smAabrF1IlpT9v5HFW6euP4a7IHTLAGEuKkjIKZeGS2z/d8McDITf79NcSKQgzrVDnv/d1YJ4KeqYhWBA4gquXzulmQSYyBgXo/baBMn4Qjwoz34YLxTjPiZ4Zv4I3XuaN7Ilmvj5o4JIxPxHTukqWD46K652ro8mkgVyVgDiWHBpWKDBOSiDfwY1SnItLdUHd/BF0X+6+It3cziyvmdvgwT05HspC4Ztvhjjf3QOp8xASiqHN+I4l7J4iQyo4ta3KKt9VrDuiYd95DLDOo3UmmGfN3NxbD5sP2oIchHoDmg6+lilT/ADiK8I9+FF9IBhKXsc7Bp3x6CPfn55HKQ== 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=bbGbelVGIDrNnjV2eRO7q/HwO7+XyPyDxKBfklRgjWM=; b=CVLoW+zj2gP2+tW4gFT/s7uftzn7HayUX2Ala6GLZePHIKrxRtxI69Sc//ZNhDlw1n1t6/C+cxNywuekVnvIARooMVVgX3nP95K4xnUlXpc/8aYpxPNaI+x+qcx8F1u5x9GkIDXwbz0ieLzTQBWFskBwNagENgELUJ6WMXnH+2nLRjwy6rHDM7zDPMF3DQqQXgh+CWCINfXMhkcjSLOV8NOJKpn9gUBeNHvj8WcxK7bU5bGPNKbVzmq8P1vwCmweHOYdlYtdBDV5YnpecaZcvc/g3T+6L7yjSrTwNZxka5bi8gfXO5egTtnKS9NQ7d3U/vfm9s9Y4CZq9D5F7Df/Lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bbGbelVGIDrNnjV2eRO7q/HwO7+XyPyDxKBfklRgjWM=; b=GiYsG6PuAlw2YAGftNKBqldVl8ydFLwJaWDl3qr3iHzbAAw6hUF6sGWDCsYjazOsSUimrR+Q/TrgSArWuINJI8EJ7PTCE8v35Xg621p1d3YM2ez218/cDCNUknD/EP1zkKBnrAslf4DY4prw59AGcxJtOtgJ7wjcrYNt0WcyOIsqj29FzPRPcyi5HLqDFdt9lxojSTdRZZUO6dcY9+ZfLEoSRsn2jAarWpPbznwdXBQnb1LBUoMfcGf2zppa+bZMElkpZHIDaSI+G/zSv43QICfpNRQI0YfyFz+rSg8SGueH8O3qJaKLcBfHz/nWRW2yJOlYJJ23iu/Jxq37iZ4hMQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:37 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:37 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 08/14] net: enetc: add RSS support for i.MX95 ENETC PF Date: Fri, 11 Apr 2025 17:57:46 +0800 Message-Id: <20250411095752.3072696-9-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: c97d4ccf-10e1-4bca-2dea-08dd78e214ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: SCp10yWgkwDkiOUl+W6nprNBDnd4EVQCMKxdfqw/8Q6svjgODeMpnuBkEGVJabqeHWYUrgf785XOHhuNJ0n2VaZ7y1BX7RDtvslB/X/WINLVQSmX0VdHvJdJOpYQPXSSaLquxHSJCQaXqyUR7YMMdSYWW8xLpYjscW8z/NvR/GAQZJpfTo6nryw985TgYlK3786iWunBbwKDXd1RF4nPNbf/LOYiaz3saahprs4QIZSPjoFD212AvHzwpieHS/lWpOXRAtrv99nv8Y+HQnT+rmVY/M0H+sKIFMCs9pYOExCvjIvFeFjZRX8t2TAE5OCQNYluD1l+RQF3QB582u9gzTBFUnQ+C9lUj2UZjBXH0e3fxvZAzWv+MRBbDqwQB8ZKjQpTVh6CsnJaqVTBDWNTjjShsc4ZHoHOIETY/1R/DYXHnK7CpSWCaao338QF60nE3EvOmahZ3RIGjoo0ND+8mREmBpXodXBxASZ2gkbPcTAKPeNTIlrVaTJIJNNnbdnwmctUaJxBbq6n02ZTQBh3ZUqOQu+Aauy+RzQBNF+0z31aCWpxlXe4b9BkInEPvjP9+UIwzdxouM1M2jUSCA5VBWI7y2ynxBk45AdTUeVLoqTBYZ7s/dse6Yu9lEMJ8sXS8FDPRh9UOcKUZXobCgdDCYSOEs/ibP9T6wUPe8d+sY3P6E+38n2JTakLKXcx1PPjEx6d6UNYY5fLIAc3V/4RcQ5pK87Nzz6jLn6+9hn9igm3liwtMB0JN478W/Mpiw5XnxeLlcDtEc7c4kRJ5Pn4tvPezPMXHQ9t4xV57qLJymEH58ELaX6H5dlhSVUHmyPO38Gh+t3mTazqXBIPNATta2r5udwn7iQipuXgt41E4qU3fR9QkJvrN6d441jgtLt7o/173RqWOcAcdxOBGeXM8ZJP42EwLM4dDhGmcOhiC7sYXYEws8vrqnFJNYu14FgQ8C5V1TParu7UPHo/B49TMWd4jLjzFRgBbvD/Ye3SzU/BwCBGTfTMt//1vMiz4Oj7my0cwhup/Whmvzr+2G7nlTzepK6B2tjJ+RSswaYYgbW+EJjp30wRlELIFg0uU81wq4zu2hmp6Tj62W/vMS3yh6nKnroFUpruYbeqyviZF27aFevoOJ84yRfe6EbGRkjX7wHZ5W/XgeF4Mc3myygQbMIq7GCVuwwi0WMNIgoCC+ujorOYLI9/uqeRfJ2xh822SdorxUzRygyj+BNtpVWs39UJQ3S5QYjhruuDlEs7Ayp2kp1bFVx2uDHzSEeBkgBz81piWe5E2UrLNy+B38Q+k1Bhofceri49+rLeY4yLFzepIPAceMqUImRRYA6odZRIgVFidt2TD+/08m5h/OUNFqoJMH/w/dYGiB/82Vms55WgTqeyujz5D43+gQwHTF46FJPB5vRdLjzh/Qu0hzz83mpvZ59+1ojb10H0U8V327f0G0JeS6KkYPRCCpA/C03s27aZOJQXRsenP5EDBFVTaA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZR+oayJ60txnhAs0oemqv0XqXMBtC7SdG9xBDpH1uNAzx9rWLcTEawCaxUCdN3FvJxSWCAxDP0YpPWhUjcnHjzBPBal3AQ5GwYBnEli5ClkSMHaBfw2tT8XCIBtHj+rdDE3sfY3iQg6XWeLEUHV756BJmeJ+FiWoL2eUupY1LBmJYpXij/PC6qgYtVY7kADUbysCwiLAe4KT5yTg4eFL7IPJGxH4LMDiN/ZcWGUNiha8Bz3VYsE7DR++qzvQcjSG1ulBkPuNoQkjux0QJ2tEN870tiNSsA6kcp+32RR/21Y0onlD2iDMruPqF6KoH+OLMVS1e23JMmkizGPdOiXTG87DfKZpxzrAW+r/dO8Ev+NFT/EtBrw4Z5GLVQdyJWsAeNNg2byyAzNbLOf72EJX5RcNK668czWQArnt9cxgPgleWO0K5DEWCqOuApgNes7qnOx3ydcbBoIb81KNLhX5Lq7QoLBhh9KFb4ZD1TTEwRGxD7IXLsnGQNvU75xUTCgkYl+Kd6Q9nQr8BmrQj1S69cn4i0iQ28wG+Knxi6L+G7YFp4H6GeOvFslM1OGs1WFUFKKNBUpUzKOvbD6NfvkVYJX2emTeKqEhECOj8jeCLMwXxCf8RMMRThb4lKVHpF/kCj4HqkvzbPHUZn8mhg29+tuwczxkg1XxpeLkRpCCj9/2mDQHKqZoy5zNywqybNOnRJpbMzZuFBCZwLcBUlmrQMA2ehmbWm/yhbnlmWtvBZkWRD2rkP6GvLG3HXhFms2vtcGTYwTh9RG+YMV/XjjpvX/Hk5g8R6vd15mJT5Yku9nkyLN/hYqQHJe2O2agS754zs9gfY3QaOkmdIyeed/GjTM1osCoca83gsGVDmoSpmEDH9GKNKTZqyj0DZicTUd6WpbPsscNbvdAzBB62/moVSNBjisPoVqcbsO9qY6pm2fSZMWP7r9L2qQknYlVKy/co9WTkoQDPxuWlDpo7T4QMr4r2qs/ig65WBYTTX98OHQjF6XFjZTo7LiF3sZX5BEWVAOV6+PMjr5W6Fmyyn84PBrUV83qLygWPmOlso2h8BvUtBB45fO85jAcbsaIRxAJ6FXwMfbc3cfrBRJXjMir5sgVHpUpKq9MJxRY9Aa1JMBoqMn0cLKimjb4mbaOyOFO3xi2sSAegACmHqzsuPBXVPVEXCvcKaCL2iWF6lfnburgW//0SJK+ybPhTnMR+HxIBZkHnzbUU1oK4jfPJyWXJwJxVlnVrIZJrf0MnSGodiZHL0+N9JCFxx8JA/AexEILVN5w8H0OZtrkbLdRcQxUALfTtwPIFb2iL8ZQdm2B44A6/byO6XqxpIVbDZVo1hWNPSeqUz63TKOPfz3kpiTb9sFATI/wXdwIQjMA+/lEVnGnJYlsChP2c6BLxljmdFTI7Bq2VFB8S/ssRdyTLmuJ4MXiHTJDzp7GeoYal5kkSIZ820houZ7bdVouCsTzDl8VM4FPUrePip9VQZFRhIETB5OXE1sms5l4ZnGxktuW0qSJoyioDQkvk1dUIr8iVdJ8hZesDKlN4oz14UMG7KueQHDjyBe8eTJqMZc2x4JmUCp3S4tqhSnRUJQw5rETSH1k X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c97d4ccf-10e1-4bca-2dea-08dd78e214ff X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:36.9888 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cm0jHVvXZQUDtW4NFb+F/ShsQWnc5KSgSy9+MQQ65ht7XHjvwerWEkQ/hLxkLff5XE6VNqVv5Fk1fMW/ozsnbw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031741_466651_636BC384 X-CRM114-Status: GOOD ( 20.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Compared with LS1028A, there are two main differences: first, i.MX95 ENETC uses NTMP 2.0 to manage the RSS table, and second, the offset of the RSS Key registers is different. Some modifications have been made in the previous patches based on these differences to ensure that the relevant interfaces are compatible with i.MX95. So it's time to add RSS support to i.MX95 ENETC PF. Signed-off-by: Wei Fang --- 1. Add comments for enetc4_get_rxnfc() 2. Modify enetc4_set_rss_table() and enetc4_get_rss_table() --- drivers/net/ethernet/freescale/enetc/enetc.c | 5 +- drivers/net/ethernet/freescale/enetc/enetc.h | 2 + .../net/ethernet/freescale/enetc/enetc4_pf.c | 15 ++++++ .../net/ethernet/freescale/enetc/enetc_cbdr.c | 12 +++++ .../ethernet/freescale/enetc/enetc_ethtool.c | 47 ++++++++++++++++--- .../freescale/enetc/enetc_pf_common.c | 6 +-- 6 files changed, 74 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 2a8fa455e96b..5b5e65ac8fab 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2436,10 +2436,7 @@ int enetc_configure_si(struct enetc_ndev_priv *priv) if (si->hw_features & ENETC_SI_F_LSO) enetc_set_lso_flags_mask(hw); - /* TODO: RSS support for i.MX95 will be supported later, and the - * is_enetc_rev1() condition will be removed - */ - if (si->num_rss && is_enetc_rev1(si)) { + if (si->num_rss) { err = enetc_setup_default_rss_table(si, priv->num_rx_rings); if (err) return err; diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index e49c1626e7e5..7b24f1a5969a 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -541,6 +541,8 @@ void enetc_set_rss_key(struct enetc_si *si, const u8 *bytes); int enetc_get_rss_table(struct enetc_si *si, u32 *table, int count); int enetc_set_rss_table(struct enetc_si *si, const u32 *table, int count); int enetc_send_cmd(struct enetc_si *si, struct enetc_cbd *cbd); +int enetc4_get_rss_table(struct enetc_si *si, u32 *table, int count); +int enetc4_set_rss_table(struct enetc_si *si, const u32 *table, int count); static inline void *enetc_cbd_alloc_data_mem(struct enetc_si *si, struct enetc_cbd *cbd, diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index b72a365625d2..e164e1a3f44b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -514,6 +514,14 @@ static void enetc4_pf_set_rx_mode(struct net_device *ndev) queue_work(si->workqueue, &si->rx_mode_task); } +static int enetc4_pf_set_features(struct net_device *ndev, + netdev_features_t features) +{ + enetc_set_features(ndev, features); + + return 0; +} + static const struct net_device_ops enetc4_ndev_ops = { .ndo_open = enetc_open, .ndo_stop = enetc_close, @@ -521,6 +529,7 @@ static const struct net_device_ops enetc4_ndev_ops = { .ndo_get_stats = enetc_get_stats, .ndo_set_mac_address = enetc_pf_set_mac_addr, .ndo_set_rx_mode = enetc4_pf_set_rx_mode, + .ndo_set_features = enetc4_pf_set_features, }; static struct phylink_pcs * @@ -926,6 +935,11 @@ static void enetc4_pf_netdev_destroy(struct enetc_si *si) free_netdev(ndev); } +static const struct enetc_si_ops enetc4_psi_ops = { + .get_rss_table = enetc4_get_rss_table, + .set_rss_table = enetc4_set_rss_table, +}; + static int enetc4_psi_wq_task_init(struct enetc_si *si) { char wq_name[24]; @@ -963,6 +977,7 @@ static int enetc4_pf_probe(struct pci_dev *pdev, "Couldn't map PF only space\n"); si->revision = enetc_get_ip_revision(&si->hw); + si->ops = &enetc4_psi_ops; err = enetc_get_driver_data(si); if (err) return dev_err_probe(dev, err, diff --git a/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c b/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c index ecb571e5ea50..fcfff908f7c1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_cbdr.c @@ -295,3 +295,15 @@ int enetc_set_rss_table(struct enetc_si *si, const u32 *table, int count) return enetc_cmd_rss_table(si, (u32 *)table, count, false); } EXPORT_SYMBOL_GPL(enetc_set_rss_table); + +int enetc4_get_rss_table(struct enetc_si *si, u32 *table, int count) +{ + return ntmp_rsst_query_entry(&si->ntmp_user, table, count); +} +EXPORT_SYMBOL_GPL(enetc4_get_rss_table); + +int enetc4_set_rss_table(struct enetc_si *si, const u32 *table, int count) +{ + return ntmp_rsst_update_entry(&si->ntmp_user, table, count); +} +EXPORT_SYMBOL_GPL(enetc4_set_rss_table); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c index 1a8fae3c406b..e22124363184 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c @@ -625,6 +625,29 @@ static int enetc_get_rxnfc(struct net_device *ndev, struct ethtool_rxnfc *rxnfc, return 0; } +/* i.MX95 ENETC does not support RFS table, but we can use ingress port + * filter table to implement Wake-on-LAN filter or drop the matched flow, + * so the implementation will be different from enetc_get_rxnfc() and + * enetc_set_rxnfc(). Therefore, add enetc4_get_rxnfc() for ENETC v4 PF. + */ +static int enetc4_get_rxnfc(struct net_device *ndev, struct ethtool_rxnfc *rxnfc, + u32 *rule_locs) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + + switch (rxnfc->cmd) { + case ETHTOOL_GRXRINGS: + rxnfc->data = priv->num_rx_rings; + break; + case ETHTOOL_GRXFH: + return enetc_get_rsshash(rxnfc); + default: + return -EOPNOTSUPP; + } + + return 0; +} + static int enetc_set_rxnfc(struct net_device *ndev, struct ethtool_rxnfc *rxnfc) { struct enetc_ndev_priv *priv = netdev_priv(ndev); @@ -685,22 +708,29 @@ static int enetc_get_rss_key_base(struct enetc_si *si) return ENETC4_PRSSKR(0); } +static void enetc_get_rss_key(struct enetc_si *si, const u8 *key) +{ + int base = enetc_get_rss_key_base(si); + struct enetc_hw *hw = &si->hw; + int i; + + for (i = 0; i < ENETC_RSSHASH_KEY_SIZE / 4; i++) + ((u32 *)key)[i] = enetc_port_rd(hw, base + i * 4); +} + static int enetc_get_rxfh(struct net_device *ndev, struct ethtool_rxfh_param *rxfh) { struct enetc_ndev_priv *priv = netdev_priv(ndev); struct enetc_si *si = priv->si; - struct enetc_hw *hw = &si->hw; - int err = 0, i; + int err = 0; /* return hash function */ rxfh->hfunc = ETH_RSS_HASH_TOP; /* return hash key */ - if (rxfh->key && hw->port) - for (i = 0; i < ENETC_RSSHASH_KEY_SIZE / 4; i++) - ((u32 *)rxfh->key)[i] = enetc_port_rd(hw, - ENETC_PRSSK(i)); + if (rxfh->key && enetc_si_is_pf(si)) + enetc_get_rss_key(si, rxfh->key); /* return RSS table */ if (rxfh->indir) @@ -1249,6 +1279,11 @@ const struct ethtool_ops enetc4_pf_ethtool_ops = { .set_wol = enetc_set_wol, .get_pauseparam = enetc_get_pauseparam, .set_pauseparam = enetc_set_pauseparam, + .get_rxnfc = enetc4_get_rxnfc, + .get_rxfh_key_size = enetc_get_rxfh_key_size, + .get_rxfh_indir_size = enetc_get_rxfh_indir_size, + .get_rxfh = enetc_get_rxfh, + .set_rxfh = enetc_set_rxfh, }; void enetc_set_ethtool_ops(struct net_device *ndev) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c index 0a95f2ac781a..a302477c4de4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -128,15 +128,15 @@ void enetc_pf_netdev_setup(struct enetc_si *si, struct net_device *ndev, if (si->hw_features & ENETC_SI_F_LSO) priv->active_offloads |= ENETC_F_LSO; + if (si->num_rss) + ndev->hw_features |= NETIF_F_RXHASH; + /* TODO: currently, i.MX95 ENETC driver does not support advanced features */ if (!is_enetc_rev1(si)) { ndev->hw_features &= ~(NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_LOOPBACK); goto end; } - if (si->num_rss) - ndev->hw_features |= NETIF_F_RXHASH; - ndev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT | NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG | NETDEV_XDP_ACT_NDO_XMIT_SG; From patchwork Fri Apr 11 09:57:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048187 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9B1B7C369A8 for ; Fri, 11 Apr 2025 11:19:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=G4Is1uHO71URAcb+jjRjF9aZM/vERo/yK/4x/3VkHvY=; b=2YzTSkoNuJpS0GdaqS4vmfWyp3 OBvNWsQTkixL2xb37Z0iSYCJC6o/sXKeTyF0us9xg6kmD1fGyJfdnL5hg6sxU4yQiQXLJTZNUhQmg gpGmGaDSe4TRxDDknIE7ap/Qlh+zQi2tY0Q+zfLFOm5SFg/M1L+8e/rnuAafmPFcQB0huO0mOoTc9 oocng6PZxb4ga4i2mX787s8JhHhTRGT9g1XIE+zxmrLgHiaWugLpET9fAlucdui/uu0IQBqCUV74u 3SRvsbLUAPs3U6B//I2oRAeBaayKMlt876MxhjH065jScduJyBBOOZAeubBJo0wg9HGywGPEKhzAX CwbxnuOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPb-0000000DUxg-2Oh4; Fri, 11 Apr 2025 11:19:07 +0000 Received: from mail-am6eur05on2062e.outbound.protection.outlook.com ([2a01:111:f403:2612::62e] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BSL-0000000DLkW-21RP for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cHg7ZICMZuNNwUK/AhxyYgqfLoyyBH4ZQa7N2QKt+JTvEVbjvv6jXFR9j+8Bh5QpDuxtZ2H/2TtSo1M3s5rZhdOI0KYiazjqbn5X0dqMtuwXVvsJgqwWyubShbjJt7DjGZuzNenLKP/nqiveURB/4fkSxd4y5TfW0L5PHHLCfV/ORhJQE4G0kFb2Mvdk3gAgoDEyH89DlFdemWF8Ndd0ZHnZv8iNKINVPxuHmBsMTgh7Jp0u62T6HgZewOpwQDB6ZfhaIJwReIk44ko319GUZEjtP/0GkG0ck8RL6YPr34yJvg7I/vYmDW8RPzmka4utlFxsNSJhpkomKCYN3ZmgKA== 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=G4Is1uHO71URAcb+jjRjF9aZM/vERo/yK/4x/3VkHvY=; b=ftMgbuGv0Brn3Qgq1FqwQHTLsyB1qZCqTjMW2wFQrrwwLIJkdTxuUzv4amm6HSVu/aJNjEgnfH2sgby0glzNaRdZn5aM8LaxdclaSDbj4dxZVG3lTLnK3EEAOADDbvG+OhcDIZOQCRbuQhTjDvjq5oiHeULec5Xm1j259V9I0lFBDVQWaSTwEF4Gv7/+dYAyEDX2kMdzHE9JGOoXMx3JSKfDh6ZfmwoVPFiNYtZocXmHv9wJdHjMzmdROO/Zi94Z1tv7IxDK0f4JTsOLjL0/Slwm4EfTb8wOmWfNrQcI+Y9pPKwM2RUl1kqbglvnqTHMRJaHHTPBixdkGD4dPlZKIA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G4Is1uHO71URAcb+jjRjF9aZM/vERo/yK/4x/3VkHvY=; b=MXum856jSMqedf/6EMYGxxphSMlDNyBtBxJsXOw94jAXmarQfexpiLHb8q/o1kVFf3TxNIf27H9ORk/2CJDmD9BHrOf+Ttgzf/J8hqvyxuSzRgzAqq9BSj9f+K+yJC4N9ItdqCBI83Rov5K3I75Sof9Q32mCJrIjBVqk7RAGu0ZK7OP0WcBmDehHgkXozaumxc9Z3Vm3bebe00qo5QLnKyOF2znkBfI+I0VHhS4EphiuBhUG4wm9XZX1ZSKWP5/kdOspoMd81dq9VH0M0e5gPdqkS/yk078NG9lxB+iyyw8bmBUSXv+injtdXdNMTUAepdhqEreqi/MTwcEo9hByfA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:42 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:42 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 09/14] net: enetc: change enetc_set_rss() to void type Date: Fri, 11 Apr 2025 17:57:47 +0800 Message-Id: <20250411095752.3072696-10-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: eb627ce8-585e-4eaf-2f8f-08dd78e21837 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: tWtlcpJYcgWEpr3g5iGMhkHmJp4RGjYTg6+nhNj7bCaUHg1zmgtlwrbFJwVChYhNVckQQv6GFIJQGfHkJZRqrnA/Grj+PAxfpfwe1Rww3nSOuftPAHJ7VGz+S9Z3AIZkxeMcTGeVakAE+y9nNhu92H3UeM54PRQCiVKfH9RXH+l4RZWmyb96JngLKaBOjGICDwSEfbHwjTTtLQrOEyLoHmciRcqvzS1GcRJtJQtG1MD+PwRkWPUMI3r+DbGPfdG3XF0iS8tBedw3wu2f9CullSC7BzEr46/2JAHstErOYWfqLu1NlaigMnIzwQ9CY0fz+hqpcIrC3nHeialLAKEIrvLcTVuFq+jMf1sIJ6bBHcgQo/zlHHpnuw6tMzJ2Jg9Cgs5hcqlgXQFugVb2YjmzBir1R50ubTi4FyxXUdv4dk2u6zvgO9Vyg5ksR0Yr9lH28SW6rOyqh8TADqTLh1Tim439FWm8nRKd6Hq2VRCoHYWyRLktQP0OXiNKbQbNFiSMyYmC5xh5WeKwn9iJwhQIdlDxqtAFIszKWfI2W1v6P5nYINqDFw2JKPnhYuHL/eHzMDPQw4ZKCgQYkAiXt4DDhszNMnCel1PG3i0Ud16F2kiuVv+waZMmMBUTX/DYsgSJXV7zQ2UKFUDc/gtF0n4TLM1iwMVDNNk5EB0XSyOK6uK+uxYoDQPfyHvlaXX7A6qO0Wmwey5rV98sqDc57dAmDDSdNUGl99yAiiya179GUhww0s3YFpNy8eIpi9X5wYnIuzLTJA/7M5m6EqypK0IjCQpF/LRdLQY1ojso8mgMpgijjefDv99IoihOzsE3FOt/eViWPcSwxOWKwO6lZwSeBy8SpwGht1cBxSvrnBYybXEEXKTNaFSJbeUkafyFnFEm+0Ow3+MP6gPonERSJ9l9rBgyBPViBclGwltIkW75GI+xunGAs/JPETib3yb/6RyHbTKihd+roDx/sZaN2K0ihA5Day8LZec/9LYBcGMK4/2IyyQmjwVJp49jNNcdOoCWXmHy9QECBYr7HHkrGRegVbkyqAZucUAYPDMJjl4nHg0JHNGooo18qkgzuwsjMsFgrmkyUMCeCce82ZwAd59LdJcNw3Y3ytLovqwk37O9shSxF+46sop5nqdXVxKETqfvUHrloh0izp/gATEO0O0i9i+/bwI76V3EbxdNG6mO38I5TiixzSBDVtOmKCfRlx9dr2ZmEc4a4xto6u+9mRDyRi0X0oN8JWalXTDs5RycvUuhXSuxv/xZTwBhRDyyplmSmDtjI2TF/6gpw018YS+bnD+fHSBMNp+WqGow3t0JxSQBKK1WJTCo/M0STxRkV5OoLb9Z9c7Az3B4j/9/gA1DDrXSD8yBZetCnBwJ9/rzvv9B7BxUfizOsMTK/z6S8ZUA8DaMkouGmhtWn1sbvPgYCcKp9Zn8DlDEbHLNzkwDzX9d7LUNDaxOYTrAqG4dA75kBXgaDNMzpYOoA1V+N68W+g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rjyG/Yc+SJZzLYMHmrOWf1jDwytqPERSROAhiNXSRrXVEjuje0JC7YGBDmTP2/lIOgwc4vrdGbXgJNq5L5utWEgrlJc0pwJxlQEIp66AQGXRGUhb7cMFYXtZMnwic9YbPtO/zXJXUS9x/Lw/Jaieqvi2ZMT9oqYd7O3rtWg1aWVPoRK3S/ewrtEfEDXSDf4uMIpiAUjhIhUXRTi4cPHApHLBnJ94+xQg9yY8XsK2vLuzv6hLnhxqp5xjtzabBzx4btvp/wbPRcpsGOA1jF1dcSx/1NRajEsJJyBwXTVYXd5Vw2s+D7LoeZPMELbpkNM7CTQKSO7BOLokmBiboj95TKieJbwL5krbjPas00wolmqH25dRzWV99Mw0Avuf2KdrUWjdY0/tVFLFt94S0YgA36RHO8WdjxCUz4oTG6K6PwkH8zO4Z3+ojXIkpBqLEWjlMJF6CTDr+LfNN3vxzycPr85dQ69ymqmq/aJtO9jKKY6uEJgnGMwashNLpANtQS3F1UdodvS/v96kz3McfabQoRKU4p/cJqzVcWaR1QuuoD1aE5wTEEhh2oh1KTe+zby2coqEiL481dSfI4hx+3c2clo54nmyoxCV4jY0FuCUxe+1OTb3K7gnVxN2MDOrJIghCUsKQq3o4QkoqaBvDhLsuyYkRO2PC0fHjrPlplRugkj7z3NR3O2XVhYZ7lSF2HrF7oqHIv10SZ03lxphrU9+Wmp4J14AOryfRtt+zgKaCgKub2/XCNn2SZUh7TmFUFlyrzyPfE/aqItLKETiIQ7kcpdiaVFyrqLIgTtkqTVRmEDEB/hY6UIdLx7SX5aiX/lEeRMBZKUBwTiF7+lQ1IfBKHkNHb2fnb2fTSLxPajXRexnsyk1Wnp3SSiP64MgW4F/RLfQnnVuJtfVhQuSM4raaKm/oGtqAUO5LPoW1M98Dmt8WaIj047CE9/ONIH9RqnzS1HEdvE3cjgbR/OvBzbRjLXZRbFu48OTSBD53n8BDJp+2prjuHneCQwuXdswI7kqRigL/5q1/A6hGAokYlr2aJQYwGIr5eIN5J8vjNAWrAXf+Com814dVX75ZzIlS8qkrnkCeYw5mmnGcPHxqf1eGAdzCDXEUXsxMhlfqfG2O7/3khvf5Dp4P1/CGNfs7N5u2mygo9wS7oK+MkppH0IDe+t+oUYJJbx+P7si/Gx0Hd7DpgHXS2rlwbIbwCNgzIIuxXc42QoaekJouiApfi298mgJZs1PFc5Gi/RSrs33cX7kUrYWBDXxwyWCy4ecUQpG2vCaZVD9LKF3A2Ix+4spaY0352E+IfOgQbRoW8xq71fBfr3s7CGNZhzoNnPEL66s2Tj2ZB8ZdchIKlpFp7uRs7kDfUa7Q650pkNJ4/TP9ChnshINNjK6EX/KXHTSXxJmvKt4pWZAos88l/QNQhZoWfWchet6gFs6GgHahK9cMOrTe3OVFxKi/g29uOmbOgFYVyytWJDgeeXD71HH2rs77qzglZLLh8mpm8rm44wunQZlA6aEGh2qOtGPQU/ZGz7JjGNEeBxJww468GIM/8U7kCKVAt2ACIpWrssnamG5iArP1KNSto04fX84SVux4AKc X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb627ce8-585e-4eaf-2f8f-08dd78e21837 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:42.5033 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hv0gve+I717zcXZiHJ7Z8amgFri3uL9nEx9ijsJvCnf8XDOoHRyNnvOrgYZjipD5Czv9K2f2NVbpO5phLrNoxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031753_522604_7BAF1838 X-CRM114-Status: GOOD ( 11.20 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Actually enetc_set_rss() does not need a return value, so change its type to void. Signed-off-by: Wei Fang Acked-by: Vladimir Oltean --- v5 changes: New patch, suggested by Vladimir --- drivers/net/ethernet/freescale/enetc/enetc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 5b5e65ac8fab..a389d5089734 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -3232,7 +3232,7 @@ struct net_device_stats *enetc_get_stats(struct net_device *ndev) } EXPORT_SYMBOL_GPL(enetc_get_stats); -static int enetc_set_rss(struct net_device *ndev, int en) +static void enetc_set_rss(struct net_device *ndev, int en) { struct enetc_ndev_priv *priv = netdev_priv(ndev); struct enetc_hw *hw = &priv->si->hw; @@ -3244,8 +3244,6 @@ static int enetc_set_rss(struct net_device *ndev, int en) reg &= ~ENETC_SIMR_RSSE; reg |= (en) ? ENETC_SIMR_RSSE : 0; enetc_wr(hw, ENETC_SIMR, reg); - - return 0; } static void enetc_enable_rxvlan(struct net_device *ndev, bool en) From patchwork Fri Apr 11 09:57:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048189 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 65043C369A8 for ; Fri, 11 Apr 2025 11:19:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=g2sl1D2ogjKReP0a7bEBu7OPeVSX/joOCaVl4YbJy18=; b=KfAbmmQs1rACyUpArb1v0+xd6M Kno3UcvGuoxQpBkxM2xwJ3hpPTNQ7x/z/9l1c9xxQKeToZ9QObWowQ0Op368duYSRort7+irCaXoi qlAA0ueAP+Fi5Na8JWCopJJyh8p6uT/wkMUAZtPfN3/lE/+B9nBGJfd4JMYOTopvPjiMxONDmzQD5 jv1VAX9btXvRUQ+FszJaQELtPwUX3cutpjy17bBGc5vu4+9aND7oxaiL+rxDbJDbb8g40SOc+sr0G D4djHFLeSUKHj/1ejW1SfwCJbFduLGx/k0K9pumm+6NxqRfkt4THn7pHEBemnIIMYj+/srb+g9CWC fJoVq2OA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPc-0000000DUy4-0qyq; Fri, 11 Apr 2025 11:19:08 +0000 Received: from mail-am6eur05on2062e.outbound.protection.outlook.com ([2a01:111:f403:2612::62e] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BSN-0000000DLkW-22Xk for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LB0K/gZ3st0G0Pvg8TcsziN3Pds++8F/8bFziYJ3cDeFrZYzRJwfBfwaLmM4q6kn8UAX9+ZVNr11AmQg4oeQRf5VydsrTJmx4dEmAFQjIBpFyDYA4dXphTsosTqMqOR0SFFChAg2EEGFZjr6pbpNxRd9FUec1ZKzbk0EQo84lWnBnXLAup45at8OQe+FIsnxfYlvgmBXUyb+K9sYuUhlaEMaxQhXcD5skw0olanX0mBP+p6N072h1V4wKqbS9f642fhBHqH3m4wKl1z3gunUSiAfyQpNcIiOSG3kZnpU9MZKyBL8GJ71pbKF/whokjGgtACX7f7Lmt52251P2iAZ8g== 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=g2sl1D2ogjKReP0a7bEBu7OPeVSX/joOCaVl4YbJy18=; b=lecQ0eMMKdAKiJxGLet2mFz5TpeVnlWNLiy5sedSxKQMyGzJJy/ElBSGU4UByB15ruHqr8OVpDmkA0LF7pDr6mm/I0zgpo0wyXFVf4hkA50hjzzq4lra8yU55fgxav1pO12clP4IDoF5/i7ErPWDCdzt/F0nZkUsgDFfnrv91O/4a7fS9r667L14D2vuoXwbSY437hXnnkhL1Ri4izZ0HxTd4yxbB1i5fDdYwy2kkmk4spCCmPQtR01NrwRy7ESLQnfdRbCKrPXMpRzy9sNI5SO/ytP3+N7gtmk6NSQ+w21D3s+tU/GKrRWNKYRZdsq0yOWJ2n4SM34bBIaBuAz3bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g2sl1D2ogjKReP0a7bEBu7OPeVSX/joOCaVl4YbJy18=; b=gM/BKUHNmpCf8Ws2WSTYQZw+QPTzvQh84hUHplbT/ahPCX18uhfMNwxclgBjtQaEBUuVXCPMu3PlyZQ540YZRod6gYBdzuwoL+o0rNdZz59diLWivnfnfBj9wqHCj6Vhob0LncEG4WxS6c1pUwqVPpnURm4kxVfi4+2blu81A13uGhXP7yrd4L+bNzTyH5HHx6VeotEn0veMvi+QO24ZKi8AgTFrfZqesdz30bcqrvhkTvY0XryVKKn1wgpW3mYxX0bu2IkFQswjRAwuZHAj1n5DV8JUfdJsh3A3uhxfWJg1l9u4X+lKWFmExKvd/RLA090rNDugcH6VDsS4pa9lIQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:50 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:50 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 10/14] net: enetc: enable RSS feature by default Date: Fri, 11 Apr 2025 17:57:48 +0800 Message-Id: <20250411095752.3072696-11-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 391f1660-43cb-43d6-ec9f-08dd78e21b3b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: liGpxH53sRHIZ3P+mCd0Rg7oxzwyDsM+iUKN06YQjeqZBPvnwNU4af7WkwjrHB8b+FmO+4SczmdYOp2zZV2T20yRddzjac48aVdLhPK+4lBsFYFsrztIssjGEKl9burK0wTEd96vW9ttgssTbWbRg2zMgDrVhWeSutbfrHNLbzLidod10QezJ08vc+qR0zr3m30p0MOxBI+efD8CitE39S9jaIcBRSm9T9XGxX6VF/8MpwkkEQ8cTryXI0cUPEL8t9xT8Ho1IV8MuqAVFSMnil4M8Xo9IIPte63iJyB520T1HtZbvLi0YFb38m5Cewvd0hOJ9nEj9Tpih8dpwemAV3ztRFx2gXVgMiq6HNPTBdvNuFifUiaLZDDBP/hSh2ptNetOukChrqoGQPv5NHhyfwqxq0Bs8YHC6u4EbxnTu8L6bml2HjohVTDgViipij55bRVUp1xhCl6Dc2kFMvWVHFIv0jfoEqJ2TrK2JoHiNjdfLRAqyM0CjNXJs+BwA1eANq6gREjIjNus+ud5xwIy2ryDHptbnTjUzRefhbwnJWjv2drWFus90CdmSoIq8wR4+2zmTmUvqYkGcQtFcQCtbOoDaGAzMLwSflH16PMu4W/CzRiF9Ed3CU/8N6CCR3KsEl67n3RtArB5nWySpr9X/xsWTUF0xyYjnvPq7kIA6xSNw7/P2O3tE5zigzfdAygA57tTTr100loPkKz5BdsdVkmUVLbZMeUaudeBC2RPbnQfvg4nFrD/39DKFsGY8QEgEiUrxBbo6jJWbiZFEEH5e7TShhQOsG0FEkhI6tKvPm7SkCrQeTG7pnydqK6SaeR64G++0Gk/lw/ukDDhDA/IBT9YOr7uQi1eqn0BXPvFwo6JnbYw02q85oZNlYEHms+TCdwIhkJ5OzLCKnvHEMCNI1q2XSRN/M+pPycS3yk1oUViTqgDUwk4TFX43S62J9I8O5Cro9xDkXPW2gP787KqLryW+rJA+fGfystlZlYvNxiFj+6UyToajfmTJuIqlmxR5iVqR7dTnAtwozLhy6Nq74UhB1dcRcDPbB0FqFn0f+vDPxwfkadTDwplvON5Ya6g55fs+zhDYNiejUEk7GIyaFJcZpu0+SvPAGhqoSQsyxgNby7V81zwEfAvMli6bcfT0ahJg9NXzn7O6VQyyv+TV0aJ1StizIi1oqoHWP2Sno5eonG9olk3w3CKKXQvvJQKnVHrzAKuni60s5r/O9jTyrgRE2Ch0ibxv3WgxRQGEtApYLXIi2Sf9XMncxpHmuN0RIrVL2yP5WHbwIGBNphhvxlsp/7U2VXOaZAWrILJWY8q5y74kAypxOnUP/Nfm5NJJs+M0eA3XlWV5adzt/PS31loi+n0ALjJZwPqAXsN140IAThLLRJOya7O8Y7NmCICXCX3pNN+YD+IyZsdkGjAh/lrJTb8+bACN2jmfEsUbYxe+ckuu80FsGA3dg7cSQ7D1+FcPpbtfW2/V1CgOt26kg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iO0PPqp91PMbMeTLtMaA2q4yUEOqKhmvymh5R5KLf4Kb50Wc+F5QfEacrkLuCmLQJn86XdlnrIlC6u4hM/W1E3piYIz/FC89/cEgf8SdLqVGPNbrpu+blLZyfJeasQgmbhSLPAp4QeXspLfsmqSPHTKa3TyI4A6irA+U0cMnBqkqFUotv9ajeLUTy7c10z3f21N2+04h5Fpk/rdEFsIUPyC4MK2avKMNWNTtKsGRIOWye6fJtq5Xgz9GbST7wiKtRL7YHP/rPFwNnrBjSMPZGlQOMFdho39RpMimAtvYYGGeG+IEaS5Skznq+lTIEtmzq7Zej2ASxuomA0wTLA0+3xHhhslFezoITArGnUcVvh+j73HMAnsluRzKAMDx7r0pabMGPH2DLbApL2KliZoYheY+E1ahCnrz42QTzYDR4Hz5dqJWbxF2Tb7jf3Ygp92grhgnC0YTywztlAyKxCEaYpnI6K1TUVR6vrELtZpnwLomF9EtHxPjwW4/HNvgs29sX2pZYtfpKQRMHGu+V5vUQmWVJDzjw492ALVd9iAusokrZ4R4DrMNl3MQYmSv9vw6Ow0pxOBkYSsYvw/h24zdgNuwy8hRCWB3tRecUCLQoS31F2DVV7AKHa3i4gWCqFLHoAPt0K3QiglIF+e8KtN23YpqpuUQBnDOWAQZw4g4gmekQavjIyRb8ibfhSGamJa3783OWCeeTwMbd+iJw5XDtWEBixUxCqrP3myBxhRkqfyDaWBDA0KmyiS+9CxbOi2wqxw/iGG2eECbK0W9AkE95qPhdHIX99c8t2JMKVbljiX/1GnKYKbptEQ/oGEPv7nAayXV3jLqswqKWEJreitgbm8MhcWjmLXWgbP6bvH0e8YYeLWQaLoCBoQiC9pot7+XXvB84ebBg2sCAYcVvQ2g1m/sVs+ynKgAv6jPTkoroQmZQvQFqPRLZ8GdgE/uhSgZJQLrsK8LQ0KJ8PTBiSPECT/5QPm+J1tTSHE8HZmSfX8ClaWlLzcuSZW+00oC23Fvm54loFUiGnTBTF88qv+fKjBuf5F5JHCUNaq0X+AySTsaWyC0NrgpnJcgGRAtcwj2KrmQWyrpJX4LzSLcIUuSLBsxndP+KNs+eji+9P2/UFEhH7kqC1X7O36etn8WR1JOT6yNktW7RMb2GeX1Ck7nILCfIQ1zertD8/MoDrj+U4jXroQbH+/UIc6/w1s6QltfzMvmL7+jzKKbT/X1TIFe53LQs50RVrFlPnhXe5cMw3jWFKZvpi8j9hevav5CZN3i+XodgzGxVg8GqU+9pIoziJdK4dZH8n6zjpAkK1Zn67+zWnEPc8BNJPprAZ7HOypirV73Co8sc1Op1ILRL7a8Ka3kVrygUPnWDB/wl8LLgqtTUOuEk/OGabo9OVTrIHx8aML/wlexXilUSXhO0Vv1nQfotDcINN8bSF5MvJek5aZKOFDPDIMyn+XWTRtvokGyX38UhmBZYc3+qhWRPuChBUAha4JevTUTx1OFZCYaO7ysQ5sa25CdHPwTKIm/5nVp7hgkqf7xXj68pKVA0eCJJyEhiRFy4IqgxWdXPCQr9qsdzjEgFZ1bKt2a3mUm2Vm2 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 391f1660-43cb-43d6-ec9f-08dd78e21b3b X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:47.4230 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: shU29D6vNDphJ3aiEjPocDP+jDfSVEvhPCoK2qyXWvIpPVLU3J/4hp6kfO431Acia6LgHSUGMQBBdVn32HfF3A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031755_525512_BE366D02 X-CRM114-Status: GOOD ( 14.02 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Receive side scaling (RSS) is a network driver technology that enables the efficient distribution of network receive processing across multiple CPUs in multiprocessor systems. Therefore, it is better to enable RSS by default so that the CPU load can be balanced and network performance can be improved when then network is enabled. Signed-off-by: Wei Fang --- v5 changes: Just rebase it based on patch 9. --- drivers/net/ethernet/freescale/enetc/enetc.c | 31 ++++++++++--------- .../freescale/enetc/enetc_pf_common.c | 4 ++- .../net/ethernet/freescale/enetc/enetc_vf.c | 4 ++- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index a389d5089734..d686baeb1aa8 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2420,6 +2420,20 @@ static void enetc_set_lso_flags_mask(struct enetc_hw *hw) enetc_wr(hw, ENETC4_SILSOSFMR1, 0); } +static void enetc_set_rss(struct net_device *ndev, int en) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_hw *hw = &priv->si->hw; + u32 reg; + + enetc_wr(hw, ENETC_SIRBGCR, priv->num_rx_rings); + + reg = enetc_rd(hw, ENETC_SIMR); + reg &= ~ENETC_SIMR_RSSE; + reg |= (en) ? ENETC_SIMR_RSSE : 0; + enetc_wr(hw, ENETC_SIMR, reg); +} + int enetc_configure_si(struct enetc_ndev_priv *priv) { struct enetc_si *si = priv->si; @@ -2440,6 +2454,9 @@ int enetc_configure_si(struct enetc_ndev_priv *priv) err = enetc_setup_default_rss_table(si, priv->num_rx_rings); if (err) return err; + + if (priv->ndev->features & NETIF_F_RXHASH) + enetc_set_rss(priv->ndev, true); } return 0; @@ -3232,20 +3249,6 @@ struct net_device_stats *enetc_get_stats(struct net_device *ndev) } EXPORT_SYMBOL_GPL(enetc_get_stats); -static void enetc_set_rss(struct net_device *ndev, int en) -{ - struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_hw *hw = &priv->si->hw; - u32 reg; - - enetc_wr(hw, ENETC_SIRBGCR, priv->num_rx_rings); - - reg = enetc_rd(hw, ENETC_SIMR); - reg &= ~ENETC_SIMR_RSSE; - reg |= (en) ? ENETC_SIMR_RSSE : 0; - enetc_wr(hw, ENETC_SIMR, reg); -} - static void enetc_enable_rxvlan(struct net_device *ndev, bool en) { struct enetc_ndev_priv *priv = netdev_priv(ndev); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c index a302477c4de4..a751862a70b1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -128,8 +128,10 @@ void enetc_pf_netdev_setup(struct enetc_si *si, struct net_device *ndev, if (si->hw_features & ENETC_SI_F_LSO) priv->active_offloads |= ENETC_F_LSO; - if (si->num_rss) + if (si->num_rss) { ndev->hw_features |= NETIF_F_RXHASH; + ndev->features |= NETIF_F_RXHASH; + } /* TODO: currently, i.MX95 ENETC driver does not support advanced features */ if (!is_enetc_rev1(si)) { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_vf.c b/drivers/net/ethernet/freescale/enetc/enetc_vf.c index 4fafe4e18a37..f6aed0a1ad1e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -155,8 +155,10 @@ static void enetc_vf_netdev_setup(struct enetc_si *si, struct net_device *ndev, ndev->vlan_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6; - if (si->num_rss) + if (si->num_rss) { ndev->hw_features |= NETIF_F_RXHASH; + ndev->features |= NETIF_F_RXHASH; + } /* pick up primary MAC address from SI */ enetc_load_primary_mac_addr(&si->hw, ndev); From patchwork Fri Apr 11 09:57:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048188 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 12EAAC369AC for ; Fri, 11 Apr 2025 11:19:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7i8gNx9vzcfj6KkEixZFWViA1eY6AXKc4K8PHlGLiVs=; b=Wk1gDuD3xlQEBD1WWbIHjC0iDR nwKfSE2EMtEALmoCXkWK7pUxjeNd31CZMHkTeDg151eaxfhEdC2RIHxlLW33vErddbcqnJeDWjOxB /OJokG+oybXvkR4RUi8H3gJUr5IsAwCv0r3v3vrhtzl03Qfl31mXrreGWfPjIszHzlPn+yq+vQdLV +hrvUK0J3JHghyfNm0kV76C2k2mrECe8adAGF+ZSzgfbfjJCy7/H39+N+hywqhjwnEwfGXHIDeF3w LJxunWF/Po3FwUeM5dbzz04QjtmIUAeNB+TZeJTvV7Z00WzEj0mkLMkVnQH5Jje8L/znHoT2IHew8 x/uNFOqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPc-0000000DUyR-3JWn; Fri, 11 Apr 2025 11:19:08 +0000 Received: from mail-am6eur05on2062e.outbound.protection.outlook.com ([2a01:111:f403:2612::62e] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BSO-0000000DLkW-42aC for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fiJzZOD6pZs6j5kKVsW3Kf+m3kNUyOKPTADqAXBUDF2QpdqkdsRoF3vVfRgyKB0xX07hlwqvdWYix/0rZRwCJHCMIsAnW/+lfaFSZe0ZNa712nX6vYCNJ5khrMEuaMZlKi8lbWpG1YwsHDTZrKeXrGsC3VBJ9uPMhs/TNY73AoUPUGMPwqwh3aSjxVB21zOgssDURcVObunAQNVLEkn7Vi8uqhfPTgHpJdo0Z6isOrugQrnEVvkrKL6KjqEpBLCWQ6BrkhbGcbGLyrLZtNxXvCu2NKgJn8K/6RwXOQmfq7G0PD7Zxta3slAErLfmf++xjl6GrEY0qwcGR5XrLGMMiQ== 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=7i8gNx9vzcfj6KkEixZFWViA1eY6AXKc4K8PHlGLiVs=; b=y3ll5UJPkHMSXUN6mhlhGtGX2Fw63uLapRbAXBiELx5R8OF/hGcd5ljqZZllDRzF3pZ7CbPDUicRhbsbotpDcy6nRO+eAyKaCZyX9llO52L4h4wKQCexqUawqmI8tYWMJ4XY44N57AswUA+jeTu/rUScqxhmds8chZdfbNpdgEwXJzR009a0kf7ywBJkQrCF1moNi9mOjFAUlCMNA0OLk6T83Vc15p5S+jEQkqLMSIsXb8GmHW8YqqXht3MssiERXKwfDGbacCY3dXY8sOzQIh6hTo7YopL+D4d3pjgmYkymGt5IBBxxQG4f8QpLKTFD0dZMe8CgNHClgTXjrQigaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7i8gNx9vzcfj6KkEixZFWViA1eY6AXKc4K8PHlGLiVs=; b=UACcK5KicS3uLzazR9HmkvTJYd4Rt8HtMDz876Y5mWXWB5rq7O0y48iUoDBCobCZppuWl5Eo5gOvNJhVO3KUa5aRkDHghnkZ8bU0SbBijMLCv2eYrnHS/ZeyTD9vWUamW4qYfQNepUaUMoILfJi3CdjujApYGZGNlP+tWusG1ziP/WaT7CptUz6CAS29HgJNqrPZ+ZgGgkih4vCzMgkHvgQLlHSr2bZy0zue04n1V9YLar3SlLbNlhDPj+Mj/JqoXHYiVfduuzWCfEMzJ5VJqullxWKfCb5gFRcbrvYkf6nk89zBmWPEK4+5d1HErZjAtxUk2ooIuiaiczLCYCQoBA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:52 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:52 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 11/14] net: enetc: extract enetc_refresh_vlan_ht_filter() Date: Fri, 11 Apr 2025 17:57:49 +0800 Message-Id: <20250411095752.3072696-12-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 248c26e3-7991-4466-aa17-08dd78e21e25 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: 1DCCZNW42rVpS0SknAZiTnRATr9kVgPle2RXZ2rl5wDjoaD7wgGLkMqFNBj04cLHVusjO8usqqhCk/ddudQ1fS+NZytuwu7ANQDwMLZCcbpFt30W4gmiSfj+f/GcPXHcgfke+foFQpjMxseu1O3at2N/6pGarOdprpIfOSFQc3yyWIkXLHuNm5oNZnVXCCKVAEinpyvlCL+FNnkVxes6RtrwTnMgPUJ85CL59fAbTkRH6ZnR7vEDhNWBcvUFK+8lIUZ+BRKznEMkI73tA8RxhrKP9mznKYecAOnpGiqAI7nlc2SD9T4KrEGBgb3Cgpx/Vf5WCT8um6Og+sz1ZAnE0tYs2ZPxMk62iyVXP6nK1n0bkjud8LYR5gD2siqTp6TJRZQeSRtI3M4p+X6jdIh7OOyv6hRZcEjjo+6KapFiYr4Fe6VHjWv2dI+KvRC78r7DVZG04/AqPDHZwHjQDGXS1gpUM1u9xxi3RBpHs4cvWmZTd8nWwqojhKjPqSicAUsWypdYR9wdyMUWDLCnlKDArteeNVq4rNkXidndkhJAkDZsslEbF0noCGa/l5cYO30PiLjbVXHj7iKolAVcbD4fGXEP7HEUhnfpWneh6+FnQcmmEns41/ljLEIf2bcEMraBLg7I7LImx5H3XxXzBE+HFnXTijF+CNdHe3aHL9/l3XqRiDITReE4LVggGWa/tLuMXda5saJ23BLZ+blEN7kh3SaLqAlCPJnYGwGqSoJezQJgxinwmYqX0Gw56mYTCxeFCHtYTEQLxg/L/eVhsqUU+RDJQ3uAnnqyCKT8j2G62McTA7dFFYO7PDlG8Nc6MGzkVIBBx2vks1mXuWT+Skg5+1O0t5rJwH+/DNL3FBchoHVJISASfREFRdJdWx48O1qSK9rYbk5ZxNOfr+VGOLiugdGBm0O1CiNjKcJCZPMLKvNcm1AgFJW7HVLVn/5R+bYmJO0fFb0gPm/MLnNmSi20X+rBpymBwm/ipqrZXC9eTQg2kfRVAHuYCr3tTY41AyziDz832YoZuCFMcFvgoFMs/fNe08mUNZwaVg+L0ocSavkRrYOaaWkZNpOcjNhZGEzwwVsTJX9zdyig8NtiBlHN4J2UTpuf5tuQrpN4ARtgvkhoaydIqcLpOdKyyVExloEHQLCUtP0RA5RZA3qeC8hb2bAQtQeind0xuV+teCH0kdDSkkDoOEG6NM3UkuF1KuDKnL5Lghh6aOCfoQiX4po4eLUdOCG3945kgO9AXEoOwRG3dn2E5RA3qUMtg+VbzIIozt4UIHosqwAS1yrOYIGM688EIt/1/L5HMMk9HwNYnTwUePy/KIVZB67vo5Ft/1+8v/82PeivTOKQGtl9iWRrsnVq5kWEUgDyoVuVIwHWy23y+mIYKu5Tlqi4ft8NacLMLifCwzuYxaBemtHIwRojp32ufuUHeO82NG5tNLDODJ+O+1YaEwhw2/185VYdkWWvh3tykQbpDocbUMOD6IrVAA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9m2Qpt50wsTmptvHU2uVHCj1Bb30lAgs+8/Nwu+wAGbb83GwZS7Kb1OM3mduZxchrLqlCURiMl3HOelVuOa0a2UdYE6Hc0v8B4Y/8wCmpFFko6Wtr7XrNMkvJetE2Zodvp3E72fS3koxmj0NMd2IxbF06mISRU2bSu/d27S2isjyWCrZy7SRjxwpnQuQDRJmypDqF5RftOs7oiAPkWkiDRr8GZgYzo2WBWaUWeAOZ1seftRuuxgcjfbuCeFjUk+18SF4JQaX95zsMbwm7/62LuZdQvjLT65XRFzz+XcUd1+OGt2C4MdXAE+ul6O4g5P7LjME5XAhoIPLaVfVuddMLl3iN1OHohlumIuuxTBcY3+abZxAy1mRS9DdYU57D5tQIQJb6/SP8VU7se6k/uz7JpOjaHb3NBpFqunXU0AuA/Wl5xh3LLm3SNviU2CqLGMADeuH5IXPNa3LhoxnM1AugDkJ3R4KvLyDLfc8DOCqsGS95iP0f96hu/pXCqKIlq6tDBIUDg/QPHTru4j4egP95LgidQxZA9QBEFDXziOzsZToR2cK2p5zXTZsVcpvmQLDOt24vCCrZ4vs2KmyVaTEIljqN8awEvmCNsyYEUhfYmPi11Fo8gH3aYUNuY2xwsJi7KYQImo4k+v+Et8Vypq6NBy2lhGWQtJ0YQ9dmt3QGQ14T4JshFcnPr9WkkRzk7TQgZC01s7YPY3hu8Jnunw5VBuUIUAXft3+k1NxlegLbY8jYOcpxZlknZFOR6B6WS6RYqXMGFpTXylGfBKML8IxqPhbnfgB7Df3otoa5EiPLl3NtHdccFlpSIgW6P+i5U1SVyOpE/fvIthfL5fRjjVNFsbG6yWmLSgS0U/Saxu+cCmkrcSfupmxkNNFYBtqRcjIc9yH2MnaIMPD2qZoUjDCNZAi7NIAkTPBZZb0sxHkBPIGFRFfVU+LNAaHqjfhLCmn4kEfAVqmy9mZqRp3ULXNu72rQgnps+LWlEO+y2YvCH2o78g/j5TWMNLcqJloZqMJsxT4A78mP4ekMbPs3heFIp/4NKJyZKSlXV3SlJ7nLN79Xr1OJlltDgnV+3YJ4Cf5+xKAkgqIxjJCaS7woX3l1/l5U0mBhtBrb07hy3mKlugSBl73xb2nvF0tjhT9QOfoumnSJfbL4/7bw0JoFGOwVp/ne8lIckF0DVkZ7GAXqmVQ5+IufYL89ylqtwHbMRtBv46zszDartaUetJ7gabfTUjwHietnknLtye0/soAjg0MtFKP8C0blmuogQ8F/8ebCawdlBCL4slAFMP/G+MGWoX+Zt1cSlwk5OmA/3sc7mICmnE+BFzb5HhopcNtpQ7v+s7j+zjxsuoAfiWV+DWt37sfuQ30Pfl0FNQ25SXYKiwWvnoHCSpzxWyGEd1Yu4Y+xXscpDIkQHxyzSGohqtQN1xzHtpWZFPwrFFQot+hbhNyjP6/3aos20hwUHkdr34WvM0csd0MVHgaySAbQ/0wvcfnbf5HUzaVrrtOFrJHFTSDs4Aof8jHpemXjx3WqP3MZoYPSkjsvoTw2M2knZoiFaeq5sSrzuemIMXyDBez6eZqb/iaxCp6Ti1gpa1iGIia X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 248c26e3-7991-4466-aa17-08dd78e21e25 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:52.2548 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: je2cYJX/Cn1nKz6IgL3ZPdaWCHupgZYEgDqstEtVHMBhURAhB/lfCnkt1YbXMZSD/9aw1NXT+1LPkxLJPa3p+w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031757_006537_5D4E9E06 X-CRM114-Status: GOOD ( 11.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Extract the common function enetc_refresh_vlan_ht_filter() from enetc_sync_vlan_ht_filter() so that it can be reused by the ENETC v4 PF and VF drivers in the future. Signed-off-by: Wei Fang --- v5 changes New patch --- .../net/ethernet/freescale/enetc/enetc_pf.c | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index 8f2616fd83d2..ae2dbd159ab4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -234,21 +234,16 @@ static int enetc_vid_hash_idx(unsigned int vid) return res; } -static void enetc_sync_vlan_ht_filter(struct enetc_pf *pf, bool rehash) +static void enetc_refresh_vlan_ht_filter(struct enetc_pf *pf) { int i; - if (rehash) { - bitmap_zero(pf->vlan_ht_filter, ENETC_VLAN_HT_SIZE); + bitmap_zero(pf->vlan_ht_filter, ENETC_VLAN_HT_SIZE); + for_each_set_bit(i, pf->active_vlans, VLAN_N_VID) { + int hidx = enetc_vid_hash_idx(i); - for_each_set_bit(i, pf->active_vlans, VLAN_N_VID) { - int hidx = enetc_vid_hash_idx(i); - - __set_bit(hidx, pf->vlan_ht_filter); - } + __set_bit(hidx, pf->vlan_ht_filter); } - - enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); } static int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid) @@ -261,7 +256,7 @@ static int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid) idx = enetc_vid_hash_idx(vid); if (!__test_and_set_bit(idx, pf->vlan_ht_filter)) - enetc_sync_vlan_ht_filter(pf, false); + enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); return 0; } @@ -272,7 +267,8 @@ static int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16 prot, u16 vid) struct enetc_pf *pf = enetc_si_priv(priv->si); __clear_bit(vid, pf->active_vlans); - enetc_sync_vlan_ht_filter(pf, true); + enetc_refresh_vlan_ht_filter(pf); + enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); return 0; } From patchwork Fri Apr 11 09:57:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048191 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D910EC369A9 for ; Fri, 11 Apr 2025 11:19:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=b6qd5WwkupPB4CzTmiXmEiyLijwZnXHBr7Acr0eGQ1g=; b=I9Th1OZLyVZBmeVgpcxAwV+YKd DfxQ/8Ugu5ZhL1xa1YlCWHXuKgGWdgxwRJpBwVhwGr0RCNStWXCL9gghTOcuQdGk32KPQR5RLftpH KVTu2iD3L6NliGw3L4TZ2LjbSm7tU7W7k3MhFkWtE4u0Xhj9PfPt6jDVgpceA5qRNJmJIiW+3nrRz fvg3C++M4vPYJEJmV5BdW6I4tMiNvYiwFpLsd0aAcIYAirXKkDQVkmww2IcaW3f0GAu2OuxNf3WIX tENZHaRJXDX/r1EEqI5+fiqIMwxptTCEkUnlVB2ccTngTPpjzyX8OCcmfj1lv1O8NXq3/HTn7uzfV XcMvps5w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPd-0000000DUyi-1hYv; Fri, 11 Apr 2025 11:19:09 +0000 Received: from mail-am6eur05on2062e.outbound.protection.outlook.com ([2a01:111:f403:2612::62e] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BSQ-0000000DLkW-269E for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:17:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=x7A8pECrWopJ0f/eACWLzAsAjhVSlfG0xb94psd2Wm7SsXY4G90qwpVO9giq+ecoulCpQoq6du1jAwDiHWA9UXCE+5rN4okKhrhQ6/cpP6pzGM1oa2mbOS8BQ0+zJ0leNSLpZkcpZI3XQk2aqeyR0AqebFdbsG1L8ANkBDzPanjeZabes6EjkC4OXcIIFLbTywqvNzpGb1Va5AbEo1pBpiWulQQ81jmmwpmykNSzdwxlkN3Fy1XSwTBFQRO8hSGqCCGD0kt36533hNK7VfmrsfmB0/HAuVjK0OdbNGQlfhRVvY52RbdqpsPNpJUUsMyRyfqM80oxxXCTbG9PoH2bCA== 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=b6qd5WwkupPB4CzTmiXmEiyLijwZnXHBr7Acr0eGQ1g=; b=aj8qThdZ8d/I8TtG2Arkz5kRDrI2ycnbNNr0YP+dArl9U6kVUHCSgRP2wi1fUsB8i4Su2IcBF+W2pfC8ihBRDJ6uzrOWeUUTDqTbhuKP4PW2Wi3+yMpJVpEQEsBsqUgqgcVdcN0sX7Smao7fPCxQfwN7n7JjTsavJzwuRvtFY3txHWHWeDoz9UnoR3PXnTMkCb8V+8TVOO6dZnGs3kyJ78LIot80pKEfg5PcsU7XnY/QEG3w3vC7a4F2upcPITNABhBnnOkMpyyk283ry2Vyzn0Z15j0qyfR7gzibtrMZAKRwIwc1yW/ZG6KCq9Syc0iZCplczec3NfH2zo2uQ8EqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b6qd5WwkupPB4CzTmiXmEiyLijwZnXHBr7Acr0eGQ1g=; b=Dlo1ZsYrTT2DPKtD8JXtKWGVKq6XXuwxt9J9PJtfR8la1XEwNFt6JoxAtVEnNtp2PwQ/BtMIHgIgm2e2oSldMDgbDD81S6RpRhiAWLsZSRoO4n+zja0C/BQskLhYFoKQfzrpSIDpMGqO2bpr6gwDQ2cZQBhya3PaQcASXzw5RzHtc/B4E0osOHGZc2vghAi5SgbL9kGGwk0E9x0E1jq3aI9y7GyVINtVPKOf1Skq7idJA5GJaHJ++XfXPcvTRGEDkqxbZjDCbPbxEREpxlVGADnjGtMmRSTp1cKnH9tHX1pBpBiANM96yWx/2s6iWOpk4MOHdznpfVxH4tPF59xCZQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:17:57 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:17:57 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 12/14] net: enetc: move generic VLAN hash filter functions to enetc_pf_common.c Date: Fri, 11 Apr 2025 17:57:50 +0800 Message-Id: <20250411095752.3072696-13-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: dd5c9260-99a9-4055-59d9-08dd78e22105 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: eIzwXuM/edCxxqB3mKmq4MNy/eAH3ekKZmgP0Twzsw5re8x/BPEQa88gqnVUdvhnv9/YV/pw4423Xkbqxv//dCP/l9Vu6ALeTNC0Y0eDM8PXGQtXVG1GsRhX+xgdy0xSwexbQvEXRW7Muvu/nBQLW769lbXBGDlNQWsMXsW6y7FuV6cBItEJMdWkZ5RGt1Glgm4PRcAtdlOKU5Q/NcyT65MxzzbFDKN+ElJY7X5Ro/oreROtQBhMJy7y9KmCYr5p9R3kx7JCtLi2wUY7EkrskKjDF1gRNqnZZ3nLqZ316bHj5xbRytU64LyCzs+NiEpXKcGCyDoZZlpCSSjnkHUS7iodw+mNDNGK6f6vR2F+j3/64PC34Tc5KUMDlMOhqTwoZ4rswkHZ+mY2o5xOMmLpTH3lbO8xcxn+cEfiyNYD+/u8/t65BFiyqL3ww37+kpiWFZsJlUyHCzu3/AMymlA01B0Aa9U3a+J6FBPE5SnXzx1hkfroNqkjK4RGhpLSfgZ6TMVJ7m3wXbJBJgaZh6zIForyQ/qcPsGFH5PxRIIcCTlHV+uaaPoWG+NfInd+JODOjrW2+HVc5lrsjgsjju4F5Un0dEwbXGdMfmH5O8+8ToJZNKZnvYlQrEatoU0D5B3FVRdBFDDodOfDWYYrzEeW2OMFfPy7zgbNzIxdJc0UNytv0N9FZ1BiQwDtH7TeAQNVtqWD2FhThPOwSkCb/KmZP+FtJWN3/YHTfHk5eKae2ImoLBlIqOrqP9kBzkkiT288iv3bsyVIzwBaRBgEKAgElLxct2RJYDo6Up3F2OffVTY+xZDK0JP61nxzlZXOdBoLyuC8kqKzDn8CTt3b8fvLf4XvvZ7fb4q3fkqGe7nurQ+sA7/Nqpv5BhKFH6clfWPkKXNtfsVsL2RwqZpKo1WvqRosNy3Ka3puQLJQ+3M+AsGfcc4741LJQr3LtgMmM9p9+kySoPU4POw1I3hrUBu0zcmxiDmElTuNK+geDaG/wP+v5YlvYlXUutGULUU2X6EitBAFXzC6eD4pJImoJKkG5f9L8p3f9PytsdH7DLmT2TNX2lkXiw9TUVXOFyHTu8lGNXw9Egdze/6pJjSY9r5ti+nEMob7mgjjjqfrKC9stUm553QNdl7wlwF5Kkb3G2wDQAmqTbeh/+TEgezqtYROFT7JEU94DwQ5z7o3NFDASc51DKiUjB/5BmaObk6v3MhG7JfrNVHhfz0HxjV9wTkI1yw1jHFKCMomihMEJIqgeYPaTPQ8SwmCOp1dW5w/jzRXOgZzBZpZjVHDTbkOkDiLzkbyv1lmMxzyTDdEqCtHHUeRSUhFO8Fls4nSURxV7EFp91pbxfMCBGB0QzUr3M1QSx/jOlDy05WxHeTPEMKZB/gaKWaWArOTpfDD/camwhx113G1bLgJSgopXhRWpln7Mwa80jJmbE2OSOYt+l2Zkbaya9hX/dJ59kyWkPTXyqwVAt7dYu50pbtmnA72cChpAg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Abe9vtZnYPGM1fP07GMnyYXrWUhrcnHlZfeMThYxjz9XobwvpE8vSB944c1LCF0vJj1fjnTovLsNeLwOLj7tmR13bkFA+7QvQq8LoKQzFvn+sdowTV+ROGvxQC0LjF8Ly99C21GUCfMTLY4MlqNc0LjvREcuDaEcNOJWM2uZzssdK1n0pMuBY/DQhDo346wrYnY1Z2gecMZPbl1MUwAYTSKq6iEjSeMvABnqVMa11CjIqKcZuruOg6n+IxMkfoj8ndxybO5NjroL/UNhfk86Qje1v6DZ4BlC+Ab5FQkFJ4JZdq8hnKxc4y6IEyLo4ng1exYOcNmN/KR2U7S9F7tx8nXZqaFA8276+NwWUGiAJxM0TByVrYJVL35vQML5R8TpbG/mbjqN2YLrwZJLnltt4MZUcdEL1K/kDLs7EJqhl888a92N6rskMNgiDoP1nArc1rxnoyoVX0qu0eA5BAgjrlyv2S6kywaVHCmwDsKoy/e4a0ZLBLgPzq6EogoSW4g85bHwRwmd3SD0yHL2zJLTx4ci+LaBCgYyHaw2f7fLNVNXgtNGMx78lf9Q/hJob/QYzO5JI1fzinlnXVvizbdJEkosvQuCRKdouNzK2vqmkMzuKuRgcRFxLVnseyY9YFQ+WKAtBZ0o/HiggZIHQBOoSYiHRgsDypcp5CAo+p4EHRKRs8SBfWFFbwq/4rKIm1RrXKArDCh/j0E48Z+u/GMAxOGoh2jfVCYB3Cs5yMTB5thn2rqk5fKPJNykZiQ4nmKmdqPfKnNQ34RKH5awl4VOlpvgEB+Q0LwGi4wQWLYqgO+dM6Hez20qC5WyDdxk6NkzxgcvZOCHku+AsUUrf5fPc9Hg4BV3YPuTGCcM139VQ/m1vK2IYL04pstJg8Si7V+QCLIIF52GCIkCzfX4XNcN7+2Aeb/prlHPZdPOCGLtesRMOzMycBQ0WwwHeFlGMCQdIFltSmo/CckFDIFu0X7ZyWiCgwJ6mtSOmTf6rK0jZqpi4zGU2LfcZxMIyX5yjXKJgWtxczCB8UlQR8YY0OiBBQ4Hc2vVvbFVXsFW972fNKIn7vKgxrA8ae+pt04/x0eMV0w8rnNifrmQ4eafYRxMZKT1fHBxQge6EZ4hLVw9mAC4RKNyoFN+/XsOFeNZXAm42XtBZmVOolIx9A7npGcCH33/Y9x+iY7SYTKmrY8hf5zYKFKbNw21exxyijx/4fl+uRg6+x48Eoajdz9XMMtnqFvqPn2fzNtmR4W8BRG6X4m+EOKyTDfE5W038+ktBwazg+AxiVQrjldOOCdinnlzJGgqDId+QTa7O/ClK1j7WT4p5+PJgguM7tK96CfIloQRHWGjcUJeXMOncNOarY2XCI/pei5YZx8i2WOiXOw18Z0qLErIjRg02bx0Yrl3EoSlr3HgGj7C64B4Pf1nTzs6uBmrA0xCcr3Ay1zU1drR61MdJ6fbPCP4deMdwpmE7lvgYXwHt9K3nbpSzORgRCWdeY26xLmm7TD1u+/gPhFMof89SwhWvvuIsVFUai64EL/Utj7wErFg7ZKTBI9idm248ATyuXstEWvo/a+xQ+vdnuc9ZW4fr/y8K9pTj94fOWMh X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd5c9260-99a9-4055-59d9-08dd78e22105 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:17:57.1654 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xrOpvg1C93dGJ65brvjDuY0XQwkaR96sVbXVcvlDnQMtSRWzm9JYc52Vr5SnNRKd/HZaEqZZA3xCONITeQZ3Gw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031758_543579_B1CF5A6D X-CRM114-Status: GOOD ( 16.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The VLAN hash filters of ENETC v1 and v4 are basically the same, the only difference is that the offset of the VLAN hash filter registers has been changed in ENETC v4. So some functions like enetc_vlan_rx_add_vid() and enetc_vlan_rx_del_vid() only need to be slightly modified to be reused by ENETC v4. Currently, we just move these functions from enetc_pf.c to enetc_pf_common.c. Appropriate modifications will be made for ENETC4 in a subsequent patch. Signed-off-by: Wei Fang --- v5 changes Remove set_si_vlan_hash_filter() hook --- .../net/ethernet/freescale/enetc/enetc_pf.c | 57 ------------------ .../freescale/enetc/enetc_pf_common.c | 60 +++++++++++++++++++ .../freescale/enetc/enetc_pf_common.h | 2 + 3 files changed, 62 insertions(+), 57 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index ae2dbd159ab4..6560bdbff287 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -216,63 +216,6 @@ static void enetc_pf_set_rx_mode(struct net_device *ndev) enetc_port_wr(hw, ENETC_PSIPMR, psipmr); } -static void enetc_set_vlan_ht_filter(struct enetc_hw *hw, int si_idx, - unsigned long hash) -{ - enetc_port_wr(hw, ENETC_PSIVHFR0(si_idx), lower_32_bits(hash)); - enetc_port_wr(hw, ENETC_PSIVHFR1(si_idx), upper_32_bits(hash)); -} - -static int enetc_vid_hash_idx(unsigned int vid) -{ - int res = 0; - int i; - - for (i = 0; i < 6; i++) - res |= (hweight8(vid & (BIT(i) | BIT(i + 6))) & 0x1) << i; - - return res; -} - -static void enetc_refresh_vlan_ht_filter(struct enetc_pf *pf) -{ - int i; - - bitmap_zero(pf->vlan_ht_filter, ENETC_VLAN_HT_SIZE); - for_each_set_bit(i, pf->active_vlans, VLAN_N_VID) { - int hidx = enetc_vid_hash_idx(i); - - __set_bit(hidx, pf->vlan_ht_filter); - } -} - -static int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid) -{ - struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_pf *pf = enetc_si_priv(priv->si); - int idx; - - __set_bit(vid, pf->active_vlans); - - idx = enetc_vid_hash_idx(vid); - if (!__test_and_set_bit(idx, pf->vlan_ht_filter)) - enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); - - return 0; -} - -static int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16 prot, u16 vid) -{ - struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_pf *pf = enetc_si_priv(priv->si); - - __clear_bit(vid, pf->active_vlans); - enetc_refresh_vlan_ht_filter(pf); - enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); - - return 0; -} - static void enetc_set_loopback(struct net_device *ndev, bool en) { struct enetc_ndev_priv *priv = netdev_priv(ndev); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c index a751862a70b1..ed8afd174c9e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -353,5 +353,65 @@ void enetc_set_default_rss_key(struct enetc_pf *pf) } EXPORT_SYMBOL_GPL(enetc_set_default_rss_key); +static int enetc_vid_hash_idx(unsigned int vid) +{ + int res = 0; + int i; + + for (i = 0; i < 6; i++) + res |= (hweight8(vid & (BIT(i) | BIT(i + 6))) & 0x1) << i; + + return res; +} + +static void enetc_refresh_vlan_ht_filter(struct enetc_pf *pf) +{ + int i; + + bitmap_zero(pf->vlan_ht_filter, ENETC_VLAN_HT_SIZE); + for_each_set_bit(i, pf->active_vlans, VLAN_N_VID) { + int hidx = enetc_vid_hash_idx(i); + + __set_bit(hidx, pf->vlan_ht_filter); + } +} + +static void enetc_set_vlan_ht_filter(struct enetc_hw *hw, int si_idx, + unsigned long hash) +{ + enetc_port_wr(hw, ENETC_PSIVHFR0(si_idx), lower_32_bits(hash)); + enetc_port_wr(hw, ENETC_PSIVHFR1(si_idx), upper_32_bits(hash)); +} + +int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_pf *pf = enetc_si_priv(priv->si); + int idx; + + __set_bit(vid, pf->active_vlans); + + idx = enetc_vid_hash_idx(vid); + if (!__test_and_set_bit(idx, pf->vlan_ht_filter)) + enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); + + return 0; +} +EXPORT_SYMBOL_GPL(enetc_vlan_rx_add_vid); + +int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16 prot, u16 vid) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_pf *pf = enetc_si_priv(priv->si); + + if (__test_and_clear_bit(vid, pf->active_vlans)) { + enetc_refresh_vlan_ht_filter(pf); + enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); + } + + return 0; +} +EXPORT_SYMBOL_GPL(enetc_vlan_rx_del_vid); + MODULE_DESCRIPTION("NXP ENETC PF common functionality driver"); MODULE_LICENSE("Dual BSD/GPL"); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h index e07cf3c35001..96d4840a3107 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h @@ -13,6 +13,8 @@ int enetc_phylink_create(struct enetc_ndev_priv *priv, struct device_node *node, const struct phylink_mac_ops *ops); void enetc_phylink_destroy(struct enetc_ndev_priv *priv); void enetc_set_default_rss_key(struct enetc_pf *pf); +int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid); +int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16 prot, u16 vid); static inline u16 enetc_get_ip_revision(struct enetc_hw *hw) { From patchwork Fri Apr 11 09:57:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048190 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 77321C369AF for ; Fri, 11 Apr 2025 11:19:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=zJF5G7BRX4DppOMIFpgMVEnbQjRAG+ZKNENXrgtLZMw=; b=NAxQKSgWqnmvsh2SRL6yh+SoCV YopEV//jLhsKyD5BZiLf4q3fQJGiYcWhItxF6KQhLPLxe+G8xZQoeCTVEQweYCpGqgfDVumBkFEnM TNFaUtA6jZEA1T8NgeslBzSAj4BQw8oh/gEowZXxu/5qnoY7sao9M35HyPh9bPIs8/Yh35/SHub7I cKL7scakRAhSX0XtarUBa8dT4nWOyzXpe/5BNbiV3PFPKraYgiUL/VWG5j4Rs2FUoDFR9TjZ94urC Ula5QcLTMvah2aeoBWrjl2bSPBOiis6fYskB8NNq0qilnaOp2fkiVknQR+4grYBTasIl2+qNA7+Wa yijnB5cQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPe-0000000DUzB-08hk; Fri, 11 Apr 2025 11:19:10 +0000 Received: from mail-am6eur05on2061d.outbound.protection.outlook.com ([2a01:111:f403:2612::61d] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BSX-0000000DLoZ-1ANW for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:18:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T9pehxgodBDoaas46cU79d5+t43UIGfiH4fQTI9MSx3w/W2y4bq3t+MB7TKx4oqQvt6c6izDnlbv2ZeiSTZqORKfym6bYvrdpfQQexyheLwdtYb/6X4ngxrs43fZP2w21VS3BTwcJvv761s40RqMvCKgDzq1sTrzh8/cPmqX3wHGZl5mV4AxMYpOQVJx2EXwyoxjJfjsvJHre5VsByUpsPBTeSfAzjbW5OoMCgXmWx8lR1HUoqLlDn7dH5zfn1gJDqkZYS2D1lURlO8CYlUX1qAFxrVnDzUDRjoS9iGMHuB+zoLXnVDlME/7CkfjRvsB6J0HoGNacGCZ6y5OhO9ULA== 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=zJF5G7BRX4DppOMIFpgMVEnbQjRAG+ZKNENXrgtLZMw=; b=qbzOMo0+qfKfbzz1E9m4GJyAFFWXPjVFOZmlIndN9kLCPlbpkv9mUF+UHaP8SHK3ERYhv0coK1ETml9UA8+sJnbUbjJLc0GA5++X4wnGSITLDMXctCG7WppmlbYMrYK7jODaWY+5vCoDrSLeD2061fUtB5TIMrqdISWK/+LBsWax6g40+qXU0NdpGBoj7bP2i+T8o5WcQUP9SFOXZSd92lHfbyHli/8vsTDN1I9C7XlzZBQAEdHC++DVwJVW4ZrOOGfDQWoKiU4C2Ei6oD5TSMlAjmdmqzNGNUlVOKdGGN4Dith1XJBDv5neQTb5eD7/M75sxJunPPTDGfuCzq/+yA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zJF5G7BRX4DppOMIFpgMVEnbQjRAG+ZKNENXrgtLZMw=; b=fABZ7C98/pgSSfZFYgfXOaRWsQbZ6sAU6Bnq754R6bHFfkLO6Lb3xQpbiO6AcVlC0iqJBApjcTR6RjnWq9md8hhfo5M6QSaomrAJBY72HwyvTipm6Kq1CKr1swHZFIn9GSsD0+t1buT8fiSOKTy/h7ciFrxq7xmuZsCiWIc7yTibOeDByYV0+P9BIoXeCL64YPGFaZIj7Jzc7N+gxTm0iBcODlglts6Sst8KX9vreAuaKfQw0IPGcOrv0fk8YEDpmtMLCj1VI6WMTRG+/vveXLBoB7TvzmR4CEIzWdtxSCFA8GSrFnrrBNI49HKwjtLCd/4y4K/LdXkhNO995Rbi0A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:18:02 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:18:02 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 13/14] net: enetc: add VLAN filtering support for i.MX95 ENETC PF Date: Fri, 11 Apr 2025 17:57:51 +0800 Message-Id: <20250411095752.3072696-14-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 576713d7-aa69-4ab2-0458-08dd78e22431 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: iSMk+0dKchvPxcWPbXPcqMCDJ5TaDZuvCFtbK5uYy4vL7FHYaFSBryKZmxAb0X+6Cj3CM+IBFAUevrXtpSD2801DSdmvwDY9Yj7ksqBq2IZ45eLMYypAJr8rjNU5+bIbKkt7jrDvw2smQNVffgxlxAsKaEjN+/IUKbOZaqA9girm2ji0iizKmr3U0aDwfUY7g1I75/5s0MVokhUnlIZNsP0UIdGbIwYknuHuto2zVgR8ZvfMPrgv0B9PkGvrv4feTvVMfmxIXfuXIY/dd7tqbABVAIS3EIBwAAOkGDLStp2MnLrHQ0F1p7Fr6koTSx4+kNeWwrfwVIo5OVZ+q6qM6nddwENldAMDntXdgCzjK92w3qYHSSOcFdezYO/gKLeadE7Kh5ccu9J3TgDWSk2sg2XYbyHNHPlbVjS8/jwfjrRPnzZmuSxHV8oZxK0rjCVU2RfZKyn4uZrfLa+I7e+0wfqcDpxcitgNwC4riUm6JqfRLlKuRvtG6juOWQNrC+zqYDMAr5J9ER/XgCF7p76oVf1M5yfCD+GOdFVkl72O5kdsUaPA8L9y//so67Dfq32AiyhOrXzgAHF2WF8urqttW7Uk0iNK5FcWuYjTSqcvmGbLawC+D9kKZ+t6VZokoey64TGo3hL4KVgdRW/AxkyXQnO68Llfj2ohSbcQb5mS/leZtsAfp3JNVaf8tyDmsq8FcfD/R85COv/xJaeAtkmGq6MfmsAthbgyXRgCTLzhhoIo6XA5flqxhkH1Ia6GpaShr74mkiCLc2oqJCoth+iFaaBMwS1zYEtjbim9w2EHJHIGHPm+mOXzeqtWodBTySz+yuKh0ZicYnjOjVZxqAL8zWwtDQH4n4Hn3jDoqbN/0vxPdfXds51ajctgdCXtRVfRGi43+rPSeIXUg5vZJCLHC1aqeZSHXKGEko0tiJK88vx9CrMs6WV/naqhiQLN+z29MGKVgi3s/h0TjHvn+J6WXSle2oz/0R445mndaQrpUlnEifCpINBLzs2gcVkp5zm7DR2WdyUaKIG2yaJGJEB4rFQ6zv9IwWHOQVTse1tyfKw9jxbSC+RHPNsnumtZxdpbTHqE6CxkzpTm/SgdY76p/hJubU59MfEmlO6oQMMYtOKQBNHasrX+asqbVmbVwe2ek2d6XgzIqFCVpkqf3BIkhUEX/nLmBDScaH61pI4mytivJGHV1tAwi4Zz4TqZbgLPEGLRey0NYTwme0yL6JdUVnmGVYLIoXT8DgyF+T9a6lPhmxZ84cqPCdYkfPVgL2mHwKwLbJe/fT0G6VAnrsLzUd8e8f04/SpfopuysNe0KxdldxkDVkYoDKHUhij2TDUywbojNRZ4xzUrprJpKO5lxfa/w1xiYoNBFC3ufTgAjAgzWLvyoheDbCfxCvWZPgA+RjXmIUOttIbMbboTUv85luNHX9ao9OVrH2XtiLYFM6XeXJgasKzkKB80CJ5OO6k2PeT75WGPf/VUI0TVCMfMBg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BdrlWYjuERC/2s+LxYO22w+q8TtZys/nNjo+sRPdO9iMa6uxGSB2q2GHiXscg3g/UeBV6qByectvG/YZRhL/LM/GG++8cJm8H+HOFI+1JtlYoi83nhST59K4qrURsgYJ90TaAt7QnyHiSrhL/45QbDDT0SclY5HU0rDJ8pz15WYwzJrJbsQbY7hJ8b7EMLX/aG4K247wXG8T59Um+7vCDR2dKFgOF1Hf0OPnl30p+AeOofXcA3gIFRAymV2UYhk20VH9AvWzV/6+KxLI6ieijx8chcfYv+7IUUeFkQQCF6eSEa175iFV5PCrz1H2Sf2CSKzyAcuy6cbOtJ2qVA9qDdMyBU6TqyBdHqmPDaBv07/6S6oR5WD8FDdb6N210otjj3W0Qb2tID/4LBe5L7eIpeMGEiOwfBhXMnIKYNdrd0s7NuvBsa0wElt5idkMm/4xIB+v7fcb8hKbk38qgQ21i51izCUNlY1UIQ/T7pS67+j4DEwvZEtuKGaXEd7DymFtBI9l4TomR3Q4Nj1goIq7ruXa/LUU5StA3kxANHkuPVCDwpOBA/ELTa6b39q/0UD6f5a9vdW77vnxNk7QyRBagy/2XZ/uMksqDBMiRf4SVm5w3p5xhQR6wB1PE2Ix7Qdrz+NtDzhzb93hOgko4tJIRyE30lH9lWSBhaQZvksj/jKrNXn7BI6lzkcIV+9D2ibxH8CVg2DkyTH+zyl9irxKB9i33z+T4t7AtjZtw+mrCNjV19KzxFKOQ/yipXJZR+m7HBFIuToAfgUwEqgtfOHKi9AfYCHMFEfKbCXiQVpFK/OHnbfy5BQtLu9OE6rYA1mR1omMdamT2PggYz1n6Eeq3COoVWgSYHC2l5JlLtqtadQDKaf5F/lxFDLUJQkWgUVVHDt0y4nI5RZXQgiKlWd6g8gQEmIrcUnK2XtVx4Rbbu3VBkGXpAAvTcT+RiNj6BAzGalXC/UdMMV/6agjBhBhJmS2pVOCprIJZJVGPE+ui1eh3eV/5U9zOgpasbM9VB+RxfYjlDneA7+nZ0LfNFMWfyfmUYHA/0PJ5XM1GlYNWIFjqxieUvfduNcb4KhCaDjJruTAVWXPMH029Ryy0OhQXDkgnsV8jTAQJ6otOm1FApHZBoFwnxflZcjiOeiE1Es/tv1GwXG/vhZFTiPnXvSTl2MOzc4m56XI3lPTMBabdcRGJ40qi8yPRJ7b19IdX12So4dJ0+Bg66fHa+v6ARZ4+LSLM0SVWP1ZUjW2zp1AZLoyixEPmSiv0z2He8/1bt0C5pJnmgzVc7R33J5fO/XWkvmWAHa8HTJV2rFZhx8Vpjd4vNS9Uuo9w+YmP9yPkH2QBPJXxHcn2WW5O71k6wB7M3e5oSzBUEQlfNKZswEuMtnl0B6/gK1z+0bPElfuiuLb/lgAQSWJhkqrzswLXwE2Y/+uz4nPHch7mG1+NJ5iSgW45EB3vArFOP3VbjRgoikKf91suFI5+2QG4ctBT+tWu1j5zpPZCJN0Nk0iAAZH+NXWDb/DRmz8agALbhlyOrD5Y+NxWkwLPq66lfgctZ5MZ9m94y0nIVjfGS/BLgirYNi0cQCT3BisICnBCbqNutkC X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 576713d7-aa69-4ab2-0458-08dd78e22431 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:18:02.6563 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VUY4p/6xBTq/h3J7jmC+dLABTgjB56rFti9MfWSst2HZqL4HSepi9VB3PW41rvWd9e4Fkj25phWV08D6zQQRaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031805_324876_F8C15C57 X-CRM114-Status: GOOD ( 16.14 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Since the offsets of the VLAN hash filter registers of ENETC v4 are different from ENETC v1. Therefore, enetc_set_si_vlan_ht_filter() is added to set the correct VLAN hash filter based on the SI ID and ENETC revision, so that ENETC v4 PF driver can reuse enetc_vlan_rx_add_vid() and enetc_vlan_rx_del_vid(). In addition, the VLAN promiscuous mode will be enabled if VLAN filtering is disabled, which means that PF qualifies for reception of all VLAN tags. Signed-off-by: Wei Fang --- v5 changes 1. Remove set_si_vlan_hash_filter() hook 2. Refator enetc_set_vlan_ht_filter() and rename it to enetc_set_si_vlan_ht_filter() --- .../net/ethernet/freescale/enetc/enetc4_hw.h | 4 +++ .../net/ethernet/freescale/enetc/enetc4_pf.c | 12 +++++++++ .../freescale/enetc/enetc_pf_common.c | 25 +++++++++++++------ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h index 826359004850..aa25b445d301 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h @@ -107,6 +107,10 @@ #define ENETC4_PSIMMHFR0(a) ((a) * 0x80 + 0x2058) #define ENETC4_PSIMMHFR1(a) ((a) * 0x80 + 0x205c) +/* Port station interface a VLAN hash filter register 0/1 */ +#define ENETC4_PSIVHFR0(a) ((a) * 0x80 + 0x2060) +#define ENETC4_PSIVHFR1(a) ((a) * 0x80 + 0x2064) + #define ENETC4_PMCAPR 0x4004 #define PMCAPR_HD BIT(8) #define PMCAPR_FP GENMASK(10, 9) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index e164e1a3f44b..421378212a73 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -517,6 +517,16 @@ static void enetc4_pf_set_rx_mode(struct net_device *ndev) static int enetc4_pf_set_features(struct net_device *ndev, netdev_features_t features) { + netdev_features_t changed = ndev->features ^ features; + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_hw *hw = &priv->si->hw; + + if (changed & NETIF_F_HW_VLAN_CTAG_FILTER) { + bool promisc_en = !(features & NETIF_F_HW_VLAN_CTAG_FILTER); + + enetc4_pf_set_si_vlan_promisc(hw, 0, promisc_en); + } + enetc_set_features(ndev, features); return 0; @@ -530,6 +540,8 @@ static const struct net_device_ops enetc4_ndev_ops = { .ndo_set_mac_address = enetc_pf_set_mac_addr, .ndo_set_rx_mode = enetc4_pf_set_rx_mode, .ndo_set_features = enetc4_pf_set_features, + .ndo_vlan_rx_add_vid = enetc_vlan_rx_add_vid, + .ndo_vlan_rx_kill_vid = enetc_vlan_rx_del_vid, }; static struct phylink_pcs * diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c index ed8afd174c9e..8c563e552021 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -135,7 +135,7 @@ void enetc_pf_netdev_setup(struct enetc_si *si, struct net_device *ndev, /* TODO: currently, i.MX95 ENETC driver does not support advanced features */ if (!is_enetc_rev1(si)) { - ndev->hw_features &= ~(NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_LOOPBACK); + ndev->hw_features &= ~NETIF_F_LOOPBACK; goto end; } @@ -376,11 +376,22 @@ static void enetc_refresh_vlan_ht_filter(struct enetc_pf *pf) } } -static void enetc_set_vlan_ht_filter(struct enetc_hw *hw, int si_idx, - unsigned long hash) +static void enetc_set_si_vlan_ht_filter(struct enetc_si *si, + int si_id, u64 hash) { - enetc_port_wr(hw, ENETC_PSIVHFR0(si_idx), lower_32_bits(hash)); - enetc_port_wr(hw, ENETC_PSIVHFR1(si_idx), upper_32_bits(hash)); + struct enetc_hw *hw = &si->hw; + int high_reg_off, low_reg_off; + + if (is_enetc_rev1(si)) { + low_reg_off = ENETC_PSIVHFR0(si_id); + high_reg_off = ENETC_PSIVHFR1(si_id); + } else { + low_reg_off = ENETC4_PSIVHFR0(si_id); + high_reg_off = ENETC4_PSIVHFR1(si_id); + } + + enetc_port_wr(hw, low_reg_off, lower_32_bits(hash)); + enetc_port_wr(hw, high_reg_off, upper_32_bits(hash)); } int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid) @@ -393,7 +404,7 @@ int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid) idx = enetc_vid_hash_idx(vid); if (!__test_and_set_bit(idx, pf->vlan_ht_filter)) - enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); + enetc_set_si_vlan_ht_filter(pf->si, 0, *pf->vlan_ht_filter); return 0; } @@ -406,7 +417,7 @@ int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16 prot, u16 vid) if (__test_and_clear_bit(vid, pf->active_vlans)) { enetc_refresh_vlan_ht_filter(pf); - enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter); + enetc_set_si_vlan_ht_filter(pf->si, 0, *pf->vlan_ht_filter); } return 0; From patchwork Fri Apr 11 09:57:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Fang X-Patchwork-Id: 14048192 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9E283C369AD for ; Fri, 11 Apr 2025 11:19:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=x5qTXJDZPp4S7AwHuNkJ4fICSW1yygF+ddd8uCRnfZg=; b=Zn3F3hhbvd/kmdxFdf6q+pgIkv gS392pczzFQ59azkcDZwqjLL5KOHqWEFwvpYIvkd5o3Z+KvzcF/nuAVWSrybp1aCW3LWithHry2Ja F9GBDOB6UFAQZFUq//i3Cm1PqVqRL9kiMRHTTavjLox0zpMB4IDLXZxVJa4nCKUlHuPu8ceJKb/6W fpSFkaP4ZlKRe7F+p+QUG4jFjkEK6e71RqCh4SOQ+gyg8KctjuYrRbrlU09UKSpmzoLaAZ3Fq8UeP kGhOBelyd/9azLKGCgsg4SEVZpEgLKroaQepF400t1+2a4rgfjDQix60kVhywyyF5M398v7H4orio KZ/K0Iyw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3CPe-0000000DUzX-2qof; Fri, 11 Apr 2025 11:19:10 +0000 Received: from mail-am6eur05on2062f.outbound.protection.outlook.com ([2a01:111:f403:2612::62f] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u3BSc-0000000DLqF-3gwJ for linux-arm-kernel@lists.infradead.org; Fri, 11 Apr 2025 10:18:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Up1EJNDi4VzuUusf8r81Sa772TqE+bXfzRzGjDPNurAh3POixGPiRU4n/Pr1NeflfiYrjo/JpYCPAs2SkY2ZLcfPRJXnzfR3ce6I9+OGFiKPKVq7dFAYrzwXx5AbTUmet2MPBTmegTY7BJUy4yvNxa7tDxmGv9Q7ummqWGRdFhaTeqWzzPhnjYWVZdYgMpR0axqdJ7IaGhqhQoSbIKbf/C0ksRbovBBwvHd+Cx+QG5IWu/ilT3kHtx456Ane2J7Gp6hv6VD0ERPxATuY3BdC+duBEtifcEik0HmmEWgCEOkGc3YAolpz7CXPvOpKBA2aACaBHhzTFHWlr9iXHb8A7w== 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=x5qTXJDZPp4S7AwHuNkJ4fICSW1yygF+ddd8uCRnfZg=; b=qc/N6RCQtnPR3adfBEZELCfSHdInUBE6ToBqAWHNnAAHU03A8tc560Dchl7EaRef12ZPqDaUgQT4qBkW0iOMtduytM/zDeRIW8sCx5dFGrsjC2PdR8fqz+7DIRb56uHnh1fin83vkWnEnFSiWQvYB11FY06QtY5VrNsNagIQ+nrMMjjfrVS3I8TTZ/th/s7CSDWKw8k5WuxkTT8oKjlEU2vJe2QCLBC0d3pgWohFc6sxh5Qp1wNaVf7NEGtYebeRLjaqQ9b6s0gMwj9l++S98AKNzvR2SU/YfUdDE/7DZ+uSOZKpWCJdt8Z4tJLlogqy6ByA6GUarKvjU2TXkcq2NA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x5qTXJDZPp4S7AwHuNkJ4fICSW1yygF+ddd8uCRnfZg=; b=BuwcbAtjsf4EApyVbiTUm+5hzbZQrt/sQtHtdPguVH7l46I0dZyWgazsczjsXE3F3E2TWLoDAAEnms9ch9AQncYiRoYhji67/KKbT+20HxNFFdZWTnubneRzaxjdtpl40uKU9vXQMIU3jPMTkZEnE8bsR8OY6rFtn5nEq5Sf5uaAfOyDzV2qlTBMSG3lC/x74J/GpXHE/aCxo99UKa4YP+nV7BQyq/WleYkflCUAhByv4TYv1CFMYgPvb/JVwMUlOst+0zdpqRBoEFloKMCURwQ8WH2IJC9prvSuv6LQjeyZiq/5oCJtX+VqOxu6C0BL6AarveRlhFDYJJV7F3yeSg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) by AS8PR04MB8900.eurprd04.prod.outlook.com (2603:10a6:20b:42f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Fri, 11 Apr 2025 10:18:07 +0000 Received: from AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868]) by AM9PR04MB8505.eurprd04.prod.outlook.com ([fe80::bb21:d7c8:f7f7:7868%3]) with mapi id 15.20.8606.028; Fri, 11 Apr 2025 10:18:07 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: christophe.leroy@csgroup.eu, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 net-next 14/14] net: enetc: add loopback support for i.MX95 ENETC PF Date: Fri, 11 Apr 2025 17:57:52 +0800 Message-Id: <20250411095752.3072696-15-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250411095752.3072696-1-wei.fang@nxp.com> References: <20250411095752.3072696-1-wei.fang@nxp.com> X-ClientProxiedBy: SI2PR01CA0021.apcprd01.prod.exchangelabs.com (2603:1096:4:192::19) To AM9PR04MB8505.eurprd04.prod.outlook.com (2603:10a6:20b:40a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8505:EE_|AS8PR04MB8900:EE_ X-MS-Office365-Filtering-Correlation-Id: 938f7920-2460-47e3-93b6-08dd78e2273f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: jGQtE9QNEW4WGk1hmKcMHPNLFvzeXM6u+0d7eEXtGyyJ+O9AjBnyc4ZN4KHfLq+tYLzi3z3GspuTcMDJPcdF9EArLTDzY77FNdnRKVVD/LXa3btSIq+krbeahaQ5XReq6hRoPKZ+2aeGqjKpU37J8gT18YRdlew9qJpJRAq8V2E6VHFjfTW85dX1n1R/q76/jTsbxpNrA6TUVKg6roTjzORh6mgA5fWF1D45U8iL3UfZMolZKPlciFWuFBWqZN86g0aUDXPrQfq6CuvZWhRAen2djs+v9Q9OtAa6vrszfGeoT5vWMbdcOJ//ThU3yJkV2i8b3k7vAaFOgLrT36xWx5bWPrs4NOtIDt4VYBrrGG8Ii3UfpFeLZ9VnsiUAs0rrvApocjHzeWpPIPqqlmzRtNYzSqpOJ9TtGkbpLlWtaW2AdrnFz+rsYcAZkejqJLSF+VHFHD8GLbHRITWrIwhgyBawdf915J8KKl8SuUV2CxCO87RJ7PsSW1Z8uenY1MvjaxeIccwgJVcCWkBImnvVH8z7g+w7gnO21q/CHt3q199KzV73JrjeQjt9BbDSNxYchtWVN+QBL7D3tjog1qUjmpvBWwVbJk7qL6+kBO8HNU8ng8vlyc44VoDGsfUzzfZeWBFYtGeWJLIm5pMoZjfLFofjNZTx6rah4vtOIDn8/KowBvnIbARM95DOTjxUsJqeJH+MSmCZzEmk0qdVfijyoIHYrxIjPza1djigm9dQ5vGKnBmhcywc8yBAUJq44mXfee0oTOF/FaBYw19uI4oAcGaNAGlIqt1v/v48YpkpxIQT3D21pJF6vzRca2G5nzh1CI+2uMw32Jg+QYARNTRuxeBS3+QTRFpIeuOc/vS/XOGP00ifJOUJmENBiImO79l8zfWLot9BcoVqOHBqXtBfyM5vlrBP6vmHxAJ8X2VDmklYK12PQIMWjLT3jFDT2mJhRSEh3yu4vUoLWWTG2O1WRDxcCT4cB+afOyQi2fOB5IlNmPd5+sC+UpK1yN+c7p29nvxLO3opo225zX62LtshK733+TjX4FcLXNWq7+vsB8V2gFPsCO1rAD/L3/ZRMbLhNZlLlaRzVk3NAhMGLNWpYRu69qiUp3hYcabAnVq1CGPHD0Ph3kqnkfSZ2cgtUnb8O1/M4u88uOre2w7W27J+tuSDL/Gh9+nmLgX6h7Rl/z12gKiBholT8iIBG+7ow6CPyzRUuY0AXwmKvs7TgDOUacMaCknP/H9mGFnOV2bHv1lF+j8TXGRzQus7vA6CtBjb0MUD04Fy/7A6gXqD8IIXS7I6M7m1dGa7Q2jm513V2PxGxH9WzS4mhCaezPn+j4P9q/XC6rUfzIKdROowRmFOUT737GBr2lJKZQYL0dd4jfm8PQbhHYGUXL2PsS6EJ5FbKPod2xlWi0FUdTid2TtVRb4kIKpk9cKW2/cddYzCcZhDMEHnluyEBCE6+b+qXVUxPcVg3Qxq91LjLyJEeTCCbg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8505.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YdzRGZ41BqRewFvY18/dgozjBaRz3hvIGMlLUgHuMwdA1LKEPOiHlAkY3neS8H7eXNL+J8Ygx36Mec9rij3Q09YGpAA0O2UlDDKGO5gBJIo9h4ZJI9Ru740v+1kL6ladjE+N3oLB4pyAhYh5OXfwtYziiQ4v7jbvqdL4UU9+eyh9lQYqNOASxuuEHa6GkU+Vv0PpB0qnIOqWbxOLvy2v010gBOycRCnVVLIxdZlt4IYsYeozOplPDmhqMfmMy2YqwJVpSowwcGmy5nGOBI4UQnjEE29yg5PL0O6XbHaiSsIluzD2pZScW62UuDniOI7ePXmZzK8XQSETm2XfWtPh1SojvdXI6CCZmisT8o3yZozTUW8sHnYguwXjDv9Oi+Ks5TsGrbYrgw7De1P99XvLqrN63M87CvyACaMNZ3dAuzHpAj0wX7mV8VQEc3JZSONRmhRfOOWp1nJTSSZNR0zamkYuuYgfQ7BE2HH7PvGt7eVvXiINOP+X8yJSBgKMq3WrTUimnEL20G3RtTtfbPFs58WBYNrCiDRpV21M76n7sHlXzRNukf2rpNUvO57fxvIETAEMPR+tj1GkmmVwHH/ljKffrRiEJExYmdEh4HaPFGKkJ8BDaEh0/D6iP8cz0xsldbrP1oOwQnerZnm7eQja4uLrAmQn+qE9k+r7Ox3z0I2F4ioV/dIAci89MAZPygW+UN0exs7KninUp+AJRRxM6Mx0wKPU3J9vaL/TuAPzmnHS4rTVdUQ15yeaoohDZRm48DCzraNuwOVcyDKHO+84/sddUHfaW6FUFeGBAV2z8FdbM4ROuKdb2Q6AFkhe8qbbw+Btig6fbN4AXpoF4p9bRMLG3jLuO23icpAc2Jxvd6jbRaqpEHhEoUGyFnV8ZfdRmj+yNEUf89U29RHvMv+MsrvNFDprcR3TP5oTXRk6HcA2cE47ZNMDMT+pAgoxlFs6ICU03fn8aCRU1HnKcvZzyHfl+ygm8WxpIbWX7pcURgGI/y2kPdj+fIO9PtkY8rwyIkCF6UsqcCVAcPqTHbJWrttUiQDo9OeyWU7TokX7KbnRlpcoVwGgCGSa4z99EMosap5PtdhAkYm6qdaMx3SKxTVwztrVVVnuQg/0AYXmHVzX1pVnGChhSml1x2BO9AEQQFAGb2hKe3zk24yW618JmESS0Jmv6dI4AATfJ308PB5ZRx/FmWDxJLKup6C/e7RZV7ekGuXf+n5YlF+9ZiOojk2rWG/+NAG4Y9VrKJbjtg6StGkNK3lRTOAYu5fF2jQ3/9onp/jGm0EqfiAV8nEyRq4ye5UR+SWce+cf+2HYAr/hNChsGwthr0ZZupLCXJaflbzDUqHpmFZXEHR15Igd6HKkI8HXAENXt5tcvMflglDxMop3RxP4tPTl7aJdtvMEObTD6Ufe5WllfHbagqJwwK9XEDKaaQa5kP8Lm49IbsYGXHCsKx5MqHG9/7iQvRZFD5ehmEhd7fgBNKiyyb3cgdJ5O0/OubPhvsJrnuBa/GqYWi0d/2dagxvEQm1O7C+FX1aX/eh61VE1EqqPVPN+5sFHRCKUOrUJTQ/R1qN3RpfOMY3i7iHS7X9GZb2ySThL X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 938f7920-2460-47e3-93b6-08dd78e2273f X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8505.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2025 10:18:07.5522 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: E6AqOvKdmI+27xA/pc8iC0vMv3YJGSHkkdBsaf4IlJPLDWUCY66aaJW3DPa8AIoSHFa+EjatNaPmb/9PSpzg9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8900 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250411_031810_919387_1A46909E X-CRM114-Status: GOOD ( 14.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add internal loopback support for i.MX95 ENETC PF, the default loopback mode is MAC level loopback, the MAC Tx data is looped back onto the Rx. The MAC interface runs at a fixed 1:8 ratio of NETC clock in MAC-level loopback mode, with no dependency on Tx clock. Signed-off-by: Wei Fang --- v5: no changes --- .../net/ethernet/freescale/enetc/enetc4_pf.c | 18 ++++++++++++++++++ .../ethernet/freescale/enetc/enetc_pf_common.c | 4 +--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c index 421378212a73..711047f7074b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -101,6 +101,21 @@ static void enetc4_pf_set_si_mc_hash_filter(struct enetc_hw *hw, int si, enetc_port_wr(hw, ENETC4_PSIMMHFR1(si), upper_32_bits(hash)); } +static void enetc4_pf_set_loopback(struct net_device *ndev, bool en) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_si *si = priv->si; + u32 val; + + val = enetc_port_mac_rd(si, ENETC4_PM_CMD_CFG(0)); + val = u32_replace_bits(val, en ? 1 : 0, PM_CMD_CFG_LOOP_EN); + /* Default to select MAC level loopback mode if loopback is enabled. */ + val = u32_replace_bits(val, en ? LPBCK_MODE_MAC_LEVEL : 0, + PM_CMD_CFG_LPBK_MODE); + + enetc_port_mac_wr(si, ENETC4_PM_CMD_CFG(0), val); +} + static void enetc4_pf_clear_maft_entries(struct enetc_pf *pf) { int i; @@ -527,6 +542,9 @@ static int enetc4_pf_set_features(struct net_device *ndev, enetc4_pf_set_si_vlan_promisc(hw, 0, promisc_en); } + if (changed & NETIF_F_LOOPBACK) + enetc4_pf_set_loopback(ndev, !!(features & NETIF_F_LOOPBACK)); + enetc_set_features(ndev, features); return 0; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c index 8c563e552021..edf14a95cab7 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -134,10 +134,8 @@ void enetc_pf_netdev_setup(struct enetc_si *si, struct net_device *ndev, } /* TODO: currently, i.MX95 ENETC driver does not support advanced features */ - if (!is_enetc_rev1(si)) { - ndev->hw_features &= ~NETIF_F_LOOPBACK; + if (!is_enetc_rev1(si)) goto end; - } ndev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT | NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG |