From nobody Mon Jun 8 07:22:54 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011018.outbound.protection.outlook.com [52.101.65.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2056147884C; Fri, 5 Jun 2026 07:23:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644186; cv=fail; b=lhVENkEPAG99JU7LaCc5RYKpOMpgFHT/u10ZTHTRxVe4TpxqaiMOAkvX/jLQapD9JfZ4WnbOXbE04CyBlItbUPEDzNQbRMXT5GUxnmKi5UCE9oPf9KSLl3agAq5T4e2q46Zd4puFe8ljUkeVJPRGg00UaSHhjHop+nJaAJTLRMM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644186; c=relaxed/simple; bh=NYAPbb2fzNMBXftf6hVC60LPB2qwBgl4IaeaKEOpe94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ZS0Z6s4o1sgBQb9bBWT7qg8ZmNNEg/zfjqu1qZIS7cKDLvIhctBS6iGcvMjvJX9vVLCbJ2piMhR5cm/0sWjRcHApT6D63CxnuInQnWQToD1eicilK66NoY2zFNOgVPQ1Cuqe0hzYjZWCO4UdHPXPRFMaB4GIwnNQnKZLpq/g1nE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Gv9HSCFS; arc=fail smtp.client-ip=52.101.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Gv9HSCFS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YoIjP47C7DWSu5IsoBx48jwmKQr+v39MDGHHTxa//IW/W0UvrKa9r4sRFe7OlOfqIMjCn6ayXSXDqHsmyAX6laXfplvtLvXEMSXIJwTOsaCR/x4hUYMmhbw3MB/byi/emF2vqXsd64J2eclvhQ43CvyyXi4H5ZrPYENrE/lQI+ZHBoyh+Ky/eKV/BBzUbOWgWCyzW/vvT+5ZQlg27ISka2RzbZeswdtwooDnaSfJpjq9S1ywHVTx8hxM3aYt9UJgxJ5n56T1qmXxOyyUrCrth8A+k0YVu4Bad7+n8athIcWJqVM6+uUqf4NphEWtVy8ov2F+petI9NuULIDvI++dzg== 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=hxvee9Cn2vscr6aNT0kFV/ijwTndizV1M89FaVt5fco=; b=fHon2UVWh2OKNXAAEUM+SmqNfCFaM5J39i2aIHZvOKOvUl1UU66qc1wd/9vlzhQYLhcRnHZqMIO7DkHc6OvquWIJKCZMCM3JvvErCt0wRPh7JKXh7ceao36uXxESnkJtbSiyUYTj4cZLs1TPRO8nNw1BT70is8J/2WqgKGWive/o7rLvwkG85VJJ/ituZ5Xza1IuFt7g98wNjfhpA6pXjgjcS7hH2xeQr4CSXUJnEhbas6SosxURfFW4uR1ue3v4cgOev9OdsWK9GQmJi70GP2JjTTa9sW2dbuozYBhFnepNIHe+tcLm59QAm+s9brW8F7y1U5l4U6iHAnL03txARQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hxvee9Cn2vscr6aNT0kFV/ijwTndizV1M89FaVt5fco=; b=Gv9HSCFShOXu/0nNQbOVL9YYhyKhuzY6UwQo1eTRn2d5bw6FqIOkstjH+i62A0oCJ7bGUClCP0EZlel0EZZFPGdhZlvap/5FVTWrqPMRR+V74Aut3ZHJ0c1xcVXlulaEu3Wy/NMvGP8PvP2UyMymojWZOr9cW+Px1Af/t2E9lZgFfPIjy5MXHOsihTws8D1yFsqFH2u/ycdYU9rblbMVH/GBlwk+RHTwmJJ+PSrWfoK28iaj8piRDiMtq7d1XxVQ//5gym+F16Tq3kSWFRJ/aE2oYVJma3mcYyskyUD66nb+6LlN9OBz7al7c2eIIldzQCvzVsj+vjI0Forh0ZOGIw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:01 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:01 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 01/15] net: enetc: add trusted VF support Date: Fri, 5 Jun 2026 14:55:36 +0800 Message-Id: <20260605065550.3038579-2-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0028.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::9) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 9fede7d3-7324-4761-0d43-08dec2d346b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|3023799007|22082099003|6133799003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: JjWEY8WbeT5n9vgMw5pAlXV6vnairfQ4E1dOfcm2GYSy+cci+f+N7aVLWYbXvhMFvIf6kEf6ZVbiKXplgSFsmJI8fkUa2vP7m7mAOmmMP8ogasvnw2dcznpj8cd/5S9YX1Ctjz3bXJh6gX+cxq6K5IpbwtnbUhuir7bSpMHtFmBwMi2ufvhytX0MNbG9qoB/sFdhQhCEP2J70X8osAXZ53PSkHodVjF+sOhFuuqbdomaQill9pQN6MkcGiQa+eDN+xMWRI3PQDm5CfkvDRZSC7f+cxP83TwlKc4CgmoTL/tfZsjBVEb7sp0CoT5DwmHX1n4ijRwKFkXdd8jStHhOtoK05ul31r1OhUAlsD+C5pAEmJLlpSSKV/66t+PYlnwjGTW4Ry9XoPREQD2T9lcRWZrbNNEl0odfiIpB0iNOVxK39BRVop5Dbt+2EySt001dJFhaU9vSILoMvgVnTYEDemEGn3Zje8KnkqWxPAouoSYBfgscUCQbADOQilAI2MzzpCA/4pOR6sylpzbqry/C8z3XdLb1EkeeWETQwFfL58FGPf4YXT5uSMhnc5GcJ0wzxSgqZQwND1+2DGOxZu9iuelCmYnkLFEm65y1kjrgzs77avFFm1q+hgW4PEN0kYvBRrI93nPEgYHIjr/pW4unn9LjT85mWWYwP2LIuEt3jv7M0Y8yQSnbVrUkTe7XZcTx37u1PVCK+vz1V1zC4OZ7Bd0dZUBE0M3zxc3Pmq+/58k= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(3023799007)(22082099003)(6133799003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3CPZLCusppTeVQudxCCg6E3s9VuYEmkc0f9B8c2wtOlw8pbrlnpPmCEBdJTT?= =?us-ascii?Q?HAwV6Smg91F/NgIequA3FPskBaPfcrYOiI/jHc0DMvxUFO3Ly3CLJYQpzwHm?= =?us-ascii?Q?GMwoRBe7UJom9PUx4pxI6XZLBeEABhTRHf4h6GZ5b2l7jIYrl70jyWaMY/7f?= =?us-ascii?Q?VIW8ymBadI+EUahiqOwXuAwuRV+NDXYQaE/ijGaenaebY/88sfnay25t9NeE?= =?us-ascii?Q?W0RobYxUFaVMxcjAJKpF03xRCi3ddMzD9Y0neA0aDjTWzdcfdrEToQexijAo?= =?us-ascii?Q?kMzjv0UpKX/4CWRjngcWX6nJIxr+atjEVDM6073BR8kWGGhUmmxiEEnxWF64?= =?us-ascii?Q?yIZ45sKZ7jI7Kp2pnEPJMFkNtQ1TKf6R4xSpCn7w+3YySILxCXWJ0iDj2r1h?= =?us-ascii?Q?oVy75LaQHZuR9vDlJ2vUSY4Gzvb09XezF8QR/SUbzRNkV5Sh4EueSJF5mffs?= =?us-ascii?Q?pPZiWcC6HLr+zCKoJ0mFsJfEbtHGu17ZR0ECo8oeMmGnCks5ZdD+eOp+Tmjp?= =?us-ascii?Q?iBMZsi2Sir6C35sr/3G3hmhtusM0OBbvAeJfvmqNSJn4XxeDeQ04FPY3xQjA?= =?us-ascii?Q?UqxvxYCeaNXaG5t8XcbBShpUFhZNpXJToWVccac1wokoJgYWZSa7yJ4GOy17?= =?us-ascii?Q?gLWEMm8fY4fDOcolEKBxvf3S8+ODfq8pH4hO/9wsfYF1v2cUNgl1EWNrsl6e?= =?us-ascii?Q?s63jkFn522PEpmqy/EiD2oDCVzn1F+wdjNpxmJCUEJ8NI6HPzSz/bh3d4q6K?= =?us-ascii?Q?O3FbBXX4ZS/kd1kKD/zqKqOVw0j0FTVgf6EoHR7/ZjYX/rMqyjWEn2jfZbo1?= =?us-ascii?Q?0S8dfUJbYzJLzS2R3ru6v9xCeQNAh3EJRM6a9a6ujVuORups6SjukESuqKM7?= =?us-ascii?Q?Y8GtLptdemX17YBx+1rtJw957eVMI8xks8U6vWYKSdIPuXJCXQeS1Z/Wpwun?= =?us-ascii?Q?Xt4CnCcV9qwEVBYTrUeVKpDXW/fintvxtB7bqM5rD9EeoHcAh3iZlbHu/o9H?= =?us-ascii?Q?smW9mTv433N22f5tsjtfaQ8uePnDpI8FrEev1j00og4mdnAQ2E1gztXsZQPc?= =?us-ascii?Q?2f31rzrp6M34wB/vcRkxgIoIWbbLu4nIYQVBkeFUfXHTPzBvI/6/uQsCFaEY?= =?us-ascii?Q?Dz4u+i57cs4gp2+rulO7dZx9buk/rvVhwcebgemE7WRxLIkKZF0ULlKGSdkq?= =?us-ascii?Q?3r9Xwsot3A8Ayg8M3cyp03kPGhMcpUHG+C+D4U3HMU96ZDghEn+btiRtCPFZ?= =?us-ascii?Q?bHOWet4iroBtmlMBLD0ykihVFyM98tzUYNHA6LlI4cUoX9esDiceCjH6jloW?= =?us-ascii?Q?uui3CLB3rdSnoxReUHIcq1xdnz1b8QLVWgIJYQdh7BS02LOuZNzN7Fu6ogMp?= =?us-ascii?Q?yz94+rnHxZBmWmkj8bdVlbG/qQNZacwE3nY4xhbh4l5s+VQug0mWMQQSh3TH?= =?us-ascii?Q?VVHMFd+0Wi2nsfJeQhDqNdVX0W+XjEVodiue8ahlNIFl88TziMhU6/DqTsOQ?= =?us-ascii?Q?x8uJ+V9pRNASyrWTHvojwmHu8M8czP+UVdjn5u26qcfvtNLmn16KBh5aWxL/?= =?us-ascii?Q?FgJD0AmCyNtQFgp3QU7ACXdFASx8RATo4JtIVQYf+Iy0wsTvsd0pVaSHOrRB?= =?us-ascii?Q?R854f8qwENVkFDZYh58W1k9mvkdNYvZtzgiT1+ILnpNXqdTZDmP280djScAF?= =?us-ascii?Q?Dh14loj31RCrHrKFZrEVaIjA3x0+rDncinJfOrpO4jpU2aqJi4X5i3hLHgfv?= =?us-ascii?Q?YzpuaG33mp9d2NvDs5LmYpY8+SxYIGk9lPQb2HHdMmdnm3VmJ3+1?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9fede7d3-7324-4761-0d43-08dec2d346b1 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:01.4673 (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: 590HYucm/HicD+sNvQA36qOdprhLkXu8a+PAUCdLnoohqs+iSGPqjCdjeKwxdzGxc2H9Zia5buvL8BYgMuqrxegrbEdNvt0csPZgpp/OCtFF7X0iY3hc8cIWsFKgdZ/i X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Claudiu Manoil Some mailbox messages require a higher privilege level to be executed on behalf of the requesting VF. Introduce a trusted VF flag (ENETC_VF_FLAG_TRUSTED) and wire up the ndo_set_vf_trust callback via enetc_pf_set_vf_trust(), which is shared between the enetc and enetc4 PF drivers. The first message gated on trust is the VF primary MAC address change. An untrusted VF that attempts to set its own MAC address will receive a ENETC_MSG_CLASS_ID_PERMISSION_DENY response and the hardware will not be programmed. Signed-off-by: Claudiu Manoil Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc4_pf.c | 1 + .../net/ethernet/freescale/enetc/enetc_msg.c | 30 +++++++++++++------ .../net/ethernet/freescale/enetc/enetc_pf.c | 1 + .../net/ethernet/freescale/enetc/enetc_pf.h | 1 + .../freescale/enetc/enetc_pf_common.c | 23 ++++++++++++++ .../freescale/enetc/enetc_pf_common.h | 1 + 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index 4e771f852358..ee52ff929576 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -570,6 +570,7 @@ static const struct net_device_ops enetc4_ndev_ops =3D { .ndo_eth_ioctl =3D enetc_ioctl, .ndo_hwtstamp_get =3D enetc_hwtstamp_get, .ndo_hwtstamp_set =3D enetc_hwtstamp_set, + .ndo_set_vf_trust =3D enetc_pf_set_vf_trust, }; =20 static struct phylink_pcs * diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index edc1277bb586..156333ef26bf 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -7,6 +7,8 @@ ENETC_MSG_CLASS_ID_CMD_SUCCESS) #define ENETC_PF_MSG_NOTSUPP FIELD_PREP(ENETC_PF_MSG_CLASS_ID, \ ENETC_MSG_CLASS_ID_CMD_NOT_SUPPORT) +#define ENETC_PF_MSG_PERM_DENY FIELD_PREP(ENETC_PF_MSG_CLASS_ID, \ + ENETC_MSG_CLASS_ID_PERMISSION_DENY) =20 static void enetc_msg_disable_mr_int(struct enetc_pf *pf) { @@ -61,31 +63,41 @@ static u16 enetc_msg_set_vf_primary_mac_addr(struct ene= tc_pf *pf, int vf_id, struct enetc_vf_state *vf_state =3D &pf->vf_state[vf_id]; struct enetc_msg_mac_exact_filter *msg =3D vf_msg; struct device *dev =3D &pf->si->pdev->dev; + u16 pf_msg =3D ENETC_PF_MSG_SUCCESS; char *addr =3D msg->mac[0].addr; =20 + mutex_lock(&vf_state->lock); + + if (!(vf_state->flags & ENETC_VF_FLAG_TRUSTED)) { + pf_msg =3D ENETC_PF_MSG_PERM_DENY; + goto vf_state_unlock; + } + if (!is_valid_ether_addr(addr)) { dev_err_ratelimited(dev, "VF%d attempted to set invalid MAC\n", vf_id); - return (FIELD_PREP(ENETC_PF_MSG_CLASS_ID, - ENETC_MSG_CLASS_ID_MAC_FILTER) | - FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, - ENETC_MF_CLASS_CODE_INVALID_MAC)); + pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_MAC_FILTER) | + FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, + ENETC_MF_CLASS_CODE_INVALID_MAC); + goto vf_state_unlock; } =20 - mutex_lock(&vf_state->lock); if (vf_state->flags & ENETC_VF_FLAG_PF_SET_MAC) { - mutex_unlock(&vf_state->lock); dev_err_ratelimited(dev, "VF%d attempted to override PF set MAC\n", vf_id); - return FIELD_PREP(ENETC_PF_MSG_CLASS_ID, - ENETC_MSG_CLASS_ID_CMD_NOT_PERMITTED); + pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_CMD_NOT_PERMITTED); + goto vf_state_unlock; } =20 enetc_set_si_hw_addr(pf, vf_id + 1, addr); + +vf_state_unlock: mutex_unlock(&vf_state->lock); =20 - return ENETC_PF_MSG_SUCCESS; + return pf_msg; } =20 static u16 enetc_msg_handle_mac_filter(struct enetc_pf *pf, int vf_id, diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/= ethernet/freescale/enetc/enetc_pf.c index 2d687bb8c3a0..8957e74314d1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -540,6 +540,7 @@ static const struct net_device_ops enetc_ndev_ops =3D { .ndo_set_rx_mode =3D enetc_pf_set_rx_mode, .ndo_vlan_rx_add_vid =3D enetc_vlan_rx_add_vid, .ndo_vlan_rx_kill_vid =3D enetc_vlan_rx_del_vid, + .ndo_set_vf_trust =3D enetc_pf_set_vf_trust, .ndo_set_vf_mac =3D enetc_pf_set_vf_mac, .ndo_set_vf_vlan =3D enetc_pf_set_vf_vlan, .ndo_set_vf_spoofchk =3D enetc_pf_set_vf_spoofchk, diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index 285b7e5c48fd..eb977da2be71 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -9,6 +9,7 @@ =20 enum enetc_vf_flags { ENETC_VF_FLAG_PF_SET_MAC =3D BIT(0), + ENETC_VF_FLAG_TRUSTED =3D BIT(1), }; =20 struct enetc_vf_state { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index 6e5d2f869915..44c546b77d3f 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -462,5 +462,28 @@ int enetc_init_sriov_resources(struct enetc_pf *pf) } EXPORT_SYMBOL_GPL(enetc_init_sriov_resources); =20 +int enetc_pf_set_vf_trust(struct net_device *ndev, int vf, bool setting) +{ + struct enetc_ndev_priv *priv =3D netdev_priv(ndev); + struct enetc_pf *pf =3D enetc_si_priv(priv->si); + struct enetc_vf_state *vf_state; + + if (vf >=3D pf->total_vfs) + return -EINVAL; + + vf_state =3D &pf->vf_state[vf]; + mutex_lock(&vf_state->lock); + + if (setting) + vf_state->flags |=3D ENETC_VF_FLAG_TRUSTED; + else + vf_state->flags &=3D ~ENETC_VF_FLAG_TRUSTED; + + mutex_unlock(&vf_state->lock); + + return 0; +} +EXPORT_SYMBOL_GPL(enetc_pf_set_vf_trust); + 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/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.h index 57d2e0ebd2b0..5bf7c20aba42 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h @@ -17,6 +17,7 @@ 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); int enetc_init_sriov_resources(struct enetc_pf *pf); +int enetc_pf_set_vf_trust(struct net_device *ndev, int vf, bool setting); =20 static inline u16 enetc_get_ip_revision(struct enetc_hw *hw) { --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013040.outbound.protection.outlook.com [40.107.159.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C032343E4B3; Fri, 5 Jun 2026 07:23:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644191; cv=fail; b=UbExC1k37Z70HIfCR0O08k3j/qQ9z64Pkf63iZk9pLUtLhTTQyaGkKYu2VwQHPTM4UTmkvl8rdgbEGubPB95GHjnU39NREi+irwZp9keqWr6Vo6JegegghHCA3q2Z/FHS5WQEj+kpIGMEn29n02XO8mB85m+GbBBvAQE6ZZ4bow= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644191; c=relaxed/simple; bh=drqwuG2rg6f5mQCt8J5C4kcQtPUIPRXr8XzT/BcONU8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=e34nZUpI/uJkvEK6xQLKG33z/RsQ4wWVt7dsnkjqRgW2UbMYBjLJYZ9Br0M1O8U2sILF9c3mkyj4Tt4ETb+DVopp/6IRqJ2rLv64NygLR3yRjbHa5OuUtgQIUt88fKZQZvZQKuO3LGfmo5HZcwTYyOE7W4pDBKFCVrV5+FSXOd8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Z2NyoFic; arc=fail smtp.client-ip=40.107.159.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Z2NyoFic" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lO1TVvI8ZN8wlv57z5WEeCjzFrhg6U8Yn7qmLlgXh/bK/nuGQYebsqKmIKdt2CstmNWqRMNW/svAMwTe+B92eBzIJQxQumPbHlC40JisoCKbnKJgUeED+j0DY5ADAosNxn4AJmyHR9AdGcpWUCCd7R6MxLB7kWisHs6EDt0Kf/aUb8m1T4MwtGzfouM8WclVRWD8Gssi9hkR5x1bwnfeGwTx9tztpzuQQUSGSgf5WR08g/WeptakV9Zte3kGURmFew81GlDshTGAWBbIo0pKXsdmwg786fuNNFqt35KzY9UU8WqAfN5SeCK3QjAXSbKtuC8pXIr/tNNF/TbjoFFMEg== 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=i7kE91qn3DhHIdjY0//AX+LL2DRch3DMBVm1XwAkxAU=; b=ZU274JGAoHLFSe85DNml1XJMDinc2nEW//TokqeiBVNe3sUYZoQqrsxLV7X0n3ilGLfZlxoEZCshgMeauXYKBiXrt/2mBWfXOP3uniSvVoUVLWcMOASJletr1jti0UToU3UBf9NwSxSaidZpEC3N+x/1nh0WuOP7qd7J/c7XlMCjcs8RQDU5P55l9QIL+6LeU5xNfPPekfQIV0dblY0gDnDkgHRdFzKed8ZKh4U2CtbrouPyLeNVzuugUxJmlyzH7W9potULIf4ia6S2CjsxvrmulGA3sgzg2KZQj3eSXpsQqRtirsz88KFGxxjzrUKrUm4+yFncrXqsSnuWeVIHeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i7kE91qn3DhHIdjY0//AX+LL2DRch3DMBVm1XwAkxAU=; b=Z2NyoFich7kclcn8SUrU4acCIFyPH3RXqZz0way2ZyYFRz0jf+CPYCuoOyNI7Kxx2W1L/DSIGCVknC0fA8MNPS/VH1x9yD+lvRaS4BJ65WCfmn/UDrDEABWKfSCrzQvSqGrx5WF2d+XDgYWtnl1KzK94HVImBquW9TTIvQVXXHJFFhHcSll2deCNg0eBDjd/N9qxB8UJhmhrNX6hA4x9BVeqh/Yjpbp/JYrdQ8rtbcorEB3BLYH5moSj6E3qwNjaaztITPJA987zGd5X/k5vD6MkWtlaWV3/IL49RYvff5DTuayda+Oy3xrxfT0vEkFLHFHW5ghiwBBXhvsNadWSgg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:07 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:07 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 02/15] net: enetc: move msg_task and msg_int_name to struct enetc_si Date: Fri, 5 Jun 2026 14:55:37 +0800 Message-Id: <20260605065550.3038579-3-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0037.apcprd02.prod.outlook.com (2603:1096:4:1f6::13) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: cb44a6c7-fa0e-425f-5177-08dec2d349ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: aOj5znSX7eXnHuZWBd/5EtzNZeEB2N1lckhnjmnAo3ORwfY+f2QZejD7DVNi43W73phQh3CRLQ+BkvGEHdXFSUQUqgwIFTb7ivhRkhTmeNYNutpcF/JsqlF4mxj5cqD+6z6JQmTtJVJT4nGRjiCK1YjYXPHqLY6icggLj6VUvdHKp7NUDRVs502SNcT1STT2WWveBrxVbtz9mglqLT9jBkRuM7PQZRyBvn/N/j3Q/+VxHZXIDDmHTzJa30IOeF9m/7zhrfd6DhOoPnMsjHMGJbI9ncVsihC6i7YZ/YmxhIAk8oYalMRXivdz5E3X9/VE2E4j1nIK86gthoRg+fa7wJUxJFYJ7m22gYuelKNHOUy68jqD8MCVWGFiH48S5BZtoFFKXs2sKmzWKzNV8QqTk9ulec7xlwxsmTbaQIMPn4agil7i3r53iSsRSX/cm6odTeYsbYxMbL9XxoJq9YRRQd/2XR8OUmFrHLm1g3oBgQle41rzEKU2ZtRzAv4fecGRy2CS0l8x2VA7HC9zUcbDiCNBpjnNtLaSrN9XF6OuxHDeLjPgvL9mXeggypT69Fkrt4gutkiT14+UH5e93X/spC+Y5i9QdhI7O8/ZACh7KdKYY7JtoqRLOrHxEwQYpu1rett7crRosAv/7bDOdb+vstluRxrU8Py6ln7uu36zea5G4W0UyyMLz3DNuRVhecLmFHSiQLl7OR+0Nolt1SasZ/XNnGbSEu+HC4wIieyT220= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OIMK2+QfMzK0TgGLP5EVQ87VXTgaqNTkddvja3HYmNPoA4H5cwMV/OMiUrB5?= =?us-ascii?Q?Q8WnvzfPlj4kA55Y6wFxX3l/yICiSUf5oXjjkeLQoNFIhkKlakgvR5fOiXN3?= =?us-ascii?Q?6Mnopl9jgo7qLNMlJckce7njVrcWaiIrDtuApqmt83YZS6m56HOBldw5W3Be?= =?us-ascii?Q?vnYT0vZ1yh030rqohqvpdRxhux6DN4zaAswGX9bVsSyGvEYi1KfnMEgCrxQE?= =?us-ascii?Q?1KSUrukBQV1L+BwIxnN0/degZ7UGnHhn4euZLiOPYvNMywDHUDMdFcuT275b?= =?us-ascii?Q?yHOAwDH0ZGYo+QLkd/71OGIUQzfFp0Ng/VnGg5WYcJAOF/qQQ4rJP7UH8YCq?= =?us-ascii?Q?w/x5QWk7MAs5XS48mkcw/bkrfTVvpbPR/uCABmAk4p3q270wZPfDVmdcJc2y?= =?us-ascii?Q?cPkJAEZS5SQ2Z8Ki8TbFoAjzfORGDrrObwi8aj4JFB8ktIQSUpWVxYpO/5ty?= =?us-ascii?Q?RQSkvYYnzH41aR8rwfN5SlxJwSgBuvGwzkmfo6m7EnOSFW5ad9Jiz/SKn4qx?= =?us-ascii?Q?YPddVJsWyyQSuNX0d6KkWIovDo1x2j5s3aDMr3z6gAzubQYYoN1xFAdrcIFy?= =?us-ascii?Q?LlAM8k1riP192/zGHzNrgHpPe1lYRfeXHUJR3cbJmfOkNdyiRbUXgZQWAYPK?= =?us-ascii?Q?zFxaE3Mk8c4xtHMSLc+E7+dy2HmMCzffh+SfB4vR2DgY3hT1UUgO8UyIhyFI?= =?us-ascii?Q?JKFdORL/MRo2g4luxbza+OYAz0qcvue5DGjnnpk7Wntvw2LIQXc9oKRx9hxz?= =?us-ascii?Q?dmA/ZyppINRUD7CgEo5HAbm3AQ39TwGjFuMc+XFkVC5HzsRPDC8Xm/P98J59?= =?us-ascii?Q?mKE/hP3AA2QSZbEPzgFKrvwNXSQVU7cR4oTpDKCljJpadaECs75eetJdvhoO?= =?us-ascii?Q?aCzTZlfOyLsrCa9CNJpllGyV1zYGvt+Uy/zLwsUUuqeM/9aEHvCgtava3Rxn?= =?us-ascii?Q?bNDwntDydHGLpSc+mJjaSUYg/E3Jnp5JLDdD23fhMTrrZksvPToAq6zfWDi3?= =?us-ascii?Q?3OJe4f0mIuiUHYKqPRGAaNe/y599JpSfAhHhsLi/34fxl+FPfi1ewq0bXBzJ?= =?us-ascii?Q?izsdoS5kSYB6w62xs6A/t+x6zI3szw/XPZOrcjGHLIatepUYKz/Bo1UllKf2?= =?us-ascii?Q?FWvID2FuMijlVGMKMej0YW6lG0WP6S6YnBUrF4ZjGf3EwV5mUVnjcwOJ/G6v?= =?us-ascii?Q?arLyAwInr8dfovdOiTQnj3NfwOIPmdpmCeGMW1x/PzGzDMjhogVKgARvbuXM?= =?us-ascii?Q?lZn1gak6SsFC+Sd/O598ZIQCFx0fdl8/kO/2gpwgf4prjTbI0cFodb241IGs?= =?us-ascii?Q?0QarpGLyMFxSoe1GGISE7hP34ganUkTpp6oODu6KeKkzA9rfjz0+qro5sgF5?= =?us-ascii?Q?z0z8PliO6w4WFA9y0pbeC9xA5AZoQw1UPFl4wvDOHkKO6upcyxT9i/BA2z6Q?= =?us-ascii?Q?r9aCiJxKk7fe1Tls4zJMjv+obAV/hbY/9MS8bTgAZhMDa8uo4Gy+qtItH7j/?= =?us-ascii?Q?4nxNZnUjbYkg1OvvZkneMIVlQfZJuz5Lh8b7mf7QAcV690by63ozXuSec8bX?= =?us-ascii?Q?soW8ud6iLYNcs9ItgunVognaA14u6ebZ+kz6yOUa6HKAgLgapH+rCBJ3EKjq?= =?us-ascii?Q?hSO+lnQN6SJlr0IgUm/gQI+XqOl6NycJ5A1pUSzMlki6LAdD3y2r671g3efl?= =?us-ascii?Q?7fqFvCiFjOXhT+LjvyJMSJ5BUrd+UaZ+u5eezEetyX7nCMV7AiZCO70Tb8IJ?= =?us-ascii?Q?aJbIMVGgp33G5NqHdtnMD9VgKveohxu5p2KxGv/KOQvcfnSOttZI?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb44a6c7-fa0e-425f-5177-08dec2d349ff X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:07.0091 (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: RaYR/QlqVHfjqs+S72Set0HgfS73N4GaB1I5xhoAbyf9QeJtmognR0dxppTVOA+cHHSDBVDjAExuhPlVk26D+n5oz58HTUAMQ/qb8FxaJRzqTAnMMFL14JcwC8eNlOPS X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang The ENETC PF currently uses msg_task and msg_int_name in struct enetc_pf to handle VSI-to-PSI mailbox messages via a workqueue and a dedicated interrupt. PSI-to-VSI message support will be added to the VF driver, which will require the same mechanism: a message interrupt and a workqueue handler. Since struct enetc_si is the common structure shared between PF and VF, move msg_task and msg_int_name from struct enetc_pf to struct enetc_si to allow both drivers to use them without duplication. Also relocate the ENETC_INT_NAME_MAX macro definition ahead of struct enetc_si so it can be used for the msg_int_name array declaration. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc.h | 5 ++++- .../net/ethernet/freescale/enetc/enetc_msg.c | 19 ++++++++++--------- .../net/ethernet/freescale/enetc/enetc_pf.h | 3 --- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/eth= ernet/freescale/enetc/enetc.h index 04a5dd5ea6c7..2cd035773aca 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -25,6 +25,7 @@ #define ENETC_CBD_DATA_MEM_ALIGN 64 =20 #define ENETC_MADDR_HASH_TBL_SZ 64 +#define ENETC_INT_NAME_MAX (IFNAMSIZ + 8) =20 enum enetc_mac_addr_type {UC, MC, MADDR_TYPE}; =20 @@ -328,6 +329,9 @@ struct enetc_si { struct work_struct rx_mode_task; struct dentry *debugfs_root; struct enetc_msg_swbd msg; /* Only valid for VSI */ + + struct work_struct msg_task; + char msg_int_name[ENETC_INT_NAME_MAX]; }; =20 #define ENETC_SI_ALIGN 32 @@ -369,7 +373,6 @@ static inline bool enetc_is_pseudo_mac(struct enetc_si = *si) } =20 #define ENETC_MAX_NUM_TXQS 8 -#define ENETC_INT_NAME_MAX (IFNAMSIZ + 8) =20 struct enetc_int_vector { void __iomem *rbier; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index 156333ef26bf..8d4d0689807d 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -37,7 +37,7 @@ static irqreturn_t enetc_msg_psi_msix(int irq, void *data) struct enetc_pf *pf =3D enetc_si_priv(si); =20 enetc_msg_disable_mr_int(pf); - schedule_work(&pf->msg_task); + schedule_work(&si->msg_task); =20 return IRQ_HANDLED; } @@ -215,12 +215,13 @@ static void enetc_msg_handle_rxmsg(struct enetc_pf *p= f, int vf_id, =20 static void enetc_msg_task(struct work_struct *work) { - struct enetc_pf *pf =3D container_of(work, struct enetc_pf, msg_task); - u32 mr_mask =3D ENETC_PSIMR_MASK(pf->num_vfs); - struct enetc_hw *hw =3D &pf->si->hw; - u32 mr_status; + struct enetc_si *si =3D container_of(work, struct enetc_si, msg_task); + struct enetc_pf *pf =3D enetc_si_priv(si); + struct enetc_hw *hw =3D &si->hw; + u32 mr_status, mr_mask; int i; =20 + mr_mask =3D ENETC_PSIMR_MASK(pf->num_vfs); mr_status =3D (enetc_rd(hw, ENETC_PSIMSGRR) & mr_mask) | (enetc_rd(hw, ENETC_PSIIDR) & mr_mask); if (!mr_status) @@ -303,13 +304,13 @@ static int enetc_msg_psi_init(struct enetc_pf *pf) } =20 /* initialize PSI mailbox */ - INIT_WORK(&pf->msg_task, enetc_msg_task); + INIT_WORK(&si->msg_task, enetc_msg_task); =20 /* register message passing interrupt handler */ - snprintf(pf->msg_int_name, sizeof(pf->msg_int_name), "%s-vfmsg", + snprintf(si->msg_int_name, sizeof(si->msg_int_name), "%s-vfmsg", si->ndev->name); vector =3D pci_irq_vector(si->pdev, ENETC_SI_INT_IDX); - err =3D request_irq(vector, enetc_msg_psi_msix, 0, pf->msg_int_name, si); + err =3D request_irq(vector, enetc_msg_psi_msix, 0, si->msg_int_name, si); if (err) { dev_err(&si->pdev->dev, "PSI messaging: request_irq() failed!\n"); @@ -342,7 +343,7 @@ static void enetc_msg_psi_free(struct enetc_pf *pf) /* de-register message passing interrupt handler */ free_irq(pci_irq_vector(si->pdev, ENETC_SI_INT_IDX), si); =20 - cancel_work_sync(&pf->msg_task); + cancel_work_sync(&si->msg_task); =20 /* MR interrupts may be re-enabled by workqueue */ enetc_msg_disable_mr_int(pf); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index eb977da2be71..07bb9aab89aa 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -43,10 +43,7 @@ struct enetc_pf { struct enetc_vf_state *vf_state; =20 struct enetc_mac_filter mac_filter[MADDR_TYPE]; - struct enetc_msg_swbd *rxmsg; - struct work_struct msg_task; - char msg_int_name[ENETC_INT_NAME_MAX]; =20 char vlan_promisc_simap; /* bitmap of SIs in VLAN promisc mode */ DECLARE_BITMAP(vlan_ht_filter, ENETC_VLAN_HT_SIZE); --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013008.outbound.protection.outlook.com [40.107.162.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C036478E33; Fri, 5 Jun 2026 07:23:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.8 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644197; cv=fail; b=ayJcPwRR4cxhz6a+JozxOn4JCrV0thxe4+6CEK8yHNLf1JwIufRScavLR5ePm63IgtF6LNM6Wg9eyd1cpGIybvlVXhcscKpsklXZXu/vMIqRYKa0XwW9KIlUOS7F0//HARa6HG88lNUPrcJJDIaKZ1BBF4kYjCcGkANc7uETkwU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644197; c=relaxed/simple; bh=uW59UTzj61n0LeP2s3LJNdwAjd8D41A1iJN9kocu1Ps=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=mGdz+813A+I2jyw6x9D+8m6ogVSsT1y4PjP58TwZguhVyGBNixVbrmJlNmSSwmRWqBBWDYAt6jynRdsL3WFPleAtqCss9vldU3Ziw5+rotVDSQ+RPxK364y/QDnjdi7GpkWNdUjTQ78CmP3b4IUJ4Gt+rzQLNQhG6bRW+q8yR18= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=cj//kAjH; arc=fail smtp.client-ip=40.107.162.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="cj//kAjH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mdOFylKnVYMp5qNd0/+OWxcGfIhX04Cbm/xPoFb23dtKbliG5IQVM0VcVMB7lyD8zmcNzaCO0B674iVXm+Vki5P3Nkd/k4M0wyCbIqvGYMH3hFJtpss7QtuGt6kawtTbSdIpj7Iplk1813G03tbst3fr/An5bB0O8Js0YJ/GelV5RX6Fwar4HkLA38US5pm24k5jpVAFhHivndVplEwKJ89yEYbsFOip009y8/auQ5pO0RQrdO68IBbquy+tXKTUNfdZxeQiLhdkFC4xfkXR43DTFJpBKyhIf3W5WRibuwosJUIZ8aQAJlxDuocF8jC9NqKdAEPkewCTxa62NdD9vg== 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=nSCu6wu3qeFShYvuhcKYDEuR2Rb652syIrk/Hv573/8=; b=TO+7GCW+Iiz2iM3aPYrbpH5ScETwT/ikC8zyDhGYEQuVo4chuPIUdUA/xATY5SVkugUoVWfY3bnMpuxGf8CDv2nxCbPc3PRbJcZM2lAIIAn+Lp5sSlPC+rQ7oSaLkkAfcL/lU6BBU5AROg8PXVE5c2lP04hYjlwDqTgDY7z+t1nbA0nPg1pT5ppvF6mmJwtUEjuN6y+dAa7uLnUtiIbovcBvBSmKegu5eNlak3eZIgVYo1HxCn9ZKsR3AcqsVhWuOSYsuwhCm8cRExWs1V/XK0kOz6j99i37Sq338ZOa83skCcyM/zJUCq78mtc/W31cNRhuuuFyK/o3F37VHlsPBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nSCu6wu3qeFShYvuhcKYDEuR2Rb652syIrk/Hv573/8=; b=cj//kAjH1qfaRMW57EWtpDRiiNYViilgXxBBpzBYs+BvAuPYO0W9tbjPtgK0pY23zI312yA782IC8Wqczzrom4M38nXzfY9VRKwHLu7TW1N7A3gSQZIiU2/E+cHEsEFvUFciaPS+LAJbudvHVXja4ELTeUN42lrY6MbizgbpXJEoOI0XMAQeQzvuOJ6I2+LuPjDULsmHqMTYV0REnM16uYwVBogq3g8wNRw91fcY9xx/d0afM9yFsrpn8QsU45WQpFwnymGUq0XHGZc2QHMyWojmlhtyg1uDCvjBvIREh7AaI29uG8UlhsKs/OxLrhEcXCRMwDlWoAJcPj0hbrnx8Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:12 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:12 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 03/15] net: enetc: add link status message support to PF driver Date: Fri, 5 Jun 2026 14:55:38 +0800 Message-Id: <20260605065550.3038579-4-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0040.apcprd02.prod.outlook.com (2603:1096:4:196::6) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 4e65603e-170f-4c39-6128-08dec2d34d57 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|21046099003|22082099003|6133799003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: TYuwrG/uOsZQTOXgBayyW5wJGWxRf5M6DaykBxqqcW03xw9ngb5aU/4nQ0EVG7NjFcJS0HjnLgqUzXdgJNyouwaGRKO7cqmObd6VA9tle+n24aO5Ltjr6A5iV8pRTeVBo1iiElGM2iTJ3jjjiZoSdG8h2ApRTjidmg7omUht+llmOm4vpLg242jKeP40mU36Nb55mK9O68bGD3oj/fbRCzkqUPOHjap+/yLj9ywO6O1AP/tSpQ0vM4FLHz7CHHP67dGkaaiW3+SS0BRcosxgWI/huu8ruCDfDgebfVZ8bezd4UJJ9G5wVaZvxT/h7qVLrqIPIZOeI8rbLC4vMt+ZJfsBH1+t6BmddS9SPXrMkdFMK3Bbsc+kDKuJd9+a0iVxm6y+yWFyyNYPnYwJySPG0WvvOGuwIaZq2ltqkuT8us6UCuzY2Hgnrk7YbGaw2tSx/d58oTmVeTlYKQFAyOKL5lMK0+8OuB149iOd+jDKWBCh/NCb/nhu8LgtAkqoVws60pdEw26y09kYDUBw9efsL7Ixmyk7Pp5lVmQD52sGmqi90qc7QU8yykVh+8plfH9Fx7nd5koMJvzUTYMhFQAtkBujV4aldJKzuGlQfEkkSD9oAj/XGgmZ/q5rf5MHa43OQaOsQohyJb186lHIKb5VTwX35iuhXS7favI2Pqn6Vs6QDdr8nRZEVB+JpHF/KHDq7v9A0oOdJBcrryN0MfmpHYldvndcNBlRxs/XW3bXJJw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(21046099003)(22082099003)(6133799003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yV/ks2TnjJngqyL6D2+oZv/2KCicuw/mSeEEt3LSAcaWDKupiYW7jC9sTwcy?= =?us-ascii?Q?wuANycdH1yt6WTJTz3qDht3N6HTtkauOk9FbnPLFIn9b13yaW7/b8ZSpnbGV?= =?us-ascii?Q?7IiNzlHkCMkqoXUwK3S0Wvedquo1bc34ZtHMhl/LnoIpoGL4NjERLBvmkQah?= =?us-ascii?Q?AlWOf/3cGd2BOEAYajsQ1S3ONEYZC9CZ036Dpfi9AKafUJeGQa9dJgjW960q?= =?us-ascii?Q?pixp3wSk6hIH7JLdbYVjUodfzXmRWF1UdN4Fl+21b1FLCl3uG/a0Yu+xBsI8?= =?us-ascii?Q?rUpNNZuFcm+5dDg9yXXpdgcn8kTBaS+8tLKveQkwvGvtnxBXUW67AA5yn3/t?= =?us-ascii?Q?DXnuIANDAIrYqoQbQnXxr8X5tj419nvGxzWKpphwIS2fhjM/Yn+LjDxLGR0j?= =?us-ascii?Q?M7zHFemSudrRUmd/MGmUvJ+pD56UW7EQl/oTJ4h/IKokr3xHQfju8FsDWYmJ?= =?us-ascii?Q?mVj85t4nuZDy0thvV4i/rTDdPLHLetFCGDFxv9k71ba16gbDIRICGJsJ/2GB?= =?us-ascii?Q?Ef8u4H1U2Adrf1nUGP75YLcrTDoyGt26x3aom0P+zyBJNvPPg4dW/d5dBNwL?= =?us-ascii?Q?LSt6QF4kBUTnm/8Y/uaKxVM9M6ZjRDJI0PuwfRVOeSos1nsXcJd+WPixikkg?= =?us-ascii?Q?LJzM4lNnkJ4bW8lEv83b0+lLRLM5cJ2wL2E7ZWZ7DW7ZqlABQ0gqQcoj0FMs?= =?us-ascii?Q?PjpKvmJPn6pNqzm+PdKzSrRetse/ZmThq5294sZPJC61m0MHeUtEpkROhP5X?= =?us-ascii?Q?Omn9p7U8s7ry0KjbIiAx/t8wNAhwXbU/AFsrYl4/jZ8MHGr73bGNNyYDTo/D?= =?us-ascii?Q?dnaPtcfmzhnx8ezFrNjwewG9Mca3QfuVW2dTyPkaG/3QgdGjyy2KAHV2SYTr?= =?us-ascii?Q?Rv/1NhRSQMp5jmOKJcUuo7xxrnKsuuQHpyGRuFtVjjyjfxgYa81qtj68ZMU9?= =?us-ascii?Q?pyvTo5fpgw1GtfrpPFTUaF8eDJhTRm1/RvzgGeFbWByIl3IuGuZa2QLhgZ+F?= =?us-ascii?Q?wOgDyUEOYp2cHz8c9qHRpyAgWVUUzuvKkbLglg47qQnevjjp6CZg3ll90HZw?= =?us-ascii?Q?wIjDPhxFP7Pz/LLtJ4bFDBydu6tQ91221JvN6bphMlKBjSKzVI2rLJYUcDa0?= =?us-ascii?Q?echb2P9KyjXz5Hk3PmTTkjW03qQItJfOAn3gF10x51Q76ByqnIv8CSZf0+Bp?= =?us-ascii?Q?8++rifmYsCr4yxJLTrzx8tTtEPkUvYvw2lDvre2GLOQUx+1L/nal98oUhMbp?= =?us-ascii?Q?YEH9VaDObpAg88R9Dqlp8G/vYZ9LcrrR4QX/C6SAebNca5Qb13RWDpKT1DjZ?= =?us-ascii?Q?Ke0hiIsXd+dsAEZUH44S+z4ocuxO+YPgA7sY+0xp/AyzQRxtyyJVqbAS6u84?= =?us-ascii?Q?dwdHtH/1U9/xXJ/bgLqDJNFvII/n9UsHETmBqATkiVmv15LooR3OmKYuw8hb?= =?us-ascii?Q?B28Q+nhgQ6m4bOdRrK9Qt6hf5838JniZyxHUIRoU7cVEd14KIX+UmiMjYDH9?= =?us-ascii?Q?DGVxy6qKfqvC+v6KxD7AZeN0fU9kVC+xx7BVYi1lhOR/arp5pNsTQiN7u3l1?= =?us-ascii?Q?dZPCUthC6sQqXDNldnqKUIlDA5VQdo6m/TlThu9NCFKdMENl8ciGXcfAulew?= =?us-ascii?Q?GwzxtQ9Bu3z+eDR/v57P7YFgCxRxxZgPw175jdFzweuvlY+7J8TpaDjzk9R0?= =?us-ascii?Q?a7i75JuJQNIMs7z4ik73D/RwYae5KfY9TZ+nE+Z5HdUlXfN/EVsylss9uK3/?= =?us-ascii?Q?lz12Co+0lrbpQjiUOEsvyVT2yf8+C8H+MGwBgq7jsnNCgbZXnn/X?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4e65603e-170f-4c39-6128-08dec2d34d57 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:12.6105 (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: KWFuC9C0qpdQd/qwMEYs98/GHMKCwECBppHZrW97MldSKOE4XFNuoC0eRB8Fcxnud9ju9iZdxn9SitACf3MRrk4mMIarjngVci/bl++dG9yLrLQgYhgGltnRY/iKwu20 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang Add link status message support to the PF driver using three command IDs under message class 0x80 (ENETC_MSG_CLASS_ID_LINK_STATUS): 1. ENETC_MSG_GET_CURRENT_LINK_STATUS The VF queries the current PF link status synchronously. This command is not used by the Linux VF driver but is intended for DPDK-owned VFs. 2. ENETC_MSG_REGISTER_LINK_CHANGE_NOTIFIER The VF registers for link change notification. Upon registration, the PF immediately notifies the VF of the current link status via a PSI-to-VSI message, and continues to do so on every subsequent link state change. 3. ENETC_MSG_UNREGISTER_LINK_CHANGE_NOTIFIER The VF unregisters from link change notification. PSI-to-VSI notifications are sent via the ENETC_PSIMSGSR register. A new msg_lock mutex is introduced in struct enetc_pf to protect concurrent access between the phylink callbacks and the VSI-to-PSI message handler. The bitmask link_status_ms_mask tracks which VFs have registered for notifications and is cleared when SR-IOV is disabled. Two functions are exported for use by PF drivers: enetc_pf_notify_vf_link_up() enetc_pf_notify_vf_link_down() Through this mechanism, VFs can accurately perceive the link status and report it to upper layers such as the kernel network stack, containers, and virtual machines. Note that currently only the ENETC v4 driver supports this feature, while v1 does not. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc4_pf.c | 2 + .../net/ethernet/freescale/enetc/enetc_hw.h | 4 + .../ethernet/freescale/enetc/enetc_mailbox.h | 18 +++ .../net/ethernet/freescale/enetc/enetc_msg.c | 152 +++++++++++++++++- .../net/ethernet/freescale/enetc/enetc_pf.h | 4 + .../freescale/enetc/enetc_pf_common.c | 2 + .../freescale/enetc/enetc_pf_common.h | 9 ++ 7 files changed, 185 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index ee52ff929576..ad211eefd9d4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -940,6 +940,7 @@ static void enetc4_pl_mac_link_up(struct phylink_config= *config, enetc4_set_rx_pause(pf, rx_pause); enetc4_mac_tx_enable(pf); enetc4_mac_rx_enable(pf); + enetc_pf_notify_vf_link_up(pf); } =20 static void enetc4_pl_mac_link_down(struct phylink_config *config, @@ -950,6 +951,7 @@ static void enetc4_pl_mac_link_down(struct phylink_conf= ig *config, =20 enetc4_mac_rx_graceful_stop(pf); enetc4_mac_tx_graceful_stop(pf); + enetc_pf_notify_vf_link_down(pf); } =20 static const struct phylink_mac_ops enetc_pl_mac_ops =3D { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_hw.h b/drivers/net/= ethernet/freescale/enetc/enetc_hw.h index bf99b65d7598..37c6060ccc82 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_hw.h @@ -80,6 +80,10 @@ static inline u32 enetc_vsi_set_msize(u32 size) #define ENETC_SIMSGSR_SET_MC(val) ((val) << 16) #define ENETC_SIMSGSR_GET_MC(val) ((val) >> 16) =20 +#define ENETC_PSIMSGSR 0x208 +#define PSIMSGSR_MS(n) BIT((n) + 1) /* n is VF index */ +#define PSIMSGSR_MC GENMASK(31, 16) + /* SI statistics */ #define ENETC_SIROCT 0x300 #define ENETC_SIRFRM 0x308 diff --git a/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h b/drivers= /net/ethernet/freescale/enetc/enetc_mailbox.h index d9677da38989..43b9ee2ab3e4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h @@ -107,6 +107,7 @@ enum enetc_msg_class_id { =20 /* Common Class ID for PSI-to-VSI and VSI-to-PSI messages */ ENETC_MSG_CLASS_ID_MAC_FILTER =3D 0x20, + ENETC_MSG_CLASS_ID_LINK_STATUS =3D 0x80, ENETC_MSG_CLASS_ID_IP_REVISION =3D 0xf0, }; =20 @@ -118,11 +119,23 @@ enum enetc_msg_ip_revision_cmd_id { ENETC_MSG_GET_IP_MN =3D 1, }; =20 +enum enetc_msg_link_status_cmd_id { + ENETC_MSG_GET_CURRENT_LINK_STATUS, + ENETC_MSG_REGISTER_LINK_CHANGE_NOTIFIER, + ENETC_MSG_UNREGISTER_LINK_CHANGE_NOTIFIER, +}; + /* Class-specific error return codes of MAC filter */ enum enetc_mac_filter_class_code { ENETC_MF_CLASS_CODE_INVALID_MAC, }; =20 +/* Class-specific notifications/codes of link status */ +enum enetc_link_status_class_code { + ENETC_LINK_STATUS_CLASS_CODE_UP, + ENETC_LINK_STATUS_CLASS_CODE_DOWN, +}; + struct enetc_msg_swbd { void *vaddr; dma_addr_t dma; @@ -161,6 +174,11 @@ struct enetc_msg_mac_exact_filter { /* The generic message format applies to the following messages: * Get IP revision message, class_id 0xf0. * cmd_id 1: get IP minor revision + * + * Link status message, class id 0x80. + * cmd_id 0x0: get the current link status + * cmd_id 0x1: register link status change notification + * cmd_id 0x2: unregister link status change notification */ struct enetc_msg_generic { struct enetc_msg_header hdr; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index 8d4d0689807d..c93b4e6913d8 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -128,6 +128,113 @@ static u16 enetc_msg_handle_ip_revision(struct enetc_= pf *pf, void *vf_msg) } } =20 +static u16 enetc_msg_get_link_status(struct enetc_pf *pf) +{ + struct net_device *ndev =3D pf->si->ndev; + u16 pf_msg; + + pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_LINK_STATUS); + + if (netif_carrier_ok(ndev)) + pf_msg |=3D FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, + ENETC_LINK_STATUS_CLASS_CODE_UP); + else + pf_msg |=3D FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, + ENETC_LINK_STATUS_CLASS_CODE_DOWN); + + return pf_msg; +} + +static int enetc_pf_send_msg(struct enetc_pf *pf, u32 msg_code, u16 ms_mas= k) +{ + struct enetc_si *si =3D pf->si; + u32 val; + + enetc_wr(&si->hw, ENETC_PSIMSGSR, + FIELD_PREP(PSIMSGSR_MC, msg_code) | ms_mask); + + return read_poll_timeout(enetc_rd, val, !(val & ms_mask), 1000, + 200000, false, &si->hw, ENETC_PSIMSGSR); +} + +static void enetc_msg_notify_vf_link_status(struct enetc_pf *pf, u16 ms_ma= sk, + bool link_up) +{ + u16 pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_LINK_STATUS); + + if (link_up) + pf_msg |=3D FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, + ENETC_LINK_STATUS_CLASS_CODE_UP); + else + pf_msg |=3D FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, + ENETC_LINK_STATUS_CLASS_CODE_DOWN); + + if (enetc_pf_send_msg(pf, pf_msg, ms_mask)) + dev_err_ratelimited(&pf->si->pdev->dev, + "PF notifies link status failed\n"); +} + +static void enetc_pf_reply_msg(struct enetc_hw *hw, int vf_id, u16 pf_msg) +{ + /* w1c to clear the corresponding VF MR bit */ + enetc_wr(hw, ENETC_PSIIDR, ENETC_PSIMR_BIT(vf_id)); + enetc_wr(hw, ENETC_PSIMSGRR, ENETC_SIMSGSR_SET_MC(pf_msg) | + ENETC_PSIMR_BIT(vf_id)); +} + +static void enetc_msg_register_link_status_notifier(struct enetc_pf *pf, + int vf_id) +{ + u16 pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_CMD_SUCCESS); + + mutex_lock(&pf->msg_lock); + + pf->link_status_ms_mask |=3D PSIMSGSR_MS(vf_id); + enetc_pf_reply_msg(&pf->si->hw, vf_id, pf_msg); + + /* Notify VF the current link status */ + enetc_msg_notify_vf_link_status(pf, PSIMSGSR_MS(vf_id), + netif_carrier_ok(pf->si->ndev)); + + mutex_unlock(&pf->msg_lock); +} + +static void enetc_msg_unregister_link_status_notifier(struct enetc_pf *pf, + int vf_id) +{ + u16 pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_CMD_SUCCESS); + + mutex_lock(&pf->msg_lock); + + pf->link_status_ms_mask &=3D ~PSIMSGSR_MS(vf_id); + enetc_pf_reply_msg(&pf->si->hw, vf_id, pf_msg); + + mutex_unlock(&pf->msg_lock); +} + +static u16 enetc_msg_handle_link_status(struct enetc_pf *pf, int vf_id, + void *vf_msg) +{ + struct enetc_msg_header *msg_hdr =3D vf_msg; + + switch (msg_hdr->cmd_id) { + case ENETC_MSG_GET_CURRENT_LINK_STATUS: + return enetc_msg_get_link_status(pf); + case ENETC_MSG_REGISTER_LINK_CHANGE_NOTIFIER: + enetc_msg_register_link_status_notifier(pf, vf_id); + return 0; + case ENETC_MSG_UNREGISTER_LINK_CHANGE_NOTIFIER: + enetc_msg_unregister_link_status_notifier(pf, vf_id); + return 0; + default: + return ENETC_PF_MSG_NOTSUPP; + } +} + static void enetc_msg_handle_rxmsg(struct enetc_pf *pf, int vf_id, u16 *pf_msg) { @@ -203,6 +310,9 @@ static void enetc_msg_handle_rxmsg(struct enetc_pf *pf,= int vf_id, case ENETC_MSG_CLASS_ID_IP_REVISION: *pf_msg =3D enetc_msg_handle_ip_revision(pf, msg); break; + case ENETC_MSG_CLASS_ID_LINK_STATUS: + *pf_msg =3D enetc_msg_handle_link_status(pf, vf_id, msg); + break; default: dev_err_ratelimited(dev, "Unsupported message class ID: 0x%x\n", @@ -228,7 +338,6 @@ static void enetc_msg_task(struct work_struct *work) goto out; =20 for (i =3D 0; i < pf->num_vfs; i++) { - u32 psimsgrr; u16 msg_code; =20 if (!(ENETC_PSIMR_BIT(i) & mr_status)) @@ -236,12 +345,13 @@ static void enetc_msg_task(struct work_struct *work) =20 enetc_msg_handle_rxmsg(pf, i, &msg_code); =20 - /* w1c to clear the corresponding VF MR bit */ - enetc_wr(hw, ENETC_PSIIDR, ENETC_PSIMR_BIT(i)); + /* If msg_code is 0, it means that PF has responded to + * VF in enetc_msg_handle_rxmsg. + */ + if (!msg_code) + continue; =20 - psimsgrr =3D ENETC_SIMSGSR_SET_MC(msg_code); - psimsgrr |=3D ENETC_PSIMR_BIT(i); /* w1c */ - enetc_wr(hw, ENETC_PSIMSGRR, psimsgrr); + enetc_pf_reply_msg(hw, i, msg_code); } =20 out: @@ -361,6 +471,7 @@ int enetc_sriov_configure(struct pci_dev *pdev, int num= _vfs) if (!num_vfs) { pci_disable_sriov(pdev); enetc_msg_psi_free(pf); + pf->link_status_ms_mask =3D 0; pf->num_vfs =3D 0; } else { pf->num_vfs =3D num_vfs; @@ -388,3 +499,32 @@ int enetc_sriov_configure(struct pci_dev *pdev, int nu= m_vfs) return err; } EXPORT_SYMBOL_GPL(enetc_sriov_configure); + +static void enetc_pf_notify_vf_link_status(struct enetc_pf *pf, + bool link_up) +{ + u16 ms_mask; + + mutex_lock(&pf->msg_lock); + + ms_mask =3D pf->link_status_ms_mask; + if (!ms_mask) + goto msg_unlock; + + enetc_msg_notify_vf_link_status(pf, ms_mask, link_up); + +msg_unlock: + mutex_unlock(&pf->msg_lock); +} + +void enetc_pf_notify_vf_link_up(struct enetc_pf *pf) +{ + enetc_pf_notify_vf_link_status(pf, true); +} +EXPORT_SYMBOL_GPL(enetc_pf_notify_vf_link_up); + +void enetc_pf_notify_vf_link_down(struct enetc_pf *pf) +{ + enetc_pf_notify_vf_link_status(pf, false); +} +EXPORT_SYMBOL_GPL(enetc_pf_notify_vf_link_down); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index 07bb9aab89aa..549ea3f4b5cb 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -60,6 +60,10 @@ struct enetc_pf { const struct enetc_pf_ops *ops; =20 int num_mfe; /* number of mac address filter table entries */ + /* Message lock, prevent concurrent access */ + struct mutex msg_lock; + u16 link_status_ms_mask; + }; =20 #define phylink_to_enetc_pf(config) \ diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index 44c546b77d3f..e3bed5580d17 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -458,6 +458,8 @@ int enetc_init_sriov_resources(struct enetc_pf *pf) for (int i =3D 0; i < pf->total_vfs; i++) mutex_init(&pf->vf_state[i].lock); =20 + mutex_init(&pf->msg_lock); + return 0; } EXPORT_SYMBOL_GPL(enetc_init_sriov_resources); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.h index 5bf7c20aba42..bbe21c739cf7 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h @@ -26,9 +26,18 @@ static inline u16 enetc_get_ip_revision(struct enetc_hw = *hw) =20 #if IS_ENABLED(CONFIG_PCI_IOV) int enetc_sriov_configure(struct pci_dev *pdev, int num_vfs); +void enetc_pf_notify_vf_link_up(struct enetc_pf *pf); +void enetc_pf_notify_vf_link_down(struct enetc_pf *pf); #else static inline int enetc_sriov_configure(struct pci_dev *pdev, int num_vfs) { return 0; } + +static inline void enetc_pf_notify_vf_link_up(struct enetc_pf *pf) +{ +} + +static inline void enetc_pf_notify_vf_link_down(struct enetc_pf *pf) +{} #endif --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013068.outbound.protection.outlook.com [52.101.83.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D5D4E42EEAB; Fri, 5 Jun 2026 07:23:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644203; cv=fail; b=V1qocpy1W/0SxIs0Q/H/5bKyaJTz/4qz8GLmpnNd+MVyywqy8s73X+zP8SppXh7oVImeQ+FqqTBZ6bBDaYjr1LXvgYq6SI1uSuTujUhftykeiZ5m5yMkRhFMuYjvlPl6U6UwwB0X7mVY9hWfHvgwWaskKXXyEmJ2HOF9L+RrY8M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644203; c=relaxed/simple; bh=q7JJAKp3LAuYuqD3jNz56djoR5Wedp4JFF7HMHC8Wt4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Detds+/QmEOCXvJFRTO2OfeDMXnrMoFjkKpdtPz8QJoQhKkmw81LQ/J7Rj5ak62fF99nGlYl/Mv9Y64JLcZlpx0wKGfmBlTdf0UkmkOd/0rwKTs+mp4twYs+eL7NOzoPhOa/x8kYjrMp/ziolZhLRvg7RNuuYOMGS+pKbFLHvlY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=iB4am7lK; arc=fail smtp.client-ip=52.101.83.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="iB4am7lK" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B6h3uuLYsxvy30Col3U6ic1uvksgsu87XX/bYYro4CIyAdDna+TvnOST3eIEENZVNkIMEy2L943RnuOLk5f5fiNfp8E2tD8G0W9ZwzvNYjaq2/2jmrIq8v4R61Vuqj7UEi77UVlpbyuhVE51O3ykSi7T71cNHBtMXeID9EqDht7STmoZFglYZa6sO6COvuXpJHdSyekzxwzSHzFHCEiB1beAX5vVrUnB814LFdMY8858UJN6UJLFzfdX1OE+TXqBeEoFkneCBciIxfSXsekfv6Wd9uWFRSwKLdG82X1PR89c/KCuGzafgfpuO1KXHM3MO/zgYM40T9wMkh7IRtYSVA== 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=29B6o9RiNPeseFd8xm4Kc+mLVia2vipdb2TPdQB1aS8=; b=RVz4H7GXFRDe5cV0ZN8PHzfoCBqWcBCrN8NMuP/5eHHnKuGQ8sSrco4BaF3EACMq+PsaAB4OEVQdbK/WD284qhtkmCQqkIrTDTAxrKDzZeibPUcWdUWJepzm5M4sC1O6/aes7LfDtmI4/uRjBgLJOwnqFcgofc3Cs+QqmLUyopZQdTuBGkjLLcRPI2wMZxYzO543g8/wNbvFlb0ugaWU6PmM/rbevQTS7cQOqwp2nbCys47c9QSjOvPlqhOYtwbShQDyKJJ/Ca7BUN3H6q77tIw+PCYKMaHCemDTAPIC7xJK+VZzHiycY9qn+S4/knQf1bFnAd555fa/QdnZ9scnqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=29B6o9RiNPeseFd8xm4Kc+mLVia2vipdb2TPdQB1aS8=; b=iB4am7lK2awgHJVX97qgb/sjkFF/SQiavPyLK2U98BynF4kLAe3l5IGWjcLmBgN51QVY9pqmUjq6gF9ZcSAQmLGMARr9GYgiHwG7j948hWO/v2ZKUCHJ3Qp7xu5O/YtAP3lb+c/nQrCuZ0vk4Q6jHeKPKvoCxCJ8lwAAnPSJS3QjkCJXHMpvbYbOEF+nm+/ow26Bb8x0FK2wURqTCw73pTorW0q/vbMjNvX94OLW4StIGDPtC2xn+eZkAUkjG4V3le0KgX6OXIHMzTnBVSe3FOnnFPgIHQETqgIxDqqe/N+XVvOiFzUJAUsYRtfqd/mcaZTxWgY7Ej8euvjjTrgIWg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:18 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:18 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 04/15] net: enetc: add link speed message support to PF driver Date: Fri, 5 Jun 2026 14:55:39 +0800 Message-Id: <20260605065550.3038579-5-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR04CA0013.apcprd04.prod.outlook.com (2603:1096:4:197::6) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 9cc385a1-c973-4db5-3c30-08dec2d350fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|21046099003|22082099003|6133799003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: 4zU/o1Wz1LknofkWrDsokwbnC6yuYg3pxvVTriu1Vcs0bpDtCkwTVuE2zoOuF/CAVdZT+5RLkh0fP9fm+ywN3cDaJ8fISJ0V0MSenDJKY8OZZTb0DLLV4vQpAUny5oIcg6jy4nVtokmvKwVJYuAEsvPrN+egoGpwYC2YtReovErBaGR/HwNQDVWvDFN9CzKn0UtLgilBEhgHy2S+0J1yG/XzDZkb/+n3Pa0LsbB5ln3hf0Y5ALd85MiAyZxqIi2wy07KFexBbaf/uDZ4HEfsCvoJtw//uKbEAJFnMSm0Ag4BfHhidt2PqyKoJvcXqXf7N0wXStoZgC9ofRguew8ZFXy6E89mcuPNaf0031d3JGbqxJhw4yB5jka48KOFL3gQfmI8cyKKk1HzqvRQ5kBlPCzfnk/uV0DMaBHuZiGLAIB36M2BZVm9Umjhek2VpoPZYIBgeXxHu/qKShARGajJvUPsNoYObxUbQj7iLs2v/0M37PH1X8zaijG4UEju6gpvq30i5XVnoDzDQntEFrqZSmJQZqXth5hboXCOmWlPEkVRVD8NPPKFIsdlQjWuUa3ggQO/Vs36eVBdmoW9MTa3qMnm0GA7ITbQFLO86QK+N0OsRjc/1cytLlmasx9PJo1e1NokE16D35W9Kxau4JXfyFOwBO219fDQrr8q4y2q0bNpO/Mee0xozvRIEXOwe4Fk3QHJzoEy51gsVMiqBanoTA2gJ09urKMNAqxoL7zK9co= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(21046099003)(22082099003)(6133799003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MzewLUlmeNKp7tqTBwaaWgSUWfhMtn++ycQ+Ge940a13AYLvL6bXwhOXZZRF?= =?us-ascii?Q?cNU/hfpfeaDoP6KuK24TG1SHQMmdRulmZkf/b/zWy/m9vz4h21JlZcVB03JD?= =?us-ascii?Q?qYFQyltcVvfBujYX9Py/vbxBFbtcqtTL+EokkRaRgmlnVMYCBEvoqVJHNB1q?= =?us-ascii?Q?taORAceogmsWC9HcQLH+nlsuGedmuUqDMMCRrw/2whYtk77cFiTn9HhTcW4f?= =?us-ascii?Q?WWqqViTHzKsxIRJaZTcmGdq9HMbA0uYDSKwBWATYZJmzVe0au9bwQTEbcdSn?= =?us-ascii?Q?Px415jrr3moZNmLEdd+LbPd/U6aOeGdrAqN2499eqdNBoxDBXPe2kBa/PQKm?= =?us-ascii?Q?7PNVmf/ri4ZwBSyDZ9pyJUQgGcxcVOMgxAkc+vxPOt9KEAr7vVJV7iw9Uycp?= =?us-ascii?Q?R31iQsDUacUxBuKyUeuuBrWJCuUGlJMlAg57XQWDUPZ0Q/bH9/VYAlgkYN9q?= =?us-ascii?Q?lLxZEginVVV4OD4q6SlsLBb2kxsUAGAjMAjaabvG+iBYEzpwQN/qCnPyEnVL?= =?us-ascii?Q?gRbgcrI3SwZfo43FCnhnEEcEHjUOEKOmG1+hNddkdpQb9DsOlVP+5AIGgVxo?= =?us-ascii?Q?Tbio9LBAhpnDXjSsKLEauwnn5xe/8hrkTlZd9AU4HRnb8EI03znq0q09NmIV?= =?us-ascii?Q?X15elZrtXSax7C7D6/Gc3sdhmbxhGdi98kkeq3kkg564FkGwMyHPBrNdTB0h?= =?us-ascii?Q?q24+3yoAnX3WjFM88qn3yM8epC2yegcAhi+kUh0B6BAi41Ajw0Q3dZm9VrdI?= =?us-ascii?Q?zELoafX3X2sb/i5mJBz8K5H+y4JIvxpizxtufJZsDSRb+NFmE1CVhprDFoww?= =?us-ascii?Q?F2biMhvde4nBSx+Bt1uMk74RLo7saW28TRZKd2AiP6JJoBs6wGQpiHTljE5Q?= =?us-ascii?Q?Edwna6DOrxfhuuUiAccdv8eVO1DTqpXw3nC7itXuY8jH0V90zcZCZHQsvdUV?= =?us-ascii?Q?PialfonCQkYQ6TefQZuqe3H/pvCU8yb4nZeseQqXd/REZ+7i2Q9SSNv4m3Jo?= =?us-ascii?Q?vXC6mMBwwCp/ulC6KoHuGUCON18Vp7cgLGrnba+y8xgcnanJTOJpAK4DKZjJ?= =?us-ascii?Q?DmamOYM6jdEY/jdFVkuEY1M0EdTnkgEelbVc2ruDqKOLjeiPL5g/kiftueEI?= =?us-ascii?Q?hJ2xTLODw6HVBiDWLEkg+9WdhD+mIDp6Q/JCfn8k0Cf6FiHvT5qwYAX2YAM8?= =?us-ascii?Q?4Dcp5YmjEnuSwRD2szK15fgcZAVIxAN9aEh2MdnJ3ebOD+nlHDPQ/qmyy+E2?= =?us-ascii?Q?sLitT+MNWsATUndBj6ILID6aasYr5UCvg9rB8djYUAUbKvN0nuolWsAzqjqj?= =?us-ascii?Q?RMMIe4Xgp7MiQF2VTkZpfCwSfzO2efWm0HvsxkuiGDWE9H6X9WonHL3b7dHT?= =?us-ascii?Q?odxkK2Iakh0tgsKSyD07ta7q3SZyCpeFaQ9J+ACNfR7Ov0nUddzqvNPBzDhB?= =?us-ascii?Q?rOuXd6db9g5jARdn5A3AfmK36k+k7Yx294pG6LxJ6vt1xUc4ZBL8HoBva9ud?= =?us-ascii?Q?phVP+YEBzPBxgquQjW+PCKftzq51phYBe4nQz5OHbTwwafghSrhjvNzo9I9U?= =?us-ascii?Q?oQQONr4773DpPhz9qYS/jzrfwPlPbm35qxpPgyoP0rcJOmHu12rYQ8gL18gP?= =?us-ascii?Q?LWxHQ6T6AJUscHAUGuqHi1u9W4Ysn+5RFE7zedKjgalb7jjEd+ns/3gTl2cc?= =?us-ascii?Q?LjqHtGEXqjhqUE6PVp+BKlofYtoR9WtjT1QGAa0cuVcbTZ+0TU4CT10bOp+0?= =?us-ascii?Q?G2XRtMspYtT3ThztYQNZl7ssldAN/Nq+aLe1QIGcboY8P5WNaJil?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cc385a1-c973-4db5-3c30-08dec2d350fc X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:18.7060 (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: 4HraMmz8df6GKDVBituRw3nLiewQw0WFhLN3nq7QsFwxeTQVPcRLVRdZ5JtpzvPOuuMJ9KHK4lmrLue888ISiTtN0JDAJEbWhGzuT1rhVVYUMTX1TdQRYZb5QK7o9phB X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang When a VF is driven by DPDK, the VF relies on the PF to provide accurate link speed information so that the VF-side user space application can make correct forwarding and configuration decisions. Therefore, add link speed message support for DPDK-owned VF. The PF will reply the current link speed when it receives the get link speed message from VF. With this enhancement, VFs controlled by DPDK can obtain real-time link speed information from the PF, improving overall link state visibility, synchronization between PF/VF, and enabling more accurate performance adjustments in VF-side applications. Note that currently the link speed change notification is not supported. Signed-off-by: Wei Fang --- .../ethernet/freescale/enetc/enetc_mailbox.h | 29 +++++++ .../net/ethernet/freescale/enetc/enetc_msg.c | 77 +++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h b/drivers= /net/ethernet/freescale/enetc/enetc_mailbox.h index 43b9ee2ab3e4..44c8196accaa 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h @@ -108,6 +108,7 @@ enum enetc_msg_class_id { /* Common Class ID for PSI-to-VSI and VSI-to-PSI messages */ ENETC_MSG_CLASS_ID_MAC_FILTER =3D 0x20, ENETC_MSG_CLASS_ID_LINK_STATUS =3D 0x80, + ENETC_MSG_CLASS_ID_LINK_SPEED, ENETC_MSG_CLASS_ID_IP_REVISION =3D 0xf0, }; =20 @@ -125,6 +126,13 @@ enum enetc_msg_link_status_cmd_id { ENETC_MSG_UNREGISTER_LINK_CHANGE_NOTIFIER, }; =20 +enum enetc_msg_link_speed_cmd_id { + ENETC_MSG_GET_CURRENT_LINK_SPEED, + /* The following command IDs are not currently supported */ + ENETC_MSG_REGISTER_SPEED_CHANGE_NOTIFIER, + ENETC_MSG_UNREGISTER_SPEED_CHANGE_NOTIFIER, +}; + /* Class-specific error return codes of MAC filter */ enum enetc_mac_filter_class_code { ENETC_MF_CLASS_CODE_INVALID_MAC, @@ -136,6 +144,22 @@ enum enetc_link_status_class_code { ENETC_LINK_STATUS_CLASS_CODE_DOWN, }; =20 +/* Class-specific notifcaitons/codes of link speed */ +enum enetc_link_speed_class_code { + ENETC_MSG_SPEED_UNKNOWN, + ENETC_MSG_SPEED_10M_HD, + ENETC_MSG_SPEED_10M_FD, + ENETC_MSG_SPEED_100M_HD, + ENETC_MSG_SPEED_100M_FD, + ENETC_MSG_SPEED_1000M, + ENETC_MSG_SPEED_2500M, + ENETC_MSG_SPEED_5G, + ENETC_MSG_SPEED_10G, + ENETC_MSG_SPEED_25G, + ENETC_MSG_SPEED_50G, + ENETC_MSG_SPEED_100G, +}; + struct enetc_msg_swbd { void *vaddr; dma_addr_t dma; @@ -179,6 +203,11 @@ struct enetc_msg_mac_exact_filter { * cmd_id 0x0: get the current link status * cmd_id 0x1: register link status change notification * cmd_id 0x2: unregister link status change notification + * + * Link speed message, class_id 0x81. + * cmd_id 0x0: get the current link speed. + * cmd_id 0x1: register link speed change notification + * cmd_id 0x2: unregister link speed change notification */ struct enetc_msg_generic { struct enetc_msg_header hdr; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index c93b4e6913d8..49c1ca14735c 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -9,6 +9,7 @@ ENETC_MSG_CLASS_ID_CMD_NOT_SUPPORT) #define ENETC_PF_MSG_PERM_DENY FIELD_PREP(ENETC_PF_MSG_CLASS_ID, \ ENETC_MSG_CLASS_ID_PERMISSION_DENY) +#define ENETC_PF_MSG_SPEED(s) FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, (s)) =20 static void enetc_msg_disable_mr_int(struct enetc_pf *pf) { @@ -235,6 +236,79 @@ static u16 enetc_msg_handle_link_status(struct enetc_p= f *pf, int vf_id, } } =20 +static u16 enetc_msg_get_link_speed(struct enetc_pf *pf) +{ + struct enetc_ndev_priv *priv =3D netdev_priv(pf->si->ndev); + struct ethtool_link_ksettings link_info =3D {}; + u16 pf_msg; + + pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_LINK_SPEED); + + rtnl_lock(); + if (phylink_ethtool_ksettings_get(priv->phylink, &link_info)) { + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_UNKNOWN); + rtnl_unlock(); + + return pf_msg; + } + rtnl_unlock(); + + switch (link_info.base.speed) { + case SPEED_10: + if (link_info.base.duplex =3D=3D DUPLEX_HALF) + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_10M_HD); + else + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_10M_FD); + break; + case SPEED_100: + if (link_info.base.duplex =3D=3D DUPLEX_HALF) + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_100M_HD); + else + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_100M_FD); + break; + case SPEED_1000: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_1000M); + break; + case SPEED_2500: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_2500M); + break; + case SPEED_5000: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_5G); + break; + case SPEED_10000: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_10G); + break; + case SPEED_25000: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_25G); + break; + case SPEED_50000: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_50G); + break; + case SPEED_100000: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_100G); + break; + default: + pf_msg |=3D ENETC_PF_MSG_SPEED(ENETC_MSG_SPEED_UNKNOWN); + } + + return pf_msg; +} + +static u16 enetc_msg_handle_link_speed(struct enetc_pf *pf, void *vf_msg) +{ + struct enetc_msg_header *msg_hdr =3D vf_msg; + + switch (msg_hdr->cmd_id) { + case ENETC_MSG_GET_CURRENT_LINK_SPEED: + return enetc_msg_get_link_speed(pf); + case ENETC_MSG_REGISTER_SPEED_CHANGE_NOTIFIER: + case ENETC_MSG_UNREGISTER_SPEED_CHANGE_NOTIFIER: + default: + return ENETC_PF_MSG_NOTSUPP; + } +} + static void enetc_msg_handle_rxmsg(struct enetc_pf *pf, int vf_id, u16 *pf_msg) { @@ -313,6 +387,9 @@ static void enetc_msg_handle_rxmsg(struct enetc_pf *pf,= int vf_id, case ENETC_MSG_CLASS_ID_LINK_STATUS: *pf_msg =3D enetc_msg_handle_link_status(pf, vf_id, msg); break; + case ENETC_MSG_CLASS_ID_LINK_SPEED: + *pf_msg =3D enetc_msg_handle_link_speed(pf, msg); + break; default: dev_err_ratelimited(dev, "Unsupported message class ID: 0x%x\n", --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011042.outbound.protection.outlook.com [40.107.130.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 950C447A0C7; Fri, 5 Jun 2026 07:23:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644208; cv=fail; b=muKJ0r2rKhk8tb/TGzwnl6yHoTea/c4+1c9/8V0oSXFIDbta+6R/jbIisrwYMNtc4fRboGNG0i4C3HSusV+gTddxGjYpfmunlAeVpGrJeOSqSurJ0gRwrb0RKDDCGR+tTr5GR7WiB5HylOhVTpjZf4OK62xJcZvBA5ri9uF0JBk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644208; c=relaxed/simple; bh=dIIxd9Jy2Rm8U/n7EnZT5c2SpYqBBow0Y14aSQ+7FpY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=tfvwm5NPlasHxvuyeRBWgXJnGnJPs4lIeEAZFKooa/CmZKZkNqIQOqfEtI20/r9OfgtHMjNTTfatk2I7ZT4GwsSUaPlBBvdvFU8r4nrN3Qux3COJQq8nGmo1r1ARdRn54WlIquSxBKmeDbOFbaGRU6tQLL0/gbUrviaFELwb/lo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=dMGwoHLU; arc=fail smtp.client-ip=40.107.130.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="dMGwoHLU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lIehVYWJuBwLGNnHta4RJHmUFKniFv5vNRIhYlcTb/XCagWNoSBnrtsYLLpri1oYDUTT5I2JVVrDM1Qdye4E3S5285mb5hCj+v6f2CccRhO1HZ+zMCNdsQiWoPdNu1ZMWaFW2POFljPIC9VSHeuaKRmGUMwi52IPUpYstSQe+qnihwN8ogXpAXRNz1q3B25oCHZgfV9+1uMRX+ycAoFx4cOPscHTyA0LPzd39t0UI2Oxf2D0s0CTfZng/C1l8Kj6xPpkE8vEKPLBKw93F/wdjGuoXq0iE387/nIzzJVZCXyK8gSY+YIL+lGUU19A8riOHOPH5+rtkOPOPq7tVxdS5g== 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=CRh9Ic1cPesdVKoUks623xlWgPT96E1rH1ZYLsw6/WM=; b=Fbu82pUhlxjr9oUUMOdU6nw7f2Rm9us/Hep7iH872/WyfLZdvqDtJxzKmHYFZgXzgt4Wt/w85+USsNnlFyUNFZGU7t2w5fW40O5vk18QOLyUgUpfN0boD31lwXkbuPuxO31WfFfSqibJKoa7a6/VEpAikNVvz5zX5q9DmhbHEZoHDgS3VsxY7FPD9knRgIk05Y44ItJzZ1pstCoMmYD3RlxLJCC+6p6YIF2nVmLdkwU8aUBKZZzsj/3HUNRiB99a2HiAWdeE1+XbED3O6QJ4/S++EIiJWOXxNMShw2Q5xP2ka9Z/8PxZ0I3kbDyHfmwY3AFFtRH4asSNg1dqMCS+PQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CRh9Ic1cPesdVKoUks623xlWgPT96E1rH1ZYLsw6/WM=; b=dMGwoHLUMOQ8COjlPXXOvWI6mi4XQt4y3xYarZ089J1jsTIheBzugQtBlOnbVLsMS3U4RCmrKtpXGxlJGxV7XqiXCge1Jc0ArA0xvF1bi2XKIummdA9NejgkibH3HmlOymeEEGO7b5t7HK1+7bj9j45DSGJbSPAN1AhF9/SC6sRbVMQhGp6lzmTPT1KnbScKwIb04WRU9R3jes2oxzpKtst+bQVOF2mdljdG70okwE4V2TqkEZ6wz2myGnB/AsfnC2ieQpVQPVcRNBCTfPt2+G8XnrpGuLsMot6rdaAqe5EQ9CN/Z+7MSU3tnhBO/5cA9rDPmotPjMB8PqPx8RyPuQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:24 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:24 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 05/15] net: enetc: use enetc_set_si_hw_addr() to set VF MAC address Date: Fri, 5 Jun 2026 14:55:40 +0800 Message-Id: <20260605065550.3038579-6-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR04CA0015.apcprd04.prod.outlook.com (2603:1096:4:197::21) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 178a96b0-ee47-41eb-b8fa-08dec2d3548c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|6133799003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: So+Zz8ZseQPfxdkJRivCIu63KbAe5YSMn5QbfL5RoTlfPWzkldKpW0Dx2hJc0pcbtNhr6IFxBw14MKKXVuls9wCoAKajC/Bm+zaoCGtIZqVXUP9QjyErgh1yAM24OTOlSlnH7UzhlPZj1Bs3Cg5jgdf46exWIIOgVkgz/B3BTIiPAeL15eXhqN/VUD8jO27KzABErK3fE60r+aTMkymu4PkKrLk7WQy4AiY42sQbwGwAP0P34uOlyUT7AIKTKUF/pqrjR1Zl8haTxSqTTD2248sOnHAHsPK+RTwcJ46Z7T99JFWPeZglOkCzWDKeKF8jp6V9ymswMKefAVr+C4YNQBl/lV3avMg66zdJttCPwWUmuyES2htHzuzN0+PhwvVRYYdrMhVj6OyLRJIk1ERPAiqk1mROiy+aW8UrumGPy0z1lwQfylQgLIhJ3GeMsmpwIX1yNuuKX7r9moeEduIJgU1HxXQrE0tQgAeclnhrdxatwZuHUpsHj2C4YI++k3RzHijlGqpIrLv4LFxSwUnHaJofL0CvMxLSnEVJW6EYIsxeQFY/udPA/mJGdILX7n9ZPQZfh+IMCoVG19WAX7nVT+tITpc1dkshOM333MdOS3BW2YdZjvO4im1QMOcxBwXeZZAprL2HxJX2+P34FmXsjOBZoOCXAM/871xNwxGek6j7VK1+k3hK9Gguv18dH+NeJKaeXm/QEHa8dYsSY8KCKI3QuyV14ZPGsEABTCJHA88= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(6133799003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9tmDz1V6Ceka5JP5v7iFckw803NGOcqP8UjbNR4lpN2T4UVbhkfbAxggvVt1?= =?us-ascii?Q?SQ6suPLSaxh/dU+Nib56CrRh3neQnldk8NxabeJTONJcZQSt+BwtvPTZedtT?= =?us-ascii?Q?/qnsYP8AHwQyumYL5Kk0dju4JzTlu11+zRiy9owC5fkUyPofzA9HToHGN/fP?= =?us-ascii?Q?LsVWZcKlq6P77TV8fOoR8RS0ZLQzjOR2yJ0PMROo8Rd7D2SxW+/F5KKqIukh?= =?us-ascii?Q?F5LEkj/HT6rgy5NLnAjl/yL/FALg8FSlZRr3gJflF9JQTySYZkaKsof/qMm5?= =?us-ascii?Q?WyvC421pq84x/FGxC9J4kU8FBNyQeZ/PMp4JaBGLWzdvyiKh4l3MlQPzBYVV?= =?us-ascii?Q?8GhbXwBzAl0sUYhw+k6c+cbiCL0avZojBJQFYdGjrLvU1i/PWoTK3dDMNQ/s?= =?us-ascii?Q?uv6IevthA7j3T3m7qjnDdnFwkdmoAv3b1h748/yWFc7N407xU/WsnbTn6waZ?= =?us-ascii?Q?Oj6GItvafhK2bLIHIm4kN3uCtve93TvfNh2PuK0lDV2whvTWaio56ABozX7z?= =?us-ascii?Q?itBasjJOtS/ZzjYMDAlp7c97cVDEtcr1mYKj9C3/O7Jq/dRT3B40CHeiojHA?= =?us-ascii?Q?SC63loSUbpNK5FU3Ab3tm3Gn66f/styHDy7iclUoPJQKCqrlf84FRb/3e5nO?= =?us-ascii?Q?iTkDWrx/qmKuTfDj8nWJO/GEqkxDAdhY9wVVhk+iWhqVJzGHKCoHAy9gv0dL?= =?us-ascii?Q?HDpUNSBDLWxZHXxt4lwl8DqU5arFI5Tpa18M2flhi1kXPXKOupRjczwI+V11?= =?us-ascii?Q?PlLK1Wfqh0HVsZ2B95F3V//VDW8yqcOk7aax9D2AcjREJ9IyaMsKGuVm9Ihr?= =?us-ascii?Q?SY4Vz1VqcCfW9hN94QFE/OuhGVHeKp+orzaM4CoXYGyD8ZEAqQ4qnfWPXW5L?= =?us-ascii?Q?pxo4ZMlz2BSFc58qVjzpSfzVhGBiXz8boS1awLZ7hcCZHpPnda4hNLh3RUax?= =?us-ascii?Q?5/NhTKOykA28bMhOISyO8ilmoyQIhOIA2Voqh6BEZouL6fxZn9WWYpY+IheN?= =?us-ascii?Q?s/dnbRiCEd9N1gRpZIoCZO1RIfeLLNriawoxOhjLTaVRmZaPlqWtce2tawQK?= =?us-ascii?Q?+tcK0eHKRSCzGN3J5XxUtqdx9K9NpKbYjIh1B0tbj7xAz3eAaBx5HUfsmFHY?= =?us-ascii?Q?1yPpR8x4CeIW2EpEFX+i4RMiiPE6CXMHyBfPnjfhlpl0nJh5V5J12YCKhMe/?= =?us-ascii?Q?lOrwh06SflzxgNvSp3wd6j4Y1fHqozr8XU8jHCP3NrF+Mtvjaqmgvxpk7BfT?= =?us-ascii?Q?bzDAVWIMGLuE3hBhilScgPWn+H+eddgszeotyymMRdtxyB2lYcJdwWqJSPbH?= =?us-ascii?Q?VSxhm9tOls+/lzApsmFK8TQFzUwmwigHkLCjtEKM2M6qSOQwGV3vwjdlJUMr?= =?us-ascii?Q?B9qyw/YB0Gwhn7tjK52WMmw6VPxipbAROdnpP7G4QImZtSXTcm/i6ahqRBP8?= =?us-ascii?Q?lozdxBrcmRMX9zF4C1diKqqBHLXL/bRbeOYqu2yiiOTK0zHlFQgi2DqYYfzC?= =?us-ascii?Q?WvZGuEHvJ0+0qznhnOpby3u4H9Y8idUuPM5ASmuxUudPlQlRvpObZP8hDHFo?= =?us-ascii?Q?NLpiyzzO3jE3ZbW9qGXDuWlWtkujibImFjn7BFWJ2Spe782ddMkx9vJ9T4Ld?= =?us-ascii?Q?njEmI+4dWp2iOETKBjEGw+tViTWKPkQHUiLX9cNIYvpGS/O41+PkMKrKIAgy?= =?us-ascii?Q?HEbF2WVxxXnV3Gj/LcsoHe51bFqBfjN8qVxhq5rMx519Q7V0E8Z+Y8Vb+5nN?= =?us-ascii?Q?708i+1MHzLlvpqgaSkEsAXTQyPGoKEE1bYY6vVS6/LbYUHXM8O3A?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 178a96b0-ee47-41eb-b8fa-08dec2d3548c X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:24.6931 (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: ni2WCa3pf4r6OuQNxkUPMzhRHR2F6rEaionRAn5zl/KbgVkpgQM51x6bvfla5smhbH2kiD7quR97kDz6XQCoIvqAjC700n+X88mTs8ArrD8LQ5y0tn4qbQVGynS+pkrf X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang Prepare for moving enetc_pf_set_vf_mac() into the enetc-pf-common driver by replacing enetc_pf_set_primary_mac_addr() with enetc_set_si_hw_addr(). This makes the VF primary MAC configuration path generic and allows future enetc v4 PF driver to reuse the same interface. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc_pf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/= ethernet/freescale/enetc/enetc_pf.c index 8957e74314d1..4a16bc49312b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -255,7 +255,7 @@ static int enetc_pf_set_vf_mac(struct net_device *ndev,= int vf, u8 *mac) =20 mutex_lock(&vf_state->lock); vf_state->flags |=3D ENETC_VF_FLAG_PF_SET_MAC; - enetc_pf_set_primary_mac_addr(&priv->si->hw, vf + 1, mac); + enetc_set_si_hw_addr(pf, vf + 1, mac); mutex_unlock(&vf_state->lock); =20 return 0; --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013014.outbound.protection.outlook.com [40.107.159.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 463D747A0D8; Fri, 5 Jun 2026 07:23:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.14 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644215; cv=fail; b=i9ijEIRakQ38Vke6QYv2NUOcA1mulHZqOyRTtAMEyiXxFs1vZjhDw4QgJjvMZT6kWuOrTDb0NGgWSvcjb8qrisMqRYIrgqqaz0qhaB93oEqCx4POlo5d3g8dG0Z27YNbalkxFP/Itsd5YMxykk2/NptyavwZHlEQaekp/1FrlRk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644215; c=relaxed/simple; bh=XxeZ/6ouPCrMIRkwxX+wcjp3LtI1/BIFTmRcB7sItyI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=iiPKjyvklfsbSrjlsoe4ubqnWZydny+0pOU7o0n9MzUNqMnItpXNCf05kYcvrkBKbGPa2o9VWzpsHszPsunuPhiMrPDrd654gmPOb52NFZ7d1aku+h1ffGiVTiDPFsHLy3Z26DBpxWsWmtzjwRCe3m9UFgXgZKZzXyfSsbUnPwQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=lk92DcBR; arc=fail smtp.client-ip=40.107.159.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="lk92DcBR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IxBrionR+nYmWcgFF9HebK0pN7v0c3GWoyDnm959sdIIPaJvUNVzO1LMMYD33zjvU8W8u+H2eoqDOUKKKypuMs0rLSDBgL5cjeymCwbjgN73cG4VHhIwEVcUHNM9OyNZ4zQ25pxyFavHTNw0TAPuo7Iq8+FOz2BrRfvAuMzpjab3VGkhopi1P3i3Hbkld2NZujJE2rDlVJ9RDlbB/ZIN3cMLVjTvqt+xp/rmoSdAGj9FR/4O8m4j49ECgYUPwmzZFmVySpuV9H0/ca6dXbN0IFpsF2wlK9r0vJbgyQLNf+WgJRqoXCBw/yTDWOqG4wtgoe3D6kHftsuqgNnziumJNA== 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=KNe7Bgv2V+0izV61aNppqC+zu1Zp7JtRwezOnrijuDs=; b=x/hBUInHyI4S9W/ZMssihkpKl/+7qJEho7dibG5Gka2nWUhzOcwbL9ejYaGD6omy0nQ56AY/H1k3vHxz0J2KcbHQANq81nOM0RjeBtpFcHRqA/PEO9aRz3GGGbEpZ2M9Y67pv3Xf100m53PuR75kEx1YCQ85dwDUfnFBljVrOxUO0upHAwmUz0hSyccpppZvVzgfxM7ejVNM+DVxyvwKCuX3bCEDHubYmDV9bDjZTwPEcowQUeZS1ggyJ8coDx6sulHTZ3MOqiCwv1D7rakq0wZoW4SVul5Lo7VSNCL2vY+QwpTCqJjrAxDORdYRd7X+oWSck+IGcqJlOMnBmnqkAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KNe7Bgv2V+0izV61aNppqC+zu1Zp7JtRwezOnrijuDs=; b=lk92DcBRDiR4EFDmrwAney66rZrPFSDiBo/9d+cStdjgld99S2z6LgGQcPj1ojKwdpgha3T7xmsvrnJk9ByBCTsDiUrpAgC5iFLuxS1yMpSAtGIBghoW/TCVE8LT1qR4KaRIwiNBx8SzDgwX5yGUf92EEZvtqo/XrBiYoiQleqpj81Z9QoZL4hP6V3BPsRYH2yafaKmpj+I9H5mmez8JKixi/iWtFdzD6+tgQqOhdwr8NWRcuwb7J0LNXThwuk/gPF6a9r69xLwC7OGQ0kXu7Ke5dFUTqobvb1NcA/UNEQVw3uC6HM6HKDU/hNYj0GM1cqo6HfPZZ00zz//P+5C2mQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:31 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:31 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 06/15] net: enetc: relocate enetc_pf_set_vf_mac() for common PF support Date: Fri, 5 Jun 2026 14:55:41 +0800 Message-Id: <20260605065550.3038579-7-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0308.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:21e::17) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: a6ed30ba-2fbd-4f15-dcb1-08dec2d358ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: EgCLKF2TyT4KuyMX8PNaDFM5kuKfmThhs78g44LWYwLpnO6+XiRmr1gL0GShCdJcqX/EGk8pJq8rOT3mOSxY01V/3/B7KTLAKDlNmMgv4SoWi+kIeSyxgfbt5BTgQg45VpmlyqV5q/Uy1SWtaFL9b+q0OhOMlDnPvlgsl+5x1B6eflAbDqTJ0nA8P8yjZjDzhHV9lmLsMlC3GcZTmwIyX1205waAAwVrA0aSKJtm67EHoHnUFe1AffVyPqxIEgkTqx1XMYfl4ZkyWXvu/sO0o3H8kFL35/bT6MTKBUeawoxq5i05sS9zjJBqL1BsgEnpgVIHysVbQo2Nrix+Yg2Jo6oY35f4P2pPFRMWI7FSqrTvtofBA/msa7/8cWq8b87zQ35Gwdw1tCfBATmhRf9oLsCnGqsabheSHaaHNNmu36m95nLtRuMzARXxMsjvqCb5M2rfreKaWJxT1WLcr+xCm0RGeFasIBrToGs10SFVmQjqPTvGNT/MZj6XLM6H3Kk7dNtQGpLlLbj1MFX66baIv1rAZZFh/4RVZXfJntdTQfk/sM5yD5ueqPv+myknZQ1xUz/o0ZxzIzZ8N8tmF8/ufx6qlVSqcOzfZ5cDbqMYzIPXnqQqwpgT0lIQlWb1gH0jW7xqLw5Pfb0rBSimvwyrwI7EA8k0R4SeQwH1v4snVPwhIZEdcxc3pKXdtQVcKMbecNsZgsKtHHLg58kXz2LxgtvbM2/rqjrppef2mJimN6w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mGw0rCtXrEri+75WRlK6vNDj1mCzR6jip8IKVU4Qa8MTUYeK1XFaKC7S91uJ?= =?us-ascii?Q?cDon9CyZi6aANvb+eQ6reu11wK76IARcetPZ/pA/UkdBatYvDoCH5I52Tkwk?= =?us-ascii?Q?2xXgXKYiZwEq3i0WwmdIH3xVtknaiVW+B2chfLFpoBUMfV+pmGGza3493wgP?= =?us-ascii?Q?xG+sC4cba4Waz4vqEVs2W50rsJTzPlZyFNC9AHEMWEVbUJrn1yzRk1aFb3PP?= =?us-ascii?Q?MyMZx/efkqUSwgO82hR/KZdktLv4sEcuB1Va3OrgZtZhdeWSZq8gZDRx8Fu5?= =?us-ascii?Q?jXDS+pg1xUpDIxNiam8wiTnbhnlua8dOvw5aNmS6SLyJ5lIxtpmVdI1P+6CG?= =?us-ascii?Q?JjPk4VbG4gU/m5IVke0JbfSR3R2ncz8RsC6gAN9NjeeU+Ea5ueRwq3b7msj/?= =?us-ascii?Q?9ftHa+GpEBJbzjWhNfFdjbMDEAfPhYC9qslXNe1NGdz82fFQVgInXxUs62E2?= =?us-ascii?Q?hjnf+3bvk32B5gcVeJvwKY+6xhP1kwws8jWGCgIgUh7DRAu8BkK505ZML4HX?= =?us-ascii?Q?/liQnwDyuf+jzfrDkQ/uc0apP7eIuJqgaJxYxCF8pgF7iEV2+dlgRvaf2+5Q?= =?us-ascii?Q?d2XdSNfF/PvNukVCfQYxTcHGpaTsygwH9rzBLsL7fvnweRWiC4KU5sBrWVgf?= =?us-ascii?Q?xM8i0awip/xQGhsqpl3LICwz2LN+SvMGtNOBlyG2M+0c/Vh+2INyjX1S+XMk?= =?us-ascii?Q?bBsF8bxLhWPOCG2XKMGMVaVLXDaJhZZY5SJfvKV5VQKHG3o0WKO5NgKsk7KF?= =?us-ascii?Q?QNGykDvBSEPL7L9NJ9r5ba2QvyPdOBV0O9gPMy8VcoAzo3joT4QMuBsYhTjR?= =?us-ascii?Q?JydeYb1yAFDP2xSGdTp4xlCs1AZyYrOjfRfbZR1CV6OxSz4JxiOwokBTxvuF?= =?us-ascii?Q?LDQHxO+Zg3+djUHpQRAa3+AtXKhyC4o4JaHIaidkVLjEDEF3F3wOKPHbAHww?= =?us-ascii?Q?6Q46UYh9EMY3ieuZO0b2Bs4WEQvZEiA01TrKX+JQedMQQzcoQaVjqCgaKWE6?= =?us-ascii?Q?KPLGEw7rUnR0DbDIXXcnqwRgJ4uv9yX8+FyV7L69wQ6MeF9bAzHYgWTIxc1W?= =?us-ascii?Q?UIQz8+QyFcSNIs2P/utUsuZPdCB215a50sH9V4Cf+EH4/aSLa5uLG+auXURa?= =?us-ascii?Q?ZTdjVZrADivPSXtnAnhbPDn20BqIZ2csQZ5HGmOgqTEoVa70o7UaLPjIm0zW?= =?us-ascii?Q?pR9KbCROgowGjxj1Q9NBLNLbhJI0BSMAQFVEJpGxtqPCdp66LYblL4OHOfRe?= =?us-ascii?Q?FM8TRGP8EKwTggajWr3ZF05slh3DUW0Ixomhu248POznzOb8Qux2l/HSZEne?= =?us-ascii?Q?uEVX/KNJqDVOA5k0JXX5r6GxJgJLUhwbGY0AE2gNhNt3MjwD8syV6ahqYulf?= =?us-ascii?Q?x2lFC50RKWPImjtwLKdhRG0+f5Xme4grc8dhkATndW18el9isn6t2PZo5JZ3?= =?us-ascii?Q?qbEw/xpAq7pi/5fqz26hxGtYWYGxa4yyOfS0nhDbCGlT84yz8Ty3Z2TKgSmM?= =?us-ascii?Q?MjS/6u7iPRFfGwku8bxdmwMiVE5GAAFtHRoKGIJJRH8U6Vjo1lNlf2vKwfAe?= =?us-ascii?Q?3WoTbd4Hw/bH67PtsHAMbfSiALOXqdy9Qle1Tfss+ch/f5UmVgAEnKYbhPls?= =?us-ascii?Q?tsZbIBojY4EDmixISQDXrElHUneSbnSkQ5YRPm8QKg2r/x+63qIyn8VDdv2R?= =?us-ascii?Q?N7UxxSR+bNtv4Pv7R2Qwvp+6k1P7Qm+3iEW3BUKIbRJ2Y3X0D4/XpPJMb3q+?= =?us-ascii?Q?j7hYABWlLX3Cb3wnTCzm5IRiWMw1K9HGQoLlrUN5vFLvgrQqOE9N?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6ed30ba-2fbd-4f15-dcb1-08dec2d358ad X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:31.6459 (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: UVIzxDEIDDID8j/7sU2ZQKivpbt2X58F9U7kKQ7pxAsnZG8Yx+xbKM9hrN3/HpSVsoxyjwizmLHljwkJjtA42bo9IC63p7bRnDVWLPS8iJG2SZ05evZja01sXHC1YeY6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang Move enetc_pf_set_vf_mac() into enetc-pf-common driver as a generic interface for both ENETC v1 and v4 PF driver to use. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc_pf.c | 22 ------------------ .../freescale/enetc/enetc_pf_common.c | 23 +++++++++++++++++++ .../freescale/enetc/enetc_pf_common.h | 1 + 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/= ethernet/freescale/enetc/enetc_pf.c index 4a16bc49312b..38fcc7b5fc6d 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -239,28 +239,6 @@ static void enetc_set_loopback(struct net_device *ndev= , bool en) } } =20 -static int enetc_pf_set_vf_mac(struct net_device *ndev, int vf, u8 *mac) -{ - struct enetc_ndev_priv *priv =3D netdev_priv(ndev); - struct enetc_pf *pf =3D enetc_si_priv(priv->si); - struct enetc_vf_state *vf_state; - - if (vf >=3D pf->total_vfs) - return -EINVAL; - - if (!is_valid_ether_addr(mac)) - return -EADDRNOTAVAIL; - - vf_state =3D &pf->vf_state[vf]; - - mutex_lock(&vf_state->lock); - vf_state->flags |=3D ENETC_VF_FLAG_PF_SET_MAC; - enetc_set_si_hw_addr(pf, vf + 1, mac); - mutex_unlock(&vf_state->lock); - - return 0; -} - static int enetc_pf_set_vf_vlan(struct net_device *ndev, int vf, u16 vlan, u8 qos, __be16 proto) { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index e3bed5580d17..85e1efa6a8ce 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -487,5 +487,28 @@ int enetc_pf_set_vf_trust(struct net_device *ndev, int= vf, bool setting) } EXPORT_SYMBOL_GPL(enetc_pf_set_vf_trust); =20 +int enetc_pf_set_vf_mac(struct net_device *ndev, int vf, u8 *mac) +{ + struct enetc_ndev_priv *priv =3D netdev_priv(ndev); + struct enetc_pf *pf =3D enetc_si_priv(priv->si); + struct enetc_vf_state *vf_state; + + if (vf >=3D pf->total_vfs) + return -EINVAL; + + if (!is_valid_ether_addr(mac)) + return -EADDRNOTAVAIL; + + vf_state =3D &pf->vf_state[vf]; + + mutex_lock(&vf_state->lock); + vf_state->flags |=3D ENETC_VF_FLAG_PF_SET_MAC; + enetc_set_si_hw_addr(pf, vf + 1, mac); + mutex_unlock(&vf_state->lock); + + return 0; +} +EXPORT_SYMBOL_GPL(enetc_pf_set_vf_mac); + 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/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.h index bbe21c739cf7..b2a2b06c794a 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h @@ -18,6 +18,7 @@ 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); int enetc_init_sriov_resources(struct enetc_pf *pf); int enetc_pf_set_vf_trust(struct net_device *ndev, int vf, bool setting); +int enetc_pf_set_vf_mac(struct net_device *ndev, int vf, u8 *mac); =20 static inline u16 enetc_get_ip_revision(struct enetc_hw *hw) { --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013029.outbound.protection.outlook.com [40.107.162.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4421F477E28; Fri, 5 Jun 2026 07:23:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.29 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644222; cv=fail; b=b8XHUlBmW3TqNuwl9S2LvKrnt3bBxkStCKu+F0pjSIj6WRyAenP8rXQUYFSYWP1zovvLKnCeZCmcjfL8aXpUPEKt4Vvgt3UAAmMauz2rqfBgLwcAKBxUamCI7p7XrdUdeM45J77VMNXelRb58eQD0ucxDnl0iDQ/vjhHfEGn4FI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644222; c=relaxed/simple; bh=zNoYouql9AB/9hQJaqDWLQoMUM9RReOf9KQ5JzrVJ3U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=O8I1kzGr7Ul4nWmdeZ269lQKwZSbfaqX2cea547hLQLWNw4/5EOjvnUbOqjNaMDWNsV9pSwTrVquqVUxaCeL8PU3iCZkLVn2//k4UOAe21F1TBIJ7xtjsTgOrNWhEXOUs2R4XPjgU51yb0U7QxfpYj42ImGo3Z9L8Tu+K0E89sk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=TMqWMqIC; arc=fail smtp.client-ip=40.107.162.29 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="TMqWMqIC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w3Og8aKMHkUZd9nbFDwy8pijPW9sQjqwOw+Uk6KlNFw0PIaDoGOmtyXFLuWMWr/oS9tW7aAsRKZ5fxCl09J84dI9o1SA9ezsodGoMn/6VvmvwhQOvw5JsLwEJPXe3luyjAYtOh1u9rsQI2aaV6DiNTvv6hJ5/E8cjeqX/aadB6LUCFpztYtVGAaR1+nh8JhRrz8z1v282T62FCl2TZYaEetAPwh0h7DUoEXUmwKpnAS++hE7MLMuZ4SpoEt1MZ2KzZ39nJTmSmo3nqXzHrIadnkOjG2rHHw7+EsSaTmdTsjP0Z2jsZ72Weosgw6IvhukSbeCtoIEvNeaKqnCptVAVg== 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=tXr8uG74g5OOqx0G3jq0H85+1FrSpwkC1VxymMI70gE=; b=VZSnjIib2y+YoYuzrkBbOcPybQrKeFoAqwX6lXON+ge5PNLKBa0tX+Tq6axRDAjTRq8fdRxVvSwXI0MMdgo6hCwrJLs2hJwO8Jg0ZnBDsAmKw4wtnKxqmrODjtu+vc7dcr8eEyxRUPdcx68XHLjzPN1nzXjJBby13bqDBINtCKnLqmGchLD/gftcGN3BvkWa//9+elcwXVIU/niJplsMXnY+7evaYNLRgKIVTz/6/oqVXgSX+WPch2sfYxqoAC8ZEegnGBpEtBZsHavxu6vBhEWhC1S17uFH9eLc/lzXjvcGotSjwSHWyuCPTAm+WyltbDno2Kn2CyYTu0bk+KQwjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tXr8uG74g5OOqx0G3jq0H85+1FrSpwkC1VxymMI70gE=; b=TMqWMqICR52c5XJud1xTR/3Ln7N0A8j9AiPigfT2gX9K8IqwQgyvc5rN+li7cyLh9OZCf84VlcOKnH6edpQO+7bgET/+XuMaTCt4kXCZRi2l7Ow4CTQ347oxs1COf6mXnf8UV9b2FXusscpC7cfnbPUwmibfiyuNOqPFyvpT4Dp2rS7Qe2QsckriAaxR5h17FKpO5sYcUZT0GmI9Lc6bZcwtDdxp7g2wBgnh/ZwJ6Eu1uN/Pbr3EHFOvmJvIZewFzkjLlUKrX3aek+f5008kFzW3CXOxSK4m/ynGdwEfbCU/OXkOYznSXUYFNvpuSIsPvTRA8B2EUS8bmdOzWfML4w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:38 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:38 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 07/15] net: enetc: add .ndo_set_vf_mac() to the enetc v4 driver Date: Fri, 5 Jun 2026 14:55:42 +0800 Message-Id: <20260605065550.3038579-8-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5PR01CA0237.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:1f4::13) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: a5dfb033-3f0e-410e-b389-08dec2d35cd9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: fdjXFHkLpubYMi9LWWFcYHp94ipV5+vHHNmf/wl8yzQZZygI2c6/wr88XdNDP/4c4jF53oQuSiM9/ATSu8kR4ywoBYJDDSlVZ5N12tf4AYEW5WvxNYPKB0K0BInNHmMiK/l01Hyfdb+m+QyUxvziXcFoviu6ifuqLOwW8Gq4JyJmS+ceFieIzNmSoqIs234JTs6UjkQE+yF9fI1Ar1nDqJCha1u/667fGu90UmoJvuB6Ak5JPcZgtIGfbmJTHEYC+BDueXGrMSrfqME76FXwr+WIILckFnFUEt/CqniVXAwmQJI9m8c8/nvt9pQzmlyC7bYMhdKjSyhGWDBQUj2mAKPdPQsv20nBn2K9dN9kvhuuDlMuKJ9SfW1DqUAHvHGae3Etf+iuKS1gz1efAtB8o5KI8/jarpfkf5X3NJf/8ITHvqxu+2WONRL/O/PgdqK7r6mM9kyjXZI2P5tcXfpSqO5/tP2tSlJ0cWhOyOdUZnGJ84/Rk62tZuqxIPA4Gwp0F1n0HQYZwWHwbn3H50pGq0gzOV0cVx2rjJnjyyMO8DfMxo7LkejfOQ4BO2KZE/YjCJpLXlYRKmnIccffXNY5H8bUidJ+JB8lR5+faTNAJIfSn9QyXVHjYTpDrpt6Dj/40GYueOfqDXooCzm6Inp2Scl/DC2+qQksTOQWcMr3eyL0lAh6Srrc10H9S0dznfZwDpQxyL0zAIjFSOs8ENsNPiwYrw6saP02CH7l8PJdu0A= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0DpCA5lcwD60Mb3s1CYzVp4hwCRoIUCCsaCcssq47HB0LYFVoaGREk2b9AtN?= =?us-ascii?Q?ecnyYbC8i+AJ4uyRjmC/FGfp4kD7JBbEOL7gKh/QpkkyCnMaq7eUPmmcO+0u?= =?us-ascii?Q?krTxiruG1nZx7bDPHMXBM5ZIm87dbqdg7cozPZTW8/dvzGIzqKYn9r7bzodb?= =?us-ascii?Q?In33lG5eAiFqKtxdPwMnUCz5fBDnDYQ1VDi2eaLRam5lmIRKBsGJZTeyRQ+R?= =?us-ascii?Q?Bk59LSmoIy5H2KDrapN4XHTgW54rNlrsFirAJONUrbDrqO21376Ph0r1VwG2?= =?us-ascii?Q?crOdozL/7tVI89kS3CEzYvsnfAjDqXXHHVQr7Z/5baTAA/owQZk9J1VrHwR+?= =?us-ascii?Q?mSnto5Ix3E8y85kXu2AArzLEGldvop6hpauBwViRAStpS79DfGpAl57v3ajF?= =?us-ascii?Q?OmNG5rKpZPBEwr+0KqmzwAcljg8uBvsvGLbbPaIjAdvq7Agq8ozuR3Sl8mqz?= =?us-ascii?Q?4dc6AlmFKsQhfVEKWOaQM/TYk9ZawT2xENFBI/SWZiLUuMuxqq16q+tAO0a2?= =?us-ascii?Q?JpqTkVKE7Xs64mh0sbzxgE8x9vnMkNLr95yVaxqq2ueKladb9NghLHNHskVO?= =?us-ascii?Q?Cz9VrZ0OKaWkne+i6ik62iMxb82uPuAkbZwdphdk8fA+cEP7lK7tAVgKKyqv?= =?us-ascii?Q?s9D9PXTk/85j2Mgdj0cHkrwjvwKKpOqyxVrxsx9HaqCrhyTkISq7K4HaH37l?= =?us-ascii?Q?/Ra1isSo3bd6gq6h5JBy5th0sEDNwlQEBAtZPCqzDCu2Y1ZbSI+hiPGwmG9o?= =?us-ascii?Q?uXgUS8HBurQym3EeZ2cwGeV5Nl4ILU7C0rRZzHf75qw/Z0fcr4YbTw0w8IPG?= =?us-ascii?Q?tgofSXXs3k1umvEu1vX4tfw6tzUzdoHfeZJH5IVTC2A3KcHdr6s9rnrxqss3?= =?us-ascii?Q?pfZHJfbD6+nSl24W6C8yd8Kx/+HQTvTc9/pq2wRvdsG/eI29UrXH5Ig9FQCZ?= =?us-ascii?Q?agyyxhyxbJgJLE2zeMfQzPjrPSPY1+BQXg9SbR/7d0C5IBgLmmL/kbM9vwDw?= =?us-ascii?Q?ghNXjy9/EAwi76b9+ehiqvMdIOUmjEDLD/ja0Rfyac1JSBU/JVl7wFEajZOw?= =?us-ascii?Q?oERJMuRa/CMRxIixGLZ+harD45S0lfgwo+VZD6h7QtM14Luxm68nH1VS3jgA?= =?us-ascii?Q?wy/rgzMS3NVgEnO6OJTj+nMulmnU1stTCCpiigkrl7GSDWLol0yuhLg5/uJ0?= =?us-ascii?Q?/9vjCeHiQYc0/iBr7atj4TS22bXZ0X1BxnFamfBtrnYBxcBIJUVEb59EvF3S?= =?us-ascii?Q?tfEZdfz0J/sFfddqsb0fA/nzxu3UyKHw1alZcFk2Mv2I9gTqt2XbMlBNdPNH?= =?us-ascii?Q?znjWD28wChu8Cb/mf+7Sc76Q9l/xDVVOjM+MLSx8HDczwLYVmLsbrk86daZC?= =?us-ascii?Q?3I7AZat91PG6Qm+sQ/S8WehaXLCG33DEg/wBhtnYLwimnYtMna3AVPFOtsdu?= =?us-ascii?Q?cOWa+30BdhRFRuL6xpPeFFoXbjWwb0smNaSXCzYT2ayRFMW1L+0t3FQEIQLa?= =?us-ascii?Q?khzOkIQpq9vGtk13lfm8ckOfrant3gKmdgg7cw9a9M3nixgQbxsPXwLRiWg9?= =?us-ascii?Q?TM4ddwHkVcYL8HBgJM2bbD7JNjYFc/hbMrlUm5Xxx5bZZTpf6qNnZQjQuH9v?= =?us-ascii?Q?eT3k3DI8xTrW+NMmIJPboVpdSJ0ctNsdi4PAs37YnPcFDDa5PrxS0OyeXvt9?= =?us-ascii?Q?CdWwdaEd3kCF56630Tgy/sPWscpnAgzQz2ePgUvPVVrwCIbbe7MFZysWWkee?= =?us-ascii?Q?4UTIvndyCAO6+opCyoKtJBTDhijv6ehFEdHbYKHnKCcH3ONhk2nH?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a5dfb033-3f0e-410e-b389-08dec2d35cd9 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:38.6175 (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: b/kHuoLD55qw4TxWltTyIGZ5QNA3zL3T7ebJ7tcgg7FrdjP/O1xfNTuZpsiwXoQuQoElxCXVEtSebhBA9G0CEYzRMbBTqvzWcaI8FbQ3MDQt9BKEmyHBlTVLisgox9tR X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang Add .ndo_set_vf_mac() to the enetc v4 driver to configure the MAC addresses of VFs. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc4_pf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index ad211eefd9d4..4cff2f1237f1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -571,6 +571,7 @@ static const struct net_device_ops enetc4_ndev_ops =3D { .ndo_hwtstamp_get =3D enetc_hwtstamp_get, .ndo_hwtstamp_set =3D enetc_hwtstamp_set, .ndo_set_vf_trust =3D enetc_pf_set_vf_trust, + .ndo_set_vf_mac =3D enetc_pf_set_vf_mac, }; =20 static struct phylink_pcs * --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011049.outbound.protection.outlook.com [40.107.130.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC674478E4A; Fri, 5 Jun 2026 07:23:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644229; cv=fail; b=HQ3nRcM/lPArvv5zPTibBZGWOr2LOSv+EpdkN61RchIyE1lP3ZMzAYdPWs1XCvrOfYHbczRIAnPEHeJxDv1EFk7kq+/aCjyqGuGikg+GX0UbHrNro+CbK1d0POqw6Ny92lnjYNH7jL052bLm5cWDiHay+hSUp0bUwbeknstwrlQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644229; c=relaxed/simple; bh=+YY55GXaL2bkQ9ERXU8knjFVrVEuzOE5/UgN607XNRs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Nuo+5up6UB5gE3Sh4uKQtsnI4J9/XtwBSmpBjrHI6p6sYvx0qxzdZBmJLgVOKj6fEoY8l8J8m6qixy9U9NJOeYcRkNt4x8CfJ6+UKhCC5nrTttoqpi5FTKdXlsAkc0czmqaIUWqkPhl11I1rK1aL00bbHOhmKQgN/b/JV0bu28w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=XpUQ6ti1; arc=fail smtp.client-ip=40.107.130.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="XpUQ6ti1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AsvjcM9owbE4DBAUEH5drfO83pugCP5vzyWdGnPSCvDM4PNSmMyD/IPhTwQTSiSUBOwkETBhCuWUh0drwGaoNrdwpXr12fZ14f2ZcnmFSjDIpswHiyhTveEyRKwfgNBOB3/Ipa/jxAd5FUxd6Lsf9DZaFseUuFcfP+gCRE826UXYNCT361C1escFY7mWYNX5cKwXaNvAdXzC26YsXgCnABDLgKXTEAwBJEGYm1pasKYNcVM06JWpf8/UzmzQwQFNxq23pLMgOfdmbpuZyHZK3S6AtRxxRps4omVNjGbah4lFlML8QaAM81ZscE3pIKPhF1sJMGfwxr5ps27nnB+HRQ== 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=LVrg6RwsdB1+3xKsoIXAMRKlqt7M4OeR2IQ5CUb2+p0=; b=PbWckRmMBzp4D3wnGwb+4EP7INFDXoBkp/azNsAFIkFeTg9uJriQ3QPbgLRg+CJ/YII9obFsVTk9H0Y7Tcajr9giqfXOi7EtbaMWdqsLyDO6UTuoP9ghGo/YMz+c38ppjXMF5fIx5vuMyOFNEczVi5LVa3dzLxEU63/BZfODbvgNiFeizkjaCHaYXkJNBD6lTIUxz0Eqas5lEh7B43OzWOcBiup7w+YyaqUHeuYzhgZG0jSpymu0kuGZD3BtPyJLg7Vd4+9BPC0K1L8eCLAwz6nsZET7Fv9Hg+Bt6EJJzKwVsRvph8ombdtO2w6k+sHClKZTvBqoXFM3StLYa1Yu3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LVrg6RwsdB1+3xKsoIXAMRKlqt7M4OeR2IQ5CUb2+p0=; b=XpUQ6ti1gMtkeQcFwXEtazC9F1ArkEs6NLYmD5JydRKKubjA/SIVyIa7E/NJABCfQddFp9F41JnMeBBWrvZZGjB4FVv/1eyO6xhTK/CIoStLhJZ47Z4aLg7vZ2bs0fR8ak4TOKkLtxrZsP0HgaUou2IkaIJw2Iy0GUJfuWZr0GpJqQsYmOJeyspPYf0AhEEomRn41eX4uWrN+SgJVr8ycuJ/gRDAszs6br8AGHEw8k2DL5l25/H5nJWmqJNZVrnM6qiJiVcimL5YZQuweXd9eLFyvGwi6GW40PCA5FHIk/dfDz0Cwh8vO1b7TfzkHZDF403dqiWw/rjHSBmm9y+5Ew== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:45 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:45 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 08/15] net: enetc: move mac_filter from struct enetc_pf to struct enetc_si Date: Fri, 5 Jun 2026 14:55:43 +0800 Message-Id: <20260605065550.3038579-9-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:1d1::7) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: bb8a1621-b595-4637-3feb-08dec2d3609a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: 8Lv4KxIv4l9ilItpUW2CqWH/j9l65AclsAdbmvITXSsqyWFAd3bt39gwvimt4bpj9iLAi43SVSmrYIE2Bnmx63LmRrIx4KuA49QcQtxUmu30CmpTPSkpp4eLjyYxUxsKWg7WldHlBQiHPxtwziO/UEgKeQzAYHLovaB29N484cC5bzVo7PDQ0kbDHss9AU39XzMqju1yLaqKOdzjDPkT1WqLUmxSpwGiSErmLKi0urtcTUnvLWkJSOH6K4lJ5xUeYJ0nag+KI0BfNqfw3G1W9+PL2fN1bK485qaxjd9WyuKccBol4K6idDdnueDuqUNjXEoA9ATj8IC7/8xIbIBn4FwvRx78JYKhojQOJaRs2UVFgV7v1vMtgpwNwDAWfusVXi+R9pAoxiNFGb7HNjqMt8BZEO6cVwEzu7CutkYVugoxRJZzqljRFYbRNRzufDwvIYia6hRwCnrSBTgYN3YN/MM//NWVkjOjJVxXKzNQoVL2jbHJjOnKxT66IDW3qW+KV9UHbDNAtroD/KOFwsyxe5dv6qpYxiluXbwsR+oW0IJnJtmTFVBiye69EzZmwckksMo78LCAor5BgGJlWJD6KGjgTrkqFDouLWgkVjtOpT+PoYexRRmSzblA9Gtw2yLwXeznU7yWdyHEhktcXA7gJDd8aw3W4apxZc8e5ws6BhRGZmdtQ39B3nIBbm2OD0zxMQlpfmeWBOys8Rx6uES+ND/NoEiL1Dk457Ex23oJDnk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rs/EqtvVHPqhmkdU9lHgCwxut/0zRkzLO2o4/eX5oHMfCP4ynio4HRjExWGK?= =?us-ascii?Q?EW72pHSOmdFc1mDlvNMIz2JdFoS2dNyMyKj6YZNZyaa3LavsxE2zGHIyGmK5?= =?us-ascii?Q?gBk/ZRvTJg6QGgr74nBC6Fv/8xFXEN9Cc5Ta82+nqI8AoQvN0Axx5U5p6nSq?= =?us-ascii?Q?GCouExdt5IxGTNgXr/CGybEOniOev42ugGRNfmiIvNa7HCnMNnM9zuIhQozX?= =?us-ascii?Q?VyjPKE6cM9Y+VbC0FPpgRee+HRttNqaWL+8mFGueEgAHsT9/0rOmXDTfVjd+?= =?us-ascii?Q?ZydLvNSz2lmyEgdED2vdEXql1Y1sTbGBYfeh6ImO7IjpgPQo/Qltt+xs4QQy?= =?us-ascii?Q?ZxWHfFOCSqNIdrxP5ijH0DOQBKMWCjDnoWFFCzSakMn9VzUiYJxE5JQYwNnN?= =?us-ascii?Q?KAfrhvPjpeeAF9qRcRRPmBW3GHd6dx0i78w/LwANSvrU9SxJ1PeMSSQWEkD4?= =?us-ascii?Q?u61MxLm6/yqy1O4FN3X1stsXOAQKljuWgpAjCI/3JTaPMzZm7HN+dP6WNH59?= =?us-ascii?Q?mEmHXNzKXsDhPdPab0610KVcJ3tprCC7FTZ9s8/QUfFWl5bxeOiMZLkVgm9Z?= =?us-ascii?Q?ezbaXk0e5wPxjCb4vteihni0Nxhz3rOvO+bF5ePnpMLmZHIbshMikrpqKRV7?= =?us-ascii?Q?u8tiLWIvrMK+RwLatXGE56sUXXIhDK3XDxLKvK7ML71GPEhr801Gt8nYjN/e?= =?us-ascii?Q?8M4jbr4FqgrvY2Ej8nYEG7Z89eVQpYlfoB14sxH5udiYkzpm5P5qaVUS/xMH?= =?us-ascii?Q?OwICNc6gi/nFpT7VdcqQEWK87lRFw87ySSLBF7XZNJ+6PWJcmfzMqKk8J/2q?= =?us-ascii?Q?VfX1GqS/4j0L3g9a4tGg9/4P0MMXHLUXEm0tQqXn7kjTqguDgvt90gxd+gts?= =?us-ascii?Q?c7omVIQo9qRKtpeln+IxVJLQgwHFzLq7/gs1ozLepEb3RqCE1VY8ypArOKPT?= =?us-ascii?Q?zRhKwNAyes/rbdjcfDAGVdF5EESrDooMRdzCC5cwr3aE4dQe+Oofgn7hhdTf?= =?us-ascii?Q?7PG+sjU4iqGFHlCD1o7d2yXeeX1Rxq5gbh3M0mX3mmalActUZVdSuZVU9758?= =?us-ascii?Q?i3dmTOLMldzE4xwMIpG6zbtzkLS6SUW1LbiiSMFLIljcsn4e8Qbj1/oNjrNU?= =?us-ascii?Q?d4MgQL6Lb1P5Zxzl+66Jlenr41qc0nLwyumBiNFhJYFM0/TQOTI4/tU2B/6v?= =?us-ascii?Q?xiNEyB7sRd2vqCItQ9I4MjVsPr0vplaCY+j/D60REqcLznjQZiZy//Q32r5h?= =?us-ascii?Q?xp7CqJPNWeAi7190A2LbPKP3SmcEXLBZE+FtpnQ35xd8CfNAoKcBolrow3FQ?= =?us-ascii?Q?uwNmfRPyp98KtCSDg+i90gwnVvV6IFTX37mV+tDmD4ANIKln8BdZbgTtrdt3?= =?us-ascii?Q?oSRAexhrdDOmS8UfgYXfS00YVRX4XMw8QmA2F3WyA3RyI7uAZgKUs7Df5Ppm?= =?us-ascii?Q?doOH47NdPX5eEI5y0WXMeQ+/inm0eonA9IJ+aT/5BCb+bdRjcVM6ULCa6RdD?= =?us-ascii?Q?37YAShMBhRQ3ex6/E8j37my4LXfYPB/16rowRCqJlDn6G4NDZxmM9lXa1Pes?= =?us-ascii?Q?gQ9DN2IEKe7f8F0LdpK2/+HEXWZSydExBvTUa+s4B29OGraBWf6PR+6Sltqo?= =?us-ascii?Q?20XxoJ1cBnvtdtEpF1HWDFNvuULyPYP1ZOMaX9SAN4PfIFsuUh2ufQZyRBWY?= =?us-ascii?Q?MiueV3h4sC87pUuXsdVlx5xRBG7qROQo1UiTRGc7COE1Xr5s8oZ0c6fJfdlk?= =?us-ascii?Q?7lw9fBftWW0dodXt9l1+ZK7jEs00LUB4bsLFfUbVdh+LvkFQA4Ot?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb8a1621-b595-4637-3feb-08dec2d3609a X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:44.9880 (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: JTfJmbjgEe7bnn/nDsxd1bejl+18iIWxaBwvlyPAEZEIMKLDdMSBQkUlmKCInV503si9EoqtUu3ZJj6tor7ewSHQCo14rOUfKq8lZUv4/N+zncYokEWEEvcNUQ58tsz2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang The mac_filter array currently resides in struct enetc_pf and is used to track unicast and multicast MAC address filters for the PF. Since struct enetc_si is the common structure shared between the PF and VF drivers, move mac_filter into struct enetc_si to prepare for MAC filter support in the VF driver. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc.h | 1 + drivers/net/ethernet/freescale/enetc/enetc4_pf.c | 5 +++-- drivers/net/ethernet/freescale/enetc/enetc_pf.c | 15 +++++++-------- drivers/net/ethernet/freescale/enetc/enetc_pf.h | 2 -- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/eth= ernet/freescale/enetc/enetc.h index 2cd035773aca..24d9f89aee73 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -332,6 +332,7 @@ struct enetc_si { =20 struct work_struct msg_task; char msg_int_name[ENETC_INT_NAME_MAX]; + struct enetc_mac_filter mac_filter[MADDR_TYPE]; }; =20 #define ENETC_SI_ALIGN 32 diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index 4cff2f1237f1..f6920ded9f7e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -225,11 +225,12 @@ static void enetc4_pf_set_mac_hash_filter(struct enet= c_pf *pf, int type) struct net_device *ndev =3D pf->si->ndev; struct enetc_mac_filter *mac_filter; struct enetc_hw *hw =3D &pf->si->hw; + struct enetc_si *si =3D pf->si; struct netdev_hw_addr *ha; =20 netif_addr_lock_bh(ndev); if (type & ENETC_MAC_FILTER_TYPE_UC) { - mac_filter =3D &pf->mac_filter[UC]; + mac_filter =3D &si->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); @@ -239,7 +240,7 @@ static void enetc4_pf_set_mac_hash_filter(struct enetc_= pf *pf, int type) } =20 if (type & ENETC_MAC_FILTER_TYPE_MC) { - mac_filter =3D &pf->mac_filter[MC]; + mac_filter =3D &si->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); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/= ethernet/freescale/enetc/enetc_pf.c index 38fcc7b5fc6d..209a3503609f 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -111,10 +111,9 @@ static void enetc_set_mac_ht_flt(struct enetc_si *si, = int si_idx, int type, } } =20 -static void enetc_sync_mac_filters(struct enetc_pf *pf) +static void enetc_sync_mac_filters(struct enetc_si *si) { - struct enetc_mac_filter *f =3D pf->mac_filter; - struct enetc_si *si =3D pf->si; + struct enetc_mac_filter *f =3D si->mac_filter; int i, pos; =20 pos =3D EMETC_MAC_ADDR_FILT_RES; @@ -158,10 +157,10 @@ static void enetc_sync_mac_filters(struct enetc_pf *p= f) static void enetc_pf_set_rx_mode(struct net_device *ndev) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); - struct enetc_pf *pf =3D enetc_si_priv(priv->si); - struct enetc_hw *hw =3D &priv->si->hw; bool uprom =3D false, mprom =3D false; struct enetc_mac_filter *filter; + struct enetc_si *si =3D priv->si; + struct enetc_hw *hw =3D &si->hw; struct netdev_hw_addr *ha; u32 psipmr =3D 0; bool em; @@ -180,7 +179,7 @@ static void enetc_pf_set_rx_mode(struct net_device *nde= v) /* first 2 filter entries belong to PF */ if (!uprom) { /* Update unicast filters */ - filter =3D &pf->mac_filter[UC]; + filter =3D &si->mac_filter[UC]; enetc_reset_mac_addr_filter(filter); =20 em =3D (netdev_uc_count(ndev) =3D=3D 1); @@ -196,7 +195,7 @@ static void enetc_pf_set_rx_mode(struct net_device *nde= v) =20 if (!mprom) { /* Update multicast filters */ - filter =3D &pf->mac_filter[MC]; + filter =3D &si->mac_filter[MC]; enetc_reset_mac_addr_filter(filter); =20 netdev_for_each_mc_addr(ha, ndev) { @@ -209,7 +208,7 @@ static void enetc_pf_set_rx_mode(struct net_device *nde= v) =20 if (!uprom || !mprom) /* update PF entries */ - enetc_sync_mac_filters(pf); + enetc_sync_mac_filters(si); =20 psipmr |=3D enetc_port_rd(hw, ENETC_PSIPMR) & ~(ENETC_PSIPMR_SET_UP(0) | ENETC_PSIPMR_SET_MP(0)); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index 549ea3f4b5cb..b90a3d24d854 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -41,8 +41,6 @@ struct enetc_pf { int num_vfs; /* number of active VFs, after sriov_init */ int total_vfs; /* max number of VFs, set for PF at probe */ struct enetc_vf_state *vf_state; - - struct enetc_mac_filter mac_filter[MADDR_TYPE]; struct enetc_msg_swbd *rxmsg; =20 char vlan_promisc_simap; /* bitmap of SIs in VLAN promisc mode */ --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011043.outbound.protection.outlook.com [52.101.65.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07A66477E2E; Fri, 5 Jun 2026 07:23:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644236; cv=fail; b=u8OR4lU2ZzK2K3qh4KbLd1T6aUGTwraCIK+nCXND4nggFekjq3Kzid7FNQai2yFhDIuqclPfQkNbDTguUHRiX54npPk5XPNkPoTdpnr5elLOQ5XSpwXIsCJhuPSH1lSiiSPwfPgsOupHLzI4AopmrFGMnAyY1YmYUmiDGT9Iw5o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644236; c=relaxed/simple; bh=Bgxjbp59wyW890Hxk2sEtw13oXEHZWmm/gfHoK+1ou8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=c0cfRpP2/VdB5MVRrMNfEvHUm+m+5E1ntsN9/v0OxC6DmwLICcTE9KZWOV3lBLlhXSHeWDOfoWoe4MLjT39Hnno5FIoyE1twe6bc/+uNXYXfq0TpLB4DNIEKScXpdIEP9Y5FFss7NiGV/wSNEGGEtKFi5MTCtrf1wUoMWc6L0EQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=kX9Oo14h; arc=fail smtp.client-ip=52.101.65.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="kX9Oo14h" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tyWQ1tGuUmb8gr7k98bm+f1neyxCpMfM3YJbKH8EqGqT0gRxF36XkK0dtQ6IfqdnKGw70cWk+8weWo/iCQoumjG/Y0cX7YdKHaP16MI0Zg4EpPEkfPHfqVYQIlrcVNpcAKeKRDLIVoDuXpyleW/W4jlhrAcjAKkut4/Qlcgyc0Xx8H+WG1uJTePVpUXGeGPYFSd9XOWUcgIKFjRzSWeTwsG5KuDa17XytmUB3jPKTmJFfCWNvMvrXkPsMr+TyQWdVABhYfXUgcz8T6sBtZ2ULUTpN9Vp4byzC1PSSmBTfXWbKGJiPUAoRqRToeRhP+f7IWc0NzYaYP40tJn5Akq3wg== 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=alshFPKEMYxEfSFWQbKcSM8KF+u2bO1BochBwRj4uio=; b=Q3JxJVYuNIdQLm1JmiHPHr6sPVkyfMk/xgl10wZrQBvMNR2e3g3AF1G0ckh3GRa0/jC2Bk+g4leUR3ZJjvOb6SOEQCo4/169SYlnnC2N79LxptF3he1L+eitGPZhDtd8NJ2Sg8xv54XkfFHFPHFMNkc9hL23Qwe9W0ap8omG4znwvi0eZLDGLSo0QBkjFwRB8vc8gzSQ60pJ5Z7YUq8wMyvTWXTgt/HkhkObBwUEBHxxOdUt7kWvFUaYIvTEkHArBFUJFmd1QLuPgCDX0NDwcST2OTG6cCJQi+v7Uc+DPhaa/AnG7OOePYjGqzIb/czvZcDUQZLu/4wz9PgLySsF/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=alshFPKEMYxEfSFWQbKcSM8KF+u2bO1BochBwRj4uio=; b=kX9Oo14h23LzZ9akHx6n6thQyfxfJU8GKdcVeAbz0mEg4IbGLKGKoP9BE+tJjIL9MdFHJ/8GkSxeafoedHHRC9fs8V1usgq8vo0wJ6KWIvK76telLr/eu3kiyb879Gc750qN7liYRm+PQnbcKSUfObTqKMCBNDVH1Z7BJ30xIVaZH+5K7C1t2NZfGqRRHlLsTXGMnzjfcOi8XNdTrrw+AOKxYFoTfqSyh7BN129KB/zAUcKbqdBB8gPGUX2eDK3XkDd/Q/B/7IIRkNP1pATvCjaYo5qaPRWzWUtaEvxPRuekIOqX1wJmQUayE43I42oLvvekbEu4+GqIcVKBWJH8xQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:51 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:51 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 09/15] net: enetc: add MAC address filtering support for VFs of ENETC v4 Date: Fri, 5 Jun 2026 14:55:44 +0800 Message-Id: <20260605065550.3038579-10-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5PR01CA0109.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:1d1::15) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d8e556d-a420-4f5e-86b7-08dec2d3647b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|3023799007|22082099003|6133799003|11063799006|18002099003|18092099006; X-Microsoft-Antispam-Message-Info: FpewTY3P1cxWgaNPAfwtRhKWrJgpKS4Pez92OQeFsnBIbh7VjjthJHQ2JPhNKncNEyvB3f+zOTy9gnNLPN39EY/mA4vzTaGbYRZnkgxL1YgkTbfjenRwBP1bZOgNf66vEqxHNcj73YNe/Hgt01p41L7r2lJPgBHSDLxJGpfspMV7+kfuXCgSe3j1m2SLJ1IurG7VKIFE7vG6izP0lC1/Hu0IXWqwoPgXmQx8pkqgP1XcvLV4PqEm9vH+pdb3bt1OWB82nDh1+xm71JmU7zUAxVrZXS9G4vwVUGOUxvIoGVBZjr6AdQgjoc+2m7jfxOUfO3cIRid5uf20PZ2gTpE8lz1H1TxDPNepaknKaV+Z7lzt9ZNzk48GiDrF+zI4psfJvlAVDmzrN4gsmNDbJFb7v2qzKUHVVvMDyhRPPslR3mxIFaVPendJuErkfkbPvha5UqkyG+UW8bQFs4vPTIjFa8pze6+Ak0invPhZ9lzoE4LFnuauqsho2XLskEUDh+acFlKtyLhRus+jcL+rcEB33FfEOvr4S14lbHR5bnBlStynYc8ZzPnrFHU0KeLicKJz/J/2GzsRsPUBBLEIlQT/Zf/cwvr/pSlcnLFmOsOEGje5JDoY+uycCAEz4sWOJxTeESZEbQjQMSIETe5Fbsrl/Zzlwg/MOVXgLNMrYwn/0SxNbw88eBTt3xJfvOLIGZfjzhtKIcAQ1nhrFGG9G/lKhUN3A4sexkoswPHvogsSlgQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(3023799007)(22082099003)(6133799003)(11063799006)(18002099003)(18092099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qLefucw3TnpLMji0lLVntcOPO8Mp9imosO4gBmRt3KC7+OY23QM+puOBEokl?= =?us-ascii?Q?GwdU82R/NeTANKmp1/hMohdIt7505I20nb6C1zAPdhsCFugsjugTbVOVuaMM?= =?us-ascii?Q?WJVuXoLAjPiK77TipQSxLapRkWTabkN7pY+veSMkwdKms9dahvKMhbPgLTr1?= =?us-ascii?Q?nUzD5mm308De/yTrTV4x+UfKn7u0e3kq4OwGLfM9/YisE9kgWNIy4dKJtkMK?= =?us-ascii?Q?3FjlsaPVXWBggPPh6UOH/mE/0kIK/6VDk00KlzG4slA90mgFI/rnF3ut+dHV?= =?us-ascii?Q?k5wjScEYfeWt9lCCd+WhIRV3pbffhC4XE3Z5ghN1XQuwTity96BSN/mMPdSl?= =?us-ascii?Q?GRu3ydtuJfk/6ME3UOG5q9yvw/uIyli4i+h5SdgqAew2QuLTJra+ZpVuCk4c?= =?us-ascii?Q?SKFsjPXcfCY6QGGrwNoyZSlHkhbena3xVcmEg+ncpgQMr5Ulci5bsVlzxqn3?= =?us-ascii?Q?seMcZsqWe+fr1Btv88k5vkc0pYwGY2wopcjKaeaSx1yJgcrIYbXMoj0ZjFgB?= =?us-ascii?Q?w1xke0CkstAm1yZVd4TSQBc4Y00B2dq5a0vgBq8TcXW2Jg2oEeYFSeL/O9jP?= =?us-ascii?Q?VuxU62Gg7pNhehMuhguDtg/82ZVCEuLFcf2oehfX8CMUzNbwPI3JBMMXvdof?= =?us-ascii?Q?X6atgUnvRT/qqdvW+8CHm5//FtQI2ZQn0I2xMvJ4QH6jpiDXIl+E8/Jd2RdW?= =?us-ascii?Q?2l7w0lFM6lx50xdNigBbHtQ7cf3dZy8LK3zQN7bvlMZCZg+Cs9rdMPLjJP7k?= =?us-ascii?Q?ZtlcKAQ0eGQnWhERNbIUfIos2qIf8M5UaReoJMn35f+o8h1W7RhRGRaMAwlE?= =?us-ascii?Q?P85XKQi22b3hgAaE45xwYdziiclYxV2GKCcepeSCzPOuwJT3FWeDoeSadbPT?= =?us-ascii?Q?hpgLC7FGKuUdFZkwl9Qqe12oppLnhVwx8eYm/kAULCD72g9dY60F4SWs9Mp1?= =?us-ascii?Q?IYAkV3I7SLPnQfZhazu2e4k8RdZZ47iuYITFH9hY/6Ls6QKpJlN0fGNScRTn?= =?us-ascii?Q?A7611hicQMlmzuv8sYvEJn8YOAse9A/J/tZsQJAss53f2O3XYpSPL2lkGeJZ?= =?us-ascii?Q?GKNBHeJCFAaNkw5BZsW6yz+ODCzRDbBhmx+fft+U0JteIMkvd/vLZa4+B7ls?= =?us-ascii?Q?7dMBXkbb87Kzaq9ArI/tMGyd1IzHexXm4kIru3KGnhoYzSYuEPlTe5zqYsDu?= =?us-ascii?Q?62gQvOY5I1b2OtvelmfhQsqsb+5uSJxxVzAbLyXqZN26qimii8c9Dg5iKCY/?= =?us-ascii?Q?r/PLrC6tOJKxwxKSE1EmRpUGA+QFwDKBFM0KWWHnK10a4Kdl7pbu11+jdd6n?= =?us-ascii?Q?VTpeAITF95fO00Rd5u/ArzRlLOGfzdVQfks6xkcVc71NZ7IVvUBBv0xwI49N?= =?us-ascii?Q?DzHHTuAEjETPOWG8vlYMqte/LMjCHHR3SbtjJunRRXXt+dr1hYPeNKUaydRS?= =?us-ascii?Q?cZROji161W2KBNol6+9EdNRX2yL+Oc7GnBSBK4Ko6wVS3/tFESCoj5AOeWPn?= =?us-ascii?Q?/ey7ZRnGUUj5R6323Vc6e71uozdnzDhfC3bumeyxCO/PneWQfG1SYkfyGaQz?= =?us-ascii?Q?otlPhdCWsyYU5CgbAL9XH1KUUt5JIdl1jdlZzkhG5KATH+WOzpetdA9cscyc?= =?us-ascii?Q?deajc1J177scsWHL0bO/Jnq5d9pLVuJdhQz7Uv0ussyZAOjoFK+d1uj73XzS?= =?us-ascii?Q?/aCthYLPe4ktFopCTNNjWkkMKe6dkx+JzAHx+VZ1dld475F+VhAKcuCPeY01?= =?us-ascii?Q?DsxqWakjILSW94okpOKnnh8wzhlU2jAmXvyDziioFhBp9WAJ5ZiA?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d8e556d-a420-4f5e-86b7-08dec2d3647b X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:51.5288 (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: vvFrTEJmLaH4+OAVD/14pMw0ATVxB0ax5rWhifEs9T0TfjWfVL9HRrCxv4YY/1ZxwSpqqRiGNBXrShB8VG1tIon4dPL/g7HTgT1bVl4w4+nMhJXaqPQXSPsyaBnqXp0T X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang The ENETC v4 VF hardware supports MAC address filtering, but the underlying hardware resources (PSIPMMR register and per-SI hash filter tables) are owned and managed exclusively by the PF driver. Add VSI-to-PSI mailbox message support so that VFs can request MAC filter configuration from the PF. Two new command IDs are introduced under the existing MAC filter message class (0x20): 1. ENETC_MSG_SET_MAC_HASH_TABLE (cmd_id 3): allows a trusted VF to program its unicast and/or multicast MAC hash filter table. The PF validates that the hardware-supported 64-bit table size is requested before applying the configuration via the per-SI hash filter registers. 2. ENETC_MSG_SET_MAC_PROMISC_MODE (cmd_id 5): allows a VF to enable or disable unicast/multicast promiscuous mode, and optionally flush the associated hash filter table. Enabling promiscuous mode requires the VF to be marked as trusted, since it widens the traffic received by the VF. Flushing the hash table without enabling promiscuous mode does not require elevated privilege. To accommodate independent per-type control, refactor enetc4_pf_set_si_mac_promisc() to accept an enetc_mac_addr_type enum and a single enable flag instead of two separate boolean parameters. This allows callers to set unicast and multicast promiscuous modes in separate steps. The PSIPMMR register holds promiscuous mode bits for all SIs and is modified by both the PF rx_mode workqueue (enetc4_psi_do_set_rx_mode) and the VF message handler workqueue (enetc_msg_task). Since both workqueues can run concurrently on SMP systems and enetc4_pf_set_si_mac_promisc() performs a non-atomic read-modify-write, protect all accesses to this register with pf->msg_lock to prevent lost updates. When a VF loses trusted status via ndo_set_vf_trust(), its unicast and multicast MAC hash filters are cleared and promiscuous mode is disabled to prevent it from receiving traffic beyond its allowed scope. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc4_pf.c | 40 +++++-- .../ethernet/freescale/enetc/enetc_mailbox.h | 39 ++++++ .../net/ethernet/freescale/enetc/enetc_msg.c | 113 ++++++++++++++++++ .../net/ethernet/freescale/enetc/enetc_pf.h | 4 + .../freescale/enetc/enetc_pf_common.c | 21 +++- 5 files changed, 204 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index f6920ded9f7e..2e081a59154e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -76,19 +76,22 @@ static void enetc4_pf_get_si_primary_mac(struct enetc_h= w *hw, int si, } =20 static void enetc4_pf_set_si_mac_promisc(struct enetc_hw *hw, int si, - bool uc_promisc, bool mc_promisc) + enum enetc_mac_addr_type type, + bool en) { u32 val =3D enetc_port_rd(hw, ENETC4_PSIPMMR); =20 - if (uc_promisc) - val |=3D PSIPMMR_SI_MAC_UP(si); - else - val &=3D ~PSIPMMR_SI_MAC_UP(si); - - if (mc_promisc) - val |=3D PSIPMMR_SI_MAC_MP(si); - else - val &=3D ~PSIPMMR_SI_MAC_MP(si); + if (type =3D=3D UC) { + if (en) + val |=3D PSIPMMR_SI_MAC_UP(si); + else + val &=3D ~PSIPMMR_SI_MAC_UP(si); + } else if (type =3D=3D MC) { + if (en) + val |=3D PSIPMMR_SI_MAC_MP(si); + else + val &=3D ~PSIPMMR_SI_MAC_MP(si); + } =20 enetc_port_wr(hw, ENETC4_PSIPMMR, val); } @@ -107,6 +110,16 @@ static void enetc4_pf_set_si_mc_hash_filter(struct ene= tc_hw *hw, int si, enetc_port_wr(hw, ENETC4_PSIMMHFR1(si), upper_32_bits(hash)); } =20 +static void enetc4_pf_set_si_mac_hash_filter(struct enetc_hw *hw, int si, + enum enetc_mac_addr_type type, + u64 hash) +{ + if (type =3D=3D UC) + enetc4_pf_set_si_uc_hash_filter(hw, si, hash); + else if (type =3D=3D MC) + enetc4_pf_set_si_mc_hash_filter(hw, si, hash); +} + static void enetc4_pf_set_loopback(struct net_device *ndev, bool en) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); @@ -273,6 +286,8 @@ static void enetc4_pf_set_mac_filter(struct enetc_pf *p= f, int type) static const struct enetc_pf_ops enetc4_pf_ops =3D { .set_si_primary_mac =3D enetc4_pf_set_si_primary_mac, .get_si_primary_mac =3D enetc4_pf_get_si_primary_mac, + .set_si_mac_promisc =3D enetc4_pf_set_si_mac_promisc, + .set_si_mac_hash_filter =3D enetc4_pf_set_si_mac_hash_filter, }; =20 static int enetc4_pf_struct_init(struct enetc_si *si) @@ -513,7 +528,10 @@ static void enetc4_psi_do_set_rx_mode(struct work_stru= ct *work) type =3D ENETC_MAC_FILTER_TYPE_ALL; } =20 - enetc4_pf_set_si_mac_promisc(hw, 0, uc_promisc, mc_promisc); + mutex_lock(&pf->msg_lock); + enetc4_pf_set_si_mac_promisc(hw, 0, UC, uc_promisc); + enetc4_pf_set_si_mac_promisc(hw, 0, MC, mc_promisc); + mutex_unlock(&pf->msg_lock); =20 if (uc_promisc) { enetc4_pf_set_si_uc_hash_filter(hw, 0, 0); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h b/drivers= /net/ethernet/freescale/enetc/enetc_mailbox.h index 44c8196accaa..9e23499e290f 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_mailbox.h @@ -91,6 +91,17 @@ #define ENETC_PF_MSG_CLASS_CODE_U8 GENMASK(7, 0) #define ENETC_PF_MSG_CLASS_ID GENMASK(15, 8) =20 +#define ENETC_MAC_HASH_TABLE_SIZE_64 0 +#define ENETC_MSG_MAC_HASH_SIZE GENMASK(5, 0) +#define ENETC_MSG_MAC_TYPE GENMASK(7, 6) +#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) + +#define ENETC_MSG_MAC_FLUSH_MACS BIT(0) +#define ENETC_MSG_MAC_PROMISC_MODE BIT(1) + enum enetc_msg_class_id { /* Class ID for PSI-to-VSI messages */ ENETC_MSG_CLASS_ID_CMD_SUCCESS =3D 1, @@ -114,6 +125,8 @@ enum enetc_msg_class_id { =20 enum enetc_msg_mac_filter_cmd_id { ENETC_MSG_SET_PRIMARY_MAC, + ENETC_MSG_SET_MAC_HASH_TABLE =3D 3, + ENETC_MSG_SET_MAC_PROMISC_MODE =3D 5, }; =20 enum enetc_msg_ip_revision_cmd_id { @@ -195,6 +208,32 @@ struct enetc_msg_mac_exact_filter { struct enetc_mac_addr mac[]; }; =20 +/* message format of class_id 0x20 for hash MAC filter. + * cmd_id 0x3: set MAC hash table + */ +struct enetc_msg_mac_hash_filter { + struct enetc_msg_header hdr; + /* bit 0 ~ 5: ENETC_MSG_MAC_HASH_SIZE + * bit 6~7: ENETC_MSG_MAC_TYPE + */ + u8 sz_type; + u8 resv[3]; + u32 hash_tbl[]; +}; + +/* message format of class_id 0x20 for MAC promiscuous mode. + * cmd_id 0x5: set MAC promiscuous mode + */ +struct enetc_msg_mac_promisc_mode { + struct enetc_msg_header hdr; + /* bit 0: ENETC_MSG_MAC_FLUSH_MACS + * bit 1: ENETC_MSG_MAC_PROMISC_MODE + * bit 6~7: ENETC_MSG_MAC_TYPE + */ + u8 config; + u8 resv[15]; +}; + /* The generic message format applies to the following messages: * Get IP revision message, class_id 0xf0. * cmd_id 1: get IP minor revision diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index 49c1ca14735c..7dcb1dcdec84 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -101,6 +101,115 @@ static u16 enetc_msg_set_vf_primary_mac_addr(struct e= netc_pf *pf, int vf_id, return pf_msg; } =20 +static u16 enetc_msg_set_vf_mac_hash_filter(struct enetc_pf *pf, int vf_id, + void *vf_msg) +{ + struct enetc_vf_state *vf_state =3D &pf->vf_state[vf_id]; + struct enetc_msg_mac_hash_filter *msg =3D vf_msg; + struct enetc_hw *hw =3D &pf->si->hw; + u16 pf_msg =3D ENETC_PF_MSG_SUCCESS; + int si_id =3D vf_id + 1; + u64 hash_tbl; + int type; + + mutex_lock(&vf_state->lock); + + if (!(vf_state->flags & ENETC_VF_FLAG_TRUSTED)) { + pf_msg =3D ENETC_PF_MSG_PERM_DENY; + goto vf_state_unlock; + } + + if (!pf->ops->set_si_mac_hash_filter) { + pf_msg =3D ENETC_PF_MSG_NOTSUPP; + goto vf_state_unlock; + } + + /* Currently, hardware only supports 64 bits table size */ + if (FIELD_GET(ENETC_MSG_MAC_HASH_SIZE, msg->sz_type) !=3D + ENETC_MAC_HASH_TABLE_SIZE_64) { + pf_msg =3D ENETC_PF_MSG_NOTSUPP; + goto vf_state_unlock; + } + + type =3D FIELD_GET(ENETC_MSG_MAC_TYPE, msg->sz_type); + hash_tbl =3D (u64)msg->hash_tbl[1] << 32 | msg->hash_tbl[0]; + if (type =3D=3D ENETC_MAC_FILTER_TYPE_UC) { + pf->ops->set_si_mac_hash_filter(hw, si_id, UC, hash_tbl); + } else if (type =3D=3D ENETC_MAC_FILTER_TYPE_MC) { + pf->ops->set_si_mac_hash_filter(hw, si_id, MC, hash_tbl); + } else if (type =3D=3D ENETC_MAC_FILTER_TYPE_ALL) { + if (!msg->hdr.len) { + pf_msg =3D FIELD_PREP(ENETC_PF_MSG_CLASS_ID, + ENETC_MSG_CLASS_ID_INVALID_MSG_LEN); + goto vf_state_unlock; + } + + pf->ops->set_si_mac_hash_filter(hw, si_id, UC, hash_tbl); + hash_tbl =3D (u64)msg->hash_tbl[3] << 32 | msg->hash_tbl[2]; + pf->ops->set_si_mac_hash_filter(hw, si_id, MC, hash_tbl); + } + +vf_state_unlock: + mutex_unlock(&vf_state->lock); + + return pf_msg; +} + +static u16 enetc_msg_set_vf_mac_promisc_mode(struct enetc_pf *pf, int vf_i= d, + void *vf_msg) +{ + struct enetc_vf_state *vf_state =3D &pf->vf_state[vf_id]; + struct enetc_msg_mac_promisc_mode *msg =3D vf_msg; + u16 pf_msg =3D ENETC_PF_MSG_SUCCESS; + struct enetc_hw *hw =3D &pf->si->hw; + bool promisc, flush_macs; + int si_id =3D vf_id + 1; + int type; + + mutex_lock(&vf_state->lock); + if (msg->config & ENETC_MSG_MAC_PROMISC_MODE) { + if (!(vf_state->flags & ENETC_VF_FLAG_TRUSTED)) { + pf_msg =3D ENETC_PF_MSG_PERM_DENY; + goto vf_state_unlock; + } + } + + if (!pf->ops->set_si_mac_promisc) { + pf_msg =3D ENETC_PF_MSG_NOTSUPP; + goto vf_state_unlock; + } + + flush_macs =3D !!(msg->config & ENETC_MSG_MAC_FLUSH_MACS); + if (flush_macs && !pf->ops->set_si_mac_hash_filter) { + pf_msg =3D ENETC_PF_MSG_NOTSUPP; + goto vf_state_unlock; + } + + type =3D FIELD_GET(ENETC_MSG_MAC_TYPE, msg->config); + promisc =3D !!(msg->config & ENETC_MSG_MAC_PROMISC_MODE); + + mutex_lock(&pf->msg_lock); + + if (type & ENETC_MAC_FILTER_TYPE_UC) + pf->ops->set_si_mac_promisc(hw, si_id, UC, promisc); + + if (type & ENETC_MAC_FILTER_TYPE_MC) + pf->ops->set_si_mac_promisc(hw, si_id, MC, promisc); + + mutex_unlock(&pf->msg_lock); + + if ((type & ENETC_MAC_FILTER_TYPE_UC) && flush_macs) + pf->ops->set_si_mac_hash_filter(hw, si_id, UC, 0); + + if ((type & ENETC_MAC_FILTER_TYPE_MC) && flush_macs) + pf->ops->set_si_mac_hash_filter(hw, si_id, MC, 0); + +vf_state_unlock: + mutex_unlock(&vf_state->lock); + + return pf_msg; +} + static u16 enetc_msg_handle_mac_filter(struct enetc_pf *pf, int vf_id, void *vf_msg) { @@ -109,6 +218,10 @@ static u16 enetc_msg_handle_mac_filter(struct enetc_pf= *pf, int vf_id, switch (msg_hdr->cmd_id) { case ENETC_MSG_SET_PRIMARY_MAC: return enetc_msg_set_vf_primary_mac_addr(pf, vf_id, vf_msg); + case ENETC_MSG_SET_MAC_HASH_TABLE: + return enetc_msg_set_vf_mac_hash_filter(pf, vf_id, vf_msg); + case ENETC_MSG_SET_MAC_PROMISC_MODE: + return enetc_msg_set_vf_mac_promisc_mode(pf, vf_id, vf_msg); default: return ENETC_PF_MSG_NOTSUPP; } diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index b90a3d24d854..7ca85731d6cc 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -34,6 +34,10 @@ struct enetc_pf_ops { struct phylink_pcs *(*create_pcs)(struct enetc_pf *pf, struct mii_bus *bu= s); void (*destroy_pcs)(struct phylink_pcs *pcs); int (*enable_psfp)(struct enetc_ndev_priv *priv); + void (*set_si_mac_promisc)(struct enetc_hw *hw, int si, + enum enetc_mac_addr_type type, bool en); + void (*set_si_mac_hash_filter)(struct enetc_hw *hw, int si, + enum enetc_mac_addr_type type, u64 hash); }; =20 struct enetc_pf { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index 85e1efa6a8ce..66a9a734d18e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -468,6 +468,7 @@ int enetc_pf_set_vf_trust(struct net_device *ndev, int = vf, bool setting) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); struct enetc_pf *pf =3D enetc_si_priv(priv->si); + struct enetc_hw *hw =3D &pf->si->hw; struct enetc_vf_state *vf_state; =20 if (vf >=3D pf->total_vfs) @@ -476,11 +477,27 @@ int enetc_pf_set_vf_trust(struct net_device *ndev, in= t vf, bool setting) vf_state =3D &pf->vf_state[vf]; mutex_lock(&vf_state->lock); =20 - if (setting) + if (setting) { vf_state->flags |=3D ENETC_VF_FLAG_TRUSTED; - else + } else { vf_state->flags &=3D ~ENETC_VF_FLAG_TRUSTED; =20 + /* Clear MAC hash filters and disable MAC promiscuous modes + * if the VF is untrusted. + */ + if (pf->ops->set_si_mac_hash_filter) { + pf->ops->set_si_mac_hash_filter(hw, vf + 1, UC, 0); + pf->ops->set_si_mac_hash_filter(hw, vf + 1, MC, 0); + } + + mutex_lock(&pf->msg_lock); + if (pf->ops->set_si_mac_promisc) { + pf->ops->set_si_mac_promisc(hw, vf + 1, UC, false); + pf->ops->set_si_mac_promisc(hw, vf + 1, MC, false); + } + mutex_unlock(&pf->msg_lock); + } + mutex_unlock(&vf_state->lock); =20 return 0; --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013049.outbound.protection.outlook.com [52.101.83.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D684647F2CA; Fri, 5 Jun 2026 07:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644242; cv=fail; b=E0k9QCxAdIM5O35oSeAEt+Sj/47HYWJrQZi4VlUDjaLnfhNgVEjGCsFaMfbGRxbVcRs1S7oHe94p2H9DSAl3Wa9josJCH/eEYgaWLhsuWcNqm8NO1nmn3VSdmd7NIyRl2elMVI8dEZC8ZrV4kln2GGGUG9MQMXyWOKFg4mgHaJ8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644242; c=relaxed/simple; bh=3g6SHTWxUvuaU60K2pjTQkaAvEsY7mmIj5Z37LApWcc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=sVJjScBJx5cK81EkKiD6/h3A9Vn5XMpYYbogK1Bm0PMGuYNxoI6VPzwSPjaNt/nDePtKgUjmbOyRCURvkVzh4K4vsBpT33jZ72lAhHpov9cLUC1iQz5SSwRWKXCCEo3d3xwFcyqXJ+IYiEepl3nfwsjlH9Te1KCq7OtpxcS3Ao0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=CmD8vmC9; arc=fail smtp.client-ip=52.101.83.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="CmD8vmC9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=upDBop+nEW9sXFLfH4xALFbIq62Zw/t52JsU/vqQh5/u/mV5hTDFl/OKtSRUeWOhjYFMijPlsXYutvpWgRn2Rg8qKYEUrHO/I9lUXATX9ucsNB2MIfYcR41xpl/jU6OJn0O13fXI+UM1i8Ikv86lAKydJ01YpnBMbE8tYGRVNmYZssKIbebWeGFDELhoRbieYY/jXnchpl9I+gd+uv93MvU9sNUkt0G0ex/O3SWt9mf6h34mG0VfKf0QmbFYQsQC4N7gN/cJsHvNHqfHOiCqsjemNNFUn/AzC/Woxz4PZnqHQUJ9UyMl0ovmk7xvtlepdmjl1SS/XrSwQFJqiM7WbA== 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=+76DPhXYEBsuY+JKg8z0dS6+vIzKyVmWSxqXJS6w/AM=; b=hcvAjm5Qd0Fal+3iqaUvVK8lJaexnrixM+aMGtpAsbjzJo+ZQGm1tRuYzyvmBseFfQtYjeJtJBKjU874ANxUP1PNjStYOEDH4A5nctAkr9Uj41zIZRiBAwcBQa0QJClUFRr4uZkRDITLuPtcUXlboWd5+T2sZfUxiZ8c9KHbV0kstXaboNwp88eRMpMTiVtJCfOzoBgOfLq/uFs7RF9yxK+hPEob4CT0V9mfGgLzdixWo+R29yzZ9TmZRmSqts2rFsFmDexEOuu1+mqZT60/ujE7r9TWs9OPp8kIckxDKu19U5A+/CVGe7Y6OHZjegmbf3/B/7mOth6ObzHbFoSN/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+76DPhXYEBsuY+JKg8z0dS6+vIzKyVmWSxqXJS6w/AM=; b=CmD8vmC9oC8F3MMnoivZGnbPs9//cH9mowIVZXYPh8fjO/JlbBsoPQeCA6tnSGxw93Nm+OdOOXnuGWM8J8wlKX8iUd67ShaiIXDj8zPSq+dCMH/mrZWHVA7nTDIAuVzpsgfM3xCpMhFUEiTR7QyuWeuhqnncvLZZxO3FjbZ9H+5UKTDrAfdDSFFD2kxlu6AizrPyjghQxROziTgWEezvId3v32cMXRk3rcoY1GJOdPUbxvDtcUt6OFna32PP6km9fXcRSIU/QLnp7DSBlbD336XBNvAh51x4Pc6Gts5QzS62VC8grdsYr1ZNpUMuiqprWroZNPuVo2Ih5asI4qQ8mg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:23:58 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:23:58 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 10/15] net: enetc: simplify and rename PSIIER enable/disable helpers Date: Fri, 5 Jun 2026 14:55:45 +0800 Message-Id: <20260605065550.3038579-11-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0123.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:1d0::17) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 6f9b345f-668a-40ee-0d31-08dec2d36878 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: hwYAGAS24CGnKu0/VjyldvP02PHNkgKaVlwhY9wXqWl4ff3XImVCP+sRnuM3ZhLei0Uvd5pMfwxaGkNcb33W/G2LMNt/xun1k7W1XPqh+eHOgbqLPFi/l6F4Uu5e7WsO516n/FWrvNaWyzsf9BHnSC23KZm6SyoTroirOR/KnHXLm3/vnV4t96x80QoNuQ7+GONqfmey2Aa7ZYUK7MmXfd2CvpJfdQL7Wau3hhCFwEa6yq7+MYzyWe0Y3GPE1UVY7z9GJ9eTEu6cRDeCrsE2c5+pihEN93HJfdmP6mGvyUIQLSpw9fX1oDriKZnrM9NXBExE6FUdjcnCnkU99vxbl7DiptQH9jOpUGOnc7qEvDVyGZ8DWtOVRpwKqGpgpKeoOtrZ1pRmdCfqvVI/awgX2ZLYP9aqNcr6l+5sNLtP+UEVTqFvI+iAYtl0RNbEZvNgNrrMFfp9uKHEq8JxQFOt/2tEEBomoIs945+7cLtvkJaIf9ww0hsovNiR7GF2VG/wo5vSnJVTMu6lfS3oBCYGPklnEz7upRZ+ib+fOHtVrrK+8gZIysB2z3Czlurlm8j0WVaTQl+iaou6OJM9DcpYCJVL6TkBG7WQufk1s9EmLnqW0+wXDJlTRRxpPet8EyB+5xTch7TImKivlcIr8coM98QqIetUs9k9IUEBv1cTaE4oVnnY4tL76MGPrX2TaXuB8ypHyq90Cuiw7at1vQDR8yvsMwPI5O+qEx8eEQXqq5U= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HOBTU7UrVwBygZtrYsLaRVS6q3CDicOhW0fzB0nTpt8HyulC3hAnOmgx/saH?= =?us-ascii?Q?9UopeGvgspmKixqWPBUSnRFemPm/hIqyGIQGvx4MN/9mc13csZ4+Ld0f0Ej1?= =?us-ascii?Q?PqTvRaHyDhQjYMiDtEINWvBh87Bo4sucV39Zmiog/Pwbj8WdIX6eIhO0KhZz?= =?us-ascii?Q?Hqx9CU0o9KQW2zY9t26X9hIcWmdjJBrwrGrTFmoAaJ/ayXk+wprMpTNeQ/8a?= =?us-ascii?Q?8/pi3DRMxHez4F+sld98l6AOZPPM5MkEfvvtvHyLpwacFtujYvvuZKwZF9ME?= =?us-ascii?Q?yognmfsL/BS4qNu6I+sloX49OCPCzHMLRG2tHf/HZ2h9EemlpAmKBsu/oRpA?= =?us-ascii?Q?usz+aSCiAGmyNXX/N03yoHeM30IWkoCTxSoUD9CXx+7lVWh/zsQ6Y/6JkogK?= =?us-ascii?Q?ib5oYKUCRS0exsbvWvGemgfmSY5ZH8P7K2t+PpcAaWHZxNe2KkwYKjiXlo6R?= =?us-ascii?Q?tlvGaDnxsDpCxW8Ipz6fgP7+8TSGseQ/VMSgeD4iprdG2cQU+l2U7mRWKu2n?= =?us-ascii?Q?yP9AN2hRL+ml492G6uGcx1AwqcxQFabzIF5PvGj9BfJtYgihECMp4pZpdr1v?= =?us-ascii?Q?qnqNkr4En8EVzBrK2uzY75KLbItim8gOTjjCp5XQGOdyss+3Bc9B/YdUix5n?= =?us-ascii?Q?U/DZ3X1l0M4gCGNhY0S4vyrOaHUPVaH1MuxWjtvB+hkkh6i9v4hp67oZbM8V?= =?us-ascii?Q?LEzBiFzWS32pk7VEXWuKKFz/QXLOdeBDazA9nnoRKu0LyhVaW+zbvMyL6Q5V?= =?us-ascii?Q?TMx9IgfIBt/y/z79RjaVOeMGzFoEy3xPlCfTQz08D2blWJ7yxZStoPy5k7lL?= =?us-ascii?Q?73Af3naiuZoRUmDvAkeTA7iQkdrfoXm6s/9aazWdvasWfP16ltlxDweAgFzt?= =?us-ascii?Q?SedwWnNlycXkd6FzNyfEQZ5SC8O0DmEHQRrWkpUShhEyar8Gm9dsNuEpbz3a?= =?us-ascii?Q?UWHSAeWWjrrsuY264jzN50AzkSuWqlQ2wMO5fUM/fgXxcubhqexoAdH3t39U?= =?us-ascii?Q?0m+01NKOB8rNahBYWlyEj65F3B214jnJR419PA8tMhoxXNWhYxZTKGsKEPcj?= =?us-ascii?Q?ZDCseHHKZDh5AHM/qolme5iDb74WcneTxdWzYeX0VsqaGmNiCAEA1DhC/ebo?= =?us-ascii?Q?gZim67+sBRaKB/ttHcX8Q4RPx6U4X+b1a5Kjo+5Re+gOQS05+hc/zmFynQr+?= =?us-ascii?Q?lo4lIVeGDFpyuQu0/v4IWOsDm7JK6t4fgcfZHDzATjWGClCncIDaLeBea+jr?= =?us-ascii?Q?cRwaO7nNxLhppJU2wEE9H38gYGl4bVowf3EjtuTRH5DSZlr5COrTAGB998Em?= =?us-ascii?Q?7ORj9xoHPXBZtcRIlyjdF6bR3AU85wJtw6qGqlv3SVNwOIZub3K+J0NJAB08?= =?us-ascii?Q?nFw3bghs/OYTea5phqGSPwBsw/C1XDwlCSx00GMLMmjI+7drkGSuIH16bBkX?= =?us-ascii?Q?1W7k8DO40Q2bYWgsyqWwLDh2/+f7ZTaFIhkXZMosL+OnJDMBQIzwfzsgy0XQ?= =?us-ascii?Q?nLfwcm9sNq7kEjh9gZnu3VsGVVh02lhROxEMQk9u3LhYhNHXP00/FAvm/hU8?= =?us-ascii?Q?o8uRWLXIclPnJQMHuWRH+AQNZWrBHo0NGhQ3uSpJKdjqFnPBZiJKipbTtXTy?= =?us-ascii?Q?fJVTuxap76J0EGyyCO2rG4tGLs1+Xf1OXzscibBerIO5rDaPYXck83HVsXWI?= =?us-ascii?Q?uT8rhXm/suL7bq4YW3LBSa8qqQ+VxScHxz0iz1GXlFGLl5QXfkrLkLBzcSgm?= =?us-ascii?Q?/W1NPLjEUf5XcG5Q11Z+NOPiZvslIen+KKnMC1yuWEqMll3/alfY?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f9b345f-668a-40ee-0d31-08dec2d36878 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:23:58.0941 (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: kDs0TgljH6luu3rqHo0AjhUu++T4l7NgXKgdyHSbBNsxbg2aR4gDJXNmQi5fN/Dt/6+Pd2YBlWEhD4GLRi7OClgQKZ351C9igFnb8GRiCsPK6p1zLDg3jm+ljDaj7eYK X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang The PSIIER register controls two categories of interrupt sources: message-receive (MR) interrupts, which fire when a VF sends a mailbox message to the PSI, and VF FLR interrupts, which fire when a VF performs a Function Level Reset. The current helpers enetc_msg_enable_mr_int() and enetc_msg_disable_mr_int() use a read-modify-write sequence to update only the MR bits in PSIIER, intending to preserve any other bits that may be set. However, VF FLR interrupt support is not yet implemented, so PSIIER only ever holds MR interrupt bits at this point. The read-modify-write is therefore unnecessary overhead. Simplify enetc_disable_psiier_interrupts() to write 0 directly to PSIIER, disabling all interrupt sources at once, and simplify enetc_enable_psiier_interrupts() to write the MR mask directly without reading the current register value first. Rename both helpers from the MR-specific names to names that reflect their true scope, i.e. managing all PSIIER interrupt sources rather than just the MR bits. This prepares the code for a future patch that adds VF FLR interrupt support, at which point enetc_enable_psiier_interrupts() will be extended to also set the corresponding FLR bits. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc_msg.c | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index 7dcb1dcdec84..d9560e2c5385 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -11,23 +11,17 @@ ENETC_MSG_CLASS_ID_PERMISSION_DENY) #define ENETC_PF_MSG_SPEED(s) FIELD_PREP(ENETC_PF_MSG_CLASS_CODE, (s)) =20 -static void enetc_msg_disable_mr_int(struct enetc_pf *pf) +static void enetc_disable_psiier_interrupts(struct enetc_pf *pf) { struct enetc_hw *hw =3D &pf->si->hw; - u32 psiier; =20 - psiier =3D enetc_rd(hw, ENETC_PSIIER) & ~ENETC_PSIMR_MASK(pf->num_vfs); - - /* disable MR int source(s) */ - enetc_wr(hw, ENETC_PSIIER, psiier); + enetc_wr(hw, ENETC_PSIIER, 0); } =20 -static void enetc_msg_enable_mr_int(struct enetc_pf *pf) +static void enetc_enable_psiier_interrupts(struct enetc_pf *pf) { + u32 psiier =3D ENETC_PSIMR_MASK(pf->num_vfs); struct enetc_hw *hw =3D &pf->si->hw; - u32 psiier; - - psiier =3D enetc_rd(hw, ENETC_PSIIER) | ENETC_PSIMR_MASK(pf->num_vfs); =20 enetc_wr(hw, ENETC_PSIIER, psiier); } @@ -37,7 +31,7 @@ static irqreturn_t enetc_msg_psi_msix(int irq, void *data) struct enetc_si *si =3D (struct enetc_si *)data; struct enetc_pf *pf =3D enetc_si_priv(si); =20 - enetc_msg_disable_mr_int(pf); + enetc_disable_psiier_interrupts(pf); schedule_work(&si->msg_task); =20 return IRQ_HANDLED; @@ -545,7 +539,7 @@ static void enetc_msg_task(struct work_struct *work) } =20 out: - enetc_msg_enable_mr_int(pf); + enetc_enable_psiier_interrupts(pf); } =20 /* Init */ @@ -620,8 +614,8 @@ static int enetc_msg_psi_init(struct enetc_pf *pf) /* set one IRQ entry for PSI message receive notification (SI int) */ enetc_wr(&si->hw, ENETC_SIMSIVR, ENETC_SI_INT_IDX); =20 - /* enable MR interrupts */ - enetc_msg_enable_mr_int(pf); + /* enable PSIIER interrupts */ + enetc_enable_psiier_interrupts(pf); =20 return 0; =20 @@ -637,16 +631,16 @@ static void enetc_msg_psi_free(struct enetc_pf *pf) struct enetc_si *si =3D pf->si; int i; =20 - /* disable MR interrupts */ - enetc_msg_disable_mr_int(pf); + /* disable PSIIER interrupts */ + enetc_disable_psiier_interrupts(pf); =20 /* de-register message passing interrupt handler */ free_irq(pci_irq_vector(si->pdev, ENETC_SI_INT_IDX), si); =20 cancel_work_sync(&si->msg_task); =20 - /* MR interrupts may be re-enabled by workqueue */ - enetc_msg_disable_mr_int(pf); + /* PSIIER interrupts may be re-enabled by workqueue */ + enetc_disable_psiier_interrupts(pf); =20 for (i =3D 0; i < pf->num_vfs; i++) enetc_msg_free_mbx(si, i); --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012015.outbound.protection.outlook.com [52.101.66.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 931BB47A0DF; Fri, 5 Jun 2026 07:24:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644249; cv=fail; b=da5w7hOZpquBD+nETmlgh+vb5Fx7AL1pyYBEk5nmmUs7Qa5HkUpunIKkvJ4vhsNqKTWxXCXET+N8bdS8rs4PHKZxeuIw9EvYgvBKLf2V5CQSYaRkm8Luh7Kjn93EEORngxLHWtir86XHaZdDHcZ6E6TIIu2Re4GuSpmlDnPi3Nw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644249; c=relaxed/simple; bh=X2i31/wQdlL4zeZWp6Ndz8EEcayFTciPKW2vYJ7n97g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=n+Hu3twx6+jeuPuyJedBLgHL7DYkAqgSA8MtzZuySvfmRqlCBsiuMwLpD9LxQi64Hvg6stI9Q0HqRMNXT+JFJZ4vl/RXNJuWMFeYQpwJU2QP7HkJYe2t2TLhhs7YHg0wo2MKBghoKk3c6inRw1dFr8+QZt059hs19Yk/GmTQMjM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=LF812qrO; arc=fail smtp.client-ip=52.101.66.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="LF812qrO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DekHKAlVgMw8e7U7AU/V7EanXZVc4XEJkFB4Wl4uC1uwtzoFoOjPzkDOEKnqEttCz3OjHgrU6T+P6X/dyq9EzsRd8FdPakgL+FSKeuxk0wBwEScAj1AYUF19jJ8R8smxBOq4HzMfph2mgsXpOX5DK5coEIUcx4UZ7zdx3T07PHa2fTZzFYdK8IrjtkD1prskjmARoaP3Tj++t5lBLC89tBIuadGLEkZZljE4SbNnfzpVDdQTn39H6qD3cgZ9hiGjSYHbvPnlnoYFY3VAgNixTGhxbQwCC8bPCKk9MX+hZ5S7twnwyqYiDpqREBauArM+dUF8eBdcWGsvPY1UzrkO0g== 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=YVI3xtwuHMpsLIYnknGKARCh4CKvt+buvDUnCrro4Hs=; b=KhXKcPCuDaKzMwXqwMdz+UK+tqaU5M7qA84GA3wz+ajKHcZJUPuBDoL4FY6W0Pw0klt+zriG8iSVCCHlMHVtbO/Brc9D/0EC/WcAvOP+Wq/wUKVXe/6xQW0mGDoNbysol51kwFJCq7ieliH0MYBbeF0szMhs1yDWLVZUI3dhA65FXyb+HrZErnp72IHya+6ihS18vIxqhhvSr0JrDshGrq8OTltsWO6BVovuxn00n2cjIQ6Cb+HvI8i04njzre+fkQL9X4wKtEeFIOSx1wn4g+cDavLlXKSBRxuarbxeUb8V4EUoqKgdPDeMoNO5mZnh82ewKiJE2hEVQIRxC0bJAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YVI3xtwuHMpsLIYnknGKARCh4CKvt+buvDUnCrro4Hs=; b=LF812qrOvBXYIdJzR144X/ngyYzzJtH1X+yl2ywl8SL6a9s9kXKlNxREh66Q7e5nS+bYy6N/3Bt2PqknuqOhoOrtqisURLJVvHOKgjEdlRb5oFp0i1kEJjzac8l9viBNuwDGBhVA3SXENCGvtRUbh5zA2veEkz63XwcZZJe0E1TX4cxWSSFOnQKmqI+b53J8VAPDv2tm0SFiEHtuQ5w7SXS7QIPb30pXYH2SdBmIn79nx5uJZIYfZPZgXJnuiEFp0qKPe2Sb5GyPMlfrG8lkiQIX9oZIHIacNqlguuXKXiNY0MoKZo9rmdHnLLCbXuZx+1mKIH+S5Avu532WArkh/g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:24:05 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:24:05 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 11/15] net: enetc: restore VF MAC promiscuous mode after FLR for ENETC v4 Date: Fri, 5 Jun 2026 14:55:46 +0800 Message-Id: <20260605065550.3038579-12-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0356.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:219::12) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 9776621c-d9b7-4a17-a3f2-08dec2d36c8e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|6133799003|11063799006|18002099003|5023799004; X-Microsoft-Antispam-Message-Info: HjJ2hyLC4K6rNld9teEVuPGktNkNnrNI2hVlO+oIhXlyRXupT8KVjJzsFHoJJgu+eNma/nhizQKxslfDchMcRyojCi5GeFkcz2WTR9ysz35ItTZluoo8c5jWiLNmcKtnclYs1YnN925H3WEuw1PjR4qxIUHa0tBLYVhHIgsgBqjfAEl/VV/+SW0I5fqs6Se9cSHBJ6yO2TPoefBtdS2CVo7Ux0suxKI+vDRDXPv0zublx2aeBwx1SgeZQVfAuoRvhHiFx80cy1xfnLOuELE/BqAs8sCX4imNUu8eLq3ObPnVahWoiA+hahUFgLU2Kl76Wi6/YoKDBBSWZumLjQtNrrHvYZu3HTe5SfWXapFHGm3zwZGX54H4t5j3jA/mqsFrutiT+Y+fNJK9JW3yfDzt3SlPyqYCet94474GRjUaFhwxrF12xj2r5GlB2p1QDlejwogffUSPea2wM7xH2s/5zs7PNdzH4laP4gVRyhqzJD073bsUJtGWTLJQLNevrDLnflXvgxPV83ilrYnTm43crs5FJzKc01u41Vp/XY2XUEStdpFwxYPlT+82sdyQKbYGiyoEGli00otGpimAs4aKIu9sLpcGvf5/Ctn1kj5Rs777JFqFjAVthNjy94GWOoTsq/2PcWov+RdzE+aAZLPKSEqST3dE31EiXDDn1JsLmlW0iRdx0DT1AnjMrcrORAX4mALB0XVnUxqymtVvlbCTA2QOQCJJyYgjJahM4RqIjBc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(6133799003)(11063799006)(18002099003)(5023799004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XqnYMRgt2jXk8FfW+p3dfHlfWqlzIb70FRYiK53ijl1U0+WpzilStRn4Y7Sq?= =?us-ascii?Q?30vkWjdnUOMfKilZ4/te+mxM83R7MM68JYzDYgtf9CBissZ7YsrdOzGUQL7W?= =?us-ascii?Q?1rXIviliAqrlcoco5JRPJp9XueL5EKAJ9RTlzqKaaAnPGLS+uo0+TdZYeM2Z?= =?us-ascii?Q?LF62mWK6T2WCjTmAgdk2c1b8Gu+L/eU/XfsI5TVRWAiMQFU3n4P1fOBVgY7w?= =?us-ascii?Q?k+KsgGxWhMXJ9odVLxUG85kdef5orcOVutnRsd5FfMjPjpXljevB46pbLwXN?= =?us-ascii?Q?qL+XujslC0vMUMIgUbdfszN1XVB3Yk2DwVFiE04tpkEKLpWhxERu5bwpQg/+?= =?us-ascii?Q?z/zsN7lmYXRReRsj0aJ2JlI9w/hY5mqjhUC6XMuPa5e3RtRYBF7E83VjIajy?= =?us-ascii?Q?NYoz1XLX0EZYLX6kNp1adAZCYEt8Az/ONySzOcKsf3OJVZJw12w/Wxx4qIn5?= =?us-ascii?Q?guIe7aEH+7sppdILhgTC8Mg3raVa2t/5Z6cpl5jq2rCAZg+NC4NFWOR7teIb?= =?us-ascii?Q?Zf+IZ7I/6tmezKLV8LCGq0lfmLDirKFOjAo18s8EEFfnk1twL1BEs9TGOqK0?= =?us-ascii?Q?s5t70OBJ9ki3NRWlQLUrcHTj8r/E+FXjJmj9ii6vyLrmlmlonsM6/GhQrgSn?= =?us-ascii?Q?aF+2gS/zio2yVQKiGjRXjonK6bNQLAa3A9eDs3h2aiBO9aEXXrLTSflQ/4TU?= =?us-ascii?Q?yQEoPuMMqW8o0emmGiik82vB+MoiSoqNe86oVaPsm97VvuHefg33JDnIj17s?= =?us-ascii?Q?ywX/2iRlxejOMlMxe4+RdmBT8KIHtEL0jaszrs8zpfaAJ2uOHbvMpUCqYqWp?= =?us-ascii?Q?tQuCtiavDom1dUufjocJyAcbnqawqcNCc6x2H8LMgGWTun0YrS5gprAyvuM5?= =?us-ascii?Q?1qtq6E3U/xtwO7Y4taBQ/0q64GBBFot3hlqg6IYN70KEyfSL1Vvu/WyVob9j?= =?us-ascii?Q?vLcDKUGrJb+CSBFohL1xHzu5DVHl9YATs/DNtSaI3QJ0jXpz/mZ0SbLouiIC?= =?us-ascii?Q?duHs3o7OeYuFHgDOEhmSqXJMs3qxLR+oLkdakKaU72RcsVD5/t4a3Zufqudw?= =?us-ascii?Q?HPI/6GuJs1rjEP8od7pNExz8j2nH+JUwdH26Q7koMEHZxNCJKZQy0SxkMLhH?= =?us-ascii?Q?O7S7IbfFTU1hma32JO9c3gO3A8L/4Xj022TXwuHtS6zCkrkKc2GmjePsIi7a?= =?us-ascii?Q?pl/DACDiMLCR190rCuwANDMIz1w3KX1YJ5elbLHCMB8lHSWM0bmfww37ZjhU?= =?us-ascii?Q?JA2xuqhZ90RfQ8W+8vbaHa9SA0avbArhJwkU44UuOQfbofVUqfLuTbL8OsA/?= =?us-ascii?Q?mGfpyPP+lYuQRg3DAnSfBSVvmIGywaCdUuD+jtQTvL7DUgWyZd/jldst+y16?= =?us-ascii?Q?rOYCpBuMh71oVY4AfhqgoRDmbtIWvXHmG9L3F8liW/Cr1mBTSVBBsCrExmH9?= =?us-ascii?Q?2RQ3KcJAQRbsdEfPxmXqt9WaNGjEncQYevzkres8awGRvKQu3CGjnVY6oGcP?= =?us-ascii?Q?WpE3kfipoLB2+zTuK38nH6y3zbOb8p4aUk3YXkvFnyEncZG5gwx3bvIaWF8Y?= =?us-ascii?Q?ELF0H0jwS/B81RPKsRs+8O80kLAyGwz+d/bE5gR020umT1v6JHLnkG+fhuZ2?= =?us-ascii?Q?8sUqrqzaX4p2MRHX59NtTONBXvoxUih2Ur4bwKG/l6ARZgHbcBAXQ18yvvFV?= =?us-ascii?Q?F0wb/H1G3/HiUL1PNQs9+F0S1sZtd4XER7rTAerjs8BSd8zzBp/Q++bt1j6M?= =?us-ascii?Q?hPLpEq8woBRd7YdBd6cNOgH3ncnuFtcbVegnEXaOHyrVF7e9fGia?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9776621c-d9b7-4a17-a3f2-08dec2d36c8e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:24:04.9796 (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: Ab7GfWno9660tSYverXChXqlpJdlK+Vie9parFuoqVsIuwUGD/srfyMp6FOG0ktMZ8Q4+D3rqidPZwwJT1tagKuysmSbEm8eMuPNauCBKHheyAHDbHUUy5CMx35pnAr3 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang On ENETC v4, a PCIe VF Function Level Reset (FLR) resets certain bits in PF register space, including PSIPMMR[SIn_MAC_UP] and PSIPMMR[SIn_MAC_MP], which control the unicast and multicast promiscuous mode for the corresponding SI. The reset (default) value of these bits enables promiscuous mode, meaning that after a VF FLR, the SI is left in promiscuous mode regardless of the configuration set by the PF driver prior to the reset. This is a potential security vulnerability: a malicious VM could deliberately trigger a VF FLR to force promiscuous mode on its SI, allowing it to capture network traffic not destined for that VF. To mitigate this, make the following changes: - Add ENETC_VF_FLAG_UC_PROMISC and ENETC_VF_FLAG_MC_PROMISC to enetc_vf_flags to track the PF-managed promiscuous mode state for each VF. - Update enetc_msg_set_vf_mac_promisc_mode() to keep these flags in sync whenever a VF requests a promiscuous mode change via messaging. - Update enetc_pf_set_vf_trust() to clear both promisc flags when a VF is untrusted, so that a subsequent FLR cannot restore promiscuous mode that the PF has already revoked. - Add a vf_flr_handler callback to enetc_pf_ops. The ENETC v4 implementation re-applies the tracked UC/MC promiscuous mode settings to the hardware after each FLR, ensuring the hardware state matches the PF-managed policy rather than the insecure reset default. - Add enetc_vf_flr_handler() in enetc_msg.c to detect FLR events via the PSIIDR register and dispatch to the vf_flr_handler callback. Invoke it at the start of enetc_msg_task() before processing VF messages. - Enable FLR interrupts in PSIIER only when a vf_flr_handler callback is registered, keeping ENETC v1 behavior unchanged. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc4_pf.c | 21 +++++++++ .../net/ethernet/freescale/enetc/enetc_hw.h | 12 +++++ .../net/ethernet/freescale/enetc/enetc_msg.c | 44 ++++++++++++++++++- .../net/ethernet/freescale/enetc/enetc_pf.h | 3 ++ .../freescale/enetc/enetc_pf_common.c | 4 +- 5 files changed, 81 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index 2e081a59154e..15c8b704b2b7 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -283,11 +283,32 @@ static void enetc4_pf_set_mac_filter(struct enetc_pf = *pf, int type) enetc4_pf_set_mac_hash_filter(pf, ENETC_MAC_FILTER_TYPE_MC); } =20 +static void enetc4_pf_vf_flr_handler(struct enetc_pf *pf, int vf_id) +{ + struct enetc_hw *hw =3D &pf->si->hw; + struct enetc_vf_state *vf_state; + bool uc_promisc, mc_promisc; + + vf_state =3D &pf->vf_state[vf_id]; + mutex_lock(&vf_state->lock); + + uc_promisc =3D !!(vf_state->flags & ENETC_VF_FLAG_UC_PROMISC); + mc_promisc =3D !!(vf_state->flags & ENETC_VF_FLAG_MC_PROMISC); + + mutex_lock(&pf->msg_lock); + enetc4_pf_set_si_mac_promisc(hw, vf_id + 1, UC, uc_promisc); + enetc4_pf_set_si_mac_promisc(hw, vf_id + 1, MC, mc_promisc); + mutex_unlock(&pf->msg_lock); + + mutex_unlock(&vf_state->lock); +} + static const struct enetc_pf_ops enetc4_pf_ops =3D { .set_si_primary_mac =3D enetc4_pf_set_si_primary_mac, .get_si_primary_mac =3D enetc4_pf_get_si_primary_mac, .set_si_mac_promisc =3D enetc4_pf_set_si_mac_promisc, .set_si_mac_hash_filter =3D enetc4_pf_set_si_mac_hash_filter, + .vf_flr_handler =3D enetc4_pf_vf_flr_handler, }; =20 static int enetc4_pf_struct_init(struct enetc_si *si) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_hw.h b/drivers/net/= ethernet/freescale/enetc/enetc_hw.h index 37c6060ccc82..62844344ff29 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_hw.h @@ -109,6 +109,18 @@ static inline u32 enetc_vsi_set_msize(u32 size) =20 #define ENETC_PSIIER 0xa00 #define ENETC_PSIIDR 0xa08 + +/* VF FLR interrupt mask, n is the active number of VSIs. + * It is available for ENETC_PSIIER and ENETC_PSIIDR registers. + */ +#define ENETC_VFFLR_MASK(n) \ + ({ typeof(n) _n =3D (n); (_n) ? GENMASK(16 + (_n), 17) : 0; }) + +/* VF FLR interrupt bit, n is VSI index. It is available + * for ENETC_PSIIER and ENETC_PSIIDR registers. + */ +#define ENETC_VFFLR_BIT(n) BIT(17 + (n)) + #define ENETC_SITXIDR 0xa18 #define ENETC_SIRXIDR 0xa28 #define ENETC_SIMSIVR 0xa30 diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c b/drivers/net= /ethernet/freescale/enetc/enetc_msg.c index d9560e2c5385..6aacb22cfa82 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c @@ -23,6 +23,9 @@ static void enetc_enable_psiier_interrupts(struct enetc_p= f *pf) u32 psiier =3D ENETC_PSIMR_MASK(pf->num_vfs); struct enetc_hw *hw =3D &pf->si->hw; =20 + if (pf->ops->vf_flr_handler) + psiier |=3D ENETC_VFFLR_MASK(pf->num_vfs); + enetc_wr(hw, ENETC_PSIIER, psiier); } =20 @@ -184,11 +187,23 @@ static u16 enetc_msg_set_vf_mac_promisc_mode(struct e= netc_pf *pf, int vf_id, =20 mutex_lock(&pf->msg_lock); =20 - if (type & ENETC_MAC_FILTER_TYPE_UC) + if (type & ENETC_MAC_FILTER_TYPE_UC) { + if (promisc) + vf_state->flags |=3D ENETC_VF_FLAG_UC_PROMISC; + else + vf_state->flags &=3D ~ENETC_VF_FLAG_UC_PROMISC; + pf->ops->set_si_mac_promisc(hw, si_id, UC, promisc); + } + + if (type & ENETC_MAC_FILTER_TYPE_MC) { + if (promisc) + vf_state->flags |=3D ENETC_VF_FLAG_MC_PROMISC; + else + vf_state->flags &=3D ~ENETC_VF_FLAG_MC_PROMISC; =20 - if (type & ENETC_MAC_FILTER_TYPE_MC) pf->ops->set_si_mac_promisc(hw, si_id, MC, promisc); + } =20 mutex_unlock(&pf->msg_lock); =20 @@ -507,6 +522,29 @@ static void enetc_msg_handle_rxmsg(struct enetc_pf *pf= , int vf_id, kfree(msg); } =20 +static void enetc_vf_flr_handler(struct enetc_pf *pf) +{ + u32 flr_mask =3D ENETC_VFFLR_MASK(pf->num_vfs); + struct enetc_hw *hw =3D &pf->si->hw; + u32 flr_status; + + if (!pf->ops->vf_flr_handler) + return; + + flr_status =3D enetc_rd(hw, ENETC_PSIIDR) & flr_mask; + if (!flr_status) + return; + + for (int i =3D 0; i < pf->num_vfs; i++) { + if (!(ENETC_VFFLR_BIT(i) & flr_status)) + continue; + + /* Clear FLR interrupt status, W1C */ + enetc_wr(hw, ENETC_PSIIDR, ENETC_VFFLR_BIT(i)); + pf->ops->vf_flr_handler(pf, i); + } +} + static void enetc_msg_task(struct work_struct *work) { struct enetc_si *si =3D container_of(work, struct enetc_si, msg_task); @@ -515,6 +553,8 @@ static void enetc_msg_task(struct work_struct *work) u32 mr_status, mr_mask; int i; =20 + enetc_vf_flr_handler(pf); + mr_mask =3D ENETC_PSIMR_MASK(pf->num_vfs); mr_status =3D (enetc_rd(hw, ENETC_PSIMSGRR) & mr_mask) | (enetc_rd(hw, ENETC_PSIIDR) & mr_mask); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index 7ca85731d6cc..650735a7de81 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -10,6 +10,8 @@ enum enetc_vf_flags { ENETC_VF_FLAG_PF_SET_MAC =3D BIT(0), ENETC_VF_FLAG_TRUSTED =3D BIT(1), + ENETC_VF_FLAG_UC_PROMISC =3D BIT(2), + ENETC_VF_FLAG_MC_PROMISC =3D BIT(3), }; =20 struct enetc_vf_state { @@ -38,6 +40,7 @@ struct enetc_pf_ops { enum enetc_mac_addr_type type, bool en); void (*set_si_mac_hash_filter)(struct enetc_hw *hw, int si, enum enetc_mac_addr_type type, u64 hash); + void (*vf_flr_handler)(struct enetc_pf *pf, int vf_id); }; =20 struct enetc_pf { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index 66a9a734d18e..1aecaba04cfd 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -480,7 +480,9 @@ int enetc_pf_set_vf_trust(struct net_device *ndev, int = vf, bool setting) if (setting) { vf_state->flags |=3D ENETC_VF_FLAG_TRUSTED; } else { - vf_state->flags &=3D ~ENETC_VF_FLAG_TRUSTED; + vf_state->flags &=3D ~(ENETC_VF_FLAG_TRUSTED | + ENETC_VF_FLAG_UC_PROMISC | + ENETC_VF_FLAG_MC_PROMISC); =20 /* Clear MAC hash filters and disable MAC promiscuous modes * if the VF is untrusted. --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013026.outbound.protection.outlook.com [52.101.83.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 39EEC478842; Fri, 5 Jun 2026 07:24:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.26 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644256; cv=fail; b=LCZ/LZXArxHQ2fsQPEOcyVWC9jomnvYeIq7fVLEDGQOZXahnyggozOlJ5wgFj5QGPvW0oCvSjOPJ/LICe+3eND2ACHkui6K1j/swngJ+6x2yWH1ZNKo04GjDemv9EnAsLbCjR7lVHJQTde90IuBxr6SUuHgXHCbs2JSJxHVTVbM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644256; c=relaxed/simple; bh=ckl+oYCgIHoDzIZpu4nMfCRfQfi/F7Sa1kaxctMVKvM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=tjYAs3Ai/iyz9NH3RHfu187nX+cDI5G+55xBkRSVy5S4jtYJfMMtiAwzLAZfdjHtOc3Q1qPZLeovknu1TMy2Dr2vOaS8bVMa1q85oDyeeMMdFbVosac0IPMRnHecABm49II3OSMalpL17nk88lBkrioTGfdRtCkRYvJJVU3luSE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=JYTCZtev; arc=fail smtp.client-ip=52.101.83.26 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="JYTCZtev" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zIjDHx24EoiOjHYvZbP+z0TduRH0a9t42QfQbLE+eLCI+sVWOmwwbN2M3qrUI6rGZldcxPmjuPpR4P8ueNC5KE9xbHHIenCM4hCLPBVIo8uoLtoxZqAfi/lPZ40lZsYBpWrltHzX7lzc/duQPsgYCf/lPX7EIofKJDp+ONy6uVghsXXdfXOcXTFhUAcQqMtWjqrdDp/wRH2XfRoCuoAZXZOSh7S+Mb69P4rXujDsBmoaMqgQbzHozgLjrBx8ywuLsz7+Q/gmSSZMenOwO85f74CuY0vUL0VqL0YDGRRIlqqimauO81NcIL7g/R0zgs1yHSJakjjmdqG96Ou9kQ1okQ== 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=n0UTfPREncnjtEMgWUMGZYDqzTlqtxc/Gzw9JDzqo4s=; b=tdgbQ9GSK+VmkN3bDw/qAzWDCzivC/7L67Ei3G61lsJYW/VHZvtc/qrwYyJzDxGpk4CFnm7Ii/GqmPTh6QO9/312ywrz9HliPJ2QzthHOERGecFOfeF1hNuybxXRYU99nMzuaH3KVYHk/ZlRCLFopZAuUk2RPqRejJ5WPnvDtOQFrl0verQYBf6uKeH644dcEEZ40Ebxs4qgObWtG94JuUsxdWb5yIa+Fg1/md5yj7h+oLH0tYyJToEtuDJFwgZ/fZ2nbF5pCwuYXfof8qRqwFBKxmIg7KgbwN984enKgROg02GOKkEGhH6zGmUzP7H/fqig+MhacRE5fuPyidMKbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=n0UTfPREncnjtEMgWUMGZYDqzTlqtxc/Gzw9JDzqo4s=; b=JYTCZtev7OSX4ykh2B4lBQprIfkR6iUSJL+X9DOWjrwQe2NRszrljiKmDLcpJMvVxOVfuB3ncaMbC84AfxK9VKj79uM3l2o8RTFJ9uZN09B7DcD4bzjH0LLpOyNV3xg95+74JW+w7wgpKTc3dVO+SccUL2QL0+a+IHL9wlK7zVs3U4hy9FLFTckLEooDRcEOmY3bPUFy0mkofy9QyuEeRECkKvBQQxDlu93nfiJw0qxkdXHePzsb38URSiNaAGLVG8L06RITlNgxxcDqsjJUf1f4NLrXMNrE8O7MVK9dBLyZ//QdTe+QiB6YkZLmkW5VKDNg0y30fpIwZPZ3J6+hvg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:24:11 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:24:11 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 12/15] net: enetc: add VF support for i.MX94 and i.MX95 Date: Fri, 5 Jun 2026 14:55:47 +0800 Message-Id: <20260605065550.3038579-13-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5PR01CA0010.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:174::12) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: f8e0c715-a7ec-4d1b-89a1-08dec2d37042 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|6133799003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: PhBYZmWl7UOP4M9e8XkdDqtR/4slbWceHxNE6ZIvIsRA0nKWzbSUywNgm5hbuK14AzZJ2ocrY1SlGBeGzwnL23xzRuAkHdaWBA68YcwxmeaPM/i9vdTRvUvqxqJhl7ff/if0ejitJA3aP4DM4yBXG8IOY0Hl/QTWh1k8ok+fCJcK1rpyfexpvU1G+15dPlHp38ny4N1LUG5mVq7bdjn9XcXUwazF15ET/rSPLcGs1PVtJzMlkMJ8i9ZI7DkUv0zIZ3BFO5ny/Sy+Pb7xzPEX0ksMQoGeB2eHqNeaEGKM//w6CPuQG4IR2WX1ImelvbLkoV+Dt8fEkv6V1vi/HvC9H3JZCm2I4mVkP6Rj/HsZARM40BRHPRyZZb7NEZeStWcaG6pA0j2i4VRqbLQBHVKhU2Rvp3/NWokoWhX3dZfOkJmuljvDYGxKkhH2w/whMP/W07ekt0yCeLFRFzx8jF+EjCLF2ZUCQbt1w9+A8uKkrQSNoKZ81UQjNltFe01ImIp/NvQEqSynQKrRO9LiXCRyfWnhRGZYHFz+9FU1jHWJTbKuQD78PgCFKEGMg9Kkn2Z9HKtfYl/egTYNYCzyLiyieOkn5fB4j/h2ACG46WYOkt66sbvTjHUsuyeZ/rQRPPfgJBuepITq9iU5ZkA82Okd/gi7KoMkpdYni0eLuh1NpbmT26lyF9rfvbSSDbdqL6nFqte2/YyNcJg77KgN2FAUwdws4iGLyTuhJlaWkksz/NU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(6133799003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KIqqOVjGVMDFTx3Rn70lHKDSO2yLdMXa/a+/9I6up9ozRa1OXiLPdS8AuUxe?= =?us-ascii?Q?ddb2WSowMMEQxTEja/QhJvSB/VvNGvTK5JOAGq6QKdng0ehjRW8Jjg4aXDP7?= =?us-ascii?Q?W3EYwQV0uaAks5d+uT2iSgQr3bRDZJ0vAQp5k7mdG3+GMsbHMWnnTiT/zLSt?= =?us-ascii?Q?xCLug4aeitXQCs3N03pAJQ2wiLHm1qQcNr2D2J5okDzhlRgKHs/ld3QwjALa?= =?us-ascii?Q?urT4e4M9jL2OGe/I4VjnsvBlLd5xsknB5vNxzKXzSX5TDTGgRA8EZ2f+RU+W?= =?us-ascii?Q?eg+HYR9A7LjjFJ4rLUGc/lc8OY+B9NrQJCdCo2wXrmXxynt672MVqkydwuNK?= =?us-ascii?Q?hnfOr6YgwhCSaR7tNbcspMzs/tN6CSeQzR9n96DTntQZPPy+GCdO1M6l5mm+?= =?us-ascii?Q?x1FlrI2uoMlLeqm/tiviWVHT5yqU39rs5zZ/9EVMP5WkZ0k1r+xnirv56bMh?= =?us-ascii?Q?G3nAzEkf2g7aonNKP51b7zmm/IhQeaqnNUvBTaSyWN1svy9NQcfx4ifi/qqP?= =?us-ascii?Q?4n7QImi53Q8PYLH/wXbB41QvIAEKL2Zzu13Cvgv1wH4/hiSxm1mc3glCWO1t?= =?us-ascii?Q?9J3emkCACBGFCMhH4LP7YzEPQA7y3fyL2sI1NbwRvksdBH/REpKZsaTaFHxM?= =?us-ascii?Q?WwrJGgX76yccBHc4/oit09VNyyBbWUZQofHsGfTICrg+AbnXQKLKEItdXPxD?= =?us-ascii?Q?vn+q00QtIgQB2y60eHczchb7IDmSefTuMae/OJ8BZqhHnGindUnKHwXmIkJn?= =?us-ascii?Q?eUcH/6K+uIIYsgAvtAURuH6+VY90rBQtzgHD4XIc8JoH7lsY63PwrS3KvHmr?= =?us-ascii?Q?0lzLrZCHxsAMIy8CHI9BdJwcR3uzJnVD1WpUGp7JiPRcuEVEz2jbb0q6GVZE?= =?us-ascii?Q?Ho7JbQOiv2et2tHSW0u12nG4mzh8oHIdjWtTo+ye4BUKiu4WLhXvLf3sdjMj?= =?us-ascii?Q?Bm8xdrBhW/bwi2MYkachvV1784Hw2eLj/tObD51IL1w1rGA6g8BSz5taLDE9?= =?us-ascii?Q?o2Qq2V66GTtVg+9G7y87UaZVAjBi9+jOs7IV7KL9XsKCenElUtaStMVXbOlk?= =?us-ascii?Q?nGAfnDB3OBrKEQbCbxQ9nD/VxWv0pUCIm5sm5wJySK+Y/MELxNZFqc3UYCSD?= =?us-ascii?Q?/NmqVsuhX9PUenbTc/1HDOYBxQbODQp10uI69Ax08ppquXtGtJHKYdMyJYWy?= =?us-ascii?Q?UPqMw95hk88XcX1gGiSydDeKQ632MnGLFyxB1jla19yrzkRRaicnIha+jvGa?= =?us-ascii?Q?e2O+XqFnCQ/mjTjw5/UeH9kMJsauC/RUp56Llao1iGn3fzKet5FoXMDqjXhc?= =?us-ascii?Q?3oAeZPL42xfsqAk1xhxY3mKJlVd7yFpw5czhrGmp7S3gAeizWs16wUzjJ2ji?= =?us-ascii?Q?YEe6t+2RygpUt+r2plCZ+A5K2diuPjciUtpAqGKzj/t9hPXK2YEjV4GxvwwO?= =?us-ascii?Q?WwwT6g7sYp/ZZX9zogItC8VePIEDsn9uop3OCtrwVWf3A1igVmLBzim0xSpK?= =?us-ascii?Q?z04pebYJY8cwLZWR4IQkP27o1drer0VY5OEwGXZS5RjI9dEea6oF3a27pflR?= =?us-ascii?Q?xj6Uf6+18C6a5ww6u9jyy9G4SAqVeOuLSBC6FUbTJ+Wuy/tqdV/e/ptp4kwk?= =?us-ascii?Q?3oMkRTeVKBUrtDmqrn504Czo87z3VnMyK71E0JZ94go67ov3RomYtDDzdxKd?= =?us-ascii?Q?HnOLoFkk833NTOkmXlFtzt6qmk04dJR7WGXAF1YG6wrFVG466FkiZ1wmAFHN?= =?us-ascii?Q?+PToZ/00ko8FIdFx40G+5L09Fj2N8B5KpI0/XSe4qXjoP7JgZhir?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8e0c715-a7ec-4d1b-89a1-08dec2d37042 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:24:11.1802 (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: 9dDwQyHifklPf2Wrovbc4miFfBdYgLrVcIWVmKLmERhY19uYI2ZP8O5hUulH5bQPANKJv0eE5l2dk+8d7YhWfcYwemQcjqg8dfD3v/ftpGD1/kV8ARfJE8Ytdae72Xj/ X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang This patch adds VF support for i.MX94 and i.MX95 platforms. Compared to the LS1028A ENETC, the VF device ID has been updated to 0xef00. On i.MX95 (v4.1), each ENETC instance supports 2 VFs. The i.MX94 (v4.3) has two types of ENETC with different VF capabilities: - standalone ENETC (same as i.MX95): does not support VFs - internal ENETC connected to the CPU port of NETC switch: supports 3 VFs The driver is updated to recognize these SoC-specific VF capabilities and handle each ENETC instance accordingly. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/Kconfig | 1 + drivers/net/ethernet/freescale/enetc/enetc.c | 15 ++++++++++++++ .../net/ethernet/freescale/enetc/enetc4_hw.h | 1 + .../net/ethernet/freescale/enetc/enetc4_pf.c | 10 +++++++++- .../ethernet/freescale/enetc/enetc_ethtool.c | 6 ++++++ .../net/ethernet/freescale/enetc/enetc_vf.c | 20 ++++++++++++++++++- 6 files changed, 51 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/Kconfig b/drivers/net/eth= ernet/freescale/enetc/Kconfig index db5c17a44613..f425f82a6213 100644 --- a/drivers/net/ethernet/freescale/enetc/Kconfig +++ b/drivers/net/ethernet/freescale/enetc/Kconfig @@ -69,6 +69,7 @@ config FSL_ENETC_VF depends on PCI_MSI select FSL_ENETC_CORE select FSL_ENETC_MDIO + select NXP_NTMP select PHYLINK select DIMLIB select CRC_ITU_T diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index aa8a87124b10..fdceaf36daa7 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -3745,6 +3745,13 @@ static const struct enetc_drvdata enetc_vf_data =3D { .eth_ops =3D &enetc_vf_ethtool_ops, }; =20 +static const struct enetc_drvdata enetc4_vf_data =3D { + .sysclk_freq =3D ENETC_CLK_333M, + .tx_csum =3D true, + .max_frags =3D ENETC4_MAX_SKB_FRAGS, + .eth_ops =3D &enetc_vf_ethtool_ops, +}; + static const struct enetc_platform_info enetc_info[] =3D { { .revision =3D ENETC_REV_1_0, .dev_id =3D ENETC_DEV_ID_PF, @@ -3758,6 +3765,10 @@ static const struct enetc_platform_info enetc_info[]= =3D { .dev_id =3D ENETC_DEV_ID_VF, .data =3D &enetc_vf_data, }, + { .revision =3D ENETC_REV_4_1, + .dev_id =3D NXP_ENETC_VF_DEV_ID, + .data =3D &enetc4_vf_data, + }, { .revision =3D ENETC_REV_4_3, .dev_id =3D NXP_ENETC_PPM_DEV_ID, @@ -3767,6 +3778,10 @@ static const struct enetc_platform_info enetc_info[]= =3D { .dev_id =3D NXP_ENETC_PF_DEV_ID, .data =3D &enetc4_pf_data, }, + { .revision =3D ENETC_REV_4_3, + .dev_id =3D NXP_ENETC_VF_DEV_ID, + .data =3D &enetc4_vf_data, + }, }; =20 int enetc_get_driver_data(struct enetc_si *si) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h b/drivers/net= /ethernet/freescale/enetc/enetc4_hw.h index f18437556a0e..7595c7d80d0d 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h @@ -12,6 +12,7 @@ #define NXP_ENETC_VENDOR_ID 0x1131 #define NXP_ENETC_PF_DEV_ID 0xe101 #define NXP_ENETC_PPM_DEV_ID 0xe110 +#define NXP_ENETC_VF_DEV_ID 0xef00 =20 /**********************Station interface registers************************/ /* Station interface LSO segmentation flag mask register 0/1 */ diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index 15c8b704b2b7..868ed694e120 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -314,11 +314,15 @@ static const struct enetc_pf_ops enetc4_pf_ops =3D { static int enetc4_pf_struct_init(struct enetc_si *si) { struct enetc_pf *pf =3D enetc_si_priv(si); + int err; =20 pf->si =3D si; - pf->total_vfs =3D pci_sriov_get_totalvfs(si->pdev); pf->ops =3D &enetc4_pf_ops; =20 + err =3D enetc_init_sriov_resources(pf); + if (err) + return err; + enetc4_get_port_caps(pf); enetc4_get_psi_hw_features(si); =20 @@ -1208,6 +1212,9 @@ static void enetc4_pf_remove(struct pci_dev *pdev) struct enetc_si *si =3D pci_get_drvdata(pdev); struct enetc_pf *pf =3D enetc_si_priv(si); =20 + if (pf->num_vfs) + enetc_sriov_configure(pdev, 0); + enetc_remove_debugfs(si); enetc4_pf_netdev_destroy(si); enetc4_pf_free(pf); @@ -1225,6 +1232,7 @@ static struct pci_driver enetc4_pf_driver =3D { .id_table =3D enetc4_pf_id_table, .probe =3D enetc4_pf_probe, .remove =3D enetc4_pf_remove, + .sriov_configure =3D enetc_sriov_configure, }; module_pci_driver(enetc4_pf_driver); =20 diff --git a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c b/drivers= /net/ethernet/freescale/enetc/enetc_ethtool.c index 71f376ef1be1..246852e453a0 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c @@ -859,6 +859,9 @@ static int enetc_get_rxnfc(struct net_device *ndev, str= uct ethtool_rxnfc *rxnfc, struct enetc_ndev_priv *priv =3D netdev_priv(ndev); int i, j; =20 + if (!is_enetc_rev1(priv->si)) + return -EOPNOTSUPP; + switch (rxnfc->cmd) { case ETHTOOL_GRXCLSRLCNT: /* total number of entries */ @@ -903,6 +906,9 @@ static int enetc_set_rxnfc(struct net_device *ndev, str= uct ethtool_rxnfc *rxnfc) struct enetc_ndev_priv *priv =3D netdev_priv(ndev); int err; =20 + if (!is_enetc_rev1(priv->si)) + return -EOPNOTSUPP; + switch (rxnfc->cmd) { case ETHTOOL_SRXCLSRLINS: if (rxnfc->fs.location >=3D priv->si->num_fs_entries) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_vf.c b/drivers/net/= ethernet/freescale/enetc/enetc_vf.c index 9cdb0a4d6baf..9b16226602aa 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -281,6 +281,12 @@ static void enetc_vf_netdev_setup(struct enetc_si *si,= struct net_device *ndev, ndev->features |=3D NETIF_F_RXHASH; } =20 + if (si->drvdata->tx_csum) + priv->active_offloads |=3D ENETC_F_TXCSUM; + + if (si->hw_features & ENETC_SI_F_LSO) + priv->active_offloads |=3D ENETC_F_LSO; + /* pick up primary MAC address from SI */ enetc_load_primary_mac_addr(&si->hw, ndev); } @@ -292,6 +298,13 @@ static const struct enetc_si_ops enetc_vsi_ops =3D { .teardown_cbdr =3D enetc_teardown_cbdr, }; =20 +static const struct enetc_si_ops enetc4_vsi_ops =3D { + .get_rss_table =3D enetc4_get_rss_table, + .set_rss_table =3D enetc4_set_rss_table, + .setup_cbdr =3D enetc4_setup_cbdr, + .teardown_cbdr =3D enetc4_teardown_cbdr, +}; + static int enetc_vf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -307,7 +320,11 @@ static int enetc_vf_probe(struct pci_dev *pdev, =20 si =3D pci_get_drvdata(pdev); enetc_vf_get_revision(si); - si->ops =3D &enetc_vsi_ops; + if (is_enetc_rev1(si)) + si->ops =3D &enetc_vsi_ops; + else + si->ops =3D &enetc4_vsi_ops; + err =3D enetc_get_driver_data(si); if (err) { dev_err_probe(&pdev->dev, err, @@ -402,6 +419,7 @@ static void enetc_vf_remove(struct pci_dev *pdev) =20 static const struct pci_device_id enetc_vf_id_table[] =3D { { PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, ENETC_DEV_ID_VF) }, + { PCI_DEVICE(NXP_ENETC_VENDOR_ID, NXP_ENETC_VF_DEV_ID) }, { 0, } /* End of table. */ }; MODULE_DEVICE_TABLE(pci, enetc_vf_id_table); --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011013.outbound.protection.outlook.com [40.107.130.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E0E9480948; Fri, 5 Jun 2026 07:24:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644261; cv=fail; b=PYxGNvZjJDzjXdLvlac66PehX51GkHpF2bQsBpioced4qBjeQnSrwrRydjMrtTduUzYJhoYFAC3blfK/KjPZl1sNxWB5cLEjpfkenJgAdZowb655KftFR9QIUlDDKgvqFrqHvktJrwUgjY41RJt4xv6kAZc2DrdHAH364rmvoKM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644261; c=relaxed/simple; bh=uiDf2+tQG+6NfLNA9xnILlq2B39WXiByo32SQUe7CyE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=t4M6hRwq/fdeHifTFsDcRudPArrTEPC08g3/rFJKIKPbicv6qc4QJgWq45g9H2PtzwFrsn5gDiSUSc4hVBsbL6TsJ05bGbFfK2LtmxemXp89HKo6wxR5TVgpr9CTlc0CDdU8n90+VrHuFUZitBKnaRJg/9hi9mvawpAdw0runN0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=x68qEArI; arc=fail smtp.client-ip=40.107.130.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="x68qEArI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aEbLTTZqDqtXZp4Cj2vGAo22OgFDTlPYiyd9WmGVUgvl18jLekQe9p2hfaz4wjOEm/FYuD+pxa7rTjiRwYPtzy4traA+RHbS/f+QCMzDteaY1tCrlcj0e+tQR465xutNUaHF8f2jOJR+zDFgXIHUcs4q6lVeI177GFpWoN3IAKli9RkcqYfnfPhQ5D9fZDJwFWYU0s2OBRT2Bb1MJdXRdz5zaY6CtvEsGPPMYPQku+rmtp8HJTSBHrntCEX7Lb2Rw2rWS79/7oFGprZY6y7+OQc1fBjZg7ZuEj6obcN6lHwb3j6uU/+rWAWOELlSRUdXm3FNfWinwO3/PMhGXxddSA== 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=KXlsjuVC1mNpqCs/yAMxJJp8NbOG/3AE2IZgdG/Un98=; b=oYj+PVXux+SaLFg4K656u5V4jj/lxpMDz0DTpT5+dldonSYEdceKgtPBcPeaSOwVn7L7eU72dI5sZyVvBZiO8BRHkDum1S8tgrth5ZBFFnyc95MUi5i/MLWSmNibaUqDZ7klogOLBrGbyvaljltaIEdlUwfTOjwNOh/mfNciD+lNs0mQmj38wlmeyekGuwxSvXL6lJ2MVXPNYSRALkzvK4XOV8k65F2ACQQcI6brN8MXafkqMqfnMWsSK15NglD6Ma5wNOabLga04ejNs7o2T9Et/5Kb9C5MAYyIdR9xMDtzlHpWZxvm1n1lx9DlLYYoNy196IPrHNCdRA93mNkOZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KXlsjuVC1mNpqCs/yAMxJJp8NbOG/3AE2IZgdG/Un98=; b=x68qEArIXToRXT9mEjo+WWNYAdTX0BV6ISKyeYUP6Jy1aer/KsTT28g/NUwdwAye2GGd4JIeXY4/CBwm7IK0PNGqkUVrZwDrfL9lvjFxMtkgICc/vs8RlEEDAiTLuR06HxMcaVnjBrK1V7gdSU+MJF8TsIKUUr/xKrXo2G4jJNObz9PbXwvCQ5UrmG3249PFuKmel/JAmuLc8tc3KV95JRsdGPwseaANAXU5x2v0NOGo3hDOruWSTtr+BQ7PMKcQxAtCwpKhHO5PhwMmrjvpPwHHq8DZEdV7Tu7Zcap57xyRrpOCURv1vP8lYrYzWdNW0hDoFjIqQLENUlkp5jS0kA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:24:16 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:24:16 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 13/15] net: enetc: implement ndo_set_rx_mode_async for ENETC v4 VF Date: Fri, 5 Jun 2026 14:55:48 +0800 Message-Id: <20260605065550.3038579-14-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA0PR01CA0087.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ae::17) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: e2034227-c824-486c-b4f9-08dec2d3739f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|6133799003|11063799006|18002099003|5023799004; X-Microsoft-Antispam-Message-Info: KvCoG7m2Zl0lF/SPS0VwYU/vtk/tKLA/T1QkmnqsdZwTW9k8fXHhF0WcuJTDinimBcQ2ADJXj4rs9q2X+PRcxwLhG+P+/GOnb+5pib9AZaastZb9Yuc+9WjsbyEt2xwEDaNwqzYsPjGo++bJypGHHBl+b60+wvLbGtZ7lioySMuE3ZsxAVShE6fSiH+Sql6Vek7IfW116A+szQxRuav8CqjWmqbN6lAzNhL/IAxnr9jD5kscDCmkmWwvWJIW9b8dbdE4Ll/pc3/cznyTAB/RIlE0E+1lxdWeIP3QSqlPlYozdUBKn6IGLgBz55o7qh6ZPvLtz4rF0EeG0MbEmXUsI+Q+Xhjxp/T5RfWquw7PyP+RJnIg1RIctYHY4dm05fl1UNxw8izqUo9oCk/8K0Y7Sm6Y4oh1EFx8AdENv+88QR82k6Z+mJE634EY+WjthwQ2KQiDt/O9QBpAmasShTQWmdQiGUoCHNoB0a+rFGsA/ayCA8bz7hvj5RNRdxjMWUHUgXQ+Qqdc+JwXAp9SRcY0hCcrq3f/lyBW5SqKJ5S9A3OnUkVdDxZXHJOmdN+pSupXIhEUhPwq9clAmMeUVJN3/LJQNgriZW2VKA1nO/UOhj+g0NG+EQmU6QdkZ86BsOolo9GZBOUq+5hD4RllOOcFnl27sBSMVi6Y8Y0YIJfTabAcz5AsN81WsmhpfJZvL7tEgndjERkl8n+mP+g0I6aBo95waohAWetUMpPZAQyHXaw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(6133799003)(11063799006)(18002099003)(5023799004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Bza53Zgh93/K4Gn8fDllqxo8SvOnFjn5CPlT2O4mn5AZUiz0CbfPrjNabPIs?= =?us-ascii?Q?mT6VEkv9wIk2PHQnk8PF+6ihvExQRnjfcoscE/Hnc9wEIhvpMFNrAak1u1Nd?= =?us-ascii?Q?a+UJETjKTwvaeEBDMSHecHF7dczgrZxReBzIqHNpjZliO/62+6Zx8mp8n7Rh?= =?us-ascii?Q?ztNhoDhV+c+zauYWW0AhkVGh545qouyfwI4+PFoUxmsk7OVpoaEpp5LJHP2f?= =?us-ascii?Q?GJoelHad0bHzgxk0qfy7Nkrui+D3yZN/uIJP3rR+NvI/omuvR5BnLS37pO2j?= =?us-ascii?Q?YJ/sxx86o1U55QQVBDnw3ZuWIW8Kl6oMhin6+lxoowzq4p6OYyYsvz3h1kVf?= =?us-ascii?Q?IlXRtrvbO/rISVxnRl5XrPg48nOJVeRyBJl57WOBEZjoyvXpf3rK8qWk5nrd?= =?us-ascii?Q?nutqoshTX+Y8aayoNPE7I+d8PHRE2h9KKV9+hjFgsOH3XiFeIbbOrowdW5EL?= =?us-ascii?Q?0bOjrBWWNEct08GgmtZCoLmt1nZbwY5SIOuD/HPTAqNiyqyPes1YFz8ZoLTE?= =?us-ascii?Q?0M9p1kTVHJrnkL55yjmma2r7zlKdBZvH2PIdLxQtsmTiN23e/9VoMxvnJVwf?= =?us-ascii?Q?wL79fksnwoJghMxQMs8U1vazprsdlgq/22CNzJybGN0sgEwshNB/qxQ//+Xu?= =?us-ascii?Q?f1pMFk1ChxRPm2RgBAx7lRbTrOgKHYq1NAqLODfF8dvoKSqbvmLSoQaIpDuo?= =?us-ascii?Q?NhX+9ESh1sMoj3DwzpbLpABaty09SUXL+z5SgmeIH2+Fufg0WPXFLsIyf5d7?= =?us-ascii?Q?Gh+2VwW7Zqt2zxJ/nqoD6G+YvTgroR/NLXgTPNTBhMAn8jpSRUMfpRm47sDI?= =?us-ascii?Q?G9mbhGk714FQM1c7jQBlm3oGg3P9tuRpqY4wctOKkl8Y3F+XjRWAjziOwqj0?= =?us-ascii?Q?42vVQB9YhI/98+W6xADXQBPsioX/+cTP01KKCkPpZ7IX13TY/oQMlLL0JU90?= =?us-ascii?Q?xT0Sej0ibqFNFQXQfNzXFtnto3K9gj3AIztu5GWVxz2YuS1up9xKrKkxJQqS?= =?us-ascii?Q?kjDuwhPvMtOzTt5/yTohOuQV84UcqYrFGK10ex7o94cnCIHkRl0Yl/EEsJdE?= =?us-ascii?Q?2s5mGxnfvP7MX8Ok3iRnKuoCKCANSO4SJscZ50nj4JLYBEY3XEAlEaaYd9RR?= =?us-ascii?Q?a8aBS/m/AvWeF03jSjmikZzQPNv/K7mMA4hEam+wudqyzuYYsuJ2hwAnn/gv?= =?us-ascii?Q?ycX+aMVWOG7onCijIa5gQ0p19nf7/Z8xZXFyJ7vt8eabtdjDftGvuM22l7UC?= =?us-ascii?Q?HYJ+1sDzbhaTHmW78u2k8g3AgVgFSPJs+b1en0AECpn8WYPfWxul9v8C72Y3?= =?us-ascii?Q?+1G5Ekop3gKRpB7Wcl+wZqNVw1GSo72rD/H54kYxUoslQ6B/diFCc/nRjur1?= =?us-ascii?Q?8UtJYUO0afTLILrX1iLGgGIr9CUrGtLczZaKAg09rTdsEcz3nsX1BLIrpJMJ?= =?us-ascii?Q?j4tWjZQIHZGfTFQP6zYaVYHDGooWvd076ur7slM7kWrc+AyuaCUAy/u2KRO6?= =?us-ascii?Q?xKlwoKWQ8R/ZIj+yEsk97mk9pLc6MDDKaPI034+e0aRanjCKgrTag+RPrDbK?= =?us-ascii?Q?njo84oWhgHKhEzl4/en7/V9mx1Rz7RMlWwXwbp78qN+eZ1oBFJ8TFWdhTrV0?= =?us-ascii?Q?Te+7MioyWQ6isVDFVEYgB16MZrcT+ztf2E01/Ar2z6GrolN2Nl5xpSRp5xhi?= =?us-ascii?Q?bZBNJPt1HCCtZu9YOuholIxCycr5RNAcfDc9Uph+J0gf+B9aZAi9nRQ5NlYi?= =?us-ascii?Q?TCck8dasoIynwkqCoGD251e+kR63ySJT2dXQXHK1cRpTKCiv1csd?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2034227-c824-486c-b4f9-08dec2d3739f X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:24:16.8242 (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: uJZm4bVCKUR8cMPWFJVThtyL/kLnrZ9tpDLsgrZziQQGxoNLyQosygmmRvLHepmbVy9F5kUf4Tc/eMTKL2LIRCBbrrt3y8TQ5DkdL6z+bawFV4kqCefRpMULp25muH/q X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang The ENETC VF communicates MAC filter changes to the PF driver via a VSI mailbox interface. The message send path in enetc_msg_vsi_send() polls for completion with a timeout up to 200ms, which requires a sleepable context. The legacy ndo_set_rx_mode callback is invoked with netif_addr_lock_bh held and BH disabled, making it incompatible with the VSI messaging path. Implement ndo_set_rx_mode_async instead, which runs from a workqueue with rtnl_lock held in a fully sleepable context, and receives pre-snapshotted unicast and multicast address lists from the networking core. Add enetc_vf_set_mac_promisc() to send a MAC promiscuous mode message to the PF. The message specifies the filter type (unicast, multicast, or both) and whether to enable promiscuous mode and clear existing MAC hash filter. Add enetc_vf_set_mac_hash_filter() to send a 64-bit Bloom filter hash table to the PF. Each filter type (UC or MC) contributes two u32 entries representing the low and high halves of its 64-bit hash bitmap. The function accepts pre-snapshotted address lists from the framework and iterates them with netdev_hw_addr_list_for_each(). When IFF_PROMISC is active, hash filter programming is skipped since promiscuous mode already accepts all frames. The ndo_set_rx_mode_async callback selects the appropriate filter configuration based on the current netdev flags: - IFF_PROMISC: enable full promiscuous mode for both unicast and multicast - IFF_ALLMULTI: enable multicast promiscuous mode, disable unicast promiscuous mode, and apply a unicast hash filter - otherwise: disable all promiscuous modes and apply both unicast and multicast hash filters Set IFF_UNICAST_FLT in priv_flags for ENETC v4 VFs so the network stack does not fall back to full promiscuous mode unnecessarily when unicast address filtering is supported by the hardware. This feature applies to ENETC v4 hardware only. ENETC v1 (LS1028A) does not support VF-PF MAC filter messaging and the callback returns early for such devices. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc_vf.c | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc_vf.c b/drivers/net/= ethernet/freescale/enetc/enetc_vf.c index 9b16226602aa..418ee98da17d 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -209,6 +209,122 @@ static int enetc_vf_setup_tc(struct net_device *ndev,= enum tc_setup_type type, } } =20 +static int enetc_vf_set_mac_promisc(struct enetc_ndev_priv *priv, + int type, bool en) +{ + struct enetc_msg_mac_promisc_mode *msg; + struct enetc_msg_swbd msg_swbd; + + if (!(type & ENETC_MAC_FILTER_TYPE_ALL)) + return -EINVAL; + + msg_swbd.size =3D ALIGN(sizeof(*msg), ENETC_MSG_ALIGN); + msg_swbd.vaddr =3D dma_alloc_coherent(priv->dev, msg_swbd.size, + &msg_swbd.dma, GFP_KERNEL); + if (!msg_swbd.vaddr) + return -ENOMEM; + + msg =3D (struct enetc_msg_mac_promisc_mode *)msg_swbd.vaddr; + msg->config =3D FIELD_PREP(ENETC_MSG_MAC_TYPE, + type & ENETC_MAC_FILTER_TYPE_ALL); + msg->config |=3D FIELD_PREP(ENETC_MSG_MAC_PROMISC_MODE, en); + msg->config |=3D FIELD_PREP(ENETC_MSG_MAC_FLUSH_MACS, en); + enetc_msg_fill_common_hdr(&msg_swbd, ENETC_MSG_CLASS_ID_MAC_FILTER, + ENETC_MSG_SET_MAC_PROMISC_MODE, 0, 0); + + return enetc_msg_vsi_send(priv->si, &msg_swbd); +} + +static int enetc_vf_set_mac_hash_filter(struct enetc_ndev_priv *priv, + struct netdev_hw_addr_list *uc, + struct netdev_hw_addr_list *mc) +{ + struct enetc_msg_mac_hash_filter *msg; + struct net_device *ndev =3D priv->ndev; + struct enetc_mac_filter *mac_filter; + struct enetc_msg_swbd msg_swbd; + struct enetc_si *si =3D priv->si; + struct netdev_hw_addr *ha; + u32 msg_size, tbl_cnt; + int mac_filter_type; + u64 hash_val; + int i =3D 0; + + if (ndev->flags & IFF_PROMISC) + return 0; + + if (ndev->flags & IFF_ALLMULTI) { + tbl_cnt =3D 2; + mac_filter_type =3D ENETC_MAC_FILTER_TYPE_UC; + } else { + tbl_cnt =3D 4; + mac_filter_type =3D ENETC_MAC_FILTER_TYPE_ALL; + } + + msg_size =3D struct_size(msg, hash_tbl, tbl_cnt); + msg_swbd.size =3D ALIGN(msg_size, ENETC_MSG_ALIGN); + msg_swbd.vaddr =3D dma_alloc_coherent(priv->dev, msg_swbd.size, + &msg_swbd.dma, GFP_KERNEL); + if (!msg_swbd.vaddr) + return -ENOMEM; + + msg =3D (struct enetc_msg_mac_hash_filter *)msg_swbd.vaddr; + msg->sz_type =3D FIELD_PREP(ENETC_MSG_MAC_TYPE, mac_filter_type); + msg->sz_type |=3D FIELD_PREP(ENETC_MSG_MAC_HASH_SIZE, + ENETC_MAC_HASH_TABLE_SIZE_64); + + if (mac_filter_type & ENETC_MAC_FILTER_TYPE_UC) { + mac_filter =3D &si->mac_filter[UC]; + enetc_reset_mac_addr_filter(mac_filter); + netdev_hw_addr_list_for_each(ha, uc) + enetc_add_mac_addr_ht_filter(mac_filter, ha->addr); + + memcpy(&hash_val, mac_filter->mac_hash_table, + sizeof(hash_val)); + msg->hash_tbl[i++] =3D hash_val & GENMASK(31, 0); + msg->hash_tbl[i++] =3D hash_val >> 32; + } + + if (mac_filter_type & ENETC_MAC_FILTER_TYPE_MC) { + mac_filter =3D &si->mac_filter[MC]; + enetc_reset_mac_addr_filter(mac_filter); + netdev_hw_addr_list_for_each(ha, mc) + enetc_add_mac_addr_ht_filter(mac_filter, ha->addr); + + memcpy(&hash_val, mac_filter->mac_hash_table, + sizeof(hash_val)); + msg->hash_tbl[i++] =3D hash_val & GENMASK(31, 0); + msg->hash_tbl[i++] =3D hash_val >> 32; + } + + enetc_msg_fill_common_hdr(&msg_swbd, ENETC_MSG_CLASS_ID_MAC_FILTER, + ENETC_MSG_SET_MAC_HASH_TABLE, 0, 0); + + return enetc_msg_vsi_send(si, &msg_swbd); +} + +static void enetc_vf_set_rx_mode(struct net_device *ndev, + struct netdev_hw_addr_list *uc, + struct netdev_hw_addr_list *mc) +{ + struct enetc_ndev_priv *priv =3D netdev_priv(ndev); + struct enetc_si *si =3D priv->si; + + if (is_enetc_rev1(si)) + return; + + if (ndev->flags & IFF_PROMISC) { + enetc_vf_set_mac_promisc(priv, ENETC_MAC_FILTER_TYPE_ALL, true); + } else if (ndev->flags & IFF_ALLMULTI) { + enetc_vf_set_mac_promisc(priv, ENETC_MAC_FILTER_TYPE_MC, true); + enetc_vf_set_mac_promisc(priv, ENETC_MAC_FILTER_TYPE_UC, false); + } else { + enetc_vf_set_mac_promisc(priv, ENETC_MAC_FILTER_TYPE_ALL, false); + } + + enetc_vf_set_mac_hash_filter(priv, uc, mc); +} + /* Probing/ Init */ static const struct net_device_ops enetc_ndev_ops =3D { .ndo_open =3D enetc_open, @@ -221,6 +337,7 @@ static const struct net_device_ops enetc_ndev_ops =3D { .ndo_setup_tc =3D enetc_vf_setup_tc, .ndo_hwtstamp_get =3D enetc_hwtstamp_get, .ndo_hwtstamp_set =3D enetc_hwtstamp_set, + .ndo_set_rx_mode_async =3D enetc_vf_set_rx_mode, }; =20 static void enetc_vf_get_revision(struct enetc_si *si) @@ -276,6 +393,9 @@ static void enetc_vf_netdev_setup(struct enetc_si *si, = struct net_device *ndev, ndev->vlan_features =3D NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6; =20 + if (!is_enetc_rev1(si)) + ndev->priv_flags |=3D IFF_UNICAST_FLT; + if (si->num_rss) { ndev->hw_features |=3D NETIF_F_RXHASH; ndev->features |=3D NETIF_F_RXHASH; --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013006.outbound.protection.outlook.com [52.101.83.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 581AD480DD2; Fri, 5 Jun 2026 07:24:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644269; cv=fail; b=FmoxtixSQjRo7x5TF7XuSGblgLhNIO4g30xQ+jWUaPUac2OsN0A/3XiIZEswIqv/iJ6GB4a7zdMVbZr67DzNh1JHFPlPnfzdq07IlZKyfy0yYKwQNCnIQFstWkCqp26lk50/bxtjpN7E5+jLtBvlEutEzVmvLMDsFE8c1cfp6cA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644269; c=relaxed/simple; bh=rd4aMgXNsA4FZJpKEQC8+VIiuA8pNLF+eWio3ed2+kI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=NM5QOg6e6zPCbnSVeCTxUWiYw9reu+NJJVnXoG5DLljA7jTHEabe7NIn+ZqCGPkwkKjEWWpjELUJY+BFESm1sUiAhLE0jfDNnj8kTa/E+6KlglFF4ZIbkUHhHPXxo/1jWjwrgUglsG2L6rA8TSc4vW5zWs/LlgHv89K3lbvI5qY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=w0VUqfkI; arc=fail smtp.client-ip=52.101.83.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="w0VUqfkI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Nw03I6OpxMCjeX4jegXub/lWRBoKO56YYSjlsGTdABzdGCit/XpjaV+ri4UgH2HlX0oKcTqhu3brfefoDEhD1Tjc0wlWn4RO8EKVWpHzVnOVfVCoMfe+c+KCCl/QbzlnE1Yw4jUMSCemVA2r4Ru3zPhnDyeYk/4TRxNgsBtKC3feWuenDMqoJHyNKqN4T8K4i59o8OBFtUD3+RvLOR67kEzVVHAlqaUdQPoKftgBWkObC6+Q8scinwb2bbe1mhPr2a88QhiWW1ovjrr3oYIIVeeVPNld4X/wJPmXKJ0RwE2N3U6/AkUpxWSFQ6FZcveK6Jzpq+n3KQENldlLCk+HHg== 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=ro4EkTRzvQ+LjD59ITAL1bcIlX6wGE/X1h6KH3+9YXw=; b=gF5Yi/8CCMna3uFVRUqR0V6pM2wizNV74PqalFSb8LaHyQBoruf+D141gx4UWxa5xNJn3wzH+Cer/+Hp9yNFf0L/om3JrogJ9VjDtIZxdzBtvkORsrjiHX7NeTwx0tZs3eHJoYUUhor3q0D+csAB1WKggSC5n8RSdcsqYc2o4X0xDcAwmeR1q7EAWjfe1M0m0SG3Mf/XNKwyDsPzDEyB96bnAOOoaUFxTEa/KHKdecDi2jMejQiNFyrGzEWYeG920YRVXv+h/DXwjj5sLBvYLKy7kD5vqA9B1SMFiLkFBwnv5rQVortj6cqCNkAADxaEDNVIqtMJ1cGjwF8EEA1qYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ro4EkTRzvQ+LjD59ITAL1bcIlX6wGE/X1h6KH3+9YXw=; b=w0VUqfkIgA7Fph0s31Nm4g/mFPzKJIUSNmldM9+kXg5uLqwMRjbz6yuRdS/Lx2sZxX9G9AcYqDF7mWoAV2kiof/hyqiTy0JgqNIv+UhBiF7HMHQ8RKR79shTFiX1rllfNRHf814UyS4A+CM3M5ggCVqNnbm8qEAcuKrVderZcjhyOb7x8HGZ6cZ0jbQ9OsesBcEN/vuDmU5dwkmqLyiBuBHnyPGgBLvs2tzlmtZkvWxm9DcrSJMOcbkdOAM6dKJIrNPM98swAn9GWUyqHXtvz/zg/qNjmEySwwwDx/ID0CZdJhoB6kkDWpgKA7KHm88sWm8Umz4ZqhevyaOqhmmXDA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:24:23 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:24:23 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 14/15] net: enetc: add PSI-to-VSI link status notification support for VF Date: Fri, 5 Jun 2026 14:55:49 +0800 Message-Id: <20260605065550.3038579-15-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5PR01CA0098.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:1a8::10) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 2290fb40-7dde-47c2-2777-08dec2d37766 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: zXgWxsCOG2+KfAAR9ZZD22iguLA9h9XYzSXBPiuDXn053CuLMgP4DReSqpvJ4CX46/98SU2Yr3n9xckTUKUPyr1ZTKR3i2G3yNa+PYB00JXoyyAESM4ttt14gduqP0MMVMRLytoDDVxMX7G1fY0YFR1fJMF+em93KuiU3GbKe37QcmUwwqXGzfengnj+kk2e645icF1J6VGvmhBAtsngLBudW6yvQbKjeZeFlyOtwpDPZ9W1lmPpStaEB3niZ4oFZ8tR7A+RJKd1h0FRf2chm8DttVCaM8wycRlUYpfLG0ZNj5+sSsMrpr46m1G0zHfiNN3Sh0dISrzGjOudaCAWJMlXKSsT7/SBOR3fEDF/+p2IFqmZ0xIbYgOGjqCHusFw1GRAAcdQfcvt4a2D4j+2qckn7QmC9qBYqNNePcCR8qCVh+Zz0cMI6me76dHvb9EviBT3IucRNKBg5nz/gntjgo+/gXjHMmDUyUVx5oLQN+fwcsWF0qSc5IL5JlsjU/V9zLl+q9YbOoXGE/6+N603LX8qpfIWDgNzBzDRojpKyPxRbPA4bdY0+xvxxN3ByjGEsI2wVULYmHDMQH/5TZ5qs3saghrpXv+e7hV5+ln0CIqPXuZv7c3w8dne/RcgbRX2rwHV+G41FJyYYo5pR5izwXLKKL45kc8UwdZCiE8rVRd9wn5ZQE0hfCau7FOyqYT3bVoHfnnkTbO1A1UT0IJbSKBZWIQnWSnHvSo/h8TbEE4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EYuajkC3HKci0bcohx90UzMpmQNvN9pGmnttV29+3q+2BgYns15TZG6Cs5to?= =?us-ascii?Q?BVC85AalDjjb0GUVmmROJKGUBfsj2q1wik3BWdW9I2PcinVIPfTKcU2f97GI?= =?us-ascii?Q?49bEQnLe1x2w8PnokSBsF1NKTRqDOw1cAQP6elNyZkV4r1WMSVooviy5gSO/?= =?us-ascii?Q?ivJkwrj7Kb7E6M0+iryXm1uydgHP9a0A/0D/+qkf3e6jWA2HNNl9ROQfE+NP?= =?us-ascii?Q?JfKFRvREB+1liKzGeF5rxVRTxz/V0dDsZyq20noNRKbee92UuM+HQxH483Rx?= =?us-ascii?Q?gPNn/GNI/kLLU3FXjIqyRW9LuwU4yFCpCe+TA62K6ahDxFzw/H3FQ7bqbTLb?= =?us-ascii?Q?IkGnKT52Ke/Fxbewsh4qWVUbfABVk7VKwwZHbEyikK0iQ9bPV18cqwaLUXoe?= =?us-ascii?Q?y7qHMIFk+iVkHma62EgRz5nqhrhwo6M6jqNHAuVJkhKG+Vi2TcxQdBHwIZfA?= =?us-ascii?Q?ZJpc0w7E5Baf+8Hi41ay9s9lidc0lN7Wnx5BTZ04StGCYzj+TJekWGHMtdUQ?= =?us-ascii?Q?lfINYZLpoliw+tnVOwrGMDXPkZRzjqCUT02LChTwZFEAVnbpQGmQqqzsFlw3?= =?us-ascii?Q?hFNdb1xh4GTbOidvcR9BCL6r/s9z+QTxWFrvgrdN1Ee2WN2lReRXj9LBwVMd?= =?us-ascii?Q?iSmMwaIL840xkSSQ+QSBSBMIJ7/N8lSjuoiWg11oNk+YWuY3uee62aSNxuSs?= =?us-ascii?Q?MAahEiA9ZYmAst9iif/nW71v8Om7dYdpRsOSAJCfxVoUBbbJk3aHotKYql/N?= =?us-ascii?Q?18zhrLAw8NVH1rJGqN+Pd8gYGA5l91YjOD9CPHgjk2sxO3bpvCcEnhduaDJk?= =?us-ascii?Q?MgyRoWyuu50FI+SRCHk/QEpf7yDiGCJ45T2Tw0Cax8ievk0olwR3pn8iZ8tK?= =?us-ascii?Q?95zk/vTV4CM4cOao4EmzLv9WI1IcfMzVmgDIg7BzooInfRUsI7Q0uwMV7BT1?= =?us-ascii?Q?5ulnkz3pJouR8LBRIs+4BCejdkM89RwQ3I4Zbi3NJDrN9PE9gijHYuNS0Z39?= =?us-ascii?Q?dl2rhRrSp5jNusMDaXChXPwm0vLqug8UIvPxaHXErm0ITN66MzgezJjH/KnI?= =?us-ascii?Q?U0FKtPVe3wanN3hixKlz7kVIcwJvIp6qQWEkUAxzbEYZo9w92jRBH/LimR8J?= =?us-ascii?Q?3RCvRIyHFxtqab4TzKj/ntsNWs9uvMEMI7kKkcGFmKx57o0ndHt6KegWgHWg?= =?us-ascii?Q?SzT7D9KcWPON0IoNMdS8acscqALSaXU0Esgbz9sLPCaM3azpvODRWtlwx/7l?= =?us-ascii?Q?A/TN/L1BRLDyN0LvPLR/WdHZTjY+W1Bj6X9ZRW+NZw95DFHkBpJ5z856ITZf?= =?us-ascii?Q?qSnKaVuqUbUnL8GlB/mp6MN21ZzwFo4PNWxmLAuyR5PToXc0F1ehnpa7hbut?= =?us-ascii?Q?xY4F59+tBSg4VVfJiPUFcMaKEwzVb4kngEQMGZ3X2G3naLbqvTd5kwSCV0QX?= =?us-ascii?Q?w/C9Se/YbFY5ghai4l+zOAGVeo6GY9jXx+ki8tcmosOZA1dRULIBN2i7Xyh2?= =?us-ascii?Q?k3HktCd9DAyFr2V7eMw/ZEQM4wTBo2v/hv3boSEyOqtpiBDeDH9I3T3yuFeg?= =?us-ascii?Q?eQnDu59j0i9enIQCO4VueUxtuzQx+GKy64cRAl4I+zpie5X/Llk+dD/EVLuT?= =?us-ascii?Q?SlruW8MOktwLbkjFlSOeZjni6Ffd/SfZuoJSUAoWWEg9qqsHQQLb5T02Hby0?= =?us-ascii?Q?olHERoK8qQOZBlfaUoL5D37IPT7pvqJiO535qagEbSPyOvsOOW2uhYaLgzgK?= =?us-ascii?Q?lomTIHsNDF1IbScWmkdlT0NsB64IIVVTHzSpKkvtfv/gG4VrhP6o?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2290fb40-7dde-47c2-2777-08dec2d37766 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:24:23.2253 (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: dhRMUe3Zy+shIxU5QEe55Z3/j4lGPlSPTTVDDwUVfY9EGURmsyV0m1YjlV6ZfGMvr/GBxe6h3K2MkyTuWaHhQLJNADkULr47nuOZ4kayBnMGTYLYwbgE0Jvq5vgmbrxp X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang Add infrastructure for ENETC v4 VFs to track PF link status changes via the PSI-to-VSI messaging channel. Two new ops, vf_reg_link_status_notifier and vf_unreg_link_status_notifier, are added to enetc_si_ops and wired into enetc_phylink_connect() and enetc_close() for the phy-less path. The feature is populated only in enetc4_vsi_ops; rev1 hardware is not affected. On enetc_open(), the VF sends a REGISTER_LINK_CHANGE_NOTIFIER message to the PF through the VSI-to-PSI messaging channel. The PF records the VF in link_status_ms_mask, and immediately sends the current link status so that the VF carrier reflects reality as soon as the interface comes up. On every subsequent PF link transition the PF broadcasts a 16-bit notification to all registered VFs. On the VF side, a dedicated MSI-X vector handles incoming PSI-to-VSI messages. The interrupt handler schedules a work item which parses the notification and updates the carrier state via netif_carrier_on() or netif_carrier_off() accordingly. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc.c | 11 ++ drivers/net/ethernet/freescale/enetc/enetc.h | 4 + .../net/ethernet/freescale/enetc/enetc_hw.h | 9 + .../net/ethernet/freescale/enetc/enetc_vf.c | 185 +++++++++++++++++- 4 files changed, 208 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index fdceaf36daa7..a1a8a1551cd8 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2892,11 +2892,15 @@ static void enetc_clear_interrupts(struct enetc_nde= v_priv *priv) static int enetc_phylink_connect(struct net_device *ndev) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); + struct enetc_si *si =3D priv->si; struct ethtool_keee edata; int err; =20 if (!priv->phylink) { /* phy-less mode */ + if (si->ops->vf_reg_link_status_notifier) + return si->ops->vf_reg_link_status_notifier(si); + netif_carrier_on(ndev); return 0; } @@ -2968,6 +2972,7 @@ int enetc_open(struct net_device *ndev) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); struct enetc_bdr_resource *tx_res, *rx_res; + struct enetc_si *si =3D priv->si; bool extended; int err; =20 @@ -3010,6 +3015,8 @@ int enetc_open(struct net_device *ndev) err_alloc_tx: if (priv->phylink) phylink_disconnect_phy(priv->phylink); + else if (si->ops->vf_unreg_link_status_notifier) + si->ops->vf_unreg_link_status_notifier(si); err_phy_connect: enetc_free_irqs(priv); err_setup_irqs: @@ -3050,6 +3057,7 @@ EXPORT_SYMBOL_GPL(enetc_stop); int enetc_close(struct net_device *ndev) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); + struct enetc_si *si =3D priv->si; =20 enetc_stop(ndev); =20 @@ -3057,6 +3065,9 @@ int enetc_close(struct net_device *ndev) phylink_stop(priv->phylink); phylink_disconnect_phy(priv->phylink); } else { + if (si->ops->vf_unreg_link_status_notifier) + si->ops->vf_unreg_link_status_notifier(si); + netif_carrier_off(ndev); } =20 diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/eth= ernet/freescale/enetc/enetc.h index 24d9f89aee73..1666dfe81cbb 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -300,6 +300,10 @@ struct enetc_si_ops { int (*set_rss_table)(struct enetc_si *si, const u32 *table, int count); int (*setup_cbdr)(struct enetc_si *si); void (*teardown_cbdr)(struct enetc_si *si); + + /* VSI-specific hooks */ + int (*vf_reg_link_status_notifier)(struct enetc_si *si); + int (*vf_unreg_link_status_notifier)(struct enetc_si *si); }; =20 /* PCI IEP device data */ diff --git a/drivers/net/ethernet/freescale/enetc/enetc_hw.h b/drivers/net/= ethernet/freescale/enetc/enetc_hw.h index 62844344ff29..5dc4532607b3 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_hw.h @@ -84,6 +84,9 @@ static inline u32 enetc_vsi_set_msize(u32 size) #define PSIMSGSR_MS(n) BIT((n) + 1) /* n is VF index */ #define PSIMSGSR_MC GENMASK(31, 16) =20 +#define ENETC_VSIMSGRR 0x208 +#define VSIMSGRR_MC GENMASK(31, 16) + /* SI statistics */ #define ENETC_SIROCT 0x300 #define ENETC_SIRFRM 0x308 @@ -107,6 +110,12 @@ static inline u32 enetc_vsi_set_msize(u32 size) #define ENETC_SICAPR0 0x900 #define ENETC_SICAPR1 0x904 =20 +#define ENETC_VSIIER 0xa00 +#define VSIIER_MRIE BIT(9) + +#define ENETC_VSIIDR 0xa08 +#define VSIIDR_MR BIT(9) + #define ENETC_PSIIER 0xa00 #define ENETC_PSIIDR 0xa08 =20 diff --git a/drivers/net/ethernet/freescale/enetc/enetc_vf.c b/drivers/net/= ethernet/freescale/enetc/enetc_vf.c index 418ee98da17d..9cace77110b8 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -131,6 +131,37 @@ static int enetc_msg_vsi_send(struct enetc_si *si, str= uct enetc_msg_swbd *msg) return err; } =20 +static int enetc_msg_link_status_notifier(struct enetc_si *si, bool reg) +{ + struct device *dev =3D &si->pdev->dev; + struct enetc_msg_swbd msg_swbd; + u8 cmd_id; + + msg_swbd.size =3D ALIGN(sizeof(struct enetc_msg_generic), + ENETC_MSG_ALIGN); + msg_swbd.vaddr =3D dma_alloc_coherent(dev, msg_swbd.size, + &msg_swbd.dma, GFP_KERNEL); + if (!msg_swbd.vaddr) + return -ENOMEM; + + cmd_id =3D reg ? ENETC_MSG_REGISTER_LINK_CHANGE_NOTIFIER : + ENETC_MSG_UNREGISTER_LINK_CHANGE_NOTIFIER; + enetc_msg_fill_common_hdr(&msg_swbd, ENETC_MSG_CLASS_ID_LINK_STATUS, + cmd_id, 0, 0); + + return enetc_msg_vsi_send(si, &msg_swbd); +} + +static int enetc_vf_reg_link_status_notifier(struct enetc_si *si) +{ + return enetc_msg_link_status_notifier(si, true); +} + +static int enetc_vf_unreg_link_status_notifier(struct enetc_si *si) +{ + return enetc_msg_link_status_notifier(si, false); +} + static int enetc_msg_vsi_set_primary_mac_addr(struct enetc_ndev_priv *priv, struct sockaddr *saddr) { @@ -411,6 +442,113 @@ static void enetc_vf_netdev_setup(struct enetc_si *si= , struct net_device *ndev, enetc_load_primary_mac_addr(&si->hw, ndev); } =20 +static void enetc_vf_enable_mr_int(struct enetc_hw *hw) +{ + u32 val =3D enetc_rd(hw, ENETC_VSIIER) | VSIIER_MRIE; + + enetc_wr(hw, ENETC_VSIIER, val); +} + +static void enetc_vf_disable_mr_int(struct enetc_hw *hw) +{ + u32 val =3D enetc_rd(hw, ENETC_VSIIER) & (~VSIIER_MRIE); + + enetc_wr(hw, ENETC_VSIIER, val); +} + +static void enetc_vf_msg_handle_link_status(struct enetc_si *si, u8 class_= code) +{ + struct net_device *ndev =3D si->ndev; + + switch (class_code) { + case ENETC_LINK_STATUS_CLASS_CODE_UP: + if (!netif_carrier_ok(ndev)) { + netif_carrier_on(ndev); + netdev_info(ndev, "Link is Up\n"); + } + break; + case ENETC_LINK_STATUS_CLASS_CODE_DOWN: + if (netif_carrier_ok(ndev)) { + netif_carrier_off(ndev); + netdev_info(ndev, "Link is Down\n"); + } + break; + } +} + +static void enetc_vf_msg_task(struct work_struct *work) +{ + struct enetc_si *si =3D container_of(work, struct enetc_si, msg_task); + struct enetc_hw *hw =3D &si->hw; + u8 class_id, class_code; + u16 pf_msg; + + pf_msg =3D FIELD_GET(VSIMSGRR_MC, enetc_rd(hw, ENETC_VSIMSGRR)); + /* W1C to clear the message received interrupt event */ + enetc_wr(hw, ENETC_VSIIDR, VSIIDR_MR); + + class_id =3D FIELD_GET(ENETC_PF_MSG_CLASS_ID, pf_msg); + class_code =3D FIELD_GET(ENETC_PF_MSG_CLASS_CODE, pf_msg); + + switch (class_id) { + case ENETC_MSG_CLASS_ID_LINK_STATUS: + enetc_vf_msg_handle_link_status(si, class_code); + break; + default: + dev_err(&si->pdev->dev, + "Unsupported Message Class ID (0x%02x) from PF\n", + class_id); + } + + enetc_vf_enable_mr_int(hw); +} + +static irqreturn_t enetc_vf_msg_msix_handler(int irq, void *data) +{ + struct enetc_si *si =3D (struct enetc_si *)data; + + enetc_vf_disable_mr_int(&si->hw); + queue_work(si->workqueue, &si->msg_task); + + return IRQ_HANDLED; +} + +static int enetc_vf_register_msg_msix(struct enetc_si *si) +{ + int irq, err; + + if (is_enetc_rev1(si)) + return 0; + + snprintf(si->msg_int_name, sizeof(si->msg_int_name), "%s-pfmsg", + pci_name(si->pdev)); + irq =3D pci_irq_vector(si->pdev, ENETC_SI_INT_IDX); + err =3D request_irq(irq, enetc_vf_msg_msix_handler, 0, + si->msg_int_name, si); + if (err) { + dev_err(&si->pdev->dev, + "VF messaging: request_irq() failed!\n"); + return err; + } + + /* set one IRQ entry for PSI-to-VSI messaging */ + enetc_wr(&si->hw, ENETC_SIMSIVR, ENETC_SI_INT_IDX); + + /* Enable message received interrupt */ + enetc_vf_enable_mr_int(&si->hw); + + return 0; +} + +static void enetc_vf_free_msg_msix(struct enetc_si *si) +{ + if (is_enetc_rev1(si)) + return; + + enetc_vf_disable_mr_int(&si->hw); + free_irq(pci_irq_vector(si->pdev, ENETC_SI_INT_IDX), si); +} + static const struct enetc_si_ops enetc_vsi_ops =3D { .get_rss_table =3D enetc_get_rss_table, .set_rss_table =3D enetc_set_rss_table, @@ -423,8 +561,36 @@ static const struct enetc_si_ops enetc4_vsi_ops =3D { .set_rss_table =3D enetc4_set_rss_table, .setup_cbdr =3D enetc4_setup_cbdr, .teardown_cbdr =3D enetc4_teardown_cbdr, + .vf_reg_link_status_notifier =3D enetc_vf_reg_link_status_notifier, + .vf_unreg_link_status_notifier =3D enetc_vf_unreg_link_status_notifier, }; =20 +static int enetc_vf_wq_task_init(struct enetc_si *si) +{ + char wq_name[24]; + + if (is_enetc_rev1(si)) + return 0; + + snprintf(wq_name, sizeof(wq_name), "enetc-%s", pci_name(si->pdev)); + si->workqueue =3D create_singlethread_workqueue(wq_name); + if (!si->workqueue) + return -ENOMEM; + + INIT_WORK(&si->msg_task, enetc_vf_msg_task); + + return 0; +} + +static void enetc_vf_wq_task_destroy(struct enetc_si *si) +{ + if (!si->workqueue) + return; + + disable_work_sync(&si->msg_task); + destroy_workqueue(si->workqueue); +} + static int enetc_vf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -489,6 +655,18 @@ static int enetc_vf_probe(struct pci_dev *pdev, goto err_alloc_msix; } =20 + err =3D enetc_vf_wq_task_init(si); + if (err) { + dev_err(&pdev->dev, "Failed to init workqueue\n"); + goto err_wq_init; + } + + err =3D enetc_vf_register_msg_msix(si); + if (err) { + dev_err(&pdev->dev, "Failed to register msg irq\n"); + goto err_register_msg_msix; + } + err =3D register_netdev(ndev); if (err) goto err_reg_netdev; @@ -498,6 +676,10 @@ static int enetc_vf_probe(struct pci_dev *pdev, return 0; =20 err_reg_netdev: + enetc_vf_free_msg_msix(si); +err_register_msg_msix: + enetc_vf_wq_task_destroy(si); +err_wq_init: enetc_free_msix(priv); err_config_si: err_alloc_msix: @@ -524,7 +706,8 @@ static void enetc_vf_remove(struct pci_dev *pdev) =20 priv =3D netdev_priv(si->ndev); unregister_netdev(si->ndev); - + enetc_vf_free_msg_msix(si); + enetc_vf_wq_task_destroy(si); enetc_free_msix(priv); =20 enetc_free_si_resources(priv); --=20 2.34.1 From nobody Mon Jun 8 07:22:54 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013015.outbound.protection.outlook.com [40.107.162.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 996DC478842; Fri, 5 Jun 2026 07:24:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644274; cv=fail; b=qbECvODbZUT1T+x/hav7z8XJqAOOAXL2lU9eOEodSy/oTAeHoDuBeXkcs2VvRIVjsshPVfws/3QjnfEVAtpMyYigPNhUNwmUqERzRt1+mQUw+yMSei9IFZALVWml0qMh1Sv9BogJE4Ma7Nqy3PlMOKMmpGWEoQAOjciBkB18Yts= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780644274; c=relaxed/simple; bh=ADvgC8ccm58S8AIlbtr8AvCnpZ9OLPLoAH3f/0Ezo5k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Gjt9920GrjFoa0LR4KhZC4QnZkha8nb0UHkjtJHDQY/3z71WcSRJuGH3RPbnVjJMOghFcl2L9ZH1qhkGvQl/x9sFSknDz+7qpjUZBnbi9NhPhh84EYbVtY/FDEP8KjgW9OZwSegDGz9vt8IgyEIVv+f8tHC45sn1WKelH2sQZAY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=f84HLonE; arc=fail smtp.client-ip=40.107.162.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="f84HLonE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LBc2gKK3eX7ZKFBRN8T/g/2EZTw7/CvfumP9NmXzEoNQz9sgX0KwAa+xnzxQI4FVWWPnWbmru729kSca6F6Y+iLnwoQhN86yxJwQM+DaRIf30SylmNNrvSbgBZXCxvmeMKRlXzo7mPq0FKb8WokL2W2I+bVz8W8UhE74C67TT9TdqJ6rIlbx+84XsZwbasDGTdrFvxz55G92h41fc89aHWCJDJH5tag5+z8rNFgZIipVWcdfe26kvGWb5sgxZgA257s6jVR0SIYLAr5ZM337CRQhMTxSC6bfBJt6V2omGR55q0a/43CnFOBtiu1y4cjfEk+Y9OIQCyquDRoxVPOBrg== 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=FKi2ebomMDmQhnmJj5ysvZQwK5EPb1gi3deQNvZpsLk=; b=HsVPEN0ciQ7RGvyo2KVEK+q7rd7IkpxW1oYAbWwL6OJGFlfeZUOZMvpCUP9M9Ttx3iAUolPTgJ2HXmHKrE0AAbznFJ+fFGGELjaZt6Wdp70HB/LU5fKW/uKWGnInsRO4ns7LrkPRE4Lx8JpWqd4JNc7FwMGT6YUuhAFDtlVgGeLGmpzUOixREiBhF4H8nbIVut6o+a9LhbuADzli/WSW6rOXKWgdlRtKre5kLS+d6P1k90IAtt/AyjaPI3vaG5F2FbdiFr3iUtg8R4eoVVeApogFuWuiVgOCkapcDgbtTyl5vHBmD5eNS3motGqen20fvX6QQCloEzLisc23EnN4pg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FKi2ebomMDmQhnmJj5ysvZQwK5EPb1gi3deQNvZpsLk=; b=f84HLonEoJ45HldZpFFDJ1pBKDFUSNT8DpVC2vZABSarax2F2Z7DQNK8cxUBAK6QVPz8c7anhKvXXYoy4+cdNO5SU9q3atFfEcbChotstTukzRLSl1WPI+QDP+JMg+KFRCscjk0+URBibXjgL8Qy1QWG7B/2IUaxgoTh/d6MDJqAxmOna9PtBhjMQAuSOsRsfisvFNkR49SH8mTIb6NjYN1rrP1sdXPdalOdTFZuSz4zSLTaeW30QMRmYG/GXdoqEWnN99pbXgAeazASXWlvs1qFWjDU0hglEfSfMmX22iP7P8PL0R2npe6ZKC9NKgP1+Y5IbvF2XSlEbrdKv/kD7A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) by PAXPR04MB8910.eurprd04.prod.outlook.com (2603:10a6:102:20d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Fri, 5 Jun 2026 07:24:28 +0000 Received: from VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74]) by VE1PR04MB7216.eurprd04.prod.outlook.com ([fe80::a9a5:cf83:dbe8:1f74%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:24:28 +0000 From: wei.fang@oss.nxp.com 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, linux@armlinux.org.uk, wei.fang@nxp.com Cc: imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 15/15] net: enetc: add ndo_get_vf_config() support Date: Fri, 5 Jun 2026 14:55:50 +0800 Message-Id: <20260605065550.3038579-16-wei.fang@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605065550.3038579-1-wei.fang@oss.nxp.com> References: <20260605065550.3038579-1-wei.fang@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA0PR01CA0090.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ae::19) To VE1PR04MB7216.eurprd04.prod.outlook.com (2603:10a6:800:1b0::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB7216:EE_|PAXPR04MB8910:EE_ X-MS-Office365-Filtering-Correlation-Id: 6455acc7-8bbd-41c3-ae78-08dec2d37ab7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|376014|56012099006|921020|3023799007|22082099003|6133799003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: QV9dwWA7mU95mRR9V6ZIqFeaA4W7c0+Bacm0IdgKxRq5j17e1s66IPRGPySheVnIiL/bxyEULUAwMqlOnVIllHNPl8zLvq+m+YQE05A+ddytmY1u7OspGeU+qNVOd6F8aKxyaoNF9+kGSo9w32/tHDQWfqgJiukA+ZKQ1v7VouMCi4YCBmtiqSaw6Rn/GNwL+6WizrbnmXhuGBJImgSSXbWHmn5JvMrMWg0gB7TayPVp/E/pVmr92JAVsuFVE2p2F8Cqk49Mtrgf4gtGmT2nL/Br5htvOfK2rI0ewC+6JlI2bRpfgf3XxsSPFChXxQDuBRFgH6S3BV61kH3Xcqc2eURvIIJOLb/Xx7kJLrOGzXDhm3iCcF6LPA3ZvTT4KsgM//0qOXt05m/HRNClDlNeZGsS0TMAwinImhPZEwfB5QAXIx6GuGCfc4XK682YBJESuRuEDqV9RPl+q2e6LzaJf6tQS8RAKw28+/SjdejQMfQ4QP+YZ5gtQFi8E9US4w3TuPuG5pckLgktwl3zml2XDq1CHo7ZcHbNCpY0f3Xukft4swMYd4o0YAFguHt/+LTah6Po9DmAWrDM4o7xw50uExfsn1mzFXcCIpjsr6/LyjsRFQc+gEaomhboRMhiVPIuQcNW+vj0mS0Njm5FWqYr4HmXsA5EMzpaYQo76DIyY4k4/UgW3UMb3obSeLP/xYrqVPIZDYos+aGoKknRjq5j6jpP+7EkU/dRorzL22lJRXI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB7216.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(376014)(56012099006)(921020)(3023799007)(22082099003)(6133799003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8q12vzcPCP2vGDVpNq3qFdOwn7h7S3rTX6/qVo90LT+gzTWSAO0Exszfj4Cx?= =?us-ascii?Q?Ho75fNWSUYEjUb66f0AFe0TSQj5DZBe07rsruCsNOMAvnqsNdIoExBJ2nu1R?= =?us-ascii?Q?V8jU5VNgYIHAgcLEeqPCkCV3UF99Jx7pX7iS3C8zrfpcghZqVFUXk2ggKvA1?= =?us-ascii?Q?sdh6vtWwFbeFHEIyFlk9SlBOLpJJxAzVUg8DyZgKzHkPfxRzPT/hOvgYN1AF?= =?us-ascii?Q?+++wXWT10zbIG7FgQVPixltoe8dGr0o7RRq/XXbtdAS+xycE/M61je5Uk6/7?= =?us-ascii?Q?MMzAg/nKamq5a6czw75dPePTFrjVKmePvS8xIL4NLZPu3loQLEJGY/VqvReq?= =?us-ascii?Q?G+7IOxllcUE3rqBWhtNAXbJMvQMwAimOqocBaYphTfsdAu1NnaD28khvZW6F?= =?us-ascii?Q?m8tXnSAtHQT7/dkhWpRSowh8YzM3/hPCDQbMq81L0F7djomWROxqNGhQQeCF?= =?us-ascii?Q?+hRvgHLCg0dLL4/Gd4pkOyINKrnRCBCakh/B09BqMEVzUkwivhuCa7nX6eB1?= =?us-ascii?Q?C7UiM5zXS7sC1POTluTK0vrJlrdLlSjzj0NlIzH9CfBp/BUlVtDaOYdg1YN2?= =?us-ascii?Q?4NY3rvliIdAqUHVjN+7zYPXMIHzC+n3ngo7GmdOFs1z29qUCD/WASVpjcytU?= =?us-ascii?Q?8Ufp3v7+th8/6EkmhslKnx2e6nM1tlnaZZvxCDOt/5K6ZDTLpaI4/lvMcjf6?= =?us-ascii?Q?sxFo42DpKlfA6C37OpZvdZaED+9nRKWWgyCMYzs7eeT7X5wcjZeQuqLTuFaM?= =?us-ascii?Q?ehNpwHMWcxqmjvEgRjUWIT8AJ/GZ5pROiGx8Pn6/fVwkbPz904Pn4ZmlT5tR?= =?us-ascii?Q?tskmf6NFc1J7fJiihGzplxN55ybjBqY6eB2D0lBMFc+XNBQKBasfPH+aCOS7?= =?us-ascii?Q?xIJ17CAaCpYFYIM2sWs3kSb2EEsF1WAn36HCdVKQZfEpwpySbeh/eNcVSA+M?= =?us-ascii?Q?R+9RTICbT5PWi27qNp+y30gZW2r/999vnDx5m9td1+HfPvP4gFLsjw6O/TRC?= =?us-ascii?Q?IlG0rxnp2MplnISy1KpnbhnKTPmM3BqJ3uqYirwamgCmLrpjP+trJnE7PZfr?= =?us-ascii?Q?D9ZFggWyV3oaF1b25wgy0q9CbDBcZKFZnAKrF6Cm4gJkGIoTex+0fK1HEI50?= =?us-ascii?Q?atpuH2cT0Q2mYIEmJAo+S5c89hHreB1eyF6zyGLlUesRVpA2Eq5F/C/LY0nb?= =?us-ascii?Q?mye3teq1NQuibDnOMKqWeMZ5d9FtXGzQowYcbpFRQpO8dkFhCBYq3vDYGrSD?= =?us-ascii?Q?HVSFtO/xtI4ZF1AQBevWeegTyMdeFoLQFLPpGWbNdDFA+U+hHNDsuvQeCYzr?= =?us-ascii?Q?uz5P9uOtvl1At2y1nM2VyBMWMXFOfJcqddmCEkGhFpZu19XPjzL2i04/BsMU?= =?us-ascii?Q?ScPQhrznHHCkP13W1bp4WSiBN2wkjuRt4gs0nfcy3ps/eRcGEpfnS+qhxMed?= =?us-ascii?Q?8KT+Q1HVc6Zdno95LRpXkCXjb7KerKbXHNxDfXQZZs3jQ8n2TuNpm4o36fwo?= =?us-ascii?Q?9OzcyUO3posuEKT5O3xjkAwbfla7dhD83hmbobd/+Qd+lNOiJj8Ae5wnSsXM?= =?us-ascii?Q?bumslH3UkQ1uUUsEx7z5kjUmecvRvcxpAvvBWbFxT2Ytv3HchRlz0Q+QN3mr?= =?us-ascii?Q?82BG4G1wwYjQ6BYeGx4WMPdNG4oD4gZonUD0JwFfpm7jgMJbIn/xez9jIstD?= =?us-ascii?Q?XCqR31HKskHp5R9ZLmID7TVLTr6h6t/G6NUdjqHVk8d/pM50NzRFiSSix+h5?= =?us-ascii?Q?Sni4LWkVDk4C0ey2rWmARovsFXguOHhpr1aYleHtw5apTA6RamAZ?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6455acc7-8bbd-41c3-ae78-08dec2d37ab7 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB7216.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 07:24:28.7196 (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: NUhnHi6yzf2sBV6qg+WyMRbU9dmGTphsXCl7aiIlz8XBZ52JKaLYMYhMYr3jEeZ30H5KMZKnPbWcOLbh4lsoUUwYDVfV+OsE7WJd5PcGAXM0VDoILjPnpLw8Jgvpd+9a X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8910 Content-Type: text/plain; charset="utf-8" From: Wei Fang Without ndo_get_vf_config(), userspace tools such as 'ip link show' cannot query the current VF configuration from the PF. To support this, extend struct enetc_vf_state to track the per-VF VLAN and spoofchk settings, and update the corresponding setter callbacks to persist their state when the hardware is programmed. enetc_pf_get_vf_config() reads back the persisted state and reports MAC address, VLAN parameters, spoofchk, and trust state through struct ifla_vf_info. Signed-off-by: Wei Fang --- .../net/ethernet/freescale/enetc/enetc4_pf.c | 1 + .../net/ethernet/freescale/enetc/enetc_pf.c | 22 +++++++++++++ .../net/ethernet/freescale/enetc/enetc_pf.h | 4 +++ .../freescale/enetc/enetc_pf_common.c | 31 +++++++++++++++++++ .../freescale/enetc/enetc_pf_common.h | 2 ++ 5 files changed, 60 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net= /ethernet/freescale/enetc/enetc4_pf.c index 868ed694e120..a3edf5fc930e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c @@ -616,6 +616,7 @@ static const struct net_device_ops enetc4_ndev_ops =3D { .ndo_hwtstamp_set =3D enetc_hwtstamp_set, .ndo_set_vf_trust =3D enetc_pf_set_vf_trust, .ndo_set_vf_mac =3D enetc_pf_set_vf_mac, + .ndo_get_vf_config =3D enetc_pf_get_vf_config, }; =20 static struct phylink_pcs * diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/= ethernet/freescale/enetc/enetc_pf.c index 209a3503609f..fa09c875d09b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -243,6 +243,7 @@ static int enetc_pf_set_vf_vlan(struct net_device *ndev= , int vf, u16 vlan, { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); struct enetc_pf *pf =3D enetc_si_priv(priv->si); + struct enetc_vf_state *vf_state; =20 if (priv->si->errata & ENETC_ERR_VLAN_ISOL) return -EOPNOTSUPP; @@ -255,6 +256,15 @@ static int enetc_pf_set_vf_vlan(struct net_device *nde= v, int vf, u16 vlan, return -EPROTONOSUPPORT; =20 enetc_set_isol_vlan(&priv->si->hw, vf + 1, vlan, qos); + + vf_state =3D &pf->vf_state[vf]; + /* Currently only C-tags is susupported, so tpid is always 0, + * which indicates ETH_P_8021Q. + */ + vf_state->tpid =3D 0; + vf_state->qos =3D qos; + vf_state->vid =3D vlan; + return 0; } =20 @@ -262,6 +272,7 @@ static int enetc_pf_set_vf_spoofchk(struct net_device *= ndev, int vf, bool en) { struct enetc_ndev_priv *priv =3D netdev_priv(ndev); struct enetc_pf *pf =3D enetc_si_priv(priv->si); + struct enetc_vf_state *vf_state; u32 cfgr; =20 if (vf >=3D pf->total_vfs) @@ -271,6 +282,16 @@ static int enetc_pf_set_vf_spoofchk(struct net_device = *ndev, int vf, bool en) cfgr =3D (cfgr & ~ENETC_PSICFGR0_ASE) | (en ? ENETC_PSICFGR0_ASE : 0); enetc_port_wr(&priv->si->hw, ENETC_PSICFGR0(vf + 1), cfgr); =20 + vf_state =3D &pf->vf_state[vf]; + mutex_lock(&vf_state->lock); + + if (en) + vf_state->flags |=3D ENETC_VF_FLAG_SPOOFCHK; + else + vf_state->flags &=3D ~ENETC_VF_FLAG_SPOOFCHK; + + mutex_unlock(&vf_state->lock); + return 0; } =20 @@ -528,6 +549,7 @@ static const struct net_device_ops enetc_ndev_ops =3D { .ndo_xdp_xmit =3D enetc_xdp_xmit, .ndo_hwtstamp_get =3D enetc_hwtstamp_get, .ndo_hwtstamp_set =3D enetc_hwtstamp_set, + .ndo_get_vf_config =3D enetc_pf_get_vf_config, }; =20 static struct phylink_pcs * diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/= ethernet/freescale/enetc/enetc_pf.h index 650735a7de81..faead2bf684a 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h @@ -12,11 +12,15 @@ enum enetc_vf_flags { ENETC_VF_FLAG_TRUSTED =3D BIT(1), ENETC_VF_FLAG_UC_PROMISC =3D BIT(2), ENETC_VF_FLAG_MC_PROMISC =3D BIT(3), + ENETC_VF_FLAG_SPOOFCHK =3D BIT(4), }; =20 struct enetc_vf_state { struct mutex lock; /* Prevent concurrent access */ enum enetc_vf_flags flags; + u8 tpid; /* SI-based VLAN TPID (0: 0x8100, 1: 0x88a8) */ + u8 qos; /* SI-based VLAN QOS (priority) bits */ + u16 vid; /* SI-based VLAN ID */ }; =20 struct enetc_port_caps { diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index 1aecaba04cfd..559eddfbba9e 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -529,5 +529,36 @@ int enetc_pf_set_vf_mac(struct net_device *ndev, int v= f, u8 *mac) } EXPORT_SYMBOL_GPL(enetc_pf_set_vf_mac); =20 +int enetc_pf_get_vf_config(struct net_device *ndev, int vf, + struct ifla_vf_info *ivi) +{ + struct enetc_ndev_priv *priv =3D netdev_priv(ndev); + struct enetc_pf *pf =3D enetc_si_priv(priv->si); + struct enetc_vf_state *vf_state; + + if (vf >=3D pf->total_vfs) + return -EINVAL; + + vf_state =3D &pf->vf_state[vf]; + mutex_lock(&vf_state->lock); + + ivi->vf =3D vf; + ivi->spoofchk =3D !!(vf_state->flags & ENETC_VF_FLAG_SPOOFCHK); + ivi->trusted =3D !!(vf_state->flags & ENETC_VF_FLAG_TRUSTED); + enetc_get_si_hw_addr(pf, vf + 1, ivi->mac); + + if (vf_state->vid) { + ivi->vlan =3D vf_state->vid; + ivi->qos =3D vf_state->qos; + ivi->vlan_proto =3D vf_state->tpid ? htons(ETH_P_8021AD) : + htons(ETH_P_8021Q); + } + + mutex_unlock(&vf_state->lock); + + return 0; +} +EXPORT_SYMBOL_GPL(enetc_pf_get_vf_config); + 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/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.h index b2a2b06c794a..0e487ea9c0a5 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.h @@ -19,6 +19,8 @@ int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16= prot, u16 vid); int enetc_init_sriov_resources(struct enetc_pf *pf); int enetc_pf_set_vf_trust(struct net_device *ndev, int vf, bool setting); int enetc_pf_set_vf_mac(struct net_device *ndev, int vf, u8 *mac); +int enetc_pf_get_vf_config(struct net_device *ndev, int vf, + struct ifla_vf_info *ivi); =20 static inline u16 enetc_get_ip_revision(struct enetc_hw *hw) { --=20 2.34.1