From nobody Sun May 24 18:45:11 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011045.outbound.protection.outlook.com [52.101.125.45]) (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 DC31D37C102; Fri, 22 May 2026 12:13:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451986; cv=fail; b=jsr1N6qMXdq41LVMTF/Cgx2OhHQqwy49aRnS+NOwV4exQ9N8ElpMWUtyeKU9B/jg73X25ZHODXqkg/6StT8HiBO/Jxoztq0haxYKEeVdbLanWxy28ybT/jv6wYm14rOdad1JeMTU5sjWGGbRTH8CBoLief0huQhVp2ZuENkvUC4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451986; c=relaxed/simple; bh=3lkr+RE11y4eF24FLC88bvRLrDKItySrEf6pwuvS2n8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LgdhlmKzW2JlyF0mpb80yd2/5PHaE/WLtXHuO+Sn5wfRTeSAt0YeSnLS9uxj5craABEKviE2xrIhGWzatHXAQfRQWZ0ybdV9cbgUQ6RN2KT9joRSauuDh9qwYIlxJcbZT+5NDLHzh2kZCo6PZK1yyv3AGY6J9RV9xxgVJdRqpXg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=QUvCHaas; arc=fail smtp.client-ip=52.101.125.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="QUvCHaas" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WUx1uxX0YcjV8yApguiG+xoGUyeUdSBTkExqZnu85dCxZp+zChSWkauQiEW411jzASKwCMgj1rrHrZA+WNi26mUHZYulZw4Vz4QVXJEZrVCzAdjdpckR6vgCbVHLJ+yEipNhUKgkqMRi8uh/swuB3Sue6kEwUtJ+MJNf74/DDF9n3GJaPZMDxzQU481a3K91ixMF+p6xxTmQUG3u2kmusTX3LXibtKb/Duv5hyYxqhkkZmAMjAY5X5u0FCkUps6I05jux7/FJD3mPrMzQyo4kAh0T2gtdZMi38bmod1JWQg7zL5blEVcxoddjhyYzHX4Mwjl6GfKFE3yFN+mCJ6x2g== 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=jNAXQGbLGDV9VgYrH3X+u8IoseaTThTdiet2WcIj+S4=; b=kVRbFTBZIfTfR9R1jCNS0L63miR6qBWHSazXwQw4lJodXdQPTrCqlz8Gr0wkHsp6L94yq+I2Mw1NJDy9hezuq4yIXZ0XOWisrZLEzLle2cgnHVY6Q1hfjPHbhTAV4CLbjxvoLdWhJe2MSezGT4W4sLaW5JkHpjwm6HUwyu657taGoGyhJ4KE1ToXArWoSAypox3Qu+Y57XNJMSs2eUJtO8WSlj8iJ7LDEw41ccBmFPZfKHsv0fs3yARd9zLl+F+a8NjhBfX5qtYMrb/YqMWyR9F2gywi0JxqrOFkV/H0KbUdcvkyqE98LPmRCxinLWE/BWNwLsSwTvt9citiYUc/mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jNAXQGbLGDV9VgYrH3X+u8IoseaTThTdiet2WcIj+S4=; b=QUvCHaasScH6gjrrE0uEUVS1+rad3s7C0ITwfB9EnoES0gNWVbY1+EjuACr6wpIJGkKnWGxsyApujgG9YKbVVhRH6EFxBmP2kAQEOvJwTg6zC4sBnQm0C2mtkZ8sr+KWXdbBYX+rwvz9jVQdjvHqdtpDyEu5tZNlRZuk3vcov14= Received: from TY1PR01CA0183.jpnprd01.prod.outlook.com (2603:1096:403::13) by TYCPR01MB8706.jpnprd01.prod.outlook.com (2603:1096:400:188::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:12:52 +0000 Received: from TYO1EPF00005025.JPNP286.PROD.OUTLOOK.COM (2603:1096:403:0:cafe::4d) by TY1PR01CA0183.outlook.office365.com (2603:1096:403::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:12:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005025.mail.protection.outlook.com (10.167.240.22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:12:51 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id DAC1F300046A; Fri, 22 May 2026 21:12:47 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:30 +0200 Subject: [PATCH net-next v5 01/14] net: renesas: rswitch: improve port change mode functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-1-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=3593; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=3lkr+RE11y4eF24FLC88bvRLrDKItySrEf6pwuvS2n8=; b=+h4FIBJwxlkN4ZPZlcZC4q4lXNu/VxdV9FIr1kOhUcIO2LuD7Ky59XKpReVHX+0GbxVZpd2xP o19k/GxaHeLAfhAxqovSQXnYrmzf/LTPmcM4pd0hNlLnTvUGrgpvU4F X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005025:EE_|TYCPR01MB8706:EE_ X-MS-Office365-Filtering-Correlation-Id: a54f9bf8-cc1d-43e6-41bc-08deb7fb7221 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|36860700016|1800799024|6133799003|11063799006|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: ucXyTacBQuBMw2V1RKvlrEiadTLWWr9PBIXsj8k69yAR7CHYRAflNnM0SSrH9F7n5R5G6tkrRHuLW3axPZidnkPb/8Pvx5rsLxtNqBLid2rwUNDjL7Jza3BHf9taEWjywk5Z7r9KC3tng2I3axcTV8he5yTU99tqLcBL4+U483HangX0mDsUtcbYZhP8PegWIVPuoaNmwwFxSiD3qEH9QhOwnS+GUOB2VQoGTVv9Xs5QD34lhe5pIPGaBfs0abfcGFoDI2/qvEcrYwLCGrQuxZA54PcLPid+XED8BvpGrCiUkAGxdQJf+VT8qKJzUFdjc6tFEpmX3nwaI21+Z8Gvk9j+7m8MWxbeXIY7UtQk+npUYhXNFfHGybT877t4dhsUdnk5AcpTwMdGBf+P/YTmkbKT42KRCbA5n/hiPUoBKezj+6IKwOqhAaFtIirGZo58vkR6FsJjOAO3K3CAB0fFwLv3znvnqHvjQC4t1zMiJl0PFWufMuxNnD5c+h1dYrBQqbD7WiCv/6ZNPZVQrFK+A4GR9NuI6SKDHOYsGTz1QHgxHvAmwnMDqQpLd2ZkCJL+yIyCmyvVQyS11C+vdcGF9Gql6YvEdaBJ5mENg+qAtjw6ycM6LidavoPeMw9uvHlnjjRXpGIkhFNGpc6KKy9BKUcWfjNQClUvvO8CdHODXFdKSD1sCplRMKkj5+wTbaXol9+nL8G9PB1YanSbJsU/iUeXA+k7mQfw+a5qFIUdxRQ= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(82310400026)(36860700016)(1800799024)(6133799003)(11063799006)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: l8MprMwmYcpoOGCa3TM/PNgOfKUGMyqvDz+8eqCwK0m5d4Z03ty4IxCDDS7U0scg1C3OXK6gzgbxvXqDnVgT66JjJn2pik213XnZiQs3N5kGjRYBh+mCYs2iAvLSxozsWmWIe/pJlrmeSzxsDz32RrDkBRtO5SQoPh/IOTCcViZSqdxoOTxrx7p8SoaYIp0yEnASisFjhL023JUveWQ4eEJv3AWAjc1NYT3ImQHFUI4I/nkQeoUElW98ZoMneMNDJ/arbFSEtMLA8cpGcrFf1Un6/0d+nSJv3ReWSIigDgbXNd43XLo3PVJCCp2Sfxl73ocu4LPoaypfVI6xvjKUS8FQ+3Ru0OSiGLA80UnY6eW9PLxtCQwIi/oSOg089dXmnKwma+4Psxgni0PxPkJkOZU6OnFgwK1+Z5jEpIuL/7i2mYYIhy5XZ9yrjDhnXWLA X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:12:51.2139 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a54f9bf8-cc1d-43e6-41bc-08deb7fb7221 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005025.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB8706 For ETHA and GWCA ports every mode change from operational to configuration and vice-versa requires to change the mode to "disable" first. This was done by calling the function twice. Let the change_mode functione take care of this requiered step in a single call. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch_main.c | 43 +++++++++++++++----------= ---- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 6fe964816322..9b739594cc02 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -176,14 +176,21 @@ static int rswitch_gwca_change_mode(struct rswitch_pr= ivate *priv, if (!rswitch_agent_clock_is_enabled(priv->addr, priv->gwca.index)) rswitch_agent_clock_ctrl(priv->addr, priv->gwca.index, 1); =20 - iowrite32(mode, priv->addr + GWMC); + iowrite32(GWMC_OPC_DISABLE, priv->addr + GWMC); =20 - ret =3D rswitch_reg_wait(priv->addr, GWMS, GWMS_OPS_MASK, mode); + ret =3D rswitch_reg_wait(priv->addr, GWMS, GWMS_OPS_MASK, GWMC_OPC_DISABL= E); + if (ret < 0) + return ret; =20 - if (mode =3D=3D GWMC_OPC_DISABLE) + if (mode =3D=3D GWMC_OPC_DISABLE) { rswitch_agent_clock_ctrl(priv->addr, priv->gwca.index, 0); =20 - return ret; + return ret; + } + + iowrite32(mode, priv->addr + GWMC); + + return rswitch_reg_wait(priv->addr, GWMS, GWMS_OPS_MASK, mode); } =20 static int rswitch_gwca_mcast_table_reset(struct rswitch_private *priv) @@ -682,9 +689,6 @@ static int rswitch_gwca_hw_init(struct rswitch_private = *priv) unsigned int i; int err; =20 - err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_DISABLE); - if (err < 0) - return err; err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_CONFIG); if (err < 0) return err; @@ -717,9 +721,6 @@ static int rswitch_gwca_hw_init(struct rswitch_private = *priv) return err; } =20 - err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_DISABLE); - if (err < 0) - return err; return rswitch_gwca_change_mode(priv, GWMC_OPC_OPERATION); } =20 @@ -727,9 +728,6 @@ static int rswitch_gwca_hw_deinit(struct rswitch_privat= e *priv) { int err; =20 - err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_DISABLE); - if (err < 0) - return err; err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_RESET); if (err < 0) return err; @@ -1116,14 +1114,20 @@ static int rswitch_etha_change_mode(struct rswitch_= etha *etha, if (!rswitch_agent_clock_is_enabled(etha->coma_addr, etha->index)) rswitch_agent_clock_ctrl(etha->coma_addr, etha->index, 1); =20 - iowrite32(mode, etha->addr + EAMC); - - ret =3D rswitch_reg_wait(etha->addr, EAMS, EAMS_OPS_MASK, mode); + iowrite32(EAMC_OPC_DISABLE, etha->addr + EAMC); + ret =3D rswitch_reg_wait(etha->addr, EAMS, EAMS_OPS_MASK, EAMC_OPC_DISABL= E); + if (ret < 0) + return ret; =20 - if (mode =3D=3D EAMC_OPC_DISABLE) + if (mode =3D=3D EAMC_OPC_DISABLE) { rswitch_agent_clock_ctrl(etha->coma_addr, etha->index, 0); =20 - return ret; + return ret; + } + + iowrite32(mode, etha->addr + EAMC); + + return rswitch_reg_wait(etha->addr, EAMS, EAMS_OPS_MASK, mode); } =20 static void rswitch_etha_read_mac_address(struct rswitch_etha *etha) @@ -1203,9 +1207,6 @@ static int rswitch_etha_hw_init(struct rswitch_etha *= etha, const u8 *mac) { int err; =20 - err =3D rswitch_etha_change_mode(etha, EAMC_OPC_DISABLE); - if (err < 0) - return err; err =3D rswitch_etha_change_mode(etha, EAMC_OPC_CONFIG); if (err < 0) return err; --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010024.outbound.protection.outlook.com [52.101.229.24]) (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 CFE7537998A; Fri, 22 May 2026 12:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451983; cv=fail; b=Vq6gHM7xI1BEypdvN6ZiiddTCgcqhIeDLmwjM19R0hdzUXgp6DmtKWvjfpvX0Z52dw5qhSLAe6JoSsR2w7AkyKgoet6OUoj2R2mqanvegrHSB3TShRbOHq3alRl7xVqIoQLfGeo0K0uq5MaTDMfDuKd0+Aex8xfWQ6dALvIch2U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451983; c=relaxed/simple; bh=DdAHW5pFFp1rmLCOsdWwuX7F5XW8TbDbM8r2gJx/0iw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LRETHlQXPlcS/NOgo+GOi8m44klZDqEoPraewSzZyNR12Sxa/50m/ix2p9o+AEN8E+bhs2qU4xDmERTk7iCNhXg8WiZtxROpVwwl4BgOBV6oD02A/84aDuApV+iW/JNH2IABRjTHt8Vkaxb30Lm76ckX7PU2uFAdDxzVCxBtvlw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=MW/zQ/cu; arc=fail smtp.client-ip=52.101.229.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="MW/zQ/cu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HDbJqcibUmaGJ1p4C5sEd+3lVyonf1lrgps25nDaElHakNNTHox2J0XVqQ/DWXE/bCzjMxou6mZb+34/ZOmR0D3PYcbVIm6LCcd9oA3r1g/SpvGnzF8veNKGh2QndAwaobU+eo+xfMZaj7ZbHI/QYK1wTl974SZzSKzgr/tB3f2T8QoQPfG19vnxx9IYMElTVqxqFwyWtFTqe47Uz9pbn4Ml1iv6Lo0+9qDMFAfTkGxXGsVNRmSJiGYR2Q0IX6RQNY0pWa+oRiNDNl2wu1IB9Cv2d639ne8WyTKTFRYPhIHslbrHIOBiFu/JzqgozD7mR1lT5tZV21DP9ySWovGzgg== 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=hjMlhTz+HHkSBlhW0rshtSHaQXq64oGKji5WI81unJU=; b=M6lb5Mo7adCOcu6zmLUaLnpuaB3OEHLaKiKWxpdGddCGcGO5i1dDzDNcKviyk3yu2QKax4cvRarTs5WfizbSuC2BQlpHfJhDH/7fJ3HtO02pZ6D3YPwBgXSGVsbBpHQd+mX+FTkntLBU5mDT/vWCJfeOBiix8d5Dmf32ZQBkAPW68j87DS/vaW2Qi3c2bU/MzBPt+/FID3IIwxhf+sI+DCdPpiJJSGVYxWn1CrjupEjPOaVbO76aRnqXUWMXE+/14YX1kij9XmvKiVcuYmFEfqsofjQQA2YZQE7yzFFQDBOsjoiKoEb4Y129Fcm2ZqGqjPAOZlZTh4LlZWiJfo3qpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hjMlhTz+HHkSBlhW0rshtSHaQXq64oGKji5WI81unJU=; b=MW/zQ/cuMR7D5OhyCGNyOKVHW4cdum9gyDiIWwQk3DUWAsAJOd2C0lhqk74FGDh63IYd+ttau8L+gYHyH1vdm4ledr1bjSTB7xHy6WMGcbcoLAlHb2u4RRESf1cx5EWdv/5RG9WaPx71D5huLn918wA9TFxsojr2rYDG6gVB5yQ= Received: from TYCPR01CA0066.jpnprd01.prod.outlook.com (2603:1096:405:2::30) by TYWPR01MB10660.jpnprd01.prod.outlook.com (2603:1096:400:2a1::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:12:56 +0000 Received: from TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2:cafe::9) by TYCPR01CA0066.outlook.office365.com (2603:1096:405:2::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:12:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005026.mail.protection.outlook.com (10.167.240.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:12:54 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 9426F3000466; Fri, 22 May 2026 21:12:51 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:31 +0200 Subject: [PATCH net-next v5 02/14] net: renesas: rswitch: use device instead of net_device Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-2-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=6734; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=DdAHW5pFFp1rmLCOsdWwuX7F5XW8TbDbM8r2gJx/0iw=; b=wPhUoF2sxqoIuzVSyz/3GbeuZeCgh+H6sUBc5cFhi396h5+rc+jjbP2PW2aiR1zOO3MQLY36l IOf2wCbeUjvCaN8vd19o5DUVH0/Jc8OzN/ws8qdFq/XFbgqyv+hPLFw X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005026:EE_|TYWPR01MB10660:EE_ X-MS-Office365-Filtering-Correlation-Id: 817719ef-7a78-458d-6fdc-08deb7fb745b X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700016|82310400026|376014|7416014|18002099003|56012099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: 9GxRoL9xXOb21IvbaGbLssNk+Wi5ZLNPTnaGLRGZNPQ7UNZvH0qycVar11oOcBEnZLN8D9T/3MORb+7ca4Bgkke+paSxtPAAcnWa1af8obXiYWQAXERiIefRiMjH/GxIfsGUUxtBNNlUBMLrMfbjM9JwJlZCi2T3gDQfuMSlhwWoM5iCYVxDcBdyYZtLCIab1yuF4TmJGDQonwWCvvoD3+qO0Mva8LS1saoCI23gC0tQlCYJi68k6qR13C+OBUyxOVUqmYaBWH4JZDbstonjZXhadi/ZTnb9qlwuvqIWhiMj33+nPof6vtJmx1jWfZ0y7GebMvDwROtLTBt1b2XEuPthqI4oQXkB8Mxjq/AWrHruZ1Wz/dOKqxrxm4P+JrR2aTnD1aBEVpjQKc8C44N+H4oLv3kLRy363diC4gkYMt1WCBvzHjqCd665WkxVdYs0NvZsbhDTp2hqfbRRKOU+HZi1BPRYFzonngy0fbfX261vwnl/I+qZxqc3hh1L7pqDT8ZaAsLW09NRdyCd/C/Xh4pHcgIg363Phiz51GyjCP4Y5gaRpmrnUwsmmFT+9+sMikCSymyfWAnlwRbwav/n91Iv28mIHIosfJNrHUT7qUaitqIbd80AsLBaSt8Uh5uRB+agrJYvftSdLgOPdXWjmHLMCTB/PfEF9inHSCTX2V1rh7C+aTXFA9auDG0m2DN0hhYtM6jAj4sOVYF8eOXNWPln9DVH2B/+pN4ZUrU3QpE= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(82310400026)(376014)(7416014)(18002099003)(56012099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MMzIiyOI5nlg96cBibIu9x79GWt7i67/IH7usElv3zVlLaIYsVP100dIQWrFCB9dvomZQv9GBiOg/VU18/1Wot0XpVqPz8metONF30Y9X7isQjX9pwABR1+NTQ0zSNo4eOoe11QjptEqGhRoIZKfEDESs5Vl9Zr2uw+EbFRabnHadQsT6nNP1CIx1HY4bpFYgxHdBB9ebhCXORXy6RVEaZpP1PcKlkTk8ckDm3jZWj4/J7SLVMtyL0bFbc7F/q5LVxqEznS3PlsDxl54hbuS2SgpOsZO7hKSjk3iYywGZuZND086fngC0uIocMEfH6gDSuEP9Ivxe7+ypvv2GvXW2M4aSYFgHcotOoQYZjUcaR9CMJHXt3GbLvdn5WXpklpeQig3b3VhjQvY9lBDvN2ctzUzyzQ6ON+1FCZ9FGEkF5GfkXeAjV7hs27S1jMsdp/F X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:12:54.9501 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 817719ef-7a78-458d-6fdc-08deb7fb745b X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10660 In upcomming changes for adding vlan support struct net_device will not be available in all cases, therefore use struct device instead. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch_main.c | 56 +++++++++++++++----------= ---- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 9b739594cc02..74d441ae1976 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -304,26 +304,30 @@ static int rswitch_gwca_queue_alloc_rx_buf(struct rsw= itch_gwca_queue *gq, return -ENOMEM; } =20 -static void rswitch_gwca_queue_free(struct net_device *ndev, +static void rswitch_gwca_queue_free(struct device *dev, struct rswitch_gwca_queue *gq) { unsigned int i; =20 if (!gq->dir_tx) { - dma_free_coherent(ndev->dev.parent, - sizeof(struct rswitch_ext_ts_desc) * - (gq->ring_size + 1), gq->rx_ring, gq->ring_dma); - gq->rx_ring =3D NULL; - + if (gq->rx_ring) { + dma_free_coherent(dev, + sizeof(struct rswitch_ext_ts_desc) * + (gq->ring_size + 1), gq->rx_ring, gq->ring_dma); + gq->rx_ring =3D NULL; + } for (i =3D 0; i < gq->ring_size; i++) - skb_free_frag(gq->rx_bufs[i]); + if (gq->rx_bufs[i]) + skb_free_frag(gq->rx_bufs[i]); kfree(gq->rx_bufs); gq->rx_bufs =3D NULL; } else { - dma_free_coherent(ndev->dev.parent, - sizeof(struct rswitch_ext_desc) * - (gq->ring_size + 1), gq->tx_ring, gq->ring_dma); - gq->tx_ring =3D NULL; + if (gq->tx_ring) { + dma_free_coherent(dev, + sizeof(struct rswitch_ext_desc) * + (gq->ring_size + 1), gq->tx_ring, gq->ring_dma); + gq->tx_ring =3D NULL; + } kfree(gq->skbs); gq->skbs =3D NULL; kfree(gq->unmap_addrs); @@ -359,7 +363,7 @@ static int rswitch_gwca_queue_alloc(struct net_device *= ndev, if (rswitch_gwca_queue_alloc_rx_buf(gq, 0, gq->ring_size) < 0) goto out; =20 - gq->rx_ring =3D dma_alloc_coherent(ndev->dev.parent, + gq->rx_ring =3D dma_alloc_coherent(&priv->pdev->dev, sizeof(struct rswitch_ext_ts_desc) * (gq->ring_size + 1), &gq->ring_dma, GFP_KERNEL); } else { @@ -369,7 +373,7 @@ static int rswitch_gwca_queue_alloc(struct net_device *= ndev, gq->unmap_addrs =3D kzalloc_objs(*gq->unmap_addrs, gq->ring_size); if (!gq->unmap_addrs) goto out; - gq->tx_ring =3D dma_alloc_coherent(ndev->dev.parent, + gq->tx_ring =3D dma_alloc_coherent(&priv->pdev->dev, sizeof(struct rswitch_ext_desc) * (gq->ring_size + 1), &gq->ring_dma, GFP_KERNEL); } @@ -387,7 +391,7 @@ static int rswitch_gwca_queue_alloc(struct net_device *= ndev, return 0; =20 out: - rswitch_gwca_queue_free(ndev, gq); + rswitch_gwca_queue_free(&priv->pdev->dev, gq); =20 return -ENOMEM; } @@ -469,12 +473,11 @@ static void rswitch_gwca_ts_queue_fill(struct rswitch= _private *priv, } } =20 -static int rswitch_gwca_queue_ext_ts_fill(struct net_device *ndev, +static int rswitch_gwca_queue_ext_ts_fill(struct device *dev, struct rswitch_gwca_queue *gq, unsigned int start_index, unsigned int num) { - struct rswitch_device *rdev =3D netdev_priv(ndev); struct rswitch_ext_ts_desc *desc; unsigned int i, index; dma_addr_t dma_addr; @@ -483,18 +486,17 @@ static int rswitch_gwca_queue_ext_ts_fill(struct net_= device *ndev, index =3D (i + start_index) % gq->ring_size; desc =3D &gq->rx_ring[index]; if (!gq->dir_tx) { - dma_addr =3D dma_map_single(ndev->dev.parent, + dma_addr =3D dma_map_single(dev, gq->rx_bufs[index] + RSWITCH_HEADROOM, RSWITCH_MAP_BUF_SIZE, DMA_FROM_DEVICE); - if (dma_mapping_error(ndev->dev.parent, dma_addr)) + if (dma_mapping_error(dev, dma_addr)) goto err; =20 desc->desc.info_ds =3D cpu_to_le16(RSWITCH_DESC_BUF_SIZE); rswitch_desc_set_dptr(&desc->desc, dma_addr); dma_wmb(); desc->desc.die_dt =3D DT_FEMPTY | DIE; - desc->info1 =3D cpu_to_le64(INFO1_SPN(rdev->etha->index)); } else { desc->desc.die_dt =3D DT_EEMPTY | DIE; } @@ -507,8 +509,10 @@ static int rswitch_gwca_queue_ext_ts_fill(struct net_d= evice *ndev, for (; i-- > 0; ) { index =3D (i + start_index) % gq->ring_size; desc =3D &gq->rx_ring[index]; + desc->desc.die_dt =3D 0x00; + dma_wmb(); dma_addr =3D rswitch_desc_get_dptr(&desc->desc); - dma_unmap_single(ndev->dev.parent, dma_addr, + dma_unmap_single(dev, dma_addr, RSWITCH_MAP_BUF_SIZE, DMA_FROM_DEVICE); } } @@ -516,7 +520,7 @@ static int rswitch_gwca_queue_ext_ts_fill(struct net_de= vice *ndev, return -ENOMEM; } =20 -static int rswitch_gwca_queue_ext_ts_format(struct net_device *ndev, +static int rswitch_gwca_queue_ext_ts_format(struct device *dev, struct rswitch_private *priv, struct rswitch_gwca_queue *gq) { @@ -526,7 +530,7 @@ static int rswitch_gwca_queue_ext_ts_format(struct net_= device *ndev, int err; =20 memset(gq->rx_ring, 0, ring_size); - err =3D rswitch_gwca_queue_ext_ts_fill(ndev, gq, 0, gq->ring_size); + err =3D rswitch_gwca_queue_ext_ts_fill(dev, gq, 0, gq->ring_size); if (err < 0) return err; =20 @@ -638,7 +642,7 @@ static void rswitch_txdmac_free(struct net_device *ndev) { struct rswitch_device *rdev =3D netdev_priv(ndev); =20 - rswitch_gwca_queue_free(ndev, rdev->tx_queue); + rswitch_gwca_queue_free(ndev->dev.parent, rdev->tx_queue); rswitch_gwca_put(rdev->priv, rdev->tx_queue); } =20 @@ -672,7 +676,7 @@ static void rswitch_rxdmac_free(struct net_device *ndev) { struct rswitch_device *rdev =3D netdev_priv(ndev); =20 - rswitch_gwca_queue_free(ndev, rdev->rx_queue); + rswitch_gwca_queue_free(ndev->dev.parent, rdev->rx_queue); rswitch_gwca_put(rdev->priv, rdev->rx_queue); } =20 @@ -681,7 +685,7 @@ static int rswitch_rxdmac_init(struct rswitch_private *= priv, unsigned int index) struct rswitch_device *rdev =3D priv->rdev[index]; struct net_device *ndev =3D rdev->ndev; =20 - return rswitch_gwca_queue_ext_ts_format(ndev, priv, rdev->rx_queue); + return rswitch_gwca_queue_ext_ts_format(ndev->dev.parent, priv, rdev->rx_= queue); } =20 static int rswitch_gwca_hw_init(struct rswitch_private *priv) @@ -872,7 +876,7 @@ static bool rswitch_rx(struct net_device *ndev, int *qu= ota) ret =3D rswitch_gwca_queue_alloc_rx_buf(gq, gq->dirty, num); if (ret < 0) goto err; - ret =3D rswitch_gwca_queue_ext_ts_fill(ndev, gq, gq->dirty, num); + ret =3D rswitch_gwca_queue_ext_ts_fill(ndev->dev.parent, gq, gq->dirty, n= um); if (ret < 0) goto err; gq->dirty =3D rswitch_next_queue_index(gq, false, num); --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010015.outbound.protection.outlook.com [52.101.228.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 466F137998A; Fri, 22 May 2026 12:13:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451989; cv=fail; b=nfM+Gp4pvzJb8qcWQzMjJQI1e8ySPvB1VuU3aC4O6V3NhLIRU6AHxlKvdOf3iIUA7yl8wSUKJN81ixNFiz9udm45rahhIQSm0dbq6BG721inZfWUxpM0WLF9iAlI8E4AD3yTAa8wS6sv48vtVzyESY7cLudZlO1PJnKiw4P6aO4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451989; c=relaxed/simple; bh=KzokIuVf1JuasylWpTqglayVYk5u79t+hlc7Z4jEbGI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nMgPC7ihp8AOZ34MaAnNRnVamTjto9jDKxztw31hhFaGXC6ZZp5ETk/2lt57NsdLSntVa0xRlwx97LHyT2cdhMKMeUXQcTzcbpfYATIJcBIqYn5JULhHZJMB7qH2TGzk8tPVdiGqzOHktG4wz6Y3dso+iCfuNGLtlxFUQT4cAUg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=PRA8asZW; arc=fail smtp.client-ip=52.101.228.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="PRA8asZW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cSl3p99ZraPWNrEWG4mo1bsOqinDiDoUDPf0eHUGrokzPE48ntsHnjxBtdL5tUeImda9MBS7AEPFJ49qYM5Y2BYmQfsJJvt872DSxd6+j2aq8ZBLKykDJjsHdvARs+HF536Ua/K3nPhDWW+YBmZu+1nyiV3dSXxM2YeJIKXFF56e6NcdoBzSstBIJB43vB2hkgGPr2K1kChDO97FQFIBXsUKMsFuI5q14p3EvNKxa6Sau1+xeePt477E6/joaW5KDQzY1sIhMym7DhoJAe1ezwM5yGwERBc3busPjH9S8APaWytQ3a2IGmpeCwtrhH4fITre0zF/OqF+V9KLnthmMA== 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=ap7scxMTOjzPFSt4AZQx1FHKtid9MxnoQaxp0m+isPc=; b=oM4TUAM2usDj1wTSnCcgSm34GZVn4fLWNCjXbXB02SIfO/sg0Vc/L4QkMSen/SdXuRN7dqAtZFGJr1zvbDgHfWFpOCu6prkguWZFul6QFpNFWNz3JS5jyLVuYGuQgZFvw/LZXxidVlH7HplkjdsOupEZm5JU7D8w4Qb6tNFggLVNPbWgq/5yuI1rUCfeoAkAE3knHpOsTEKDDrHQt5D4Bsj7WKvnfvp3C4s+fbtB+2uJQG2aU0xbZwVup2ABxs+lGVQWkR1eOrlcRnhK6I1LfyQrV8UtP6m9VxuPzHUb21BoWjlZm2zFkzhaEVGtAjnHA9lEP4QGvzU3IlmEEIn1qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ap7scxMTOjzPFSt4AZQx1FHKtid9MxnoQaxp0m+isPc=; b=PRA8asZWkBBE1veCGtMYhpM802/oqpOvVq4JE6NUuLbpd0eE80Qq5pqLxNR+RO3S4a/oGU/KpUkEaK9mamKHFyGSZQV9l3nPFe/nqHcA9ROSP/Wn6T40VXEYzC48ztCPbEtGc39wgqjeNhz00n91h5PQP+Ajs1sBSssT8nh17Wg= Received: from OS0P286CA0158.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:16a::13) by OSCPR01MB16045.jpnprd01.prod.outlook.com (2603:1096:604:3e6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.25.24; Fri, 22 May 2026 12:13:00 +0000 Received: from OS3PEPF0000003E.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:16a:cafe::8c) by OS0P286CA0158.outlook.office365.com (2603:1096:604:16a::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by OS3PEPF0000003E.mail.protection.outlook.com (10.167.240.7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:12:58 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 4DCC6300046B; Fri, 22 May 2026 21:12:55 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:32 +0200 Subject: [PATCH net-next v5 03/14] net: renesas: rswitch: fix FWPC2 register access macros Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-3-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=2272; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=KzokIuVf1JuasylWpTqglayVYk5u79t+hlc7Z4jEbGI=; b=74fyfnFW6c9FbPjq1ndnv1o/ToeSRiHboiSu25FUbJELeDuImlTNNpi94YIe200pH1qLilaMA neVeXRibWyMBe1zCGISkxFR1FkemqyPsUnf18aTNnW6N22hBLpyKhCP X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS3PEPF0000003E:EE_|OSCPR01MB16045:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f36447a-6d87-46fe-e861-08deb7fb7698 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|82310400026|36860700016|376014|11063799006|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: sIrrPuwQoJIB0vVV/CM7LqlSia+09FyQjP6arY/wPALN0zFSxhsFFU9hSeVp+fFPOaIIdwAvs3+DlZQmoybmqQJnZgYEFKi43JzL+NiZT+5oTrchjwIGDcKmDSkaSTbtJA3vvyQxgZv4lGqwN7c2I8HZrWhxpeDpS+Q0ob5xiBO3rktJQefjVyUFnMbCyP3eJYJs/m4tAUBnFBSsvTQRBZbDURYlIHZ67l7G0P+xJlor3z/9jTjJ5zdiUTdaAn3gPUEwD5ZJR9q3Q9TUcMrjnYvJAMRhfUHd0kx41i+xxlmE3O01rRBBYU2u+t1kroXtvwPev1pfJhn653VxJPcCZ2DDWOSuH4r2j4tMgFozV3nw0ZUBqw24OLgknmnLlKsd3C8Xo/pdfIH++nR/2xMQNxEn5XYGblihtqmh/5enVVNu2zKW4Yd0NlDL0vFdxlk6cN0+x97OlSGw3m5/D0jrPL9m9UhFDGpguL1hrc2SBnje5FMTQNPi54VAdmMRPhNHem/vcnnoXT/sEwutk5YPi8shSjhS5QPP/BTDSMSve9y62ZX68iFJLCNvLd5JjB/bGP/ttQ2ghTDpTm3asGFdkhJPweNYc15KCnXioK5nS8w8oaTBuWHolHV7NrmzdDL7aN0LtjltmREffEu1yrAiUgpEPnkOqkWxlEO51Isrqrh0ml3zDMrteL3yltjN/kKCQPaG6/aB3SkZPFOv/rBLg6xpv5sqDq/4Deayq1neuGw= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(82310400026)(36860700016)(376014)(11063799006)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RIy1u0Z0kz/J/FSyrucK5Y9bTs5mmOTrCApU6H5e+SZ0YzcI2yQoyyChnZMJak/YxBmQj+SppxWLTBAdrRkdFDOJ74WMj7tOVhUC5LlBYQJOiO7cunsGgu13amPDJ7j90+/m3UQlkj/iYQ2iP+0UndIAcuP3zp2WLOvYV9bUCvOv2YP8/OF16h5N844q26PjjDSDBmc0nLpnnW3NCk+dQVZha42aYORjYDjNiVcoQC/wnfJZeEhAMjkuooNC6L/1TP1dpKh7jbcb0RB5WLrMhO9WSHj/lKFBvbDTejrsAfsovplIsbZ078epr/UJP84MC2PuKvqpsesTyGLK+UBNWF7XEpzdxJeZp9x9OBzZ4aPfJiY04WaHu3grYpATErLnbx1oDEIJstm2BWU9KRc0ML+LsvOZkLRD6l++DVS8ZZzRYzbrCyuFdIe1dTw1qm3u X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:12:58.6953 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f36447a-6d87-46fe-e861-08deb7fb7698 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS3PEPF0000003E.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCPR01MB16045 Fix typo in macro name and remove duplicate macro definition. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 3 +-- drivers/net/ethernet/renesas/rswitch_l2.c | 2 +- drivers/net/ethernet/renesas/rswitch_main.c | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index aa605304fed0..340524d995ac 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -826,8 +826,7 @@ enum rswitch_gwca_mode { #define FWPC1_DDE BIT(0) =20 #define FWPC2(i) (FWPC20 + (i) * 0x10) -#define FWCP2_LTWFW GENMASK(16 + (RSWITCH_NUM_AGENTS - 1), 16) -#define FWCP2_LTWFW_MASK GENMASK(16 + (RSWITCH_NUM_AGENTS - 1), 16) +#define FWPC2_LTWFW GENMASK(16 + (RSWITCH_NUM_AGENTS - 1), 16) =20 #define FWPBFC(i) (FWPBFC0 + (i) * 0x10) #define FWPBFC_PBDV GENMASK(RSWITCH_NUM_AGENTS - 1, 0) diff --git a/drivers/net/ethernet/renesas/rswitch_l2.c b/drivers/net/ethern= et/renesas/rswitch_l2.c index 9433cd8adced..709524c8a5c4 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.c +++ b/drivers/net/ethernet/renesas/rswitch_l2.c @@ -82,7 +82,7 @@ static void rswitch_update_l2_hw_forwarding(struct rswitc= h_private *priv) * * Do not allow L2 forwarding to self for hw port. */ - iowrite32(FIELD_PREP(FWCP2_LTWFW_MASK, fwd_mask | BIT(rdev->port)), + iowrite32(FIELD_PREP(FWPC2_LTWFW, fwd_mask | BIT(rdev->port)), priv->addr + FWPC2(rdev->port)); } =20 diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 74d441ae1976..9510bcdf9e83 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -129,7 +129,7 @@ static int rswitch_fwd_init(struct rswitch_private *pri= v) iowrite32(FIELD_PREP(FWCP1_LTHFW, all_ports_mask), priv->addr + FWPC1(i)); /* Disallow L2 forwarding */ - iowrite32(FIELD_PREP(FWCP2_LTWFW, all_ports_mask), + iowrite32(FIELD_PREP(FWPC2_LTWFW, all_ports_mask), priv->addr + FWPC2(i)); /* Disallow port based forwarding */ iowrite32(0, priv->addr + FWPBFC(i)); --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010024.outbound.protection.outlook.com [52.101.228.24]) (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 4BDBE37DE99; Fri, 22 May 2026 12:13:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451989; cv=fail; b=UuaVTpxfTl6stG6dE66LSIIOlfTeNBnR3eRFTUuvoNDWAGI1f3Z8tSiS5DC1A1Xg7z0jsMKTw6sNeajj97f/rS3daGT4RKt/5Cru8WdQsOPtT2TXl6ZmjNCGttAamimMkMyKqQmBLrO4lqOkK/EA9muU2jxCGN1xs6C2NIFF4Yw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451989; c=relaxed/simple; bh=jxtflo7pqLz5vv2Og2F+NhedUGaL5nZobcZN5x5IYz4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=okL7s8lDGqn16dWgmQslKY66P6rgRYFRNm2u5F3AxLu70lndTnUB10VKjIm8/MK54igFkvypW9YSp/AtCEFQiFN0N6N5daCszY08NjLEfX1qwglyZW/LXghQ78XrKMerRij+wkOvrwVL+qsdf0gKmMUa7XXQ7pwoVdoGAgEPlqM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=FLcmn2KE; arc=fail smtp.client-ip=52.101.228.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="FLcmn2KE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SsuJxeSJtOTVW0S+xaqHdoHdgWrLFGnY3ndTHF2UsldTZRffSjv84d0wc6ULQZL49lg/HAcwTumCqXSIBNgfxrM67YKlXt9IOLSk81mEf8p/a8wI/orsA3iDqo+KovYHdV1bi1pE7Rw5+BNzHh/kEz+tAkm/A/ouNQk9tA9kiuc93BZW1IwDOn0EW/NOHh8pR7dDInuClzkQr62p5mSVOgC2ulFGw36/tNQM481HJEIUJiSvaEetzdXy+CZD3L14S6XnCIix7ImrLBEXuSF3Z+yD5dvALt4UoQsEmti4LOqV8w6Hz1Xx4HwARRDOsOu7ozCF9YnDucciBR4atb3hHQ== 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=tEjw3elXQv2BiTljP6bkm5RxvWHzmH6KGBQFCB/YPnc=; b=ETIMbQrHHD/V1ouBHJxW4nabWQYT8za9SE8f9WnNX3OvS5RexXX2M+vcrJ+pOJJb3fdaMUjUDfLMWbjjA88GedIFuS/Rwo48d01TNxZq2E/j0FBvio/kHzqZygpC6xNphEq9HYG9m3KPQquHpYOpR+mKzPBC7QVJajHMi/0SojnCLjxaH0pAmBR/O0FXeIegD/FHXQSdO2QgzKP0L42tJy1gqGllt73h1jmiZZNXyY+FdqHT+jhjFyLBOjo2boFIzGASFXoaktMqFQj3EyvLJjJpSs7Gm4VSgzBRBebHHH4gPYjUO4H4yiGbV2+ZxoAPZeBaT9X7AemMnGU2lSnmsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tEjw3elXQv2BiTljP6bkm5RxvWHzmH6KGBQFCB/YPnc=; b=FLcmn2KEKw/WnmmM8DCzIfC8ZYn0Z7anvHbmKAPTlID+83G6HV9ssRB6ecgUt3DfWhobVnGirKegeDFrobgaaMAybfS03KSGwpQqYLSXS06A6XoKhqACJdYhQ0IBzVe/glvjPGMrMELOdiqmqWVWtA3CrXF4CKxOclfZ68WapIA= Received: from TY6P286CA0041.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:3b7::18) by OSOPR01MB12155.jpnprd01.prod.outlook.com (2603:1096:604:2de::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:03 +0000 Received: from TY1PEPF0000BAD9.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:3b7:cafe::8c) by TY6P286CA0041.outlook.office365.com (2603:1096:405:3b7::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:03 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TY1PEPF0000BAD9.mail.protection.outlook.com (10.167.240.38) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:02 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 07DB23000466; Fri, 22 May 2026 21:12:58 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:33 +0200 Subject: [PATCH net-next v5 04/14] net: renesas: rswitch: add register definitions for vlan support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-4-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=6223; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=jxtflo7pqLz5vv2Og2F+NhedUGaL5nZobcZN5x5IYz4=; b=0QjIniEvu/sX7ltSpczuUASXE6YmK5H7VjJY5Wjen95FcSWIOjl0UMvQdkMbU11kzb/r6X2dE dxbnGEcKY+vDTx9liq6r8qV4kMl0tRhYD5DSUy4c76RnOUum4X7ul77 X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY1PEPF0000BAD9:EE_|OSOPR01MB12155:EE_ X-MS-Office365-Filtering-Correlation-Id: fed560b2-3735-49f1-a242-08deb7fb78c3 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700016|7416014|1800799024|376014|18002099003|22082099003|56012099003|11063799006; X-Microsoft-Antispam-Message-Info: iOg/FVwDyrmu57yUPmk8tARXuSKbyl+zdwPy0kq5VgcmwXY0S3XJaIZ1VXkADNbCyvIH8Wn81zKiwIDNKpt5cIeRkk9OAkXdAfUYjxPJRrdBPjwtor3d/O/BD81loIcFbq6g5Cu5pEUxtjAw9FmJokeYcxdHtc4K8NXxCl1XikAHD/grMJo2i+5sTwcpWOqfMFDK/71YTqEHxS+5xET77y+0FU4a6Oe5YQTmJ4AUWO9WrUpqqe5GbweTkHF4qhQoNCY5mtgC3cwFxIiXWhNu9bNb9SrUMyyM8ThSlUvjfVe+eu2jhOM0z6UXlGVSMmhXJm3M6F8lOGZjLe7xR3goWFsoSUAqyw5PUag0EvnGS5lvP7/LWva3BdmFmOosZKcQT71CNrzsVTccUtzscd+wUZlCBc//UGpktYrTaVGGFqiNFQFxuvPpAaUFmkU++McLX4ndx/CROmpCl5wpxRF4E5nYT0KBMhgZPDqpA/DzhAnNea8ZFA2l3ZL6mOIkCiU2EMFcYbukMWtZ7DZIyo56l1XvpI9t60hqhZUcKf6pbf5t6iV6FF5OVWhFn3optbIkWsBm9G++n2u3gJpInNnLu3WpZ8ELhCejycwNmingoFO7A3n7GfhIIK9p4Ilp44kt/CUCNoPvP0TaWJm0/7IB5XXQCeq2+Pm0xUaDoFVuvuZGwSnE1TLPEv1Ul66OAX0t1hOCCnVQxVA/lfcV0NwnZj1W01KvW/7LcwSTStChcZk= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(7416014)(1800799024)(376014)(18002099003)(22082099003)(56012099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Nx4dQBj6wkwZDakO0pUDFINZXDJpIO3DqzMViTVgqsPesjactDTSS03EJ+dSYZcv8zXLyUmk3l7q+Kt7zA+moctRDE5jwJDfiBBVAvUNPC/6z8DNQORn/S2nmpEryFMCDKS8lVQ3mvYkOmg0b9IlNnYQZG0kN+HHwpUFidYtL5NnVnJdfSn9ytTNbz7CmcOVejlnm+w7OKqHyvFyNN0R80wLbNoeBHSxp65M6hfHLYOpw/oB5quQITnQXW4X5RZz4/NhNv1qNSBU5u58tPCANaCDdSiPtLHlW4BObVSBhjvJaid4aUpOnuj14njzEQAihIqRScV4jRE543m2gvZKsv/0HyzGlnsCHJPn317fh/aaA69tPxDXxIhuLnI54UpM8rSxSSTJlwtou4Tz0ywSB2P3k8eHUgA2I/QN59ijd285x4J7CSh4KOHUccC6PUZ7 X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:02.3442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fed560b2-3735-49f1-a242-08deb7fb78c3 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY1PEPF0000BAD9.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSOPR01MB12155 Add missing register and bit definitions for vlan support. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 156 +++++++++++++++++++++++++++++= +++- 1 file changed, 152 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index 340524d995ac..e56c15dd4ecd 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -7,8 +7,10 @@ #ifndef __RSWITCH_H__ #define __RSWITCH_H__ =20 +#include #include #include +#include =20 #include "rcar_gen4_ptp.h" =20 @@ -221,7 +223,7 @@ enum rswitch_reg { FWMACTL1 =3D FWRO + 0x4634, FWMACTL2 =3D FWRO + 0x4638, FWMACTL3 =3D FWRO + 0x463c, - FWMACTL4 =3D FWRO + 0x4640, + FWMACTL40 =3D FWRO + 0x4640, FWMACTL5 =3D FWRO + 0x4650, FWMACTLR =3D FWRO + 0x4654, FWMACTIM =3D FWRO + 0x4660, @@ -249,7 +251,7 @@ enum rswitch_reg { FWVLANTL0 =3D FWRO + 0x4910, FWVLANTL1 =3D FWRO + 0x4914, FWVLANTL2 =3D FWRO + 0x4918, - FWVLANTL3 =3D FWRO + 0x4920, + FWVLANTL30 =3D FWRO + 0x4920, FWVLANTL4 =3D FWRO + 0x4930, FWVLANTLR =3D FWRO + 0x4934, FWVLANTIM =3D FWRO + 0x4940, @@ -508,7 +510,7 @@ enum rswitch_reg { EACTDQMLM =3D TARO + 0x010c, EAVCC =3D TARO + 0x0130, EAVTC =3D TARO + 0x0134, - EATTFC =3D TARO + 0x0138, + EARTFC =3D TARO + 0x0138, EACAEC =3D TARO + 0x0200, EACC =3D TARO + 0x0204, EACAIVC0 =3D TARO + 0x0220, @@ -729,6 +731,41 @@ enum rswitch_etha_mode { =20 #define EAMS_OPS_MASK EAMC_OPC_OPERATION =20 +/* bit field definitions for EAVCC and GWVCC */ +#define VEM GENMASK(18, 16) +#define VIM BIT(0) + +/* bit field definitions for EAVTC and GWVTC */ +#define STD BIT(31) +#define STP GENMASK(30, 28) +#define STV GENMASK(27, 16) +#define CTD BIT(15) +#define CTP GENMASK(14, 12) +#define CTV GENMASK(11, 0) + +/* bit field definitions for EARTFC and GWTTCF */ +#define UT BIT(8) +#define SCRT BIT(7) +#define SCT BIT(6) +#define CRT BIT(5) +#define CT BIT(4) +#define CSRT BIT(3) +#define CST BIT(2) +#define RT BIT(1) +#define NT BIT(0) + +/* bit field definitions for EARDQDC and GWRDQDC */ +#define DQD GENMASK(10, 0) +#define DES_RAM_DP 0x400 + +enum vlan_egress_mode { + NO_VLAN, + C_TAG_VLAN, + HW_C_TAG_VLAN, + SC_TAG_VLAN, + HW_SC_TAG_VLAN, +}; + #define EAVCC_VEM_SC_TAG (0x3 << 16) =20 #define MPIC_PIS GENMASK(2, 0) @@ -806,6 +843,22 @@ enum rswitch_gwca_mode { #define CABPPFLC_INIT_VALUE 0x00800080 =20 /* MFWD */ +#define FWGC_SVM GENMASK(1, 0) + +enum switch_vlan_mode { + NO_VLAN_MODE, + C_TAG, + SC_TAG, +}; + +/* FWCEPRC2 */ +#define FDMACSLFEF BIT(19) +#define FDMACUFEF BIT(3) + +/* FWCEPTC */ +#define EPCS GENMASK(17, 16) +#define EPCSD GENMASK(6, 0) + #define FWPC0(i) (FWPC00 + (i) * 0x10) #define FWPC0_LTHTA BIT(0) #define FWPC0_IP4UE BIT(3) @@ -816,10 +869,13 @@ enum rswitch_gwca_mode { #define FWPC0_IPDSA BIT(12) #define FWPC0_IPHLA BIT(18) #define FWPC0_MACDSA BIT(20) +#define FWPC0_MACRUDA BIT(21) #define FWPC0_MACSSA BIT(23) #define FWPC0_MACHLA BIT(26) #define FWPC0_MACHMA BIT(27) #define FWPC0_VLANSA BIT(28) +#define FWPC0_VLANRU BIT(29) +#define FWPC0_VLANRUS BIT(30) =20 #define FWPC1(i) (FWPC10 + (i) * 0x10) #define FWCP1_LTHFW GENMASK(16 + (RSWITCH_NUM_AGENTS - 1), 16) @@ -847,6 +903,98 @@ enum rswitch_gwca_mode { #define FWMACAGC_MACAGOG BIT(28) #define FWMACAGC_MACDESOG BIT(29) =20 +/* FWMACTL0 */ +#define FWMACTL0_ED BIT(16) +#define FWMACTL0_HLD BIT(10) +#define FWMACTL0_DE BIT(9) +#define FWMACTL0_SL BIT(8) + +/* FWMACTL3 */ +#define FWMACTL3_DSLV GENMASK(16 + RSWITCH_NUM_AGENTS - 1, 16) +#define FWMACTL3_SSLV GENMASK(RSWITCH_NUM_AGENTS - 1, 0) + +/* FWMACTL4 */ +#define FWMACTL4(i) (FWMACTL40 + (i) * 4) +#define FWMACTL4_CSDL GENMASK(6, 0) + +/* FWMACTL5 */ +#define FWMACTL5_CME BIT(21) +#define FWMACTL5_EME BIT(20) +#define FWMACTL5_IPU BIT(19) +#define FWMACTL5_IPV GENMASK(18, 16) +#define FWMACTL5_DV GENMASK(6, 0) + +/* FWMACTLR */ +#define FWMACTLR_L BIT(31) +#define FWMACTLR_LCN GENMASK(25, 16) +#define FWMACTLR_LO BIT(3) +#define FWMACTLR_LEF BIT(2) +#define FWMACTLR_LSF BIT(1) +#define FWMACTLR_LF BIT(0) + +/* FWVLANTEC */ +#define VLANTMUE GENMASK(28, 16) + +/* FWVLANTL0 */ +#define VLANED BIT(16) +#define VLANHLDL BIT(10) +#define VLANSLL BIT(8) + +/* FWVLANTL1 */ +#define VLANVIDL GENMASK(11, 0) + +/* FWVLANTL2 */ +#define VLANSLVL GENMASK(6, 0) + +/* FWVLANTL3 */ +#define FWVLANTL3(i) (FWVLANTL30 + (i) * 4) +#define VLANCSDL GENMASK(6, 0) + +/* FWVLANTL4 */ +#define VLANCMEL BIT(21) +#define VLANEMEL BIT(20) +#define VLANIPUL BIT(19) +#define VLANIPVL GENMASK(18, 16) +#define VLANDVL GENMASK(6, 0) + +/* FWVLANTLR */ +#define VLANTL BIT(31) +#define VLANLO BIT(3) +#define VLANLEF BIT(2) +#define VLANLSF BIT(1) +#define VLANLF BIT(0) + +/* FWVLANTIM */ +#define VLANTR BIT(1) +#define VLANTIOG BIT(0) + +/* FWVLANTEM */ +#define VLANTUEN GENMASK(28, 16) +#define VLANTEN GENMASK(12, 0) + +/* FWVLANTS */ +#define VLANVIDS GENMASK(11, 0) + +/* FWVLANTSR0 */ +#define VLANTS BIT(31) +#define VLANHLDS BIT(10) +#define VLANSLS BIT(8) +#define VLANSNF BIT(1) +#define VLANSEF BIT(0) + +/* FWVLANTSR1 */ +#define VLANSLVS GENMASK(6, 0) + +/* FWVLANTSR2 */ +#define FWVLANTSR2(i) (FWVLANTSR20 + (i) * 4) + +/* FWVLANTSR3 */ +#define VLANCMES BIT(21) +#define VLANEMES BIT(20) +#define VLANIPUS BIT(19) +#define VLANIPVS GENMASK(18, 16) +#define VLANDVS GENMASK(6, 0) + #define RSW_AGEING_CLK_PER_US 0x140 #define RSW_AGEING_TIME 300 =20 @@ -904,7 +1052,7 @@ enum DIE_DT { #define INFO1_DV(port_vector) ((u64)(port_vector) << 48ULL) =20 /* For reception */ -#define INFO1_SPN(port) ((u64)(port) << 36ULL) +#define SPN GENMASK_U64(38, 36) =20 /* For timestamp descriptor in dptrl (Byte 4 to 7) */ #define TS_DESC_TSUN(dptrl) ((dptrl) & GENMASK(7, 0)) --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010064.outbound.protection.outlook.com [52.101.229.64]) (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 F221537F74B; Fri, 22 May 2026 12:13:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.64 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451992; cv=fail; b=MhSrlIV4N7eoAGIZt70g+9HcOyHiqINwz657JpMQejG89w1Q3ojzLPOPd83lyn5u8isJY5ZXpFK1sayKcqDlvBs0evsjxdEvEhCVXwZ2qhlRr5DovyKxUt9Cht1N7NzG5FO+GPRqbz7myWWNLSltINy3NuUmFqaUHXmtl/TW48c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451992; c=relaxed/simple; bh=U5rfpzwdAgxd+/UtqO18msfinPYCeNmVzRqIZkZ3gaw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qZg2og5BfLEdO0PY9lqVXNoGD0CyMY1L8AeOMtuFUBPjw+d+1gEwlzZ5zwHVd7NOGj6DmITVJlXGMxZHm05FQWxpEumNRGDMKTE9nt6J/Cg87G2A/FBP0Zy7JLLVM7/YAWj7OP+V4/nSO2DPNfDqGInUk7ejFp93aVWweckLY7g= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=TYGPV4uI; arc=fail smtp.client-ip=52.101.229.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="TYGPV4uI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kiXh3a3ScX3/xZCzuadybp0ywziyUfbK+RB12I7iSO9lan0VKNGDML/KZs3BZCBvDzQqrbgNbZFYDvNGWzoUCUnRW0WmPfcNKGk1chrN5H4HfREXBBBWptXtCGw2D4xJTxMTbYPmylUQOvBHkOxZf6fmCyhyncBHN1wAWz5HctBpY1laAvgu85eIaL7xZZhGNPqVGAaw9wYVjli9dGH+akY7QihNqYdECaXbNmTR6y/SI7lCpSIc4mKGNUja4nb+Lz24oX7Kh2Kc8X+hkMJHoEKbByLC7xG/PtIOl5Hq1rSDlrah2QTa8Pu+ek8ZrqEVUyvn+kJXVppzSBSs9yqi3Q== 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=tx+uBsgTrOKA8HS5+bNuV6+K9/HQsGaJdOFjF+BsPO4=; b=ToIoIP3+jemHi7pm8P+J2bCi8wHMzNJlJnruwrPujcThYk5G+l5TVL4DR90+ayW1R+JorDWxX65AK3511SDs3MmXm4zPLf2oHWx1q1p+JpaGXsP1XXeF51hafy98kIiBYrzYriMXu0lIN2F/NQaPSVXLEPvOXYJSFGE/6mtHSkL1GU9hlc6k0LzRLMc/X6P6cMoVzr6YXtlPyU7C1kDbqtY/Nq1C98IU4HPdPoQ+08rhpChwxtRgcZGtVS+ozC4//27YcuCIUub0DZeXAOYok3aJdq2/nOWZm23MxZBWy9bHd598zTA9Ih1CMaGijIVhUIG2KICxRQfa8FfJfMYLDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tx+uBsgTrOKA8HS5+bNuV6+K9/HQsGaJdOFjF+BsPO4=; b=TYGPV4uI0XoOkkRf+MKK7UJLLQJu9t+YC/1SgnNSCaDhmXcWVTDDmhoC+Fiaap8V6AeO7zEx2+eUsvw8+8uTxjnk1Ek4xU6ZsaNDw79Ye2ssdPE/KJH783aIdmw0h6lcIChrjCtVflZLcVhUba5FnZxhblgRrqscIR9XTzQ4nYY= Received: from TYCPR01CA0055.jpnprd01.prod.outlook.com (2603:1096:405:2::19) by TYVPR01MB10735.jpnprd01.prod.outlook.com (2603:1096:400:298::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:06 +0000 Received: from TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2:cafe::91) by TYCPR01CA0055.outlook.office365.com (2603:1096:405:2::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005026.mail.protection.outlook.com (10.167.240.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:06 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id B5ED03000458; Fri, 22 May 2026 21:13:02 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:34 +0200 Subject: [PATCH net-next v5 05/14] net: renesas: rswitch: add exception path for packets with unknown dst MAC Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-5-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=8948; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=U5rfpzwdAgxd+/UtqO18msfinPYCeNmVzRqIZkZ3gaw=; b=u1rqhWSJ63YBODAU56b5/iGyJdeRI0Kl1OElbLN/J9Iw1N0+dWsozpK50eSG7j0UpfQSXWSL3 5NgOBtNofaADy+dMLSvWZtB1L6IU2Pp07LTRG+f9ea3FeSQWiz9erXu X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005026:EE_|TYVPR01MB10735:EE_ X-MS-Office365-Filtering-Correlation-Id: eec712dd-5813-45cb-eea1-08deb7fb7afd X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|82310400026|36860700016|56012099003|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: oQmI7XVFWACb04s7Nqs4wkz/7BriTdCYhY/zFepdVBJ5TQggPaFqGLwEKNKYM3aQPfd7YXqQtFFyLHVJQwsSNtISxIvtXKCN5P0CjOicOecz3BGMEQWGsvZBbQSgT4t+AmwRXt/ooBNyN0NscJOQjVGSHgdhE9nB0VDuotz9sqRztH+v13qQDfUS3LtL3qAwBXnDd8TeQL9HcmPZw03UXnoQWcYuOUBuWaxnDF1eIvoeJ1Mn4e9PgMl1VU5saFJTHdq3LDnozVTq/h5FJlQBPgEL62/XpLtPnS8rGdZedbpAs3ap3h5Wy58xy1QRRZNSUnn2TA7XsRRFB95xxdcjwsRD/4FdnZ1EaLD7EgwB1tPq5qyzYPYpYKXo3UCCkayzj1SLAzcUftLXXHE+WkKSBR0XYnP/5htVFY+vZTNufAPzbE2RTrLfzakbVlv9cgFOy7LsHjijiTza781/F1f24N5fnWEB1/fBvNwyS8YDozcKBlrRVlj22YHgZWJTdZWfELrE+fHOGaj3CsY6R7l4GUu4dCfK//AFYCAfiPK+v+AItv5E3A8zn5LpP+GxikRdVj34jbo6ymySK51O7yk0R2nUvDqJp3/TTorVhmrTDXfEizsKyKiZpz4gAj6t/18K7/OY71W1runCtGDx1b7BKEl+YMREsHtIKlemAWkwfHqRncNfrLIs5xv8KsVBf2LIbD8G1ZS5k3Ed9MlTTVowqrPnOt88XydfdF43ZrzkOqk= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(82310400026)(36860700016)(56012099003)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hNrwDfpZXYrFjslOsa5+qbN0or5px00y8rlxWsmofQleJyBrOlMR7min3BybXG2FBX+Y5YmRkb6x63rDhdDMtl1FLQiGmKaf2GfBrJX+6du+LYAhR+rGHpJw8azySwKrxYV7gFYqfORxwJH5ai8LCK4VLSZsNHaufSPx4mb53e3cN5KxBlI3HDrnWRHQT28BKYzW3pnpeP6SlWeNqbOUljQMyQGrQZRHsAXV13JW9GqAHE3/tlhS6T1/rpiGUL3myHz3d6EFimgEyITy5fyxvUxB9mW+n41VBpO4EiFbHnxx3otG7VH3wLChNy9bRMxA/R5vjAH3nbBC5K4JqAC6M1mgSlUf0Zx4q7EUOtC28u0wFxDgBiGSczjYveO/opkEMfrQ0CwgM/OVvzIuTuqfLri+qlk8JYjFoSNI8Q9fIsc1MpJBBxxH4zaSD2HN7g1e X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:06.0822 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eec712dd-5813-45cb-eea1-08deb7fb7afd X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005026.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYVPR01MB10735 Packets with unknown MAC address cannot be handled by the HW forwarding. These need to be forwarded, via an exception path, to the network driver. Creates a queue for the exeption path. Packets received with unknown src/dst address need to be passed to the CPU. The received packet does not have the correct source port information, this is derived from the descriptor and added to the new queue. The received packet is added to the new queue and sent to the CPU for MAC learning. The CPU will broadcast the received packet, to all ports. This is how the HW learns the new MAC address. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 2 + drivers/net/ethernet/renesas/rswitch_main.c | 103 ++++++++++++++++++++++++= ++-- 2 files changed, 98 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index e56c15dd4ecd..8415f52a239e 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -1148,6 +1148,7 @@ struct rswitch_gwca { struct rswitch_gwca_queue *queues; int num_queues; struct rswitch_gwca_queue ts_queue; + struct rswitch_gwca_queue *l2_shared_rx_queue; DECLARE_BITMAP(used, RSWITCH_MAX_NUM_QUEUES); u32 tx_irq_bits[RSWITCH_NUM_IRQ_REGS]; u32 rx_irq_bits[RSWITCH_NUM_IRQ_REGS]; @@ -1162,6 +1163,7 @@ struct rswitch_device { void __iomem *addr; struct rswitch_gwca_queue *tx_queue; struct rswitch_gwca_queue *rx_queue; + struct rswitch_gwca_queue *rx_old_queue; struct sk_buff *ts_skb[TS_TAGS_PER_PORT]; DECLARE_BITMAP(ts_skb_used, TS_TAGS_PER_PORT); bool disabled; diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 9510bcdf9e83..1f4ec65f6f9b 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -688,6 +688,38 @@ static int rswitch_rxdmac_init(struct rswitch_private = *priv, unsigned int index) return rswitch_gwca_queue_ext_ts_format(ndev->dev.parent, priv, rdev->rx_= queue); } =20 +static void rswitch_shared_rx_queue_free(struct rswitch_private *priv) +{ + struct rswitch_gwca *gwca =3D &priv->gwca; + + rswitch_gwca_put(priv, gwca->l2_shared_rx_queue); + rswitch_gwca_queue_free(&priv->pdev->dev, gwca->l2_shared_rx_queue); +} + +static int rswitch_shared_rx_queue_alloc(struct rswitch_private *priv) +{ + struct rswitch_gwca *gwca =3D &priv->gwca; + struct device *dev =3D &priv->pdev->dev; + + int err; + + gwca->l2_shared_rx_queue =3D rswitch_gwca_get(priv); + if (!gwca->l2_shared_rx_queue) + return -EBUSY; + + err =3D rswitch_gwca_queue_alloc(NULL, priv, gwca->l2_shared_rx_queue, fa= lse, RX_RING_SIZE); + if (err < 0) { + rswitch_gwca_put(priv, gwca->l2_shared_rx_queue); + return err; + } + + err =3D rswitch_gwca_queue_ext_ts_format(dev, priv, gwca->l2_shared_rx_qu= eue); + + if (err < 0) + rswitch_shared_rx_queue_free(priv); + return err; +} + static int rswitch_gwca_hw_init(struct rswitch_private *priv) { unsigned int i; @@ -725,6 +757,10 @@ static int rswitch_gwca_hw_init(struct rswitch_private= *priv) return err; } =20 + err =3D rswitch_shared_rx_queue_alloc(priv); + if (err < 0) + return err; + return rswitch_gwca_change_mode(priv, GWMC_OPC_OPERATION); } =20 @@ -736,6 +772,8 @@ static int rswitch_gwca_hw_deinit(struct rswitch_privat= e *priv) if (err < 0) return err; =20 + rswitch_shared_rx_queue_free(priv); + return rswitch_gwca_change_mode(priv, GWMC_OPC_DISABLE); } =20 @@ -944,10 +982,15 @@ static int rswitch_poll(struct napi_struct *napi, int= budget) =20 if (napi_complete_done(napi, budget - quota)) { spin_lock_irqsave(&priv->lock, flags); + if (rdev->rx_old_queue) { + rdev->rx_queue =3D rdev->rx_old_queue; + rdev->rx_old_queue =3D NULL; + } if (test_bit(rdev->port, priv->opened_ports)) { rswitch_enadis_data_irq(priv, rdev->tx_queue->index, true); rswitch_enadis_data_irq(priv, rdev->rx_queue->index, true); } + rswitch_enadis_data_irq(priv, priv->gwca.l2_shared_rx_queue->index, true= ); spin_unlock_irqrestore(&priv->lock, flags); } =20 @@ -960,15 +1003,41 @@ static int rswitch_poll(struct napi_struct *napi, in= t budget) return 0; } =20 -static void rswitch_queue_interrupt(struct net_device *ndev) +static void rswitch_queue_interrupt(struct rswitch_private *priv, struct r= switch_gwca_queue *gq) { - struct rswitch_device *rdev =3D netdev_priv(ndev); + struct rswitch_ext_ts_desc *desc; + struct rswitch_device *rdev; + struct net_device *ndev; + unsigned long flags; + u32 spn; + + /* If we receive a shared queue through the exception path, it will be mi= ssing the ndev + * pointer. This needs to be added to be able to determine from which por= t the packet was + * received. Then we temporarily exchange the rx_queue pointer in rdev. T= his will be + * restored after the packet has been processed. + */ + + if (gq->index =3D=3D priv->gwca.l2_shared_rx_queue->index) { + desc =3D &gq->rx_ring[gq->cur]; + spn =3D FIELD_GET(SPN, le64_to_cpu(desc->info1)); + ndev =3D priv->rdev[spn]->ndev; + rdev =3D netdev_priv(ndev); + gq->ndev =3D ndev; + /* store original rx_queue */ + spin_lock_irqsave(&priv->lock, flags); + rdev->rx_old_queue =3D rdev->rx_queue; + rdev->rx_queue =3D gq; + spin_unlock_irqrestore(&priv->lock, flags); + } else { + rdev =3D netdev_priv(gq->ndev); + } =20 if (napi_schedule_prep(&rdev->napi)) { - spin_lock(&rdev->priv->lock); - rswitch_enadis_data_irq(rdev->priv, rdev->tx_queue->index, false); - rswitch_enadis_data_irq(rdev->priv, rdev->rx_queue->index, false); - spin_unlock(&rdev->priv->lock); + spin_lock(&priv->lock); + rswitch_enadis_data_irq(priv, rdev->tx_queue->index, false); + rswitch_enadis_data_irq(priv, rdev->rx_queue->index, false); + rswitch_enadis_data_irq(priv, priv->gwca.l2_shared_rx_queue->index, fals= e); + spin_unlock(&priv->lock); __napi_schedule(&rdev->napi); } } @@ -986,7 +1055,7 @@ static irqreturn_t rswitch_data_irq(struct rswitch_pri= vate *priv, u32 *dis) continue; =20 rswitch_ack_data_irq(priv, gq->index); - rswitch_queue_interrupt(gq->ndev); + rswitch_queue_interrupt(priv, gq); } =20 return IRQ_HANDLED; @@ -1523,6 +1592,14 @@ static int rswitch_serdes_set_params(struct rswitch_= device *rdev) return phy_set_speed(rdev->serdes, rdev->etha->speed); } =20 +static void rswitch_etha_set_exception_path(struct rswitch_private *priv) +{ + iowrite32(FDMACUFEF, priv->addr + FWCEPRC2); + iowrite32(FIELD_PREP(EPCS, GWCA_INDEX) | + FIELD_PREP(EPCSD, priv->gwca.l2_shared_rx_queue->index), + priv->addr + FWCEPTC); +} + static int rswitch_ether_port_init_one(struct rswitch_device *rdev) { int err; @@ -1576,6 +1653,8 @@ static int rswitch_ether_port_init_all(struct rswitch= _private *priv) unsigned int i; int err; =20 + rswitch_etha_set_exception_path(priv); + rswitch_for_each_enabled_port(priv, i) { err =3D rswitch_ether_port_init_one(priv->rdev[i]); if (err) @@ -1626,6 +1705,7 @@ static int rswitch_open(struct net_device *ndev) bitmap_set(rdev->priv->opened_ports, rdev->port, 1); rswitch_enadis_data_irq(rdev->priv, rdev->tx_queue->index, true); rswitch_enadis_data_irq(rdev->priv, rdev->rx_queue->index, true); + rswitch_enadis_data_irq(rdev->priv, rdev->priv->gwca.l2_shared_rx_queue->= index, true); spin_unlock_irqrestore(&rdev->priv->lock, flags); =20 phy_start(ndev->phydev); @@ -1653,6 +1733,11 @@ static int rswitch_stop(struct net_device *ndev) rswitch_enadis_data_irq(rdev->priv, rdev->tx_queue->index, false); rswitch_enadis_data_irq(rdev->priv, rdev->rx_queue->index, false); bitmap_clear(rdev->priv->opened_ports, rdev->port, 1); + if (bitmap_empty(rdev->priv->opened_ports, 1)) + rswitch_enadis_data_irq(rdev->priv, + rdev->priv->gwca.l2_shared_rx_queue->index, + false); + spin_unlock_irqrestore(&rdev->priv->lock, flags); =20 napi_disable(&rdev->napi); @@ -1959,6 +2044,7 @@ static int rswitch_device_alloc(struct rswitch_privat= e *priv, unsigned int index rdev->port =3D index; rdev->etha =3D &priv->etha[index]; rdev->addr =3D priv->addr; + rdev->rx_old_queue =3D NULL; =20 ndev->base_addr =3D (unsigned long)rdev->addr; snprintf(ndev->name, IFNAMSIZ, "tsn%d", index); @@ -2176,6 +2262,9 @@ static int renesas_eth_sw_probe(struct platform_devic= e *pdev) priv->gwca.index =3D AGENT_INDEX_GWCA; priv->gwca.num_queues =3D min(RSWITCH_NUM_PORTS * NUM_QUEUES_PER_NDEV, RSWITCH_MAX_NUM_QUEUES); + /* One extra queue for L2 switch reception */ + priv->gwca.num_queues =3D min(priv->gwca.num_queues + 1, + RSWITCH_MAX_NUM_QUEUES); priv->gwca.queues =3D devm_kcalloc(&pdev->dev, priv->gwca.num_queues, sizeof(*priv->gwca.queues), GFP_KERNEL); if (!priv->gwca.queues) --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010064.outbound.protection.outlook.com [52.101.228.64]) (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 8E72B37B402; Fri, 22 May 2026 12:13:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.64 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451995; cv=fail; b=C77gC6gi/14bsxAaYFovEKpTPfwdinnaGPz3lyK55sTA53gdm4YjNuoSXGtHZXy7nrUxXCJUQ7XP1Djo0VPHbjKEXrWVdoJ664owymnffUnODXSktBf8ByrZ8fYrYg/ij4x8cocjqw+C+gLiyfKMsm36wY1vmVxSZ5hkIhAYV/c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451995; c=relaxed/simple; bh=JGGhbyQumfo3wcFix6PAjLF371iAqBT/aYF9KzKp2j0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DuWiIfuyKqT+ku0upQdaIrl/ejgUJjMDdS472CoQDNACLp9PtHsgFuacCtUwLBpnS/O5PZDK6Q3G3RXFkDPscaUSn6LV3pR4pulAUKpiGzlgUjj/5esNhevfZ17RLP7OEMqQ5GVRi5Kr6qHR+PWBXiIfNxWhRz1LenvE3JzCdTk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=HMRP8O4x; arc=fail smtp.client-ip=52.101.228.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="HMRP8O4x" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L5bATu8ZSjkmufDZK5gZzZKYrkpft5LPV9ScuXOKXYbJWm8IDKdFWqdGBpHsz4+UxigxviXk7LOENza28Br1LWsdyM/k+CqF8+2UqQfkqQi1u9HGBgYUXqXB897qtvewi36HAG+hT7OrwEGHCg3zcEPcnM6D+ffil96V0WX+7MND5xvR5ouSiwoSGxl2jGIhFJqzURMzMmKjVyhn/Tgpl5tGtpx4HRX2xUXtgj0zuXzGe0e8RDtzRuTpvCR4yefMaMxADx/t4eQXbtQOOAu/D+F4P+CDcV9UPw0pUbMQ/BY6EKaRiqDkmNJdrYYFf8dl24iWggODB6Ee38bnmSmh/w== 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=qxro00NmhE/dO79vz9YLIdM7vKkEUKSeJCD5b3lKSWA=; b=mUcS+yroWecBzC9k553eQKMTVqTAz+68xiay+9gFwDtJfS6jcL/CckM+4Ddl25ggDLCMTGG0ecmEJv9seyJjHjYmz5HUyH1UwqvilUjVQ0WRXTJ+CilnXqFbep0e9WWaTTnSOBbRJWYkCzDX+TAjjy07ENtOJgoEZ9D5qKbFEecYEz+tLK8sZKhWGpMscXQhKdJTK5cqe033x/3KhVJ60+I/b3wTGvaLw1v2Qi8XPnX0PgY4CWR5B2M6GwEhrrfA3rPZyCw3jeRiGmDMA/QLXWqDDxqD4wqaknkAvKx6sCWmCfo8Hp/IvntdDogbLpi3eIvVGz7+bMeuN6GTqkcYfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qxro00NmhE/dO79vz9YLIdM7vKkEUKSeJCD5b3lKSWA=; b=HMRP8O4xrgCH7OmYFbYyN4MPoeC4y2+um7e4WosY6xngNJ8GahbLzRDiJBR0RmTbGEyzrAy4JGKew8zXACM+yrDy8W0hp9nzfjbDbRSC/m3DTdkYk6cjveB5HpktnzbE034cURyn4Vq8WkMpqvnBlt7j275VSgXiNnpSjKjLtj4= Received: from TYCP301CA0079.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7b::15) by OS3PR01MB8352.jpnprd01.prod.outlook.com (2603:1096:604:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:11 +0000 Received: from TY2PEPF00005624.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:7b:cafe::9c) by TYCP301CA0079.outlook.office365.com (2603:1096:405:7b::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TY2PEPF00005624.mail.protection.outlook.com (10.167.240.55) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:09 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 6FA853000466; Fri, 22 May 2026 21:13:06 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:35 +0200 Subject: [PATCH net-next v5 06/14] net: renesas: rswitch: add forwarding rules for gwca Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-6-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=1614; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=JGGhbyQumfo3wcFix6PAjLF371iAqBT/aYF9KzKp2j0=; b=XXTnDb+NWlXl0IbgKlu1W0fONRY1ju2L9NLCAKgbmpSnSJ2J1SJUQ3uHV+zGJz2kMgz9O3eWn A5NxAYD/MX0DTe9i7m4pQL0yxNyIhUNrfeJZl75wztjR/6m9Snpwv8W X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY2PEPF00005624:EE_|OS3PR01MB8352:EE_ X-MS-Office365-Filtering-Correlation-Id: 106d7fcb-1475-4871-933c-08deb7fb7d35 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|7416014|376014|36860700016|11063799006|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: ifDV1Ll5YoREkK4JB53zBpcVFj2UK9i93aJXYCYKNECdLjv/GggiWlt9KwPhCyPtEUIkV7woAFnCSuG9yqaZ9Ups1mzshzBuCvNnFeRluu7D1ultVdmOMgF/tC34r4aWdN0iXZSkeoUOU1WMuj4kU11jNr3Z+VNK0xFt94YeFpoPiRI+9n5K1lwBUcm3ztIG3V0x248CxhipDWGHPLfAzTV0P3CdUAZtYYxvkMJaXCry7kbycXsYjsFnJnnjTk4U63QgxrCNVFIblRKN58616Jkg7WhZyEbo1aVPTQx8SXfCQoAiPY0ZnT8D2W7ASixvgMzrZsQaAO8ihm9GLZS6vArDqpjkeYTgPCpJ97prTKA3aI7fztxTzemhz1u9bX2KegTRI+nGv+ZOiWbGNJvTxjVfIc1tXXUYl7P7jyHwAZ5cPveoctfUUK3Xln7JSErx/xJLO6Cp/BWKdHPq+0kXGaXYNNDCkBJpJ4GOWL2yTfnjxieCsMYnk6LFoCdOURlkVaSiCu5R6RgeTLFRC31yGhOraxBOoZxwaURmCVStp648Odpl2q6BJgbRer+5NHi0VMmqKWMMyb1LaAeEckIOlWq7vIIGn0d9J42L5oe/CFyLmCGDuC54Nx4Rj4mXutL26pm0jfMTrooyiZhRG7ImqXhLfDtCrlNCoL0wJjm78Dj7NNEpGiiPBMLrPBDyxWChv3kF8OKrVdH3XsZBSl4LeiOiPLRqdFbKHZFE9mvVP1Y= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(7416014)(376014)(36860700016)(11063799006)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XZteY3I/BoU8NO93HHxXetBAKXjK7KAQrH3qwpUva6Vi4d6f8yLy58+anktqk5YZjvxgW4Ij8YCz3UPWNEJNBef/eRSj/IbWa7GeaoYb37EM+d3cLAkmLgzmw9L2FdLQJPQL8U5JS+E/U5SPpeG6JKljfCykmlHZr+WhdZ+kLHlEUOEUWK5FT3kWIn7KXnwxndj7kspdWIEH6ZnJydoYOVxRntSGRXZp0jgwyZ07cs36nrxRt+TO4CA8+Yrp0SlMZfkoGqUZEkDJOIpKiMcKZDwin6Ebx86f6T6ZI/obde7kNEETkNl1JAV+mEPDTUNx6vrylQJx8vTlWGyuM2DeGDXjKQG+geWb0lyG05sKWFbzLV3y+FTiXtDIAJ8KwCY/Bfkx+m6u67VmdZdnmbRLvb8jTvqeeN6ONRAvf0/RH/sESNNsxsXflA/YrX5pt7eX X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:09.8019 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 106d7fcb-1475-4871-933c-08deb7fb7d35 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY2PEPF00005624.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB8352 Add rules to forward packets from the Ethernet ports to the CPU port (GWCA) using L2 forwarding instead of port forwarding. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch_l2.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/net/ethernet/renesas/rswitch_l2.c b/drivers/net/ethern= et/renesas/rswitch_l2.c index 709524c8a5c4..3cc0ce8762f3 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.c +++ b/drivers/net/ethernet/renesas/rswitch_l2.c @@ -93,10 +93,32 @@ static void rswitch_update_l2_hw_forwarding(struct rswi= tch_private *priv) } } =20 +static void rswitch_update_l2_hw_forwarding_gwca(struct rswitch_private *p= riv) +{ + struct rswitch_device *rdev; + u32 fwpc0_set, fwpc0_clr, fwpc2_set, fwpc2_clr; + + fwpc0_clr =3D FWPC0_MACSSA | FWPC0_MACDSA | FWPC0_MACRUDA; + fwpc0_set =3D fwpc0_clr; + fwpc2_clr =3D FIELD_PREP(FWPC2_LTWFW, BIT(AGENT_INDEX_GWCA)); + fwpc2_set =3D fwpc2_clr; + + (priv->offload_brdev) ? (fwpc0_clr =3D 0, fwpc2_set =3D 0) + : (fwpc0_set =3D 0, fwpc2_clr =3D 0); + + rswitch_modify(priv->addr, FWPC0(AGENT_INDEX_GWCA), fwpc0_clr, fwpc0_set); + + rswitch_for_all_ports(priv, rdev) { + rswitch_modify(priv->addr, FWPC2(rdev->etha->index), + fwpc2_clr, fwpc2_set); + } +} + void rswitch_update_l2_offload(struct rswitch_private *priv) { rswitch_update_l2_hw_learning(priv); rswitch_update_l2_hw_forwarding(priv); + rswitch_update_l2_hw_forwarding_gwca(priv); } =20 static void rswitch_update_offload_brdev(struct rswitch_private *priv) --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010058.outbound.protection.outlook.com [52.101.228.58]) (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 CED24383300; Fri, 22 May 2026 12:13:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452000; cv=fail; b=isdpbtaamKKDzMDpo/RqZiaCp3FU3020eOX0suu7dBxhZIXeaDNKSiFcychvcjYRpD0Ohj+oNfPVERbitsuwb0OrRXG7lJd562soqAQnWTz5dTFm8X3t4yqUnXuJ6dLCVpWqjA58d341dwoDCvSxtEStD+0l/rmGUH9TL1OagC0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452000; c=relaxed/simple; bh=LGWh+xNQi7OdMlwH19o1E/svIT2N5TNNEAL8wdOrX34=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hmXP2uPKvLCcOVmZXWxpoPQOiq18BES6gVGQihb3hdKzZ4PL3LFv7e3XckMkRMnEOX30Md5qh3snc7gvDhFPP5fd9t4awbzwjlqkSsAS0Ql04wW7QveIHWnz7ARRPoX6lGgDgAQqxmPqpN+eNA0UK9aGnl8TB7L/aGYn+0lJkZI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=W7P3wIdo; arc=fail smtp.client-ip=52.101.228.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="W7P3wIdo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AXGDfxWNMQkWKT8y92hNIc7v1Ht+xycozzyNcjboUNvaeshET+RLJ0qd/VXi3ldfUqciBWVqIbTlJ98l2mSO7WVGPe0gEbju7Fsht/t5qdZWIy9dy6tQ8uo4S7Pifwoi/4PrTKtojehY0ycVVaoD9Yy3+b1uSaehFBqHXKUCoDmevSEPc+0aKODE1LleHPbmxls8sTOaRFQ8+1NFPvi3aGDJX13zPU2VcPCfYWG0HMf17Epl19pqJIxX1K+NS3d/Ya9gnT7ydw+OXZOdDX6/+/ey0d31Nsi9Y7CpavdGRm4G9uwzu8tnCE6tgOizL4z96etIX3rzBKMvjbTLpO4lng== 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=35zZ4kJ0LQvFIaOvChJuRpFOYy4gCwzo4eIY9oSDkqk=; b=bKTPlgnOSUN+HrFSQ1pp0lUWL2bLdY3ZsrQumt0kWwEa/qzVQaSvBWGgeaIv5pknOaQOsdMJC3OE2d9fM0pAxRiqv77RByhKfJAnsTJdQ7EQqgWuUseBRnS9Iag8P5tJYgc06sMtL4faxJeIkxW20S52CZrxK1XAO4i6nIRdKFjNrIQJKt5/dxB554Ljz3MLaphuDwvVAraoSaytSj0fTJ6W929gVk1bR0e9VLWIwXsoWQ0VGeKrua5IkqxJIJzJuIM4/h7DzXmy+hB+C1mz6scz0H7WqCnZS/6bik9/eTwfa0W47GWHLhcUlOITRFb1rKt6EeCHtgm64lrXuaw5XQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=35zZ4kJ0LQvFIaOvChJuRpFOYy4gCwzo4eIY9oSDkqk=; b=W7P3wIdo9gsL2mjPTfYGWYAclQAZxJUAFDW+zx6pjnQ2EJpqSobZ8+u69tN8YIPJFHe3UupoZPM6rcQ/ssaEDAyvH26sJGEyIyx58EnI8Vw/F1I37IjTEwtFF4JSfbnHJq8TwPM+dJ9oJS5IknhBy9O+qXUahQh9RmoefMgsZbY= Received: from TYCP301CA0078.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7b::14) by TYCPR01MB9797.jpnprd01.prod.outlook.com (2603:1096:400:20b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:15 +0000 Received: from TY2PEPF00005624.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:7b:cafe::77) by TYCP301CA0078.outlook.office365.com (2603:1096:405:7b::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TY2PEPF00005624.mail.protection.outlook.com (10.167.240.55) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:13 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 289243000469; Fri, 22 May 2026 21:13:09 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:36 +0200 Subject: [PATCH net-next v5 07/14] net: renesas: rswitch: make helper functions available to whole driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-7-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=3137; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=LGWh+xNQi7OdMlwH19o1E/svIT2N5TNNEAL8wdOrX34=; b=qACOsTQShl6y2ZBZx1vhAE71rI0ZPu11bGUc+xRJbX38iIp79d8dpVoTCaiyGH1P6TXwBcurK UiUPgm276pFAxjiHOn0Vcc7Gn2T/nJjzuvtc3LeLLD+Y3/F1i3+5/JZ X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY2PEPF00005624:EE_|TYCPR01MB9797:EE_ X-MS-Office365-Filtering-Correlation-Id: 857f165d-bd83-4c08-15bf-08deb7fb7f79 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|7416014|376014|82310400026|1800799024|6133799003|11063799006|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: LC+YtMfAykRPeCb/sMpgTS3j4QFjgY4/Tsm8D2bXWTuDIwOczzTaTGVjW0q9G7kQn/iO8cI76sls0aECr08zmkZDo7SdYhkJLETcsqUvqp8YbRhOV0e+67JY7Hnd6QpOQVM/u2vNWpLsm6R6LH+5GujIGUFke7SDpRHSeFMzBBAHtUc55cojpvrOTmsIblLMqp/QRy/YM58fo0tBRZU0o19gaSIT4Ts1BUAfQ1e9smot9laBZIH+lMQO3BQAUumUBC060AFu0Ed92tvbJzItbdSST9jQeCv/c/QUVd4vET4ulZI60Oh1j/kSpQRDDk0qW5OvA0a2r1Hm4wKa47x9cLaanpu4La4W4WMYSYbixDmUAfTy6XR/FpIX+XkggMMtYxJ4Z7Bz2FfzrQXXCm8OyQKgKlIGKHdpKzVWa964DZK0XeLzxpCDCy6BSGt0YFRff5ocwOlXBKb7w3/NAySYSB9hWS4KxtibWBvNNAINWqndXTL+mboX7n0kqpxjlQ7VYDFrLxaTq508AfOeIXYPtKkAveAcPCBOaQYpAnwCVvOMjee+OzVNjySRhbU1vi9xKqyJ12keQMZ6Hy3XfZDH/hl8ptAImsMsJTtPQK//j2D3RojplgAI60EsdIsY5mdfVwMANHKGxNkQcGth/fH4OSwhBIyQegYPJgq8jMs8qzLETZOZ4Jp0Tl6YiiH4ItQBrxmLdA7jGTLeKj2hqPTvJcBWEq2Q77tGfslklBp0ZE8= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(7416014)(376014)(82310400026)(1800799024)(6133799003)(11063799006)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rgBL0OUuHQSR47nm2vHDpQqjSKKN1SpTjrIl1Qluk5HY1I/k+bFskDqWszob4sFl7pE/CtlFEpDDnTe0wrjbXl+N1lc1vGNeWTVdMOf5gRL74FGrZV97qlL+11DBqQs7FcgQsIVu4KBA2AF2EntNMiOBtPgH7W3tjkc8/koBTgz8kRQFJ4BQU88wuSaKqi5RhVcaUexVVZQ7mcqMmbJ9/BTeixJsTM/fZI5TTMIv/ek6CIACNbwq+PgKc2e6oL1YNKadI0IgDTpCAjTGRY2oaU9IpAgdkdPElus5UBzVNL+CkcDlxSVtWNLWVFpZ6uzVymKTLDCNlt7MR/ij5tQA0mRmdobCNKQbpFW8cdI+k9wAYm1q+3H+H3t/CpCP1uUKUCXPOsJ0WYkXWCmibVmEkTQrjpAQclbDhskyiU+OPGftH+jl0T9WxgBIa41TZJtV X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:13.5746 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 857f165d-bd83-4c08-15bf-08deb7fb7f79 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY2PEPF00005624.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB9797 These functions will be needed in L2 and vlan handling. Remove static declaration and add function prototype to rswitch.h. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 4 +++- drivers/net/ethernet/renesas/rswitch_main.c | 14 ++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index 8415f52a239e..5feeb555e9a8 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -1219,5 +1219,7 @@ struct rswitch_private { =20 bool is_rdev(const struct net_device *ndev); void rswitch_modify(void __iomem *addr, enum rswitch_reg reg, u32 clear, u= 32 set); - +int rswitch_reg_wait(void __iomem *addr, u32 offs, u32 mask, u32 expected); +int rswitch_gwca_change_mode(struct rswitch_private *priv, enum rswitch_gw= ca_mode mode); +int rswitch_etha_change_mode(struct rswitch_etha *etha, enum rswitch_etha_= mode mode); #endif /* #ifndef __RSWITCH_H__ */ diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 1f4ec65f6f9b..20ac8f3b9357 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 /* Renesas Ethernet Switch device driver * - * Copyright (C) 2022-2025 Renesas Electronics Corporation + * Copyright (C) 2022-2026 Renesas Electronics Corporation */ =20 #include @@ -32,7 +32,7 @@ =20 #define RSWITCH_GPTP_OFFSET_S4 0x00018000 =20 -static int rswitch_reg_wait(void __iomem *addr, u32 offs, u32 mask, u32 ex= pected) +int rswitch_reg_wait(void __iomem *addr, u32 offs, u32 mask, u32 expected) { u32 val; =20 @@ -168,14 +168,13 @@ static int rswitch_fwd_init(struct rswitch_private *p= riv) } =20 /* Gateway CPU agent block (GWCA) */ -static int rswitch_gwca_change_mode(struct rswitch_private *priv, - enum rswitch_gwca_mode mode) +int rswitch_gwca_change_mode(struct rswitch_private *priv, + enum rswitch_gwca_mode mode) { int ret; =20 if (!rswitch_agent_clock_is_enabled(priv->addr, priv->gwca.index)) rswitch_agent_clock_ctrl(priv->addr, priv->gwca.index, 1); - iowrite32(GWMC_OPC_DISABLE, priv->addr + GWMC); =20 ret =3D rswitch_reg_wait(priv->addr, GWMS, GWMS_OPS_MASK, GWMC_OPC_DISABL= E); @@ -1179,14 +1178,13 @@ static int rswitch_gwca_ts_request_irqs(struct rswi= tch_private *priv) } =20 /* Ethernet TSN Agent block (ETHA) and Ethernet MAC IP block (RMAC) */ -static int rswitch_etha_change_mode(struct rswitch_etha *etha, - enum rswitch_etha_mode mode) +int rswitch_etha_change_mode(struct rswitch_etha *etha, + enum rswitch_etha_mode mode) { int ret; =20 if (!rswitch_agent_clock_is_enabled(etha->coma_addr, etha->index)) rswitch_agent_clock_ctrl(etha->coma_addr, etha->index, 1); - iowrite32(EAMC_OPC_DISABLE, etha->addr + EAMC); ret =3D rswitch_reg_wait(etha->addr, EAMS, EAMS_OPS_MASK, EAMC_OPC_DISABL= E); if (ret < 0) --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011033.outbound.protection.outlook.com [40.107.74.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 628FC37D12C; Fri, 22 May 2026 12:13:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.33 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452005; cv=fail; b=nDpzexqGE7qYCtRnkC1PrKr7SSdnJGrhwAXWJ0fGtWNq96QJa3sRfk9KS8LNjeDO5FRsefqVp34jiAg8b4huHBsTc0SM8n7ZmotdiV0VHqdKrWrr68791b654vxGpS2zF8/fwXVX21OVyCs0AwIFBbVT4AI/G3/jcCfyd96rqiE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452005; c=relaxed/simple; bh=L5A+k6CIbmBkuqAQOuGKl0/4bkKhi7+/nZpQtdsi6nc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nn9ucC6hsSqjjepbKzNka/kAhBifLN6z7hNydAQMcXgTVYL2XU9nbsvg0F1RoIMQ8uxNqdKzVJuiQza93aBFbTji/stE7EZ7zzq2Ejcw5+lwbJgf3p+1TWN9PVzX80h17gviR5GnLtCXrI+GuPtD1nBiOFRyUyo/AnlAdv2V0LA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=VFwHsB1v; arc=fail smtp.client-ip=40.107.74.33 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="VFwHsB1v" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h7HAT0Myyj4rp5Z0c9OygnJTOeYeu16fZo4Grcom5OOSgK+HtVFT86rrudGHG1rNTuPpFku8J0S25q5J9zIKgl48pPJCAtAvpuMgzaxFJ93UAXfAbDnEYZnRUYda0nzUzGE8rX+3rmH5UBAKq6n+HXKYkniTNaU0m6DUZpSHzBe04o/zdtUorAtUp/qsxeEw15V34Ht2bv0i/zgiiR5jXsFyDI6Pba4ICX2rt5E4G2fBNKlKKywriipG6Q4KbirHwmzKAfM40jYy5eseGh9Jrzz0YX2axbUFQA07eImZa1rDfCPCAFdE97aHfWwZFYwc5bnteTPOGztEgGbHj/MevA== 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=ISKwiBGKkv4gruxtXxWZdCE/xm6BQ211gLgFnOg7x54=; b=anyfYqgVaMJ9xSFUJY1/4vcvZIS5yl3n3xGY8NxoGZAmgAPRhEwwolBzXlh0Qzm3b0kbAA7B6w9Jo4WbaZdzVZl8/O0/MDwCN+rRwLQSHOL5uxsuN7whu/CGTnxozVo5CeDBAh3J5iJNcBloShTTT+RxJc1rtnE6n58yfRMVhH8FC39j9r1Tbi2PpYOzvZkTj9O9427G52QxPb1F1xwLXxnVspaOMW+KfBfbT2f6HLttv8lI8Io4Tx98GmTsJUDfOOLeqdxOzDXaZxsuDo4JqtzcKUFnn52XLuNCZbVItiSyXM4f7S0MyCpsAFCqYvmNtvOt423w+bIbtxItTttCBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ISKwiBGKkv4gruxtXxWZdCE/xm6BQ211gLgFnOg7x54=; b=VFwHsB1vpt7uxB6w7Q4BBEV++5VCiH6ZlTa64jMIdesHQGY5+S+KRNoZRverrrbQenjHdGII0CbPe/7naG8F0rdaHhg65bZA2CVJWVxdyh6U20AEsZ9f3H8Z7sWNvmtJC+Lq/94p4ptMPMAMc5LQ5KlGnFkCQ/jfYWodI2aCtGc= Received: from OSTPR01CA0080.jpnprd01.prod.outlook.com (2603:1096:604:218::16) by OS3PR01MB10359.jpnprd01.prod.outlook.com (2603:1096:604:1fb::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:18 +0000 Received: from OS1PEPF0000D215.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:218:cafe::3e) by OSTPR01CA0080.outlook.office365.com (2603:1096:604:218::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by OS1PEPF0000D215.mail.protection.outlook.com (10.167.240.22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:17 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id D63043000466; Fri, 22 May 2026 21:13:13 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:37 +0200 Subject: [PATCH net-next v5 08/14] net: renesas: rswitch: add locking for agent clock control Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-8-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=3336; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=L5A+k6CIbmBkuqAQOuGKl0/4bkKhi7+/nZpQtdsi6nc=; b=iB1RxnhanzWLkWBXG+1/iZj4kg8vAliMb5Or1bFueqaqjnoAQW1gFIGiGxR8AoelXiPEz0ta4 LrOfDSDYFQLCSkblN40br2mck2yhstZPgTgvNzJ7+t610aNP5DVy4FH X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS1PEPF0000D215:EE_|OS3PR01MB10359:EE_ X-MS-Office365-Filtering-Correlation-Id: c3141a53-db75-41d2-b486-08deb7fb81be X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|56012099003|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: t0Cwp9JtCrFzop0mwnWFwX64xRzPGjIIt5HaCEzM0ZWHY1IpFRMGi/3ZBNZhoOXSdZb/+2vJCMMKDWbPfPCjGCt47mzdvf6oMMELrnrgtHBnf1HLbKuLHKmoiEeG3pOb83jvGQfIyqbwJypDEGz1DdKlE/CV7zZFGWKPIl7cw84QvK4GfZOzc+eZ1TE+uHFeNkflCRu9GsUpx4LY5YCrECgskRgolhbZeDqkbt8HriN2IAukbH3tVM4tMFnaPzdxtI86tOya1HnmLluaaqbKI+7cQXpb6sxPXKhgrkU5/SX12oPDzdET48g/1NxRz+kmLbHQNkS7SRd3yeSYAUDEPKAEPHBWmlOAjXFBii1jhihkgHAmV9beDOeoQiz3g7dtVl8TN7/KEuFP0DUim2d9yfZ3CbgdPIY8uhxG6NMEYHYbI1T3KY++vh3KSF05Db/yOGR10Ziudadgn5bQYc6zCDJgft37CxH6eVsl6NlcpBCfeFKDQt9XfxMYwsYspiEoQr/b0aWO3AY97YVCOJDmmxLwPs2oC4ZDihsdO7qECTBBkorrycSAzVjRpPgKdnx/ao9+Opu8pTF8ttId+ik6YSlr3zmIDxEby42RTwWvPTaW7LFW3wMNOiSaGSsFAVZAd6A+aDJwWTIlYoza4VdmsCo+6FXBGiKAiAia51V1u78fXPoyJ8dmYWI3Iz+NMl0E6foDHX43HuCfh1hZOMYgqLzAuPtE+q35llb8qUWATOg= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(82310400026)(1800799024)(56012099003)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JitzOomDq0cmqbHA8+ahT7X6iZZh+gfpQKes5mX7LXK3IlnPZxUCbYp2iAdlzE3ESaUdQPFzBhoWWcWGE6BkBsAjQGj5ZpoAvmbPin8GNSYYqwsgCTu4ALVP+pjSfoNoWiOu6MrG1P9GbmGjNAhz5ofidFkIff8FWff8bmpxiQ23w4OMWabGHc3Iqocp2v29fs+moCkDZ8GLTZuxfUXhZP03yYaDcUyG3rqyH/yR54DDQx9lYqGd8lgWKGLZEu5mlU2Wfm9DCystjjCbAvdrIvmSThAxGjxrJKP8g7k1dFnKZv5s2Kh9hDYw8DKM5VeaD9YyyVhIawMlijyMMmNZ2lYRfLZu9/+hCTGW7RqelIQ5eRUSvTW7Km/ivjIA/cHmulqVZ8WRAYonTMDwqP6MfISzhtr4rQ/W0giQbIRI5WMxkMSSuagydNaespYzIX0w X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:17.3786 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c3141a53-db75-41d2-b486-08deb7fb81be X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS1PEPF0000D215.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB10359 RCEC and RCDC clock registers are shared by all ports (ETHA and GWCA), there is a potential risk of a race condition leading to an undefined state. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 3 +++ drivers/net/ethernet/renesas/rswitch_main.c | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index 5feeb555e9a8..f85dd96a9bfb 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -1089,6 +1089,7 @@ struct rswitch_etha { unsigned int index; void __iomem *addr; void __iomem *coma_addr; + struct rswitch_private *priv; bool external_phy; struct mii_bus *mii; phy_interface_t phy_interface; @@ -1207,6 +1208,8 @@ struct rswitch_private { struct list_head port_list; =20 spinlock_t lock; /* lock interrupt registers' control */ + spinlock_t agent_lock; /* rswitch agent clock control */ + struct clk *clk; =20 bool etha_no_runtime_change; diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 20ac8f3b9357..fc80c65c2131 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -173,8 +173,12 @@ int rswitch_gwca_change_mode(struct rswitch_private *p= riv, { int ret; =20 - if (!rswitch_agent_clock_is_enabled(priv->addr, priv->gwca.index)) + if (!rswitch_agent_clock_is_enabled(priv->addr, priv->gwca.index)) { + spin_lock(&priv->agent_lock); rswitch_agent_clock_ctrl(priv->addr, priv->gwca.index, 1); + spin_lock(&priv->agent_lock); + } + iowrite32(GWMC_OPC_DISABLE, priv->addr + GWMC); =20 ret =3D rswitch_reg_wait(priv->addr, GWMS, GWMS_OPS_MASK, GWMC_OPC_DISABL= E); @@ -182,7 +186,9 @@ int rswitch_gwca_change_mode(struct rswitch_private *pr= iv, return ret; =20 if (mode =3D=3D GWMC_OPC_DISABLE) { + spin_lock(&priv->agent_lock); rswitch_agent_clock_ctrl(priv->addr, priv->gwca.index, 0); + spin_unlock(&priv->agent_lock); =20 return ret; } @@ -1183,15 +1189,21 @@ int rswitch_etha_change_mode(struct rswitch_etha *e= tha, { int ret; =20 - if (!rswitch_agent_clock_is_enabled(etha->coma_addr, etha->index)) + if (!rswitch_agent_clock_is_enabled(etha->coma_addr, etha->index)) { + spin_lock(ða->priv->agent_lock); rswitch_agent_clock_ctrl(etha->coma_addr, etha->index, 1); + spin_unlock(ða->priv->agent_lock); + } + iowrite32(EAMC_OPC_DISABLE, etha->addr + EAMC); ret =3D rswitch_reg_wait(etha->addr, EAMS, EAMS_OPS_MASK, EAMC_OPC_DISABL= E); if (ret < 0) return ret; =20 if (mode =3D=3D EAMC_OPC_DISABLE) { + spin_lock(ða->priv->agent_lock); rswitch_agent_clock_ctrl(etha->coma_addr, etha->index, 0); + spin_unlock(ða->priv->agent_lock); =20 return ret; } @@ -2010,6 +2022,7 @@ static void rswitch_etha_init(struct rswitch_private = *priv, unsigned int index) etha->index =3D index; etha->addr =3D priv->addr + RSWITCH_ETHA_OFFSET + index * RSWITCH_ETHA_SI= ZE; etha->coma_addr =3D priv->addr; + etha->priv =3D priv; =20 /* MPIC.PSMCS =3D (clk [MHz] / (MDC frequency [MHz] * 2) - 1. * Calculating PSMCS value as MDC frequency =3D 2.5MHz. So, multiply --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011063.outbound.protection.outlook.com [52.101.125.63]) (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 EAC0D37DE8B; Fri, 22 May 2026 12:13:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452008; cv=fail; b=Hivgk2oGySH38D/EwtQ+MdwRqwi6/ouQLW8Q4Dicbq/f88M8DLGSCgLVGDyoRr5iEO+8le15nD/PO9KVXaYGgMjjdPZE49srd4+kiZBeR1HWj4fLrk/3ClVT+t2SWur2BrZ+oTVaCvtmhsIcbr3iaDCqh57H5flq7PeI2nJxe0Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452008; c=relaxed/simple; bh=hLnTKpOgthWQzvXF+Q+ys3eDp3ALKqhCOmR4k0TQ/qg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Mer81iyn6OwjZsv70CQV8eE3+aQLVq0G5VhIc6p7s5HZgfCZ7cKu+slgFIi/Is2s++E9U0bq0iL/FM6ijbsd+cjRxnwbQBGWsQihiAjq4OAf5UqBanRlkuTDFZqScuHxgfU8fQIxNMLAkNNJiaOhu5QB3Lg2rO2BE0xeCkorkXI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=BPoLg4dm; arc=fail smtp.client-ip=52.101.125.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="BPoLg4dm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LXSAHi9EOAgYqfABi5GiTq1q7rrAKTjHJHYdx9qYLOLJSF+pFD7Ur4uxoizrNzKjDLAFCWeFApkdn5tPHsr8xFLe1bW55P+tqDYWCr6mcdX8HlqbdVmau9lVNraGiAOc4OHPcUJCLnZ3D/FsPv+kraoQZgrnZQpaN6kmr3HDEjnw2ipvC/YxeKlQYlEm8uBCPTDuO0JjuYQhwH8S+NaYkXWwsDez7qFUN0DIxqwhRVpEg8YIkr5ktdcgop9HJ7X1CiXy9dHKJRvpGP/fWtmXtky7Ke9nL1pn4XYRctk73+owQ0J1ag2tuZVLMBWl0yqMXZc4udhUcolnbDGKsowFbQ== 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=1ddRc+CipmaN7G6yuATUOz2mVH+Zg5zoCZ/ShBc+4WI=; b=TAM+4QCVVX7tBgGzA03Snasu9FYGTZvmDwJjAjMbghrw9GFBw41ZLS42C80IWsHY3a4WSVmmBiou/5A/Ssc34QyIfUW92umRjioPwzki/PaRHPWZoXxB48LgE37T+6sOLfQNZBpOw7xKXfpe28JXDfNSJgSwHzn5EQqEUyqZ3WNLe6hSnx6KNNQ3uL4Fr1bTwJfOQEmHKRZSzYPvIoV47d6CMwq+1iEJ8vwelJpHFyOxPHB1356dOy2f3Faqwws8gLbw/WK7+yGjVNHP6cN3byPRf6NoKO5PvcjppRnmdy++EpwcYE6Splkhi200qrKqTyAz8T+iP1xvMOHv4wYEWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ddRc+CipmaN7G6yuATUOz2mVH+Zg5zoCZ/ShBc+4WI=; b=BPoLg4dm7/FTtI1t+qXjyCIurma3GbNYAumUNdvRFjSnNC7YV3O+knkRK/iw7iDxYjGL3PfaoMV7KGAFANDTMBcLmEhCVO/a94xK3euP/MJXSBD2GQXEz9zZWLwl5jOG9JhKNHAOOI1JonHeseWOoodZI1AkF6ZbDthZ8Qex//A= Received: from TYCP286CA0333.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:38e::19) by TY7PR01MB13889.jpnprd01.prod.outlook.com (2603:1096:405:1fd::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:22 +0000 Received: from TYO1EPF00005020.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:38e:cafe::6f) by TYCP286CA0333.outlook.office365.com (2603:1096:400:38e::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005020.mail.protection.outlook.com (10.167.240.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:20 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 919673000459; Fri, 22 May 2026 21:13:17 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:38 +0200 Subject: [PATCH net-next v5 09/14] net: renesas: rswitch: add basic vlan init to rswitch_fwd_init Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-9-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=1893; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=hLnTKpOgthWQzvXF+Q+ys3eDp3ALKqhCOmR4k0TQ/qg=; b=WWqvK9aWOH3BYFl3zZwdqijBuqxA+QBMLddYxmCKCZFUc6FKzYfuxfTgk7L1ZZtpsGdmn1oX8 2/3liImaVmCCVj4kz8y6jQsHfD2//ySI6gVLIVV0por7ifsPICyFGdz X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005020:EE_|TY7PR01MB13889:EE_ X-MS-Office365-Filtering-Correlation-Id: 5456dadd-3aae-4adf-d378-08deb7fb83d6 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|82310400026|36860700016|1800799024|6133799003|11063799006|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: 0IrxeXkG+OFXnvRbPiM7xgLNKisXbU/zqzAxWYM0ZTA3FL2c3e3hDvQWTz87hmzZ5Nc0Q+Qptih0w7ZBLGrDFq6J0ZDCo/gTtT711RSCw6BNjYt7MPJdUbxSoppVZNFSCs9uUuAPbliVyPkN0xgJuibMZ5illZdvOnbI/Iza3aNPDaJ7UotE4TNXxIp6UTBsiueZHxgNMmsJZAKhj6OPDFZJxImcxtpqjx6D+dpUt9mT5PRKATeyZs7RiVUPwxdsVZ4UliZBSC5c7C1pTIn3IjY3lL0OZgzOjaJwVNHIiliIWRM2OTsH9kr2W/y8oXuPX64WfU3PiLqu6qx0rruezE0CLp3FdEtN53+v0ddsDsqClYz9gKmq7SvotE9Me0IslIJKjvDcQ5p9kmJKcjVBz2WDEq7N9ERBd2e61uSgHkg3ndfZ/RayqI+RJmUY4CSHbsZOiBHwhMsC33nG/LkR4tjwqbrLUfyF6DLgEWee+Mctn6ZXmZYgWb8ySKKxx+eRRS4v9AHSuHb7f6/Bmi9YuWZst8VazKj7mEygfD9dBz2gCaZ8AwKUzaXt3cuS/xicqoW+6dZ1/jk8ngQAaKLDfU0MvWwCy3q76N39aBjhb0sw8+25LWuzXKMo6xx5wJO4GMi2FwUEIGlMi7srf30QG6jAvzZRP3tw3GoD7cB1a46KdIRRejAaYXwen3CG1XeS3T56hf5Tx4U/w0e2z8OPWuIQKRvHVchM+A26Kgky6wE= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(82310400026)(36860700016)(1800799024)(6133799003)(11063799006)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2CPbqqobQY/LUQKf0c9R+zhiUwoCCW/3FPGYEnA1BBx8rmO1MdJfI43MrTLDov2avxN/oLe7o3Eg6sOrksRbROpimJdTnQT2wjwU7AkyzViezkJhXQnC/O0OcNR4c667BcGVWwZNECwn0+yRWjnt0ggGh6eyQMBVJbbmMBLXaKFLpdasygzz44XwdDFBxI5eoRElUGxJA8RYyDMZo8oDU67mMCgvlCeappYEbwlrNVT9hsJwXuRgBCaW12Ky6ExMIoCUr4Q3JfmrRVL1Y6Ezw+OJ5pQkdO8CZ4b2xrNbadhcNqPZ1kkUCJgAjZgEhLFdI3Js/zvHH+GGVfDzr3K63dufYTD48h2VBeDDOG44+3pp9faLxCI1MgbN2xOSPH9rGLS6d33cH9CYk8QHzFAd9gXfUrlH+74dmp8GtSm6VfDWfpeb4Xso6K7ykIwWO/+d X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:20.9250 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5456dadd-3aae-4adf-d378-08deb7fb83d6 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005020.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7PR01MB13889 Add basic vlan related register initialization. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch_main.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index fc80c65c2131..a445d9a8505d 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -120,6 +120,7 @@ static int rswitch_fwd_init(struct rswitch_private *pri= v) u32 all_ports_mask =3D GENMASK(RSWITCH_NUM_AGENTS - 1, 0); unsigned int i; u32 reg_val; + int ret; =20 /* Start with empty configuration */ for (i =3D 0; i < RSWITCH_NUM_AGENTS; i++) { @@ -154,17 +155,27 @@ static int rswitch_fwd_init(struct rswitch_private *p= riv) } =20 /* For GWCA port, allow direct descriptor forwarding */ - rswitch_modify(priv->addr, FWPC1(priv->gwca.index), FWPC1_DDE, FWPC1_DDE); + rswitch_modify(priv->addr, FWPC1(priv->gwca.index), 0, FWPC1_DDE); =20 /* Initialize hardware L2 forwarding table */ =20 - /* Allow entire table to be used for "unsecure" entries */ + /* Allow entire table to be used for "un-secure" entries */ rswitch_modify(priv->addr, FWMACHEC, 0, FWMACHEC_MACHMUE_MASK); =20 /* Initialize MAC hash table */ iowrite32(FWMACTIM_MACTIOG, priv->addr + FWMACTIM); =20 - return rswitch_reg_wait(priv->addr, FWMACTIM, FWMACTIM_MACTIOG, 0); + ret =3D rswitch_reg_wait(priv->addr, FWMACTIM, FWMACTIM_MACTIOG, 0); + if (ret) + return ret; + + /* Allow entire VLAN table to be used for "un-secure" entries */ + iowrite32(VLANTMUE, priv->addr + FWVLANTEC); + + /* Initialize VLAN table */ + iowrite32(VLANTIOG, priv->addr + FWVLANTIM); + + return rswitch_reg_wait(priv->addr, FWVLANTIM, VLANTIOG, 0); } =20 /* Gateway CPU agent block (GWCA) */ --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010044.outbound.protection.outlook.com [52.101.229.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C460437F017; Fri, 22 May 2026 12:13:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452016; cv=fail; b=Qfqd4ANoblnP7GCz4AisYI2sqlcWUhHN1LcHHjFNk8tLKqIEDQQO2RYSvWkBEgrJUocxb7DdCM8lKFD83BJVZFWuchvsaKKOPHcQDEVeAweulzH7TtSTdgh6Ng74dhxyFNoqPPypxX8vlpmxHp2+OlRmBmpDcRcIOQKa08mtFPg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452016; c=relaxed/simple; bh=68bTAHsrtn5+3OAMsPqfRjblCPIZOM0XUr496LrrfdM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qkGShaNH3gwcfthFQdthvuHmlI2ZSWsi+yFXyUrGz50CRafoYl/OwXACr2+1AEHUBk2iLVrmWJSFEf5mRBewSlMJMcTtY7GU33N7QrODKpgllAqREKJENr94Iyo2nu/nbCwei4s0zZR8PAX9zFLkBoEL+07LyQpK4JNnBUaLUYw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=Go+OM60Y; arc=fail smtp.client-ip=52.101.229.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="Go+OM60Y" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TfHZPjnYARKviNpAnDb9px4Tg/VInXJIQngZL4Ep9f1pojYZ6Qjt+MRNtr9QMxtKRN/K2GN0YthzwfbygWJoLb3YrhG4Jl8cANvWPwWA+YZsKs5y/vN9IHk6iACvNnov5agmOsbj+StZtgfmocrlTokLhn9q7S8hPmoubgcwi/2k//5EgMcNQG0wT4+rP4X/3syPk8wUeBne1JQ1ByLml30HxvnrOJ7ltpI14+UNBq6YMHdcAfXnH4De8SLLLV1CVAmlfeAexmueh39bcVmbD/W+9lyWSxakijd/PEMY9faIg4t2J/fq5lpisZHdh0qF2hfS7Fmbs2QIeUxH/WXDxg== 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=A+nl79xvbe3KMm2ckL77kD+YsIW27RLtDrUzY1MpQ+M=; b=FCWUhL0t3uQwg5l9S81OqHPGcBwzhNoQNh0MvMG0UQvsCGj5g0cye2jsG9doF+ryDrc+PS4thgiVF9/i/KBnTg+DM0/OlYg6Vo6D/H5vnHS3pMM2DftLO8+73CmVtbeaN/EKWDRSsiIERaRVIDo9UbDGAAAp52E9toTxxl9lSvl6LpoKciAAbwth3pCFg0T9CZdtEi9wTr54ABAayXEdxwAQmduAx9RyKJ2589963XbQTEygtpbZ1qNZ92QHnUOFn8Nu2BpYN3mYZ7m6JHOkYo0WmqZBXEhsoDd5ILEMK6CbVVmFLms26E4Ybug+YQL9GPhmZs/1gDJ7JXL1vCKxeQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A+nl79xvbe3KMm2ckL77kD+YsIW27RLtDrUzY1MpQ+M=; b=Go+OM60YLkCGoyJ59XaPU9KkHd1UulvjegS4ImCtEML1c3kKo0HBVWp9IDFPV2YL8qynwMLpr+mgJR8iPlkPGjsiHiipzCh6S/gjYB9XCv6L5Poxlg4q/eDwSJbmRKSficNcmVQa1CYckFUblMuq4RV3HX5EHzlnTUceMKExkvc= Received: from OS3P301CA0052.JPNP301.PROD.OUTLOOK.COM (2603:1096:604:21c::17) by TY4PR01MB13430.jpnprd01.prod.outlook.com (2603:1096:405:1d8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:31 +0000 Received: from OS1PEPF0000D20F.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:21c:cafe::62) by OS3P301CA0052.outlook.office365.com (2603:1096:604:21c::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by OS1PEPF0000D20F.mail.protection.outlook.com (10.167.240.38) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:24 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 4D82A3000469; Fri, 22 May 2026 21:13:21 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:39 +0200 Subject: [PATCH net-next v5 10/14] net: renesas: rswitch: update port HW init Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-10-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=2613; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=68bTAHsrtn5+3OAMsPqfRjblCPIZOM0XUr496LrrfdM=; b=+vEzTd6d2Q//FN/buK4ZFnZ/cBaaYhnpo6N+mA433qGTWfy/FZHjdTr9dEUxo/UXt9k5fXYC+ RZkq8W+CaS/BjfPbCwLO52flr1+4NokeMlbukEZmAKJpMGFZRxtgb96 X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS1PEPF0000D20F:EE_|TY4PR01MB13430:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cb281d8-6f2a-47d1-b239-08deb7fb8616 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|7416014|36860700016|82310400026|18002099003|22082099003|56012099003|11063799006; X-Microsoft-Antispam-Message-Info: yjklH+FdSjafQi9pDT6oMkQEEAVhQ/twEnZau+uyCJoYIIg7XXPvIRgoYaErxBg6yPnhnSY4GCMazyaiw9Iyytn5VDnXYvY9eWi6OVZ7+AT+8A84KqkMKPOw8/2oDodyt08WxQEBC7ZUe+LS0XCfAaLGeN17QHFhJf1bCHDqBfvXXbbF0gygR8s6Vszo1gX8K+fpebAApKl1w2TPHNx72S/rKAaY1PdmczljWLyhgpAmg9AnoWyJDd+9KXht4dttMcRuj9LbNjrZ0De6KlsWtfpBBW8VSzpjMD/Gzi41KLfHZRCeHNwFzJ+yidQGFVfU7AofEZSlrvxLvHjmX6RSi6bzUydhKIpzOfDF/ZJwlxkXgbiUe99/zFeaDX64ZSyrhmxrQ4I6Whx58xGbI98XMJxiOOHVpo90WTPxntSRMQK29d8M+67JYNq0eIF/b6gWUqIn5yT90/jyPSx5JweWduvzKMd7Vyu1gNPTih5xNeF4A0KPTcrzqc+9fIWKBn44MFAXht1PR4752Vvelvj8gLmenXvmiB/Z47PtNFvzLbscLw8/IvBy20cxHoBdOb7Un9blpxNeB/7Mp6+LifyPiHGAviNFkfLkQel4RFf7rLfeZXdsqy3FfKGlC1mw4ZOoMJ/WsVJh3eDZ7on0y6S5IcY7oluGILFTrDPhU+d6TuZeOf7GB5Ir9UmMqeoK58LSCZjTRYq5+QhVY3XD/xfcvMCk13AGTDXRnJIU6ukFhKQ= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(7416014)(36860700016)(82310400026)(18002099003)(22082099003)(56012099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WWslC2UVLjQ7uIv6pi9JaWbiRPe0cPBcRbyY+N5ErJU2Zb90XKRCAK8l5stog290bEMhuTEZ9GwcoiAd+ykskEblpuCIQZ+5fjMUVCJsn0I8sPYh4JnNHbAEc/3Fmd+QLo1Jg+WCIKHz+MdjL9gc94pqGWTbZwK2610ISduTHzqeyydmSg3g66NPKo572IFo1X/5ir27W49KzdG2ETB47Anj9WmzqpKxLVI7yF9fC3+3HKsR7VgaPFuW/2ibF8rGjz3In0Phbon4VTB62JSbIQ+8WNPfDBhXya8XcSOGZFaCwB3uXi6xBHCtvX8syLkMw9J27k5VJe1WiGqcMTu/ehDM+x+eXqjwIpDCA9Fb79kOoAk+d/14JEweV5WVgVmIVGP6+FpdReokrdunV5rYIyzdLrKxbC1NsrP2yEM810XsTB+MJk1kZIsxcdqxkt7L X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:24.6862 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2cb281d8-6f2a-47d1-b239-08deb7fb8616 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS1PEPF0000D20F.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4PR01MB13430 Certain Ethernet and cpu port settings need to be updated for vlan support. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 4 ---- drivers/net/ethernet/renesas/rswitch_main.c | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index f85dd96a9bfb..736762912acf 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -766,8 +766,6 @@ enum vlan_egress_mode { HW_SC_TAG_VLAN, }; =20 -#define EAVCC_VEM_SC_TAG (0x3 << 16) - #define MPIC_PIS GENMASK(2, 0) #define MPIC_PIS_GMII 2 #define MPIC_PIS_XGMII 4 @@ -806,8 +804,6 @@ enum rswitch_gwca_mode { #define GWMTIRM_MTIOG BIT(0) #define GWMTIRM_MTR BIT(1) =20 -#define GWVCC_VEM_SC_TAG (0x3 << 16) - #define GWARIRM_ARIOG BIT(0) #define GWARIRM_ARR BIT(1) =20 diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index a445d9a8505d..13e59d2d0828 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -752,8 +752,12 @@ static int rswitch_gwca_hw_init(struct rswitch_private= *priv) if (err < 0) return err; =20 - iowrite32(GWVCC_VEM_SC_TAG, priv->addr + GWVCC); - iowrite32(0, priv->addr + GWTTFC); + iowrite32(0, priv->addr + GWVCC); + iowrite32(0, priv->addr + GWIRC); + iowrite32(FIELD_PREP(DQD, DES_RAM_DP), priv->addr + GWRDQDC0); + /* Drop frames with unknown tags */ + iowrite32(UT, priv->addr + GWTTFC); + iowrite32(lower_32_bits(priv->gwca.linkfix_table_dma), priv->addr + GWDCB= AC1); iowrite32(upper_32_bits(priv->gwca.linkfix_table_dma), priv->addr + GWDCB= AC0); iowrite32(lower_32_bits(priv->gwca.ts_queue.ring_dma), priv->addr + GWTDC= AC10); @@ -895,6 +899,7 @@ static bool rswitch_rx(struct net_device *ndev, int *qu= ota) limit =3D boguscnt; =20 desc =3D &gq->rx_ring[gq->cur]; + while ((desc->desc.die_dt & DT_MASK) !=3D DT_FEMPTY) { dma_rmb(); skb =3D rswitch_rx_handle_desc(ndev, gq, desc); @@ -1305,7 +1310,12 @@ static int rswitch_etha_hw_init(struct rswitch_etha = *etha, const u8 *mac) if (err < 0) return err; =20 - iowrite32(EAVCC_VEM_SC_TAG, etha->addr + EAVCC); + iowrite32(0, etha->addr + EAIRC); + iowrite32(FIELD_PREP(DQD, DES_RAM_DP), etha->addr + EATDQDC0); + + /* Drop frames with unknown tags */ + iowrite32(UT, etha->addr + EARTFC); + rswitch_rmac_setting(etha, mac); rswitch_etha_enable_mii(etha); =20 --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010070.outbound.protection.outlook.com [52.101.229.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3D0437B01A; Fri, 22 May 2026 12:13:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452016; cv=fail; b=ABnHUqTfMGVH7Dc5gL+l9x/VQMe4jLtq4auv+CL4+dr6Q/GPohMSWlLA85Mq1PJi6aaBXq0n21dHzNoY+NgGfv5FFe4L+5ZD/efDJ4vXcXtM4cY12o42JZCrvhjhhquBnObnqmRL1wuoe1daeI8g1EU/ilY840NgArb5tUqp+NQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452016; c=relaxed/simple; bh=tMmQJm0vtdZRJgpvsM1oW0YiuTdWB/Gfc14iGHnzoFE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fQ1qznUbSxDrEQ1Ti6LZrpk5U1usaOviXt/1agIdBhRm0vePONkLqAZuLc+bKGkGgqFL9NvGAujarM8wy0rwbWkRCqkRmam12xlPKiXsUKT3znwdNYB6oSYPF9kKWxWibf56rIW0H4bR1CFIKJpzdJaavcwo3FeEkIoDn/BVDYA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=YiqzH4fT; arc=fail smtp.client-ip=52.101.229.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="YiqzH4fT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DEUsXjLXkAoUrjdCz9D9Sn4suk9IeeAXX36BZZQ7QGMNH7tO+qXtDPkHyZGkQ5NsnrKWGH6ph3Cpd0qev7veLnEz64sN4/MHe6v8XK3mnsvcaexgvJqClpjRJzBtrK2QcTuCyg76C9guUTQlf1R5hIWQWLmGUOdaEcu4hwcRQcDw7plfNnqUeMC8vRtodTgI212JRuT42yy2oLIXr/LNY3644ckt4VwZYcqj2ewtPzw//w5fK21r2dfwUfG37hrkR4oLry3JdSsXH0FVL/tqHMGgcXZvRbcSdAG/tstdajiD3uf9l2ZGLb5tJOdHM6hsIbxhbRIxZ1tWkTrWuBIbMQ== 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=gpNUD6eKPLGagvN0agwhcTnekrXcd0mJ50gVI38B5vE=; b=EjNySOSYYbsGOLBMcDEOCJoDM497c3ilGVyhc9zJRw6udkQ/67Jk15RWHceJCJ+OvxWBh6eVsXkiGUdJuKLAzOgrP/5mmsI1F3mpSVCYswKcerOYnQlAIfLI60L8jk0jOPZYPMa+RUsl8a0i0nuP4dTa1/+LZkk6ztIMjiTLXCSEhPjfq3ggOwoa9IAWuu7Oc3Bh+C8kSYfCsJjcjh/QVufiYvzep60fMidus7KI9mf5AJkCKY020CQQFLQ8S7iDNV8tRQrkI1ANaoIVtWAM9XPPaZwtdA/vuIwaHmZ+snOuTGKI2US/orwhmIUedTPAFSbCmZl/QbKw/EcUYXTtXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gpNUD6eKPLGagvN0agwhcTnekrXcd0mJ50gVI38B5vE=; b=YiqzH4fTEKee36nX2Fp537qY5sbn5QzIQG/UVsSjSlf8/zcxAYeTvI0WL8uNiM8K2ja1THMTwAWUBbCgxHlP8LN3/o3MrLOYESWM3kxBvM21g49XI3CMDOKHTEarqF1Xb3ZKblwUNksz2gIAc+9mZD90jahvFCCj96zyaa7DFdY= Received: from TYCP286CA0215.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c5::6) by TYWPR01MB9855.jpnprd01.prod.outlook.com (2603:1096:400:236::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:29 +0000 Received: from TY1PEPF0000BAD8.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c5:cafe::44) by TYCP286CA0215.outlook.office365.com (2603:1096:400:3c5::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TY1PEPF0000BAD8.mail.protection.outlook.com (10.167.240.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:28 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 085F6300046A; Fri, 22 May 2026 21:13:24 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:40 +0200 Subject: [PATCH net-next v5 11/14] net: renesas: rswitch: clean up is_rdev rswitch_device checking Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-11-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=2806; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=tMmQJm0vtdZRJgpvsM1oW0YiuTdWB/Gfc14iGHnzoFE=; b=8I/JlFso7y+4vPRz6dJDPemebqhDLhwLr30kF0M4GX8vlUpjFs2qwknG77HABbl/B44wJ/WZ1 yec2GX79rQjDGTsLGsC9/qcZd3SXduB+UWXRnreLjSMxoeSuZ3eX4d4 X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY1PEPF0000BAD8:EE_|TYWPR01MB9855:EE_ X-MS-Office365-Filtering-Correlation-Id: f6d1e598-38de-456a-c40a-08deb7fb8849 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|7416014|22082099003|56012099003|18002099003|11063799006; X-Microsoft-Antispam-Message-Info: lztQZKIb+LupDKfJLaHRWXV6iJyumFcD3Jq00pNThMQyRRrncV77Qvd0uWoGQdZfK7ty2oU/jorEZrkV+K+62SHCCi06zYXZWLCCVlQVxS8To3zvp21kJkKlc4qLJC3iMbddsK24Xh9B5zx+515bsjUGQphHxs6qAdd5WLfmGcF+t5aNaeZSJgyyjSq1YY7z12b0sS7C+BHS0er7OPdlchhMrLjAJGE7/yuGkR+f3LM1J1vv1JJ92kUKNM8kG1sn8NH5tdyskHDU/CF98cgn4CkM3OfYGMOCNQsQzKpIamVrrte06CL5k4yw5V0ehBMxPosEJ+c9RwwDna3GGKdXHJYab1DJrx4sVKsefoMxszrGWrry6FpG1t/i0xaBYAnx5HpW6+DrqmCM5rrbTbkF8hiJun5eHDoZHpRX5kSfHUh2Zb1ikOABpTDVpWPUwi0NbDKsCb1wcwOvBsutWliu9wlxYtir9FANKsbE9G3ixvQXh30eIp+DaKTQo79B6N/fhui/EeUuavoVgn34VCA9VHz/EZY5+zZ+r4cT8yC3ZRIDmd/PPP8AjK9GZnrWXwdqBwajzQZH9npUUxiRPyppRn1mS3audBYSRdEPeMhw2TeKhKABIdcczCoQzaP0A1XcQuN+FrieKfMbnHYRObbBETmV3k/iB5ZTIo4GD8AspPmF9iSVMd50cs1sn/P7nIJEVj9bWbE47rOfIBCCZUvBxlIBccn2aFW7GnDg3VHcQpA= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(7416014)(22082099003)(56012099003)(18002099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +AZ4y1+lUsdYgK04PAz+eRB/itbL6DMCHEcz55h3Vs+qRtFy1DX4pou7lPcampBlkQTlfDOgo94KqfJekLoDpYQqDFr5nFaeKDpTWxMiZnWQWR4sOdVGSEXtX5lQmumvkE+IqbgDQjCmPxRmrijMQXlAf4fXuwf4vRXE7xb65NLfYsE+KKgLDwOAjuAeBbbKB2QMJ7wOL0byyR2xO1zHSE0xFuMSxC3iH2yB+qxUgJd4K1uPzAAa1ZagerJ4KmW0k0J/tqoJffh4XC1/1EPtnhB285yDeFcTex4w8loZHb8rP847RlZcQuN5OP3xtOuXSYP5UylK5ZifZqxFUNsSu+oyrttMpboV0TrwZD9q3Q2ZBXlIhd63a8z4vkLSzGgVbyIU6KpvDNqVOyNaEOHlrmpAeqK0PuDQMPttbvySseYIktksu03TPcT2rwXG/8p4 X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:28.3882 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f6d1e598-38de-456a-c40a-08deb7fb8849 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY1PEPF0000BAD8.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB9855 Add null pointer checking for ndev and remove unnecessary rswitch_port_check() wrapper function. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch_l2.c | 19 +++++++------------ drivers/net/ethernet/renesas/rswitch_main.c | 2 +- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch_l2.c b/drivers/net/ethern= et/renesas/rswitch_l2.c index 3cc0ce8762f3..c76fc8121ef0 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.c +++ b/drivers/net/ethernet/renesas/rswitch_l2.c @@ -158,11 +158,6 @@ static void rswitch_update_offload_brdev(struct rswitc= h_private *priv) rswitch_update_l2_offload(priv); } =20 -static bool rswitch_port_check(const struct net_device *ndev) -{ - return is_rdev(ndev); -} - static void rswitch_port_update_brdev(struct net_device *ndev, struct net_device *brdev) { @@ -199,7 +194,7 @@ static int rswitch_netdevice_event(struct notifier_bloc= k *nb, struct netdev_notifier_changeupper_info *info; struct net_device *brdev; =20 - if (!rswitch_port_check(ndev)) + if (!is_rdev(ndev)) return NOTIFY_DONE; if (event !=3D NETDEV_CHANGEUPPER) return NOTIFY_DONE; @@ -254,12 +249,12 @@ static int rswitch_switchdev_event(struct notifier_bl= ock *nb, =20 if (event =3D=3D SWITCHDEV_PORT_ATTR_SET) { ret =3D switchdev_handle_port_attr_set(ndev, ptr, - rswitch_port_check, + is_rdev, rswitch_port_attr_set); return notifier_from_errno(ret); } =20 - if (!rswitch_port_check(ndev)) + if (!is_rdev(ndev)) return NOTIFY_DONE; =20 return notifier_from_errno(-EOPNOTSUPP); @@ -278,13 +273,13 @@ static int rswitch_switchdev_blocking_event(struct no= tifier_block *nb, return -EOPNOTSUPP; case SWITCHDEV_PORT_ATTR_SET: ret =3D switchdev_handle_port_attr_set(ndev, ptr, - rswitch_port_check, + is_rdev, rswitch_port_attr_set); break; default: - if (!rswitch_port_check(ndev)) - return NOTIFY_DONE; - ret =3D -EOPNOTSUPP; + if (is_rdev(ndev)) + return -EOPNOTSUPP; + return NOTIFY_DONE; } =20 return notifier_from_errno(ret); diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index 13e59d2d0828..da400020a8f1 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -2005,7 +2005,7 @@ static const struct net_device_ops rswitch_netdev_ops= =3D { =20 bool is_rdev(const struct net_device *ndev) { - return (ndev->netdev_ops =3D=3D &rswitch_netdev_ops); + return ndev && (ndev->netdev_ops =3D=3D &rswitch_netdev_ops); } =20 static int rswitch_get_ts_info(struct net_device *ndev, struct kernel_etht= ool_ts_info *info) --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011032.outbound.protection.outlook.com [52.101.125.32]) (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 E239038A716; Fri, 22 May 2026 12:13:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452023; cv=fail; b=kSxCwPySqzbEoNzvt3Ln+2+f8qso0Q/nLnTGRHAFo3QuZwrvCnPbIa6fcV+o3T5wehV5vn9IyauIppELfHzJHFLhZgqfZk0Slt9mthJWBV8ryioLFNI/tGzXEdeFik1ACfJHlii5M/OWcLt+IbuxyRtlqABnlpogBDOpayungOQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452023; c=relaxed/simple; bh=R4csxHU6oBOnZhlRDwmQEnq6OFv6MP7uyGGYZTm77n0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sVnOGlTuPNB3KjyTLaXSOkK3FOHkYgdZ/dMcMl/0R9C2qqXSdYVkysaJ3UH35pRS7w0LQGIab/MkyBdl1GP0izJWPV9SZw1NT4BEuZBwHAOLy++07HPgakdH+XJnL3+JAV3onqSm7VXB7xbsuNb1AN2EjsCKQDuX/iBKE9jDKi0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=aBxGuzFW; arc=fail smtp.client-ip=52.101.125.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="aBxGuzFW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JJcTK0jCCL+Q7gETyhmj7B36nGluYZoG1z7aj8mSdkqBwT0Q0G9ASHYdbytkkFq3CfYPk9WWr7QgYDLWU7QQ/41C9yr2I82Ip50d6UgbggOulf+CvL7W5Bzu/9myL6RBo4PPj1b0UGT3Pd1IBwxNyLyhEWnT19cuBIYPBjXPUxemo10fyBM1wxnMnSrqIVx6RYxQ/aDd+6td+Cgd8rp3L6F8Q3vzY/NPJ7eZVmH8yCKCw3REqn5sJ9LdRduCGh/nlpDyF4UEBwO9KAmyCYMViRG7uH1t+NkorB1X8iV68zz+UEYcSwrkxvM3q15ebcCvm+1NCZ2WfobtPahnx/uKUw== 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=kkXSMfV9q9doB21DFgs8A+hO3TdoEUG2s+U79T1GX8k=; b=TqJ4ESrY5x11b38zzgjTOQcSdiyB+OtUXbLR32/YjbocASVzf3bCYvE5sTz5kk/Aa0VsQJJ8bq9cEPi9qLOigdXLgFOso/DMBlpC3Jh/R8tpU3nGjAxxPfY7EPhzxe08WzW2kAhN6HG02aC7mI1EK7l6M4DkVTqRzsI8aO/n+rxivO6AJgIgJ7di3EO84ZOkPHloLWZIq+sQuVnet3AEoLeo7OpPLf3yZNPSFMlAZPd9iUzJ5M+iANo0OOPUOwMR6nqaT/XzeVVv8S59pmiJu3EhGs2O8/wUisTaE2pYz5xTpE/0cQEYCmWDUkt2G+LecyhST/Kz01xGk413zfZS4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kkXSMfV9q9doB21DFgs8A+hO3TdoEUG2s+U79T1GX8k=; b=aBxGuzFWeeIn2xienQsxMMuRhER52vr3dEKt54LnrNXMEpAm1kBVkRSoC4ktNamLap/tcambChvo6NJhJXFYHUnHkJ3+64SHncWiQJPaaKRi6C/d5SKpvZ3ZGcbIYqxK/MR1SAQ9vKRsBaHdkQP4bq3hOZPvgi0lnNsFeMSa0Kw= Received: from TYCP286CA0214.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c5::10) by TY7PR01MB15747.jpnprd01.prod.outlook.com (2603:1096:405:290::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:33 +0000 Received: from TY1PEPF0000BAD8.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c5:cafe::51) by TYCP286CA0214.outlook.office365.com (2603:1096:400:3c5::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TY1PEPF0000BAD8.mail.protection.outlook.com (10.167.240.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:32 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id B6BFC3000466; Fri, 22 May 2026 21:13:28 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:41 +0200 Subject: [PATCH net-next v5 12/14] net: renesas: rswitch: add passing of rswitch_private into notifiers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-12-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=7135; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=R4csxHU6oBOnZhlRDwmQEnq6OFv6MP7uyGGYZTm77n0=; b=ueph6X6ceihiE6gZtUA4cehBYv/xaJmAA5o1LQA9AZdrSjUIPzNIjpc5jOGpR+DgH7trgnqgS 39DpNvUr1U4BPGfbpU4U6t+S7EqNO9DidDpvEa/0kC6i0WaqrQuPe2V X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY1PEPF0000BAD8:EE_|TY7PR01MB15747:EE_ X-MS-Office365-Filtering-Correlation-Id: 72a18247-2f2e-4fc4-693c-08deb7fb8a80 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|82310400026|1800799024|376014|7416014|56012099003|22082099003|18002099003|11063799006; X-Microsoft-Antispam-Message-Info: z+6EBih4kxruZK0C1mPfGAXGPSMgrZ9JsBAeaPQn1rHw4MQkT+pwbepglwSJVMiPLRL24tb4TC92zQwrwVufsi8YivECs1LQbrpPTgdj53nAnZPDONBzkfHK5NjLGA4uqRuzmqa/H2+SYtLC3OW7fS9bCkrC8vxFMT8cLrG2M8pvd/NtmQnyrKX3Kx7detHQgoHuFxKE6pSxh9aB3IHL9A2wqic9UUg+E8bQphB+lnAebJOl1mM94yB2oNEaEu/BovgPlXwuq88DyYeD3rmscdSivhUlDa89DBoVmklI4NdSNtNEMlaRSWOHpyk7V3KN1Uf+azew5En02e5rHgweDrFkN3Rxx7T88p2kpp54d5U3prKkkXd5ZwC3p9hcUrkLL2EfxR8ipW9gOnNo+d/P5ndge9693bXmH/fyOOoI+KpaR0ahRWMClQhTsUplPnX9dNsVzH5i1b8nkbTQYX0dfzoX31oJbIwZtSOsMDcEi5izqzuvdSoS+VCR7jfbhZgJosctO+6yiMxgL98VYV3cgu97EpEnrxigrin2lXwjYAGushxdr6lTfnWkRTM57/qtSQHiVVD4a9B0fNtrPF8KBNUy9Q8+lr4zO/M8tTYL2TWsbelPrmGZ+Vf2v8dCUp1GSRvYJookQhW78FKVWez6Ycd6RVm8Lv3qtqSa2Y64TH/jMOaelf/ebTE+fYU+Fl6qUIpy4QPmicj+rhAfci94LMcUWgAR0TLGAW+0Hy/20Vo= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(1800799024)(376014)(7416014)(56012099003)(22082099003)(18002099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: S7IH+4WfLDB1YjJiUE/8L7FTuJy9DKHPA950+UseJmAAvvLNqZj2JRx74frwHoZ70NoySF+nmBnFTq4va35N0lf2aIOxhJ5U6XaZzc3p4HpvK5aGkyPyX7Vf9oLKVBla+Vy91kpvfo5VvaJq1w4Xs5SpJEMaKLmDgFvLnq7zNBLc5e5CAaaP0d+mNpNN+PnEL/04EWfXyUK9IrDjyKbpd34J7S9HpjN3kj5lDXregCn48qAjyPl8GsRiYttheyw3HkobuxtBa+K2wnTrZ01ISu8X2SZFZzL5tpPGqftYxfDBJVZHYeNhfH7xQc6W4ipyJP7zg7jKdMuuJ0No0XvE+fTCQgrX22y0ULuyF2MkzUbYljeD3TgHASYN1Jbu83CGYA1FWixOiUuLPJFdPQO/0xiqg5c2AKhPN5l5xgFhWc/J+Ao1XfiBOjWTaHRhl/OH X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:32.1026 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 72a18247-2f2e-4fc4-693c-08deb7fb8a80 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY1PEPF0000BAD8.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7PR01MB15747 Provide struct rswitch_private to notifiers. This will be needed to access the HW in the notification handlers. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 5 +++ drivers/net/ethernet/renesas/rswitch_l2.c | 45 ++++++++++------------- drivers/net/ethernet/renesas/rswitch_l2.h | 6 ++-- drivers/net/ethernet/renesas/rswitch_main.c | 56 +++++++++++++++----------= ---- 4 files changed, 56 insertions(+), 56 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index 736762912acf..9777966ebe0e 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -1201,6 +1201,11 @@ struct rswitch_private { struct rswitch_etha etha[RSWITCH_NUM_PORTS]; struct rswitch_mfwd mfwd; =20 + /* Notifiers */ + struct notifier_block rswitch_netdevice_nb; + struct notifier_block rswitch_switchdev_nb; + struct notifier_block rswitch_switchdev_blocking_nb; + struct list_head port_list; =20 spinlock_t lock; /* lock interrupt registers' control */ diff --git a/drivers/net/ethernet/renesas/rswitch_l2.c b/drivers/net/ethern= et/renesas/rswitch_l2.c index c76fc8121ef0..d2deb7cb7634 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.c +++ b/drivers/net/ethernet/renesas/rswitch_l2.c @@ -285,48 +285,39 @@ static int rswitch_switchdev_blocking_event(struct no= tifier_block *nb, return notifier_from_errno(ret); } =20 -static struct notifier_block rswitch_netdevice_nb =3D { - .notifier_call =3D rswitch_netdevice_event, -}; - -static struct notifier_block rswitch_switchdev_nb =3D { - .notifier_call =3D rswitch_switchdev_event, -}; - -static struct notifier_block rswitch_switchdev_blocking_nb =3D { - .notifier_call =3D rswitch_switchdev_blocking_event, -}; - -int rswitch_register_notifiers(void) +int rswitch_register_notifiers(struct rswitch_private *priv) { - int ret; + int err; =20 - ret =3D register_netdevice_notifier(&rswitch_netdevice_nb); - if (ret) + priv->rswitch_netdevice_nb.notifier_call =3D rswitch_netdevice_event; + err =3D register_netdevice_notifier(&priv->rswitch_netdevice_nb); + if (err) goto register_netdevice_notifier_failed; =20 - ret =3D register_switchdev_notifier(&rswitch_switchdev_nb); - if (ret) + priv->rswitch_switchdev_nb.notifier_call =3D rswitch_switchdev_event; + err =3D register_switchdev_notifier(&priv->rswitch_switchdev_nb); + if (err) goto register_switchdev_notifier_failed; =20 - ret =3D register_switchdev_blocking_notifier(&rswitch_switchdev_blocking_= nb); - if (ret) + priv->rswitch_switchdev_blocking_nb.notifier_call =3D rswitch_switchdev_b= locking_event; + err =3D register_switchdev_blocking_notifier(&priv->rswitch_switchdev_blo= cking_nb); + if (err) goto register_switchdev_blocking_notifier_failed; =20 return 0; =20 register_switchdev_blocking_notifier_failed: - unregister_switchdev_notifier(&rswitch_switchdev_nb); + unregister_switchdev_notifier(&priv->rswitch_switchdev_nb); register_switchdev_notifier_failed: - unregister_netdevice_notifier(&rswitch_netdevice_nb); + unregister_netdevice_notifier(&priv->rswitch_netdevice_nb); register_netdevice_notifier_failed: =20 - return ret; + return err; } =20 -void rswitch_unregister_notifiers(void) +void rswitch_unregister_notifiers(struct rswitch_private *priv) { - unregister_switchdev_blocking_notifier(&rswitch_switchdev_blocking_nb); - unregister_switchdev_notifier(&rswitch_switchdev_nb); - unregister_netdevice_notifier(&rswitch_netdevice_nb); + unregister_switchdev_blocking_notifier(&priv->rswitch_switchdev_blocking_= nb); + unregister_switchdev_notifier(&priv->rswitch_switchdev_nb); + unregister_netdevice_notifier(&priv->rswitch_netdevice_nb); } diff --git a/drivers/net/ethernet/renesas/rswitch_l2.h b/drivers/net/ethern= et/renesas/rswitch_l2.h index 57050ede8f31..af9780c63c9a 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.h +++ b/drivers/net/ethernet/renesas/rswitch_l2.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ /* Renesas Ethernet Switch device driver * - * Copyright (C) 2025 Renesas Electronics Corporation + * Copyright (C) 2025 - 2026 Renesas Electronics Corporation */ =20 #ifndef __RSWITCH_L2_H__ @@ -9,7 +9,7 @@ =20 void rswitch_update_l2_offload(struct rswitch_private *priv); =20 -int rswitch_register_notifiers(void); -void rswitch_unregister_notifiers(void); +int rswitch_register_notifiers(struct rswitch_private *priv); +void rswitch_unregister_notifiers(struct rswitch_private *priv); =20 #endif /* #ifndef __RSWITCH_L2_H__ */ diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index da400020a8f1..cfe7bfe6546b 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -2241,6 +2241,30 @@ static int rswitch_init(struct rswitch_private *priv) return err; } =20 +static void rswitch_deinit(struct rswitch_private *priv) +{ + unsigned int i; + + rswitch_gwca_hw_deinit(priv); + rcar_gen4_ptp_unregister(priv->ptp_priv); + + rswitch_for_each_enabled_port(priv, i) { + struct rswitch_device *rdev =3D priv->rdev[i]; + + unregister_netdev(rdev->ndev); + rswitch_ether_port_deinit_one(rdev); + phy_exit(priv->rdev[i]->serdes); + } + + for (i =3D 0; i < RSWITCH_NUM_PORTS; i++) + rswitch_device_free(priv, i); + + rswitch_gwca_ts_queue_free(priv); + rswitch_gwca_linkfix_free(priv); + + rswitch_clock_disable(priv); +} + static const struct soc_device_attribute rswitch_soc_no_speed_change[] = =3D { { .soc_id =3D "r8a779f0", .revision =3D "ES1.0" }, { /* Sentinel */ } @@ -2317,9 +2341,13 @@ static int renesas_eth_sw_probe(struct platform_devi= ce *pdev) if (list_empty(&priv->port_list)) dev_warn(&pdev->dev, "could not initialize any ports\n"); =20 - ret =3D rswitch_register_notifiers(); + ret =3D rswitch_register_notifiers(priv); if (ret) { + rswitch_deinit(priv); + pm_runtime_put(&pdev->dev); + pm_runtime_disable(&pdev->dev); dev_err(&pdev->dev, "could not register notifiers\n"); + return ret; } =20 @@ -2328,35 +2356,11 @@ static int renesas_eth_sw_probe(struct platform_dev= ice *pdev) return ret; } =20 -static void rswitch_deinit(struct rswitch_private *priv) -{ - unsigned int i; - - rswitch_gwca_hw_deinit(priv); - rcar_gen4_ptp_unregister(priv->ptp_priv); - - rswitch_for_each_enabled_port(priv, i) { - struct rswitch_device *rdev =3D priv->rdev[i]; - - unregister_netdev(rdev->ndev); - rswitch_ether_port_deinit_one(rdev); - phy_exit(priv->rdev[i]->serdes); - } - - for (i =3D 0; i < RSWITCH_NUM_PORTS; i++) - rswitch_device_free(priv, i); - - rswitch_gwca_ts_queue_free(priv); - rswitch_gwca_linkfix_free(priv); - - rswitch_clock_disable(priv); -} - static void renesas_eth_sw_remove(struct platform_device *pdev) { struct rswitch_private *priv =3D platform_get_drvdata(pdev); =20 - rswitch_unregister_notifiers(); + rswitch_unregister_notifiers(priv); rswitch_deinit(priv); =20 pm_runtime_put(&pdev->dev); --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010025.outbound.protection.outlook.com [52.101.229.25]) (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 4F49437B01F; Fri, 22 May 2026 12:13:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.25 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452023; cv=fail; b=Eprav9earHGi9TgLw6q8mbAuKLxPi5/KXZBW/thsRg+VamkYFwHFTKnRBSd5M6Kcv/6HWyYRG8pN622dgIQ7LjD1Y4NBSfLuicUcAmoSYMwE/iOSqgsF7IKefldRGrtpau0Ybfq2fnu9IVP3nW/yLpZqsAQLepisVyKsbSq4/qo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452023; c=relaxed/simple; bh=G1Hm9t+jdq3XHdrHsah7r40wTskO0HvE/olUpr9bBgU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tST2SHPklxcC5jYgtVbHbUkEUVRtn3BbSKxDdK1T4S7hQ2a38SLh6FYDIpnFWXtoHmbvlDh1JELxSU8OVX2Hae0h4HjPLZAg1+lTN4oWkq/pqT/OIrDW1NxM3O/11V0CsL9K3n6eXDXI+LHAqO+1x2g/oZcUdaAPSXs/RPM1MYM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=lIPIGgBX; arc=fail smtp.client-ip=52.101.229.25 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="lIPIGgBX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T9aE3M//7ehav/LvBOE15WvmAO1Ti5npzW8RKzzZG984UjesbnvNb7pXQ/Puzd5cSkQac2JpTXl3kXPE9IU0lslwXOFnPyOwQh/mE33v8fFc9+VjVUfV0ltKeXSRcpseYDfJ6EXjwCY+nxdmUcV7vlvQsezIakIuEhPLfLoJ0L3DUEslW7qjAvoeJeCV+V97Pkv38iXVVfX4U1g2qsJiyFam8np2BYbWtBehI5KeNiNOD20oE/aXMqYtGrsIrEB0NDQtYcjrQLJeHnnwFETZJT9vMnZbsJOgGmEQV6zluryhf4rt6fjq33OeIgfNpmNwu3EFCyDtSKRW9z8o52E6JA== 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=iUpLGnumPOlXImVumJ1PwX2As1VFa81VmcZngv7RaAc=; b=mOAdbEQNmPalI7Ba4cuT9OTNXbBuBojFAlTpIeNs9bQajPwHBFHHdKTYjZE+94UGffcmygdb/0n6GVY95Q3WGWopcB3VgKkMIQyfIKvL+jD4B8cxdHof16kqUvgBeIGuYs4llrS1KYrnAaaKDcHT9Bx8domi+wfkVMiuSB3LIWL9HSKKbpxFsxF5Sfkbe56QsOtBfeuIwt9t3aZ+JqNDE26g1nmjSSt5ecRYVFPh2ra2+TY/4Ei3bFxxLLe3LREKRRI/CXL0YAuTF2eZDqKVfM3NDHvudnYDbbYqDwPtK3Ba2VRmRCSFwsG8ZuIVWvYa2ERaDueqay4FCZ2FuTRneA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iUpLGnumPOlXImVumJ1PwX2As1VFa81VmcZngv7RaAc=; b=lIPIGgBXkEsI2B1bF++8UJuVtI6Uh2wQOesFXU35cYXtbh0q4wa6TyzoBg+6M3ZBpeYeGg74UKBys3poOsfphpDtHf/82cjdOTzp0FWNV+6NzuU4212zXdKAHGp9XSvWaDyFNZlusKvF3181J8/s/u1HCMUYnGlqYX0j7CNwLz8= Received: from TY1PR01CA0196.jpnprd01.prod.outlook.com (2603:1096:403::26) by TYYPR01MB7022.jpnprd01.prod.outlook.com (2603:1096:400:da::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:37 +0000 Received: from TYO1EPF00005025.JPNP286.PROD.OUTLOOK.COM (2603:1096:403:0:cafe::39) by TY1PR01CA0196.outlook.office365.com (2603:1096:403::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005025.mail.protection.outlook.com (10.167.240.22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:35 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 70CBA300046A; Fri, 22 May 2026 21:13:32 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:42 +0200 Subject: [PATCH net-next v5 13/14] net: renesas: rswitch: add handler for FDB notification Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-13-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=9705; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=G1Hm9t+jdq3XHdrHsah7r40wTskO0HvE/olUpr9bBgU=; b=AU7fsgf4k+09Ivwdw8S8Gq4dzmXKQPX4OvBz6VV2TRINU+yfGEtX8YgHARi9A5yrXDP763Al0 Y6K0zcA/yVFBZDv29WTA4blZVd4vAUXOprl5/Sq8u6P636lw28pJMql X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005025:EE_|TYYPR01MB7022:EE_ X-MS-Office365-Filtering-Correlation-Id: a37c5eb9-9d77-4f6a-64b2-08deb7fb8cb2 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|82310400026|36860700016|56012099003|18002099003|22082099003|11063799006|6133799003; X-Microsoft-Antispam-Message-Info: giS5uzilqQl6n80UHQwzZnovnUcOnzmLIcKddwUwWh65EbAuLjcVgS4BHBHmASrpgPY5eG1Df1uGviqQEhm94Yh2FiAdw1Pww+Wk4aWWN51qUI3CGFkdtesBHLGETT2YgSn2SbPEByOib/mrR7vToNiCgW6TMY739nv4ZBQZXb+zevhKdkx1w2t3EY9QMa7OVC2uPiF0g03qxNVv75Zz9eLYw7KT17EpNQuucno44VliE42CHF5iKpvAx25L6UoCfzVLbb4Z7PTFFy1KKQdd3aJNkyny/VcO+nXGkQjyuIipRZKf2G+lnS5dwc9ORugePsWyXSUl5aQwyhqSDv6dbfraJyVhOVrW/RjxdZaR4bvuafLks+KQvSIbQkYzKhSL5GZWxWKkTAzFm6VDRJ0pYHQqqF7Sjjax3fgmN+/SgV1nRIHcwj47qAZIzE/53ZeYrgnOjZ3GodQIQ7CHsHt+4kjScpdjxEzKy1pSChk1mi028GWdlmWd3bcEMxFfETU+S8OtITiwJI6dTfnf7/KL/EvxIrQeZ3XCikwEcd/VAMV6gBEgDOfkNLAq1Y3LeLtMWEiQsWbDUe1YeEULzwMuGLwvx8JZg/Wlo08StLTgOJK/VpvKVQeG+RIM/Tgru7tpRMuVoE5YMViw9j23LdYDc2ODH9SwfLud9WoV2MhMfErKE4/FgPPZFAyVHwg/HWcW9wvUrYqILWJbtdR0IpVAjwn3JbFS3kAx1EhoMmp5sVE= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(82310400026)(36860700016)(56012099003)(18002099003)(22082099003)(11063799006)(6133799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fGqM7XcCuvRIrMb6tnQDx+6NRXujRhN3vHkepZvxfmwo2ipToqB73I2fm/2NsioCCXig0tTsrH3oo3pWd8ZOJQztLkoKa04XrfglVWlIS0KW+YepG4SDYJbwTTTfwGy8XlK0FE5WnGvXp0T6hodqi29+jDkSfskEwPOeOpfDxaxo9cZuaKA6DbY7Dsaz72p4MJkksrenHqVsCBp64ye64UfZWKkVzJnw6/lxPrn5t0nynLqDjD+smebi4GtyWaZR+hQgjXahNwYA1QuZuAE2FjQFEAuWlprfj3bVzhW0H6OQfeSSvBj14XUlil+httqaKlRuZPkGOy75DABqfsoFrY9b3qkyY5jC5Om5Z6yhhYZJXcWBcHtk/gpPvz9U20tEQx4KfU/v3aUxvAG52AlevQCw4ADLzjb9GlsYx4kmaMGve/K/zacqWg4FliRM18fl X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:35.7859 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a37c5eb9-9d77-4f6a-64b2-08deb7fb8cb2 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005025.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB7022 The SWITCHDEV_FDB_ADD_TO_DEVICE notification writes the bridge MAC address to the GWCA and adds a static rule to the MAC table. The SWITCHDEV_FDB_DEL_TO_DEVICE removes the static rule from the MAC table. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 12 ++ drivers/net/ethernet/renesas/rswitch_l2.c | 200 ++++++++++++++++++++++++= ---- drivers/net/ethernet/renesas/rswitch_main.c | 2 + 3 files changed, 191 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/= renesas/rswitch.h index 9777966ebe0e..202f877a9cc8 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -1173,6 +1173,7 @@ struct rswitch_device { struct phy *serdes; =20 struct net_device *brdev; /* master bridge device */ + unsigned int learning_requested : 1; unsigned int learning_offloaded : 1; unsigned int forwarding_requested : 1; @@ -1219,6 +1220,17 @@ struct rswitch_private { =20 enum hwtstamp_tx_types tstamp_tx_ctrl; enum hwtstamp_rx_filters tstamp_rx_ctrl; + + struct rswitch_switchdev_event_work *switchdev_work; +}; + +struct rswitch_switchdev_event_work { + struct work_struct work; + netdevice_tracker dev_tracker; + struct switchdev_notifier_fdb_info fdb_info; + struct net_device *ndev; + struct rswitch_private *priv; + unsigned long event; }; =20 bool is_rdev(const struct net_device *ndev); diff --git a/drivers/net/ethernet/renesas/rswitch_l2.c b/drivers/net/ethern= et/renesas/rswitch_l2.c index d2deb7cb7634..4d0646283f88 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.c +++ b/drivers/net/ethernet/renesas/rswitch_l2.c @@ -23,7 +23,8 @@ static bool rdev_for_l2_offload(struct rswitch_device *rd= ev) static void rswitch_change_l2_hw_offloading(struct rswitch_device *rdev, bool start, bool learning) { - u32 bits =3D learning ? FWPC0_MACSSA | FWPC0_MACHLA | FWPC0_MACHMA : FWPC= 0_MACDSA; + u32 bits =3D learning ? FWPC0_MACSSA | FWPC0_MACHLA | FWPC0_MACHMA | FWPC= 0_MACRUDA : + FWPC0_MACDSA; u32 clear =3D start ? 0 : bits; u32 set =3D start ? bits : 0; =20 @@ -82,8 +83,9 @@ static void rswitch_update_l2_hw_forwarding(struct rswitc= h_private *priv) * * Do not allow L2 forwarding to self for hw port. */ - iowrite32(FIELD_PREP(FWPC2_LTWFW, fwd_mask | BIT(rdev->port)), - priv->addr + FWPC2(rdev->port)); + rswitch_modify(priv->addr, FWPC2(rdev->port), + FIELD_PREP(FWPC2_LTWFW, ~(fwd_mask | BIT(rdev->port))), + 0); } =20 if (new_forwarding_offload && !rdev->forwarding_offloaded) @@ -188,7 +190,8 @@ static int rswitch_port_update_stp_state(struct net_dev= ice *ndev, u8 stp_state) } =20 static int rswitch_netdevice_event(struct notifier_block *nb, - unsigned long event, void *ptr) + unsigned long event, + void *ptr) { struct net_device *ndev =3D netdev_notifier_info_to_dev(ptr); struct netdev_notifier_changeupper_info *info; @@ -241,25 +244,6 @@ static int rswitch_port_attr_set(struct net_device *nd= ev, const void *ctx, } } =20 -static int rswitch_switchdev_event(struct notifier_block *nb, - unsigned long event, void *ptr) -{ - struct net_device *ndev =3D switchdev_notifier_info_to_dev(ptr); - int ret; - - if (event =3D=3D SWITCHDEV_PORT_ATTR_SET) { - ret =3D switchdev_handle_port_attr_set(ndev, ptr, - is_rdev, - rswitch_port_attr_set); - return notifier_from_errno(ret); - } - - if (!is_rdev(ndev)) - return NOTIFY_DONE; - - return notifier_from_errno(-EOPNOTSUPP); -} - static int rswitch_switchdev_blocking_event(struct notifier_block *nb, unsigned long event, void *ptr) { @@ -285,6 +269,176 @@ static int rswitch_switchdev_blocking_event(struct no= tifier_block *nb, return notifier_from_errno(ret); } =20 +static int rswitch_gwca_write_mac_address(struct rswitch_private *priv, co= nst u8 *mac) +{ + int err; + + err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_CONFIG); + if (err < 0) + return err; + + iowrite32((mac[0] << 8) | mac[1], priv->addr + GWMAC0); + iowrite32((mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5], + priv->addr + GWMAC1); + + return rswitch_gwca_change_mode(priv, GWMC_OPC_OPERATION); +} + +static int rswitch_add_addr_to_mactable(struct rswitch_private *priv, cons= t u8 *mac) +{ + u32 index =3D priv->gwca.l2_shared_rx_queue->index; + int err; + + rswitch_modify(priv->addr, FWMACTL0, FWMACTL0_ED, 0); + iowrite32((mac[0] << 8) | mac[1], priv->addr + FWMACTL1); + iowrite32((mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5], + priv->addr + FWMACTL2); + iowrite32(FWMACTL3_DSLV | FWMACTL3_SSLV, + priv->addr + FWMACTL3); + iowrite32(FIELD_PREP(FWMACTL4_CSDL, index), + priv->addr + FWMACTL4(GWCA_INDEX)); + iowrite32(FIELD_PREP(FWMACTL5_DV, BIT(AGENT_INDEX_GWCA)), + priv->addr + FWMACTL5); + + err =3D rswitch_reg_wait(priv->addr, FWMACTLR, FWMACTLR_L, 0); + if (err < 0) + return err; + + if (ioread32(priv->addr + FWMACTLR)) + return NOTIFY_BAD; + + return NOTIFY_DONE; +} + +static int rswitch_del_addr_from_mactable(struct rswitch_private *priv, co= nst u8 *mac) +{ + int err; + + rswitch_modify(priv->addr, FWMACTL0, 0, FWMACTL0_ED); + iowrite32((mac[0] << 8) | mac[1], priv->addr + FWMACTL1); + iowrite32((mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5], + priv->addr + FWMACTL2); + iowrite32(FWMACTL3_DSLV | FWMACTL3_SSLV, + priv->addr + FWMACTL3); + iowrite32(FIELD_PREP(FWMACTL4_CSDL, BIT(0)), + priv->addr + FWMACTL4(GWCA_INDEX)); + iowrite32(FIELD_PREP(FWMACTL5_DV, BIT(AGENT_INDEX_GWCA)), + priv->addr + FWMACTL5); + + err =3D rswitch_reg_wait(priv->addr, FWMACTLR, FWMACTLR_L, 0); + if (err < 0) + return err; + + err =3D ioread32(priv->addr + FWMACTLR); + if (err) + return NOTIFY_BAD; + + return NOTIFY_DONE; +} + +static void rswitch_switchdev_bridge_fdb_event_work(struct work_struct *wo= rk) +{ + struct rswitch_switchdev_event_work *switchdev_work; + const unsigned char addr[] =3D {0, 0, 0, 0, 0, 0}; + struct rswitch_device *rdev; + struct net_device *ndev; + + switchdev_work =3D container_of(work, struct rswitch_switchdev_event_work= , work); + ndev =3D switchdev_work->ndev; + + rtnl_lock(); + + /* Unfortunately all net_device members point to br0, there is no simple = way to check + * if the event was triggered by a port device setting. + */ + rswitch_for_all_ports(switchdev_work->priv, rdev) { + if (ether_addr_equal(rdev->ndev->dev_addr, switchdev_work->fdb_info.addr= )) + goto out; + } + + /* Handle only bridge device */ + if (is_rdev(ndev) || !netif_is_bridge_master(ndev)) + goto out; + + switch (switchdev_work->event) { + case SWITCHDEV_FDB_ADD_TO_DEVICE: + rswitch_gwca_write_mac_address(switchdev_work->priv, switchdev_work->fdb= _info.addr); + rswitch_add_addr_to_mactable(switchdev_work->priv, switchdev_work->fdb_i= nfo.addr); + break; + case SWITCHDEV_FDB_DEL_TO_DEVICE: + rswitch_del_addr_from_mactable(switchdev_work->priv, switchdev_work->fdb= _info.addr); + rswitch_gwca_write_mac_address(switchdev_work->priv, addr); + break; + default: + break; + } + +out: + rtnl_unlock(); + + kfree(switchdev_work->fdb_info.addr); + rdev =3D netdev_priv(ndev); + netdev_put(ndev, &switchdev_work->dev_tracker); + kfree(switchdev_work); +} + +/* called under rcu_read_lock() */ +static int rswitch_switchdev_event(struct notifier_block *nb, + unsigned long event, + void *ptr) +{ + struct net_device *ndev =3D switchdev_notifier_info_to_dev(ptr); + struct rswitch_switchdev_event_work *switchdev_work; + struct switchdev_notifier_fdb_info *fdb_info; + struct switchdev_notifier_info *info =3D ptr; + struct rswitch_private *priv; + struct rswitch_device *rdev; + + priv =3D container_of(nb, struct rswitch_private, rswitch_switchdev_nb); + + switch (event) { + case SWITCHDEV_FDB_ADD_TO_DEVICE: + fallthrough; + case SWITCHDEV_FDB_DEL_TO_DEVICE: + switchdev_work =3D kzalloc(sizeof(*switchdev_work), GFP_ATOMIC); + if (!switchdev_work) + return NOTIFY_BAD; + + switchdev_work->ndev =3D info->dev; + switchdev_work->priv =3D priv; + switchdev_work->event =3D event; + rdev =3D netdev_priv(switchdev_work->ndev); + + fdb_info =3D container_of(info, + struct switchdev_notifier_fdb_info, + info); + + INIT_WORK(&switchdev_work->work, rswitch_switchdev_bridge_fdb_event_work= ); + + memcpy(&switchdev_work->fdb_info, ptr, sizeof(switchdev_work->fdb_info)); + + switchdev_work->fdb_info.addr =3D kzalloc(ETH_ALEN, GFP_ATOMIC); + if (!switchdev_work->fdb_info.addr) + goto err_addr_alloc; + + priv->switchdev_work =3D switchdev_work; + + ether_addr_copy((u8 *)switchdev_work->fdb_info.addr, + fdb_info->addr); + netdev_hold(ndev, &switchdev_work->dev_tracker, GFP_ATOMIC); + queue_work(system_long_wq, &switchdev_work->work); + + break; + } + + return NOTIFY_DONE; + +err_addr_alloc: + kfree(switchdev_work); + + return NOTIFY_BAD; +} + int rswitch_register_notifiers(struct rswitch_private *priv) { int err; diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethe= rnet/renesas/rswitch_main.c index cfe7bfe6546b..6fa37533feff 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -2262,6 +2262,8 @@ static void rswitch_deinit(struct rswitch_private *pr= iv) rswitch_gwca_ts_queue_free(priv); rswitch_gwca_linkfix_free(priv); =20 + cancel_work_sync(&priv->switchdev_work->work); + rswitch_clock_disable(priv); } =20 --=20 2.43.0 From nobody Sun May 24 18:45:11 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010002.outbound.protection.outlook.com [52.101.229.2]) (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 50331393DDC; Fri, 22 May 2026 12:13:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.2 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452029; cv=fail; b=tH8zqQ7wLGro7NUsf9WCI+Oq9b427rbiqijGnICWA4YyyKa3I1vmSrmr9a+pTwjOBDlQ4qPZHrDpOJ/dAx8I/15Ae8krlTCgEHaNwy38dlSVu1EY1vXIIp0uRwstmbApMdfxOyoD1CIhv9/FDDeFKDDP0s/7ZJ2E91aVvI1wf14= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779452029; c=relaxed/simple; bh=i6HjGPzlP/nQ0Z6YFOlnj1YnHebJC2s2xjpnKWrc/1Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dYvT4pcOGrXQZN/9QbHXYHDrJBL7/389pBLxfmr6xjzndXgfXbSWua5HZlWbvOQRKDsodrMg8pCpdxUZlUE/d+9hPm34/2kjl/TMBp8zPmRTeXxjge77GJx9YYP0KCuCc34EWk5/bzeIpWZYUnnMDyTcRN4CW2tH1rH1nJ8DTWE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=SSnFS3ZN; arc=fail smtp.client-ip=52.101.229.2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="SSnFS3ZN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ITFL1DCWNbwPCZSdm4r9Fs32t6gvOPeTIj7TMcYTYgf/E5DURbqDmqBcIA2gF5QRTgzyZmqeWD3H+8oSbSJTtblcKx7+zc5NjHf/m2BJx+aoEA2Yz/QE5P9ifdxOhP+ow+Yi/Cf8MD4WlhAPIc+JnRP5RlGR4m99PHCmlLomWUvRqfMxyE1VqjrUDy0rVIZE+P7hmo0f+g+BWiLvHTwnEqK9ZIUSddiRT1Niz8bw0idJECGy6zbaaKGE6gaV9eiObz0iBrZMaF5ZFfZ+twNwgwaWUrP8wgGoSaUyO/bmt7Dn7i9JlK4hboJv6r/P2KM4jzWQ8UEDyR2irEI8BMtjaQ== 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=LK+h+/v5CiJWF+E9Jlgyqd3Sb+H0IeW+VkC/kfVCBnk=; b=Po1bDoCv79kCGp7y1EQ+UtBsHjBjJHQrFpPeg3/MRYVkjufcnsudPY356XIx1CbHRtsOOyTO1r3kAVwzglu4cx0riFiJDKe7std06OwJCTUFrWoMmkW1OGNXQXCk2UtasyHH4O6NOa+R/+09yGEfnYmZx/077oOd0TUEyGhVOdLtR4A9taMKJ/2Ua0GnCL86B/CQWLduY+GHMqEfCkmOEnC1CWyYNY3nqfaJmUhhIRfjTW1ko56uWzV0pYc5D7q9OiYOcs1+MXovTu8H1tv25ejqRpc6VTSSZGwEIVqO9ukl85lNvyZpS2mknnOZ43Yo9Xe1JsqrCdRH6+0bKeJbeQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=davemloft.net smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LK+h+/v5CiJWF+E9Jlgyqd3Sb+H0IeW+VkC/kfVCBnk=; b=SSnFS3ZN9KUnzWnnSsRag+/+QqrkFdobwFzqegqVqe8rhsGS1f+dPz2f4dO4yaDQ/hWZCg6zpuR8ydn09vRXzKa/hukmsjYukb8AswJiIekuSI+HV/N79nL07ls5uAdk7Wd5KIbOdM17AuZV8f+4pIMQU8DU8OkQYgNzKKyVB/U= Received: from TY4PR01CA0104.jpnprd01.prod.outlook.com (2603:1096:405:378::9) by OS7PR01MB14701.jpnprd01.prod.outlook.com (2603:1096:604:39b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 12:13:40 +0000 Received: from TY1PEPF0000BAD7.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:378:cafe::7) by TY4PR01CA0104.outlook.office365.com (2603:1096:405:378::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.48.17 via Frontend Transport; Fri, 22 May 2026 12:13:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay004p.adwin.renesas.com; pr=E Received: from ejcrelay004p.adwin.renesas.com (8.62.32.50) by TY1PEPF0000BAD7.mail.protection.outlook.com (10.167.240.36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Fri, 22 May 2026 12:13:39 +0000 Received: from [127.0.1.1] (unknown [10.226.78.135]) by ejcrelay004p.adwin.renesas.com (Postfix) with ESMTP id 2FD603000458; Fri, 22 May 2026 21:13:35 +0900 (JST) From: Michael Dege Date: Fri, 22 May 2026 14:12:43 +0200 Subject: [PATCH net-next v5 14/14] net: renesas: rswitch: add vlan aware switching Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260522-rswitch_add_vlans-v5-14-53589d944a9f@renesas.com> References: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> In-Reply-To: <20260522-rswitch_add_vlans-v5-0-53589d944a9f@renesas.com> To: Yoshihiro Shimoda , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?q?Niklas_S=C3=B6derlund?= , Paul Barker , Richard Cochran Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Dege X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779451963; l=14831; i=michael.dege@renesas.com; s=20251023; h=from:subject:message-id; bh=i6HjGPzlP/nQ0Z6YFOlnj1YnHebJC2s2xjpnKWrc/1Y=; b=hJ+ay1A0mfm0EoxVOWB7Ib5Rf9v/GUNcNuueilKiIzz6wlhbyMwt9xsz+guZtppWTF2PihfEg ORPUQWlvxbVD3Draw8FME96dR6vGaaCveKlAjoflvbVQwm/RRKDFwNS X-Developer-Key: i=michael.dege@renesas.com; a=ed25519; pk=gu1rwIcCrAxNMv2I8fIfiQvt51xzZwnQy4Ua/DscQt8= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY1PEPF0000BAD7:EE_|OS7PR01MB14701:EE_ X-MS-Office365-Filtering-Correlation-Id: 92ab8bec-e56e-4c63-aaea-08deb7fb8ef1 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|1800799024|82310400026|18002099003|18092099006|22082099003|56012099003|11063799006; X-Microsoft-Antispam-Message-Info: uonr5y7kFsCpCofzjWhxBc8EvO7ZVSvbBbcWL8xg6gc9WUea9FRmOuX5HpYXwV1/2aBHhWbhi8OO8pbCvPhla7jrHSsg9Q5wbxe5yoRuNtufoV6wk6WNm5GUB1Jq7AUw/UVrJ/m4F9Hj18j3QsLXgxE0lVqNW6EFuTCnJ/oQSYSlFitBKVG6EdGQwqBkVJuKSJrpUGZXGFZ0dRhlMoSitTI34X+aED9Ub2RtFWc2JUzEBe3emS+RNQXGRQ1HpSn0WCtB4cRhhRzcMSQHgnCGQQZhl8XiSW9FwnV0AsT+JDL3TudCjW11CFpUzMLuDncht6vM9odBofFkuSE4CdDBCCqttLUD7KLXvc36Le9/uJg549ugCmfv7u9Xf7HPZjbdxxVc3pP4AaV360iLLa+PxPa433ZokhC97P5BlaOVFEt/X+y4TSL9a7tbInfYu43x7NPaUcDsv53fN2l9i8/vfbhcnqnObTikHswO7/hVANg8SDLSC1pc/7xn3xbBLzKOOcbMUrGb/sthw5SY8qOl8GleyPYKLG0FTIfkWXZWAJgDKUYTr2P9Avlel/EYl2p5JaHxvYWrvgCMBDM0y4IHJ+v6H+39bqPpb/AVEZdJvl1y6yuCqD0I/5YwTDhHIfXeC7C/vwGbYNIeSYguuGSsncdGS7yR/hzSosu4fadA8ryDHWk3CqCFon8QeS0bLEg+Y5HsX+AO8BDhQmSsMcPPBOCHSv1pkoca0wYpmf/U4mM= X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay004p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(1800799024)(82310400026)(18002099003)(18092099006)(22082099003)(56012099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ARXjZQSgkSdCLeXmx2tMFXMgkrndWth5wJx4sLN3nZdA43IdX7D1HolyN4X3YdqWkfaCL2Slv8VpumJW7UndbxuJnQB5W5LgEdwFXXKnPQbqepPbPaCfgXSrvfcU/pRIve+mXKBqSfiAoNnXfht/PqG3YGtIWcHxqO0fF1M2rXp/UvV4gjez8AaiuDJPV5O4+qTaUDLSSCwE9SevezIdiKOtqyfJruaLWuoL+mMBd4QWmNrPv3ty2vpbrdcckhyrskFrbelnEZvmuL/LCpW/5/r5oNxOgR5cEhRa12/TsNZ6Bc7NTjs6O1HRPliL2lrgiGkBhnQJsx231SUgpwHOXpZ+bWgq+rIXEzqPaE1oxF9KniC+TrpK8aY+A8hFJmnSAaYXYvUvqinuBPtjAhs1AC65peCHAws+7P5Ipq9qHVHt8bGuIdAoT9WFqfMWy3Ku X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 12:13:39.5562 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 92ab8bec-e56e-4c63-aaea-08deb7fb8ef1 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay004p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY1PEPF0000BAD7.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7PR01MB14701 Add vlan support to L2 HW bridge. On R-Car S4 there is limited vlan support, which is not fully 802.1Q compliant. The aim of this driver addition is to get as close as possible to the correct behavior. Limitations are: - all ports should be in the same default vlan - default vlans are not stripped on egress. Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/Kconfig | 1 + drivers/net/ethernet/renesas/rswitch_l2.c | 401 ++++++++++++++++++++++++++= +--- 2 files changed, 364 insertions(+), 38 deletions(-) diff --git a/drivers/net/ethernet/renesas/Kconfig b/drivers/net/ethernet/re= nesas/Kconfig index 9b7559c88bee..2494ff60e8c2 100644 --- a/drivers/net/ethernet/renesas/Kconfig +++ b/drivers/net/ethernet/renesas/Kconfig @@ -43,6 +43,7 @@ config RENESAS_ETHER_SWITCH tristate "Renesas Ethernet Switch support" depends on ARCH_RENESAS || COMPILE_TEST depends on PTP_1588_CLOCK + depends on BRIDGE || BRIDGE=3Dn select CRC32 select MII select PHYLINK diff --git a/drivers/net/ethernet/renesas/rswitch_l2.c b/drivers/net/ethern= et/renesas/rswitch_l2.c index 4d0646283f88..d2e22bee9c0d 100644 --- a/drivers/net/ethernet/renesas/rswitch_l2.c +++ b/drivers/net/ethernet/renesas/rswitch_l2.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include =20 @@ -173,22 +174,6 @@ static void rswitch_port_update_brdev(struct net_devic= e *ndev, rswitch_update_offload_brdev(rdev->priv); } =20 -static int rswitch_port_update_stp_state(struct net_device *ndev, u8 stp_s= tate) -{ - struct rswitch_device *rdev; - - if (!is_rdev(ndev)) - return -ENODEV; - - rdev =3D netdev_priv(ndev); - rdev->learning_requested =3D (stp_state =3D=3D BR_STATE_LEARNING || - stp_state =3D=3D BR_STATE_FORWARDING); - rdev->forwarding_requested =3D (stp_state =3D=3D BR_STATE_FORWARDING); - rswitch_update_l2_offload(rdev->priv); - - return 0; -} - static int rswitch_netdevice_event(struct notifier_block *nb, unsigned long event, void *ptr) @@ -212,61 +197,401 @@ static int rswitch_netdevice_event(struct notifier_b= lock *nb, return NOTIFY_OK; } =20 -static int rswitch_update_ageing_time(struct net_device *ndev, clock_t tim= e) +static int rswitch_port_update_stp_state(struct net_device *ndev, u8 stp_s= tate) { - struct rswitch_device *rdev =3D netdev_priv(ndev); - u32 reg_val; + struct rswitch_device *rdev; =20 if (!is_rdev(ndev)) return -ENODEV; =20 + rdev =3D netdev_priv(ndev); + rdev->learning_requested =3D (stp_state =3D=3D BR_STATE_LEARNING || + stp_state =3D=3D BR_STATE_FORWARDING); + rdev->forwarding_requested =3D (stp_state =3D=3D BR_STATE_FORWARDING); + rswitch_update_l2_offload(rdev->priv); + + return 0; +} + +static int rswitch_update_ageing_time(struct rswitch_private *priv, clock_= t time) +{ + u32 reg_val; + if (!FIELD_FIT(FWMACAGC_MACAGT, time)) return -EINVAL; =20 reg_val =3D FIELD_PREP(FWMACAGC_MACAGT, time); reg_val |=3D FWMACAGC_MACAGE | FWMACAGC_MACAGSL; - iowrite32(reg_val, rdev->priv->addr + FWMACAGC); + iowrite32(reg_val, priv->addr + FWMACAGC); =20 return 0; } =20 -static int rswitch_port_attr_set(struct net_device *ndev, const void *ctx, - const struct switchdev_attr *attr, - struct netlink_ext_ack *extack) +static void rswitch_update_vlan_filtering(struct rswitch_private *priv, + bool vlan_filtering) { + if (vlan_filtering) + rswitch_modify(priv->addr, FWPC0(AGENT_INDEX_GWCA), + 0, FWPC0_VLANSA | FWPC0_VLANRU); + else + rswitch_modify(priv->addr, FWPC0(AGENT_INDEX_GWCA), + FWPC0_VLANSA | FWPC0_VLANRU, 0); +} + +static int rswitch_handle_port_attr_set(struct net_device *ndev, + struct notifier_block *nb, + struct switchdev_notifier_port_attr_info *info) +{ + const struct switchdev_attr *attr =3D info->attr; + struct rswitch_private *priv; + int err =3D 0; + + priv =3D container_of(nb, struct rswitch_private, rswitch_switchdev_block= ing_nb); + switch (attr->id) { case SWITCHDEV_ATTR_ID_PORT_STP_STATE: - return rswitch_port_update_stp_state(ndev, attr->u.stp_state); + err =3D rswitch_port_update_stp_state(ndev, attr->u.stp_state); + + break; case SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME: - return rswitch_update_ageing_time(ndev, attr->u.ageing_time); + err =3D rswitch_update_ageing_time(priv, attr->u.ageing_time); + + break; + case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: + rswitch_update_vlan_filtering(priv, attr->u.vlan_filtering); + + break; + case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: + + break; default: return -EOPNOTSUPP; } + + if (err < 0) + return err; + + info->handled =3D true; + + return NOTIFY_DONE; +} + +static int rswitch_read_vlan_table(struct rswitch_private *priv, u16 vid, + u32 *vlanslvs, u32 *vlandvs) +{ + int err; + + iowrite32(FIELD_PREP(VLANVIDS, vid), priv->addr + FWVLANTS); + err =3D rswitch_reg_wait(priv->addr, FWVLANTSR0, VLANTS, 0); + if (err < 0) + return err; + + /* check if vlans are present in table */ + if (!(ioread32(priv->addr + FWVLANTSR0) & VLANSNF)) { + *vlanslvs =3D (ioread32(priv->addr + FWVLANTSR1) & VLANSLVS); + *vlandvs =3D (ioread32(priv->addr + FWVLANTSR3) & VLANDVS); + } + + return 0; +} + +static int rswitch_write_vlan_table(struct rswitch_private *priv, u16 vid,= u32 index) +{ + u32 vlancsdl =3D priv->gwca.l2_shared_rx_queue->index; + u32 vlanslvs =3D 0, vlandvs =3D 0; + int err; + + err =3D rswitch_read_vlan_table(priv, vid, &vlanslvs, &vlandvs); + if (err < 0) + return err; + + rswitch_modify(priv->addr, FWVLANTL0, VLANED, 0); + iowrite32(FIELD_PREP(VLANVIDL, vid), priv->addr + FWVLANTL1); + + vlanslvs |=3D BIT(index); + vlandvs |=3D BIT(index); + iowrite32(FIELD_PREP(VLANSLVL, vlanslvs), priv->addr + FWVLANTL2); + iowrite32(FIELD_PREP(VLANCSDL, vlancsdl), priv->addr + FWVLANTL3(GWCA_IND= EX)); + iowrite32(FIELD_PREP(VLANDVL, vlandvs), priv->addr + FWVLANTL4); + + return rswitch_reg_wait(priv->addr, FWVLANTLR, VLANTL, 0); +} + +static int rswitch_erase_vlan_table(struct rswitch_private *priv, u16 vid,= u32 index) +{ + u32 vlanslvs =3D 0, vlandvs =3D 0; + int err; + + err =3D rswitch_read_vlan_table(priv, vid, &vlanslvs, &vlandvs); + if (err < 0) + return err; + + vlanslvs &=3D ~BIT(index); + vlandvs &=3D ~BIT(index); + + /* only erase empty vlan table entries */ + if (vlanslvs =3D=3D 0) + rswitch_modify(priv->addr, FWVLANTL0, 0, VLANED); + + iowrite32(FIELD_PREP(VLANVIDL, vid), priv->addr + FWVLANTL1); + iowrite32(FIELD_PREP(VLANSLVL, vlanslvs), priv->addr + FWVLANTL2); + iowrite32(FIELD_PREP(VLANDVL, vlandvs), priv->addr + FWVLANTL4); + + return rswitch_reg_wait(priv->addr, FWVLANTLR, VLANTL, 0); +} + +static int rswitch_port_set_vlan_tag(struct rswitch_etha *etha, + struct switchdev_obj_port_vlan *p_vlan, + bool delete) +{ + u32 vem_val; + int err; + + err =3D rswitch_etha_change_mode(etha, EAMC_OPC_CONFIG); + if (err < 0) + return err; + + rswitch_modify(etha->addr, EAVCC, VIM, 0); + + if (((ioread32(etha->addr + EAVTC) & CTV) =3D=3D p_vlan->vid) && delete) { + rswitch_modify(etha->addr, EAVTC, CTV, 0); + rswitch_modify(etha->addr, EAVCC, VEM, 0); + } else if (!delete) { + if ((p_vlan->flags & BRIDGE_VLAN_INFO_PVID) && + (p_vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED)) + vem_val =3D FIELD_PREP(VEM, C_TAG_VLAN); + else if (p_vlan->flags & BRIDGE_VLAN_INFO_PVID) + vem_val =3D FIELD_PREP(VEM, HW_C_TAG_VLAN); + else + vem_val =3D 0; + rswitch_modify(etha->addr, EAVCC, VEM, vem_val); + rswitch_modify(etha->addr, EAVTC, CTV, FIELD_PREP(CTV, p_vlan->vid)); + } + + return rswitch_etha_change_mode(etha, EAMC_OPC_OPERATION); +} + +static int rswitch_gwca_set_vlan_tag(struct rswitch_private *priv, + struct switchdev_obj_port_vlan *p_vlan, + bool delete) +{ + u32 vem_val; + int err; + + err =3D rswitch_gwca_change_mode(priv, GWMC_OPC_CONFIG); + if (err < 0) + return err; + + rswitch_modify(priv->addr, GWVCC, VIM, 0); + + if (((ioread32(priv->addr + GWVTC) & CTV) =3D=3D p_vlan->vid) && delete) { + rswitch_modify(priv->addr, GWVTC, CTV, 0); + rswitch_modify(priv->addr, GWVCC, VEM, 0); + } else if (!delete) { + if ((p_vlan->flags & BRIDGE_VLAN_INFO_PVID) && + (p_vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED)) + vem_val =3D FIELD_PREP(VEM, C_TAG_VLAN); + else if (p_vlan->flags & BRIDGE_VLAN_INFO_PVID) + vem_val =3D FIELD_PREP(VEM, HW_C_TAG_VLAN); + else + vem_val =3D 0; + rswitch_modify(priv->addr, GWVCC, VEM, vem_val); + rswitch_modify(priv->addr, GWVTC, CTV, FIELD_PREP(CTV, p_vlan->vid)); + } + + return rswitch_gwca_change_mode(priv, GWMC_OPC_OPERATION); +} + +static int rswitch_port_obj_do_add(struct net_device *ndev, + struct switchdev_obj_port_vlan *p_vlan) +{ + struct rswitch_device *rdev =3D netdev_priv(ndev); + struct rswitch_private *priv =3D rdev->priv; + struct rswitch_etha *etha =3D rdev->etha; + int err; + + /* Set Rswitch VLAN mode */ + iowrite32(br_vlan_enabled(rdev->brdev) ? FIELD_PREP(FWGC_SVM, C_TAG) : 0, + priv->addr + FWGC); + + err =3D rswitch_write_vlan_table(priv, p_vlan->vid, etha->index); + if (err < 0) + return err; + + /* If the default vlan for this port has been set, don't overwrite it. */ + if (ioread32(etha->addr + EAVCC)) + return NOTIFY_DONE; + + if (br_vlan_enabled(rdev->brdev)) + rswitch_modify(priv->addr, FWPC0(etha->index), 0, FWPC0_VLANSA | FWPC0_V= LANRU); + + rswitch_modify(priv->addr, FWPC2(AGENT_INDEX_GWCA), + FIELD_PREP(FWPC2_LTWFW, BIT(etha->index)), + 0); + + return rswitch_port_set_vlan_tag(etha, p_vlan, false); +} + +static int rswitch_port_obj_do_add_gwca(struct net_device *ndev, + struct rswitch_private *priv, + struct switchdev_obj_port_vlan *p_vlan) +{ + int err; + + if (!(p_vlan->flags & BRIDGE_VLAN_INFO_BRENTRY)) + return NOTIFY_DONE; + + /* Set Rswitch VLAN mode */ + iowrite32(br_vlan_enabled(ndev) ? FIELD_PREP(FWGC_SVM, C_TAG) : 0, priv->= addr + FWGC); + + err =3D rswitch_write_vlan_table(priv, p_vlan->vid, AGENT_INDEX_GWCA); + if (err < 0) + return err; + + /* If the default vlan for this port has been set, don't overwrite it. */ + if (ioread32(priv->addr + GWVCC)) + return NOTIFY_DONE; + + return rswitch_gwca_set_vlan_tag(priv, p_vlan, false); +} + +static int rswitch_port_obj_do_del(struct net_device *ndev, + struct switchdev_obj_port_vlan *p_vlan) +{ + struct rswitch_device *rdev =3D netdev_priv(ndev); + struct rswitch_private *priv =3D rdev->priv; + struct rswitch_etha *etha =3D rdev->etha; + int err; + + err =3D rswitch_port_set_vlan_tag(etha, p_vlan, true); + if (err < 0) + return err; + + rswitch_modify(priv->addr, FWPC0(etha->index), FWPC0_VLANSA | FWPC0_VLANR= U, 0); + rswitch_modify(priv->addr, FWPC2(AGENT_INDEX_GWCA), 0, + FIELD_PREP(FWPC2_LTWFW, BIT(etha->index))); + rswitch_modify(priv->addr, FWPC2(rdev->port), + 0, FIELD_PREP(FWPC2_LTWFW, GENMASK(RSWITCH_NUM_AGENTS - 1, 0))); + + return rswitch_erase_vlan_table(priv, p_vlan->vid, etha->index); +} + +static int rswitch_port_obj_do_del_gwca(struct net_device *ndev, + struct rswitch_private *priv, + struct switchdev_obj_port_vlan *p_vlan) +{ + int err; + + err =3D rswitch_gwca_set_vlan_tag(priv, p_vlan, true); + if (err < 0) + return err; + + rswitch_modify(priv->addr, FWPC0(AGENT_INDEX_GWCA), + FWPC0_VLANSA | FWPC0_VLANRU, + 0); + + return rswitch_erase_vlan_table(priv, p_vlan->vid, AGENT_INDEX_GWCA); +} + +static int rswitch_handle_port_obj_add(struct net_device *ndev, + struct notifier_block *nb, + struct switchdev_notifier_port_obj_info *info) +{ + struct switchdev_obj_port_vlan *p_vlan; + struct rswitch_private *priv; + int err; + + switch (info->obj->id) { + case SWITCHDEV_OBJ_ID_PORT_VLAN: + p_vlan =3D SWITCHDEV_OBJ_PORT_VLAN(info->obj); + if ((p_vlan->flags & BRIDGE_VLAN_INFO_MASTER) || + (p_vlan->flags & BRIDGE_VLAN_INFO_RANGE_BEGIN) || + (p_vlan->flags & BRIDGE_VLAN_INFO_RANGE_END) || + (p_vlan->flags & BRIDGE_VLAN_INFO_ONLY_OPTS)) + return NOTIFY_DONE; + + priv =3D container_of(nb, struct rswitch_private, + rswitch_switchdev_blocking_nb); + + if (!is_rdev(ndev)) + err =3D rswitch_port_obj_do_add_gwca(ndev, priv, p_vlan); + else + err =3D rswitch_port_obj_do_add(ndev, p_vlan); + + if (err < 0) + return err; + + break; + default: + return -EOPNOTSUPP; + } + + info->handled =3D true; + + return NOTIFY_DONE; +} + +static int rswitch_handle_port_obj_del(struct net_device *ndev, + struct notifier_block *nb, + struct switchdev_notifier_port_obj_info *info) +{ + struct switchdev_obj_port_vlan *p_vlan; + struct rswitch_private *priv; + int err; + + switch (info->obj->id) { + case SWITCHDEV_OBJ_ID_PORT_VLAN: + p_vlan =3D SWITCHDEV_OBJ_PORT_VLAN(info->obj); + if ((p_vlan->flags & BRIDGE_VLAN_INFO_MASTER) || + (p_vlan->flags & BRIDGE_VLAN_INFO_RANGE_BEGIN) || + (p_vlan->flags & BRIDGE_VLAN_INFO_RANGE_END) || + (p_vlan->flags & BRIDGE_VLAN_INFO_ONLY_OPTS)) + return NOTIFY_DONE; + + priv =3D container_of(nb, struct rswitch_private, + rswitch_switchdev_blocking_nb); + + if (!is_rdev(ndev)) + err =3D rswitch_port_obj_do_del_gwca(ndev, priv, p_vlan); + else + err =3D rswitch_port_obj_do_del(ndev, p_vlan); + + if (err < 0) + return err; + + break; + default: + return -EOPNOTSUPP; + } + + info->handled =3D true; + + return NOTIFY_DONE; } =20 static int rswitch_switchdev_blocking_event(struct notifier_block *nb, - unsigned long event, void *ptr) + unsigned long event, + void *ptr) { struct net_device *ndev =3D switchdev_notifier_info_to_dev(ptr); - int ret; + int err; =20 switch (event) { case SWITCHDEV_PORT_OBJ_ADD: - return -EOPNOTSUPP; + err =3D rswitch_handle_port_obj_add(ndev, nb, ptr); + + return notifier_from_errno(err); case SWITCHDEV_PORT_OBJ_DEL: - return -EOPNOTSUPP; + err =3D rswitch_handle_port_obj_del(ndev, nb, ptr); + + return notifier_from_errno(err); case SWITCHDEV_PORT_ATTR_SET: - ret =3D switchdev_handle_port_attr_set(ndev, ptr, - is_rdev, - rswitch_port_attr_set); - break; - default: - if (is_rdev(ndev)) - return -EOPNOTSUPP; - return NOTIFY_DONE; + err =3D rswitch_handle_port_attr_set(ndev, nb, ptr); + + return notifier_from_errno(err); } =20 - return notifier_from_errno(ret); + return NOTIFY_DONE; } =20 static int rswitch_gwca_write_mac_address(struct rswitch_private *priv, co= nst u8 *mac) --=20 2.43.0