From nobody Fri Oct 2 11:42:46 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11021097.outbound.protection.outlook.com [52.101.62.97]) (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 C9DE82820AC; Sun, 2 Aug 2026 03:47:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642439; cv=fail; b=TvoqzW29ewpzoeGqpD1WX2vukI4y2vI6gnGklOG3gsCRiE+XvjFwzi5xhusV+wteZjjtolsBVuQdYHvRePULd80styLBV31SDcqB2jxzO4Qm0XF0+RExTp9nmyerKzgBfBoWaEnouv+u6BC8MZe9ewQLqYuFqtL9RivOBbPHkQ8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642439; c=relaxed/simple; bh=r0FIsWF7Pg0WAEP/7eJL4PuLPi6xHe4CFXlIiXjwGo8=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=pVBGbRTzzTrQIEGl6LIlh156GDCl5XIghiguCzPcr376IL++hzhXjD5hcGq/Ih735vuNMEVUTaYTtr7sQ+CzAh4eOF5tSa9xrBOTaGJfZD+8H0V1A9vP0xQL0ZOD7ZH/sVVU1CRE9NZT78UiktSAwKQrK7+DvPRsOsZASVKhn0w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com; spf=pass smtp.mailfrom=Mahcom.com; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b=Ph1dDCkj; arc=fail smtp.client-ip=52.101.62.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b="Ph1dDCkj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R/m3VM4XZlhByiiowl8hukiqeUgQAHkwDPmtPmDH9Lz5Igrw5vCT3r2rgyWmSViCokRdM9BEc3DleWbNZfoOnSxlKziIQyqLyr3VD0xjbkwdwn63YztKwKkjqwVvBLVFH2KMLWVlHNphQQRqlxW6E67mS2/kANnZViMamYdJ1ZsljuWWBJr9Nyqma2cwcjjYEPsJ+jiPFsCU7RXKRrTdl52ifyIkTr/0J2FHaMBlTNpoLgN14u67DuesU72hn/nNrFV9XVDaov55wDkLV8UOJSTzYN4gLjmVgd1uh5OnCBkDZKgdjs2/jIEtS0ugvDv72vw5mYqfWHB7UQQy09F+FA== 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=g0X9TNMeMCyEoX0qxV7Bbp7MQ6QxfzD44catuTc0d4o=; b=fwBZ2dTr0vE2U6q3l29pdKTP3jzPbxq3gLwkJAAJPJh/ueBWEJBOv6uzWE/0eRP+Sehz/505qTCbPJbRRpfIhy3lDkX1t+aNpq4F2izh4l/jx+HfMbS6z0DJAyZthDkZ9p+tn9gW91poYF5K6SDOBDwvifHVYFsbLQj7JKoPvXnt1yscRzF2aK36rSQMuVgVxNGn1GyHRRF8HOhz+8H8dyT/YvlN1lIX+1Sy46sDRADLZXi1ftEU6pZT3V3uBwNpoorKKIXdYHSVLeNcsMnL3I2L6WGR+1XbtS1lPAcWnsrUDhGsxQy0ekBR36QHihcWoRNnfebx0JgPD7V6FsFS2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mahcom.com; dmarc=pass action=none header.from=mahcom.com; dkim=pass header.d=mahcom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mahcom.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g0X9TNMeMCyEoX0qxV7Bbp7MQ6QxfzD44catuTc0d4o=; b=Ph1dDCkjK6rZ3V5zzABxzzAIFXB0Iu1VXwliBCx09BMpC1tpVBVwIie0XoX9/pM2yQeISABgE9yfeFDy/jj5OqrUNJb27Br1r3Z7OM+wYgq4XQC6w/GKPYU29YjtLSF9inBN/PX3DFICsZHpnxa6Tw5m11/U0TWlXd8VMny+sQzEIJ0h0rfBxLC8nVJhZ6bAE1IFSetcvkfyajKIMcXMfPb2ASoALp0qOxCKB5WkOyjcvMx+qu9LqCGkN9aNrdrWzwSpmceW8zqjzBU8QjD4Ng1cZqxaNt1ZFrh6mUojkO+rsiaBjYr6v0BmOgptxVCbFYSWr9yQ8e3xE5I9kTqy9A== Received: from IA0PPF42224DB53.namprd20.prod.outlook.com (2603:10b6:20f:fc02::19) by SA1PR20MB4298.namprd20.prod.outlook.com (2603:10b6:806:235::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sun, 2 Aug 2026 03:47:15 +0000 Received: from IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97]) by IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97%8]) with mapi id 15.21.0270.016; Sun, 2 Aug 2026 03:47:15 +0000 From: Brandon Mahdavi To: "netdev@vger.kernel.org" CC: "andrew@lunn.ch" , "olteanv@gmail.com" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "linux-kernel@vger.kernel.org" , "ansuelsmth@gmail.com" , "hzyitc@outlook.com" , "lists@marzocchi.net" Subject: [RFC PATCH net-next v2 1/6] net: dsa: qca8k: implement LAG FDB operations Thread-Topic: [RFC PATCH net-next v2 1/6] net: dsa: qca8k: implement LAG FDB operations Thread-Index: AQHdIjGb347/o5wIV0Cq+zIgzC7iFw== Date: Sun, 2 Aug 2026 03:47:15 +0000 Message-ID: <20260802034701.3339052-2-brandon.mahdavi@mahcom.com> References: <20260725032159.421627-1-brandon.mahdavi@mahcom.com> <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> In-Reply-To: <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Mahcom.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PPF42224DB53:EE_|SA1PR20MB4298:EE_ x-ms-office365-filtering-correlation-id: 9a750547-bcb5-4ce5-9296-08def048be1e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|38070700021|6133799003|56012099006|10067099003|4143699003|22082099003|18002099003; x-microsoft-antispam-message-info: H3yoivV7igiZ1qxQRlpad3q95UPLosBBt05tJ7NL1OeUDz6+KOt7GQSTgAR6x2DnUa+WIjqgWC94r0RuQG3i7hlaWrs7+S0E/hPbBA1Abh2oicXXxojir6HJFZO86UNY3jm+BD29SoU9SOWLtm5ebJ5FUTVQN9dJ2fwbEr8zstkRnigqvQCkwyrZaByxjWY7VJIQvK7SnhG2FvD3AffYRQpATAiNdu3Jla0R4+zVOctS1fxoxvlof3P7b5tl/sKaHKg3zPV3Rgj3bKJF1m8ZJ2uJs0qC6iP9fcdn2uuCX7ar5gYFehzCdCNiv6oDNlAWU1DyxXL4EvCyHUoltIy6ZDpwc+TmGDwG4UzDshS88RGMcTtuXWq9N9YsO+hfdU230sdTMsuhTjv90t+PRM8yFawqaV3bHoRiaVo4mrSzzuWH253w/kaRqi+rIwqFEJYwALuLs8mwpRrZKLyHkvMJBHbw6jiTQDEKkfHmWMEOII9YNwjG3IuEp5Rm7idP+0Qm0+PRo/ZCQpDLr9FOTzL2hW/j5AONYeLvydei3cIycmlB4ZRnATY/MMOVSPbjv9E03knl8CV/+K5Rjz30kymlZnsHbjxDLIKov5QzNFVu7G6t2Nwc1ySNr8sBbIEcVTHw5A2GgM3XgKxstTdhldpFgnUtIStsu81Lp7twkHKl997eaJWQn1VYYBwlaPZpHsEOqoMhnoS+MwpNrsp84QKhCHb5Mb1Q+1pXOgYLBNfDLUw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PPF42224DB53.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(366016)(1800799024)(38070700021)(6133799003)(56012099006)(10067099003)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?zaihbTgXVAZW3MM/qtMVyZzUuCWzcHyQxAgqtkdM5PGTtH7PTbGxdrKHj1?= =?iso-8859-1?Q?ULajQ9Bn0+l/fh8ET4jF9Hp5b5VL5K38DNHJRkT1NugBgEzwEDp8cp1ku2?= =?iso-8859-1?Q?MkBFZ+KrUHcvldqdjXh6UZKwUbMZg3y8X41/WIK+Z9fSumq83xzSXuNDtA?= =?iso-8859-1?Q?MqwITnpgSWfoC+TdAEGvtSmPFkUmVnBpM7AhgWQnpa/hLpsbqI2bR5Qmaq?= =?iso-8859-1?Q?4tNAF+huOqSV1oZKCx+54JGvV74AZF7pd9ym6p+Ds5/wdL+CH4U0a54Rsp?= =?iso-8859-1?Q?Tk5BPw2XBPTQgVm9nymQzPdQlRGyjzY0sw4b0fVNKXZvui0wBcYTDN8+GO?= =?iso-8859-1?Q?2RyOYXSC74E2XV7CM9VUwUlNgDMAUqmd9zFHnyGl8zvUwrkE71NU9bOYWO?= =?iso-8859-1?Q?eYV2ZwjDX5Qf+m7UC6/3urSGXbG5ZnhXqTGiKoOuiWn+A3ML9vxHxRQq0A?= =?iso-8859-1?Q?XQAxf7e1xa2lACWcrGA0akpcqO2dKSNw3i1SSYbqk9FVlfbd5H1JaYSSG/?= =?iso-8859-1?Q?vkZ8cvLir6BMTKJxe+sxBK7L5kAYQozXDzs4mQHs77XcjZ1RsZKjIwDc76?= =?iso-8859-1?Q?htT+ltnSxW472bIuPxBz4VFLrGmyuE0Quw7veKn8W4BiO103K8Of6DoUFR?= =?iso-8859-1?Q?H58pRUMcoP4h4h8leZMIz4N7pwa89LN5EFpfpbO075pgfGOvRlABatGxQb?= =?iso-8859-1?Q?VG11L5F41IaiOn0ZKi4+yOoQM4oFd1lAGTrZVe2t0fEhvKFvSGBYEgQ5DG?= =?iso-8859-1?Q?pNvtVp9JLVwR+s+bsz2vUBLiXV7cLHEbw1k+mJccUqEevOxTAdEjlGzhpp?= =?iso-8859-1?Q?xb7oCOGt3mfKo6BkxFLykQPwSNr1KWyxacmX7K43sgIqu/fR8jklDteufG?= =?iso-8859-1?Q?GkyUxmM+ud8YycFvmXZBdyFOM7HtZhCWPwpP36fEGnHAeT5q+2lRp+bu2G?= =?iso-8859-1?Q?HCUkCfj6wvBrFrMxK83kchZuXkd9tN1aX4SUo19trB6G0Nm3uUqvEFV0pe?= =?iso-8859-1?Q?rEI72KFy5D5F8ZHnV3Mu6g7GZhZaSoiS03rC3pUY/PiQp+PMiqjv/ql0g9?= =?iso-8859-1?Q?7tcMREH4Dixj8JihyyN/0iIZ/CT9mqSDjsoiJRtYzFPNacTxwgxGUFvAHq?= =?iso-8859-1?Q?hCyZQeLfzSK34acxS0Y2YE1g5HRAgib9PFLgP4hoWq1x/0qS6bKxZVyIx/?= =?iso-8859-1?Q?cp5AKyII9drkjTpUDlCdCBjjQOC3ads8PHKgd2WHnvcI5Z3nKR1L3Qk79Z?= =?iso-8859-1?Q?vjVLhc/8O9kS135x7EZhANZLmPisy8K7xtdSD7VjDC29n8LGr9GW/lHJ2i?= =?iso-8859-1?Q?TIojteAe10KNXb2gTi/c23YjGNkWRGAQQb4hCyKsKxAb8iNHdz5SHeiKAg?= =?iso-8859-1?Q?iCh9R1yH+gfzEvRfZhFgreMHFzCnP37SnBAPQcJh6F7PvLjeHkFue7cTnn?= =?iso-8859-1?Q?V+y9MMxEymthWyVhp7VMAMLC0kPXki1m3xReJiANONzmDVHbX56fSX0g+b?= =?iso-8859-1?Q?YW9bYayswJuEBMIqcCT4wdg95GaCZlTxnhCKegjIp+qMxUTHKYQrD9BDLV?= =?iso-8859-1?Q?phJ/SoCH3Cab05fookbGOmBLQcoBPIFlmmHv5lKUpoYxTDFvHWazUM/P8k?= =?iso-8859-1?Q?mUY3QMZhouWiU4LrKy2rvBskqZkZs2jnJoh4ZcXlFpPvLAdFTxNv8sHeK4?= =?iso-8859-1?Q?vaC7n3Lo6Ez4qCwcVIHnp/ZS6v7aKnzBTRKqCHOHnTfEj2Duna0vU85XJw?= =?iso-8859-1?Q?5lN46+JZn0lHUug83UbELZ6IuB8wmWvrviNYmHOJenQam6FE6JHZdZNUqr?= =?iso-8859-1?Q?jChafgKFhw=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Mahcom.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PPF42224DB53.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a750547-bcb5-4ce5-9296-08def048be1e X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2026 03:47:15.0629 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92901e00-cf2e-4465-88d5-f158582648a6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4M9wB5sXTOqW3d58edSUnTawYmuz+m1SMLft2RqaNmlwbypmy8EDPoWAdIcdDDFGKhf6zgP3+QjBn2SZwflKvEwq41bgRPGDA1qaGJuEnD8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR20MB4298 Content-Type: text/plain; charset="utf-8" From: Christian Marangi DSA sends FDB notifications for addresses associated with an offloaded LAG through lag_fdb_add() and lag_fdb_del(). QCA8K represents a LAG destination by setting every local member in the ATU destination port mask. Build that mask from DSA LAG membership and use the existing static FDB helpers. This also provides the callback path needed when a DSA conduit is itself a LAG. Link: https://github.com/openwrt/openwrt/commit/500dbaefd2a6a1c9c0d81e275a2= 8c6a8e26519e4 Signed-off-by: Christian Marangi Signed-off-by: Brandon Mahdavi --- drivers/net/dsa/qca/qca8k-8xxx.c | 2 ++ drivers/net/dsa/qca/qca8k-common.c | 40 ++++++++++++++++++++++++++++++ drivers/net/dsa/qca/qca8k.h | 6 +++++ 3 files changed, 48 insertions(+) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8= xxx.c index 4c928983b862..9dce23aaed76 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -2040,6 +2040,8 @@ static const struct dsa_switch_ops qca8k_switch_ops = =3D { .port_fdb_add =3D qca8k_port_fdb_add, .port_fdb_del =3D qca8k_port_fdb_del, .port_fdb_dump =3D qca8k_port_fdb_dump, + .lag_fdb_add =3D qca8k_lag_fdb_add, + .lag_fdb_del =3D qca8k_lag_fdb_del, .port_mdb_add =3D qca8k_port_mdb_add, .port_mdb_del =3D qca8k_port_mdb_del, .port_mirror_add =3D qca8k_port_mirror_add, diff --git a/drivers/net/dsa/qca/qca8k-common.c b/drivers/net/dsa/qca/qca8k= -common.c index 13005f10edb7..5f0a875e5c87 100644 --- a/drivers/net/dsa/qca/qca8k-common.c +++ b/drivers/net/dsa/qca/qca8k-common.c @@ -868,6 +868,46 @@ int qca8k_port_fdb_dump(struct dsa_switch *ds, int por= t, return 0; } =20 +static u8 qca8k_lag_port_mask(struct dsa_switch *ds, + const struct dsa_lag *lag) +{ + struct dsa_port *dp; + u8 port_mask =3D 0; + + dsa_lag_foreach_port(dp, ds->dst, lag) + if (dp->ds =3D=3D ds) + port_mask |=3D BIT(dp->index); + + return port_mask; +} + +int qca8k_lag_fdb_add(struct dsa_switch *ds, struct dsa_lag lag, + const unsigned char *addr, u16 vid, + struct dsa_db db) +{ + struct qca8k_priv *priv =3D ds->priv; + u8 port_mask; + + port_mask =3D qca8k_lag_port_mask(ds, &lag); + + return qca8k_port_fdb_insert(priv, addr, port_mask, vid); +} + +int qca8k_lag_fdb_del(struct dsa_switch *ds, struct dsa_lag lag, + const unsigned char *addr, u16 vid, + struct dsa_db db) +{ + struct qca8k_priv *priv =3D ds->priv; + u8 port_mask; + + if (!vid) + vid =3D QCA8K_PORT_VID_DEF; + + port_mask =3D qca8k_lag_port_mask(ds, &lag); + + return qca8k_fdb_del(priv, addr, port_mask, vid); +} + int qca8k_port_mdb_add(struct dsa_switch *ds, int port, const struct switchdev_obj_port_mdb *mdb, struct dsa_db db) diff --git a/drivers/net/dsa/qca/qca8k.h b/drivers/net/dsa/qca/qca8k.h index 956338893032..ab8ea261c0b9 100644 --- a/drivers/net/dsa/qca/qca8k.h +++ b/drivers/net/dsa/qca/qca8k.h @@ -561,6 +561,12 @@ int qca8k_port_fdb_del(struct dsa_switch *ds, int port, struct dsa_db db); int qca8k_port_fdb_dump(struct dsa_switch *ds, int port, dsa_fdb_dump_cb_t *cb, void *data); +int qca8k_lag_fdb_add(struct dsa_switch *ds, struct dsa_lag lag, + const unsigned char *addr, u16 vid, + struct dsa_db db); +int qca8k_lag_fdb_del(struct dsa_switch *ds, struct dsa_lag lag, + const unsigned char *addr, u16 vid, + struct dsa_db db); =20 /* Common MDB function */ int qca8k_port_mdb_add(struct dsa_switch *ds, int port, --=20 2.43.0 From nobody Fri Oct 2 11:42:46 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11021087.outbound.protection.outlook.com [52.101.62.87]) (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 C9FF52E03EA; Sun, 2 Aug 2026 03:47:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.87 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642442; cv=fail; b=TbuzYNiQG66oLVAs95Ww4ij6UiZBVkFZBEHlJdOti5wWUTU+Vs8FnfWxjC/6j2Zm6SUh7LtOV+pJLQia+rf0AylUw+6rzbh0XR/pgSSxl25OnwFje2LLjpAqYx7D0chjzlNGUzTaFxjwu3p+v5kBZBlwBejZi/r2v5CeKZOFUYs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642442; c=relaxed/simple; bh=mvliq8UcRMlvceDwCk8vcSfT6toyHrch3ar8rHQI1qI=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=VWIyb1RdH5yEkar5Er9Ms0OGiyZnkZu7rVxOO6eYEg5O3kSmuPUAvU2V5W1lVLgfzJxqOCiFfdaahAuWHkYhFkkAsbPBFoliPfBECGVvpIqxwsuyoM+703kYfdHFBV8wFFaQ/OyMWgOF1qgs9Xf+9GsO+45Fq4cjIzQPvtT/TkM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com; spf=pass smtp.mailfrom=Mahcom.com; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b=aUW/F7Ev; arc=fail smtp.client-ip=52.101.62.87 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b="aUW/F7Ev" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xKZas8wE4+QqBhbEnKhe9re0iHBi+4tJLbh6uTJfVnj445RcRdenL65EPh89X2/YTQw1cVqw4WZrK3BgyUefBovT+gNQzb/73uTee7yZ0pM1zpFGm8XmjtKIZnpx7KZXzdiSi/yxmRi7MRLZ32j/oXL7d6VHL8u/a+wd5HYOilnOtkGgpV5v+KZSvwrk4k72SlgXC5hJ21rh/B27KDND58GJ9JvJwt2qqsesgrDtuC54WCnxUuuGaGQjbpsO+C1MLpKs96/xrVGR7fM9LtknF5f/UuwxaALyV0OWmvPQdRR7jdxCBpWk2dl/ZTXuULkmq5f543v1hEQAzNdOUudrBg== 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=WN9HEOP/brrCyyIGG8v/o/x7ZqObQAcwN+DaeI7e4lc=; b=jyNBoz3AGx87wIsPa7bdcjggKooOUUiokK4faQRYz6woOdtHEvZ92r/vE4UZGXwm/bGXBUrJl5F42LeV6Zn4Di47rEEl6b8g5a2OTo+xwXFq3F0YUMJjn7DhqMGLYt0tyHcxcExgNRwPf6oxUki1H11Y1DUN7RrsxR0r34qidCTUTs5NQ9/oVSzhIFULPBHkg9xxblPdeLLFiyHCnkHdoAiLq8nYapGA75dcfcUiXTjZ1FM/D5ioqLBZVWfHEjdt9KelgDTRr+SxU0dkA4zHagOQJuydLkNHLUIYpHWWUvjBzWmNVf5BPx7fXo/tMe6WeSQTGWopJcrfksB6R8pbwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mahcom.com; dmarc=pass action=none header.from=mahcom.com; dkim=pass header.d=mahcom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mahcom.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WN9HEOP/brrCyyIGG8v/o/x7ZqObQAcwN+DaeI7e4lc=; b=aUW/F7Evlcrde+HzlRX4nMBxDGKbDk1rt5E1FdDbsdQqS+ExRtGYOuX7+3c1HbU8Gmr/yqrPl8ylc9btoNIglKAoLI0TZIjCjsLrNZDpDxr+6AMkZZp4oGKUiKyuh+bULs7JEFllcB+WyhVelWmrkfezBQmo8EFvLynDM1rpMUMWUOPcWDlatlGQ5N6e8uid4HZIRtmJlmlaTVTJS9/JBxjrSsNzoe9MhfMQ7bLEWetssSzEwBzD8c6JW/IffUr6GIopixf3WZJ/7P2hMeXvvHz3n7e6RTX76xwLIhld2hdOaI80PBsgbDWE/k7EPHuAXlZTs6Ln+qXr2ATBuTYnqA== Received: from IA0PPF42224DB53.namprd20.prod.outlook.com (2603:10b6:20f:fc02::19) by SA1PR20MB4298.namprd20.prod.outlook.com (2603:10b6:806:235::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sun, 2 Aug 2026 03:47:18 +0000 Received: from IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97]) by IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97%8]) with mapi id 15.21.0270.016; Sun, 2 Aug 2026 03:47:18 +0000 From: Brandon Mahdavi To: "netdev@vger.kernel.org" CC: "andrew@lunn.ch" , "olteanv@gmail.com" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "linux-kernel@vger.kernel.org" , "ansuelsmth@gmail.com" , "hzyitc@outlook.com" , "lists@marzocchi.net" Subject: [RFC PATCH net-next v2 2/6] net: dsa: qca8k: skip host FDB entries on CPU conduits Thread-Topic: [RFC PATCH net-next v2 2/6] net: dsa: qca8k: skip host FDB entries on CPU conduits Thread-Index: AQHdIjGd/UKqm9oaIk+DgCJ6HjyZgw== Date: Sun, 2 Aug 2026 03:47:18 +0000 Message-ID: <20260802034701.3339052-3-brandon.mahdavi@mahcom.com> References: <20260725032159.421627-1-brandon.mahdavi@mahcom.com> <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> In-Reply-To: <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Mahcom.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PPF42224DB53:EE_|SA1PR20MB4298:EE_ x-ms-office365-filtering-correlation-id: d1d2d23c-3128-4097-08f5-08def048c01e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|38070700021|56012099006|10067099003|4143699003|22082099003|18002099003; x-microsoft-antispam-message-info: PAb3TJ3H6d5IwVBVwOLW0JuXmKraUwHx465lDVHbmZp6dIrfp/GJjHVJV8CzTA2OCwqbsN/4It1isv9lMicAPKy0SWM+sCaSCmyDdaHDWXX1BUVToZqtKyj4xTEftFG6SrJX7T/L5KrY4d49dcMhapQ53SPkqV7/o4QDauXjo+fbtiwZHTgFikVZqBdZaHvNWDsQGeMRBaSZlZdc6gNJotbBBxB9Pfb1k9UN7BZy3kU4PHelF4Kl6LgiGMKMKnrkJxVTj08Rf8wW7X0f7WxJSTVph/gBy772ilMO71oCpzd7cKog9SGzfNgv7wsxqKmylDDvczyyX0alZfcvz5xiif/C2Cj4ozoPggvw0LKahAPRoAEuLj/4yOY0yq3pf5z7jFMpmZtw2yBNoBWVLe1ASL2HzsSdN9EQJ23GwDX5A0iSaTwvXAWk4tfc2hTU7ejxh8nni3lsHOumpSJKBVbTvK8YaXFn/LUJSb12zzV0NRdMRlrFnmqCUOAzAWlS+jthj8zwp/xT4M8TVZM+ThLWvgQuna5P8R9TruWk/jKct5HRPA6Y5w332WBY1xlS3vIW1ZAPrXZcGMhq7XIqqxvGbqNq6mSss3qWc8H5aXCRBpvxosvfrEueaHtpfhZaXZd+O36gntx25uUUsCiKUVwm7FsIl3oTAM4KmMU+S8USBwV7yQL7/Jemrv9RK1QtRCfci3MW0RQLomyx1cbZRTT9DZNobFVtc4f9vgCaaMcKBXQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PPF42224DB53.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(366016)(1800799024)(38070700021)(56012099006)(10067099003)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?XR/45nzPMA+6vqv2koxg00f92C9D/nsl8hG5lAm2e8DSuL5fQ8hnOrUlRQ?= =?iso-8859-1?Q?RAo2pRyJo+p9HzvS5rYH2fxqTW8vz4l+ncQwt0i/hWz+iBBo9fzEGyOPfS?= =?iso-8859-1?Q?lTt4pkf1hOWWgNXPH0P2NBSUcoWzLHUbsl3RBBPERV2ovAVucxyXVxibC6?= =?iso-8859-1?Q?pyJttuvGfzHQbWX2SkcsdGeMF386NNUx8rwTcAsbUpa8YYFFavW/OkjZw/?= =?iso-8859-1?Q?glJMcmT5qOmwEeJyFvmsMDQNZ7rwvDjDBoA60QL2YWZ7cm9x0fevTkExeh?= =?iso-8859-1?Q?VBVh0R46bPRv3TGKoetVvtuvJSA/fGL1nK5cUTBgXioVRLLz7xRDbMXzxz?= =?iso-8859-1?Q?4fe/7Fi96pWZCxBfEM+mKoS0aO8D5q9+IuR2++9BN8MJNyqIdickY5Golj?= =?iso-8859-1?Q?Uh9iuYUYw3MKhrInYZ9/pfEu50UN/H/C5TF+pNuag3KItNVx3njm9xODVS?= =?iso-8859-1?Q?etdy+P/Tbnoi9xhPYauUKQFmvfniFgbw8QdLan4vjYkKBgv6teQffeDGu5?= =?iso-8859-1?Q?GLbph1iAxHS72n1jriGSY2Uz7QqeqWzNY0lo8NHZIQ+J/4SIfLBPaFWTKj?= =?iso-8859-1?Q?ZXH+8mAM8d9vuvZpQ4n8Oavudt0Ib7q3Ul+Mf/hnDN1/NBEdFxPvcqhoS0?= =?iso-8859-1?Q?vNb0gcn54UMcWxJGke1NEvR6rtmpropVzeisYZc9RLOTzGTfiJvoWLbtrw?= =?iso-8859-1?Q?aMDdPsCax4iZyePUtF6aaz8Ye9vChRVrR3PUiKQNPVgm6SAPn87KS1Jr7z?= =?iso-8859-1?Q?bdtjbrcxShkssmIXbq6pFCh9KX+Xno5DREmHdgVIqKnB+/OruVLz4V2AcK?= =?iso-8859-1?Q?P/PdThHVJIhHaDdvJKX6xBYa6+1AFjuzM00z0CrmB3tKFtHW8tQ0Dbw019?= =?iso-8859-1?Q?dAytxRtHhHR/IFUtheuM9Jg6HZm/qcO3buXDSKUkHUrhX14GxctEKIX2Fq?= =?iso-8859-1?Q?QZJl8vwf8iwIfpgpCkbs+54CsI2yIv7CLo8kRdYgHZ9o8qX3RDUoOZqwPz?= =?iso-8859-1?Q?7P6T8EojHgMjpfvchVRVu6XSG2l41TJpHydRIqok/kPue/la+FCG3e0UBY?= =?iso-8859-1?Q?oX9UwsoYgjtrKG9ua+SyE6zHtCFxTVV0KAARgmP+ADvX5eBLztzDYmSQcy?= =?iso-8859-1?Q?zZUnA8emwbAviSgu30YKVH6tfVWoEDEav1YayTOUDVR3WBKDFCqEJ5IoAL?= =?iso-8859-1?Q?vPO7aWVScPcUc7gWkRHiaKiUK+nkBYs48qVH3oglx1h2GCd/QIASos2VVP?= =?iso-8859-1?Q?NXWlgAJDI0qsPq4VZUYaBlja0qLagoYeh9cs68uSiZcyi6dKUGVigmlQ2k?= =?iso-8859-1?Q?LLk1GI6UdYdpIhswIu28GJXxfr+uvorBLK4ajaOr+yXGEORt9IbfHwzXtU?= =?iso-8859-1?Q?TxyItY161d26xD3osPzJZqMiK45JvCRw6kxwL8VTNXekJi1XL7U+GRJoDR?= =?iso-8859-1?Q?pACPS/8ccgCV3+6F4kSMWVNTsZBddaERk2FUtgOSDf68XKfUFmIYkyRJgn?= =?iso-8859-1?Q?OoOrR1L8jivoB5eE0yT+uUH246K8+G/I3z0CSloU9rHqXykmbQ/cpBaF5Q?= =?iso-8859-1?Q?7NCPNM79cjqSKPF5l8DX7Slj3bGw8iHfGj1ZnD0W8/d1qqe97tUCszKJcL?= =?iso-8859-1?Q?WnKyibxmmWMjtpCw3D85YICKNCRjTM7LFU9AmIIWUVgWSZ+MdFSuanW4YK?= =?iso-8859-1?Q?s5n+GH+eAe8++HvpMGJGSfrtnRApfVcavFYmJkiw1R29x4mPMnTBOXWO6X?= =?iso-8859-1?Q?Sx7lxpRod+DMfY8nkwQBE89WJntYT4Dv1KHWpA71z4B4uF/daasQsA/MYQ?= =?iso-8859-1?Q?hyyCyNCHBQ=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Mahcom.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PPF42224DB53.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1d2d23c-3128-4097-08f5-08def048c01e X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2026 03:47:18.4074 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92901e00-cf2e-4465-88d5-f158582648a6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Xkv+Vl4jWzDp1mjqZjzho5furf6NQ0pps4be0ga+6UWzzvDDkz6S/Qw7Qf+G7lcg+dIVI1Q9KQGHIG5n3xp+CSyIB5xInHdvPqICodWI8HI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR20MB4298 Content-Type: text/plain; charset="utf-8" DSA installs host FDB entries on the CPU path for addresses behind software interfaces. QCA8K has one ATU entry per {MAC, VID}, so successive adds for independent CPU conduits overwrite the destination. Combining those ports in one destination mask can instead duplicate host-bound traffic. These entries are not required. Unknown unicast flooding sends host traffic to the CPU path, while ingress lookup membership restricts which conduit receives traffic from each user port. Skip host entries on CPU ports, including the lag_fdb callbacks used by a CPU conduit LAG. A station which roams from a user port to an interface behind the CPU can leave a dynamically learned entry pointing to the old user port. Such an entry suppresses unknown unicast flooding and blackholes host-bound traffic. Purge it when handling the skipped host add, but preserve deliberately configured static entries. Skip the matching delete so it cannot remove a newly learned entry. The non-LAG host FDB purge path was tested on IPQ4019 with assisted learning enabled. Stale entries were removed when a wireless station associated and downstream traffic recovered immediately. Link: https://lore.kernel.org/netdev/20260725032159.421627-1-brandon.mahdav= i@mahcom.com/ Link: https://github.com/openwrt/openwrt/issues/21317 Link: https://github.com/openwrt/openwrt/pull/24162 Suggested-by: Olaf Marzocchi Signed-off-by: Brandon Mahdavi --- drivers/net/dsa/qca/qca8k-common.c | 70 ++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/drivers/net/dsa/qca/qca8k-common.c b/drivers/net/dsa/qca/qca8k= -common.c index 5f0a875e5c87..c0a0d44e7c70 100644 --- a/drivers/net/dsa/qca/qca8k-common.c +++ b/drivers/net/dsa/qca/qca8k-common.c @@ -322,6 +322,36 @@ static int qca8k_fdb_search_and_del(struct qca8k_priv = *priv, u8 port_mask, return ret; } =20 +static int qca8k_fdb_purge_dynamic(struct qca8k_priv *priv, const u8 *mac, + u16 vid) +{ + struct qca8k_fdb fdb =3D { 0 }; + int ret; + + mutex_lock(&priv->reg_mutex); + + qca8k_fdb_write(priv, vid, 0, mac, 0); + ret =3D qca8k_fdb_access(priv, QCA8K_FDB_SEARCH, -1); + if (ret < 0) + goto out; + + ret =3D qca8k_fdb_read(priv, &fdb); + if (ret < 0) + goto out; + + /* Keep deliberately configured static entries. */ + if (!fdb.aging || fdb.aging =3D=3D QCA8K_ATU_STATUS_STATIC) { + ret =3D 0; + goto out; + } + + ret =3D qca8k_fdb_access(priv, QCA8K_FDB_PURGE, -1); + +out: + mutex_unlock(&priv->reg_mutex); + return ret; +} + static int qca8k_vlan_access(struct qca8k_priv *priv, enum qca8k_vlan_cmd cmd, u16 vid) { @@ -829,6 +859,14 @@ int qca8k_port_fdb_add(struct dsa_switch *ds, int port, struct qca8k_priv *priv =3D ds->priv; u16 port_mask =3D BIT(port); =20 + /* Unknown unicast flooding delivers host traffic to the conduit. */ + if (dsa_is_cpu_port(ds, port)) { + if (!vid) + vid =3D QCA8K_PORT_VID_DEF; + + return qca8k_fdb_purge_dynamic(priv, addr, vid); + } + return qca8k_port_fdb_insert(priv, addr, port_mask, vid); } =20 @@ -839,6 +877,9 @@ int qca8k_port_fdb_del(struct dsa_switch *ds, int port, struct qca8k_priv *priv =3D ds->priv; u16 port_mask =3D BIT(port); =20 + if (dsa_is_cpu_port(ds, port)) + return 0; + if (!vid) vid =3D QCA8K_PORT_VID_DEF; =20 @@ -881,6 +922,25 @@ static u8 qca8k_lag_port_mask(struct dsa_switch *ds, return port_mask; } =20 +static bool qca8k_lag_is_cpu(struct dsa_switch *ds, + const struct dsa_lag *lag) +{ + struct dsa_port *dp; + bool has_cpu =3D false; + + dsa_lag_foreach_port(dp, ds->dst, lag) { + if (dp->ds !=3D ds) + continue; + + if (!dsa_port_is_cpu(dp)) + return false; + + has_cpu =3D true; + } + + return has_cpu; +} + int qca8k_lag_fdb_add(struct dsa_switch *ds, struct dsa_lag lag, const unsigned char *addr, u16 vid, struct dsa_db db) @@ -890,6 +950,13 @@ int qca8k_lag_fdb_add(struct dsa_switch *ds, struct ds= a_lag lag, =20 port_mask =3D qca8k_lag_port_mask(ds, &lag); =20 + if (qca8k_lag_is_cpu(ds, &lag)) { + if (!vid) + vid =3D QCA8K_PORT_VID_DEF; + + return qca8k_fdb_purge_dynamic(priv, addr, vid); + } + return qca8k_port_fdb_insert(priv, addr, port_mask, vid); } =20 @@ -900,6 +967,9 @@ int qca8k_lag_fdb_del(struct dsa_switch *ds, struct dsa= _lag lag, struct qca8k_priv *priv =3D ds->priv; u8 port_mask; =20 + if (qca8k_lag_is_cpu(ds, &lag)) + return 0; + if (!vid) vid =3D QCA8K_PORT_VID_DEF; =20 --=20 2.43.0 From nobody Fri Oct 2 11:42:46 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11023102.outbound.protection.outlook.com [40.93.196.102]) (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 44F053033DF; Sun, 2 Aug 2026 03:47:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642445; cv=fail; b=c3mxHhvqSbFtjr4IlPpujPvA1A8IlUgjwXP6bftAnuFI3SHgrDpnwZ91wp1xuJYtOKL+r4E8CDtcQIzhj71Tzl4PG0krkLa2x+d3RcGTkYe6SG6ShljRRiqOsUbl8uRkW3nkI5V2iku7pCH6FhgMYFEDPvzXKpfXo6N/ZcXJcZg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642445; c=relaxed/simple; bh=xaRyWiFLs9c3LZHPXrMIqKdDW0yC/HYAiQuIprF2+P8=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=KIh/OPw0ujCZk3LGK6zngwwr6LSmbdpDBlY8aRfWOBlkLacx73d6NXJodqstXf3Fv39Ed22ouffzXkTaiQOWTzsUGJUhD21tNXZbqrOjfGb7ziDFL3H597En92VjGiifKG89C2rophrj0ky4H6UKPqhZ0K7l+HzgtGfTyAxnhAQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com; spf=pass smtp.mailfrom=Mahcom.com; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b=xE2w58QC; arc=fail smtp.client-ip=40.93.196.102 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b="xE2w58QC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jAoo3tJbICbxPl56EUOI1BLMyfI7UL1nL8TZzB2uKJnRgSp35ax4zkM/FEAqdXvXGA32p98gDNzlDGNB6I18Gi3OTVM+9wwlcJh1e0Oa2/zZkSvF5JSCvAAhozrlnpWmZRAmlDL1n/qfr69Cew2et6ijIcbFQZd+6sftSJOQWNqJzp3FJQZvLUWwMEF3eNHonfrph7f8FAjttltgBs30QKq8uqzob6RKbPLmi/Gn6wLksUvXsnRfcxdMjBNMd3fHujLT8XESAEOSpQOexz7qCRXKAl4GpojfAFSNR2dycGVXRcNCVppTVJZofqTC9PwSJRnd66ok/7EYXzFqEMCjLw== 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=RylGCz9Mcklua3IGIEQlR/PQqkxvhNqaP0QrRmna1Yk=; b=rv1uFHP2+AYT2+OLx16m0XLXGx4k/gIEvhVs1SyFmuEtnLKJPxqnJBqpIxdKp1Zfal13us3WlpbwL3Q20fExvmqkjzSTWn4hR5rmLVz3GdO2cjwZJpcBX9sKI+GNEcFVtCWt6ccLBHR/4IeKdeMytX82hwUYHF4tuNBO90/xHKtl54CzvLv5V9BT8JVhknpkeYd7CAF3iU+OIWO7PbEusG5R/v0wWgFaQxcIkPmH5OBrENyK8ZH9z212t2nZ9wZjcsFwxgllIyeWN74CWZTBFSQ5X5LT2Wch9Lr8e5W32KeeZJs7F+o4FyWGFoob6VjxNPwEvLfFgrJ/pJEzcvozFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mahcom.com; dmarc=pass action=none header.from=mahcom.com; dkim=pass header.d=mahcom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mahcom.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RylGCz9Mcklua3IGIEQlR/PQqkxvhNqaP0QrRmna1Yk=; b=xE2w58QC7ljwOzI6KLkW/k5sTFIBco7Q1k2qMGsSdEr14eqQu2GmPAm+apH9tzorf8q75l3kbcKt8jaxX9QwSjOJhVo1uVQxUo/Vpx0fjRMxpJ1KjMpQuZmu8wxzlmsBlDfHDCvTNM7+V1tSCdYO8dwzFKCJBeg3eht2S1RbilIcjU93ewpMdcao2xeoJ+85jbsRQtatrmUbN5vHWqvVTHe5MQHCOmCP0eywG2UjbZSMSKxKAaEbNFsSrmdMC/YfClUqvGOqfICoJro5Mp9TNsQ/ixjbDd+iB0DPYHaQOGEe52JggwAnVkzPYC6tGtoaoicsGrEC3GPAvQNWSu4J6Q== Received: from IA0PPF42224DB53.namprd20.prod.outlook.com (2603:10b6:20f:fc02::19) by SA1PR20MB4298.namprd20.prod.outlook.com (2603:10b6:806:235::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sun, 2 Aug 2026 03:47:21 +0000 Received: from IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97]) by IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97%8]) with mapi id 15.21.0270.016; Sun, 2 Aug 2026 03:47:21 +0000 From: Brandon Mahdavi To: "netdev@vger.kernel.org" CC: "andrew@lunn.ch" , "olteanv@gmail.com" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "linux-kernel@vger.kernel.org" , "ansuelsmth@gmail.com" , "hzyitc@outlook.com" , "lists@marzocchi.net" Subject: [RFC PATCH net-next v2 3/6] net: dsa: qca8k: flood unknown frames to all CPU ports Thread-Topic: [RFC PATCH net-next v2 3/6] net: dsa: qca8k: flood unknown frames to all CPU ports Thread-Index: AQHdIjGfJMrBBcPf4UOMKclG0s5eyA== Date: Sun, 2 Aug 2026 03:47:21 +0000 Message-ID: <20260802034701.3339052-4-brandon.mahdavi@mahcom.com> References: <20260725032159.421627-1-brandon.mahdavi@mahcom.com> <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> In-Reply-To: <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Mahcom.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PPF42224DB53:EE_|SA1PR20MB4298:EE_ x-ms-office365-filtering-correlation-id: ae941938-14d2-414c-4477-08def048c21d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|38070700021|56012099006|10067099003|4143699003|22082099003|18002099003; x-microsoft-antispam-message-info: 94ksXKmqf5kun1Q+yGwaQ2y8m6vLi1RJ/kBQvTDmlrLuPDnX/5O2k37B+kI82pSUFkKWd2XPza6AwjXiEyu+rpnQn4AgVvyvk7sMCLas3PV1VtQz2HXr6KSKRpwIXlIRxheLzNBGlW8Ud1o2NlEf0sNBmsq+c8d84d8ou+LdyaYywIGf8n2CTfmyqJJJiJjblRI8sM1t8oYFZF5ZuzE/4wjnCkUDADGVLhYoo+o364ze5NL9JiBgHflhUlvECSNYWBlF8bRSWpIf2tqXSrf4WL7hJXJI0HgAoJpH3RX17g6cM9Ea2NKN5XPqjT8/8z0yfFEh7OfG/GoZrkZnNItnK4+7ASM2cUy8TCLyoNYktb38J61uCLVIhYgjyByydeCmdIOtdZgo6giCRBcEz72KpmOz56gTozjz/iMIW0PZseS7YbpHEPQGw9y+8LyQA7GCOuWNDx7aqm746ueBowV0JsZne2rs0I++Qez/YWjWmjRI8Gly0EzNbopApOSLY73p8xPJk8F6GD412h3bkvrDAW0zfdWBppPmUGpaHLMZhJxcrEavh5F9byZ257N6yS6BNW06unjnjc4neJCHVw/huh6qNfDr21o1fZ/DkXuw7E0RsK+BWaxzt1btgvskUfvVRePcOWI/OGDKao5ACIYRrxUnTbv16OQXVVfYq+hVy8OPdE6C/2vmP6dyynKgbV/947g65XJuFBUH1f+7uVrkMsULEiVM/X9pC33wVimJL1A= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PPF42224DB53.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(366016)(1800799024)(38070700021)(56012099006)(10067099003)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?3I2reK0U0abMhJ4TJKbv7CvCGBVAy4LN0owdeGKglkcdNfsDEpsiaUmeq+?= =?iso-8859-1?Q?F/bIcX/GDZsu7prBLBOnKY0oT1tHyQfS74vz/LPePwVhYN/KkAk6Yt3XjH?= =?iso-8859-1?Q?CzplCBhdHySEil4BKCF1LauSI4GxrddbFofEIYCQaM27YW67p8Yw2PdW4u?= =?iso-8859-1?Q?fVCyr383XMQDL+VJrM/OTD2h751cg236WJHXqqHpGpcs46a74QMGPbi004?= =?iso-8859-1?Q?GEjBw26S+h9WU3kbA+mEI8Riy7cwNuD4TF8UVaHbgLDNov/VnLTZLiiwY/?= =?iso-8859-1?Q?VrFilDAylImo5sBYewB1yDPZR9TdaA9g9Pm7Yo4I+wGW239UwJM+GwLjjD?= =?iso-8859-1?Q?9HXLlTu6gFCXnt54AKLhTXJYnywXAWMoXMm3AcFwysWjiff5xTSngPPQ8x?= =?iso-8859-1?Q?n5HsmtXBZkLZ1gM5dF5/xdli/kPxDb7uaD/jSodWjgPkSlF5gNOBwjaA5z?= =?iso-8859-1?Q?wraftHdXRqJ/FfeJv8Gr94qD0oBov/UP4T0Mly7g2P8BeumF24KdXfUX4B?= =?iso-8859-1?Q?9ES7hLSHIewE/qto/ItZgDBfrLm7XFOCNE/nItdfLB8KEaBFjuqo/V0evH?= =?iso-8859-1?Q?UHxabH7ruK/gc+0JfDFEvGy79L2W0hDqHXq7jU2gZvRyAkAxRbJxAUnh05?= =?iso-8859-1?Q?7B8cLAGkSFJ9YaZ+GO/CHaaA+aQ+VQstjm44OYnce7ps9pJcvJ1F9Sf8wZ?= =?iso-8859-1?Q?/F0fHM5fHsyT9nSuCrWlBNJHnyn+VNF3md7bN35bAsFsFDTuQj1o8AVCyA?= =?iso-8859-1?Q?gtxeL1bVyb52/Hnpi1eWZraVGrVbhdPE55cr9n/iVKkiDeYSUaBARmGsJ5?= =?iso-8859-1?Q?6TjYy7MewlDHhchHHaH+JDvDV5s9FNtSJnGo2MF1Hr4LFuhYqtGSOXmCot?= =?iso-8859-1?Q?1GNjnNb3nt4fYWbIP3dIQ/WQ1M8t8ZYU9HY/9KEQkS+xIv92DhGK2fyTZg?= =?iso-8859-1?Q?YeS8rIe/tTIAyMpKCCsEaeucSSWjw/zPVkAoHRMZVW3GKStJcdcn1lmeB0?= =?iso-8859-1?Q?vahUwOGfFcFq1gi6n+sIsG6DWg2H0Fq9qWKPYqT22e9S5z43/ZvGuhK8m+?= =?iso-8859-1?Q?PRUQDdKHqOTjSHC1kI9kMUYx1fHIv7w5q8z0raRzDkt51LQWnb9NIg2ic6?= =?iso-8859-1?Q?j+IX9mshcyEDw3CdDdf9AVQQ85MA2lfb6VxBtliiQInQa2DPp6+CsgmXdC?= =?iso-8859-1?Q?QmQq9oFdRIKRjQevu5I6hk9UMNbp8XuGR8Y0X8iVTserHhprtY0Eg6Pcqc?= =?iso-8859-1?Q?hXYu1td9LxZ+qQ9mF8W3a6hHAEtFtNRczXuSCpCSaJOF/v1T4i56PCA5JL?= =?iso-8859-1?Q?lXaimQJBBmvKqcQBHNEr0PFt1udnAS14TBGUpX/26vJ2c7GPZf4cbGW2I0?= =?iso-8859-1?Q?PSeF7X2tbai8nsatWw58K0Bn8IX+z7kyHV99sOVHzAiPHM6fs+Q4baSL5f?= =?iso-8859-1?Q?m2Ql3QukDNzlCQ9su6v3RBNSadVKXjtnnCyuHIrWDRRLRIxJ/VdwOzHzAv?= =?iso-8859-1?Q?iKGsEuNLVi8NcXib4Yaq1EMdVCGORcrGkAsQcvT4u0CqaEmuezYd7B+JTH?= =?iso-8859-1?Q?5V+2tmvDGMQrqK6FciLskT4elhTsyThYBcPFSfYUIGcD4fVXA6CGnPUhZ1?= =?iso-8859-1?Q?4mn2gBlOAkww7TfeYjSEO8Eu8FCMLiJSIfjhtl4n4LEXCSWYG2f5Z1uZ/2?= =?iso-8859-1?Q?E/42ZS6rlWdfUR52x0VN8JzuB7Th5qBkuKBX4GD62P8b7Du7yjQTEidF1N?= =?iso-8859-1?Q?GCRCmHw4hfanLf/mHU9CbNYegSOI7bBECjSAMksC7bBm8CvSnFMirrp9C0?= =?iso-8859-1?Q?HI31NGFCMQ=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Mahcom.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PPF42224DB53.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae941938-14d2-414c-4477-08def048c21d X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2026 03:47:21.7783 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92901e00-cf2e-4465-88d5-f158582648a6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: R1+zbjcKiZk0evlTqG0MVWEo8BLtj7u58UalStInQPBE46jVsRQZfM3rSj4dVoKAp9dnVyReSZEUQOMPoUsmeldU+4U7FDFl199vULEFtTI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR20MB4298 Content-Type: text/plain; charset="utf-8" From: Christian Marangi A multi-conduit setup requires unknown traffic to be eligible for delivery through every CPU port. Program all DSA CPU ports into the global IGMP, broadcast, multicast and unknown-unicast destination masks. Per-port lookup membership still controls which CPU port can receive a frame from each user port, preventing duplicate delivery. Link: https://github.com/openwrt/openwrt/commit/500dbaefd2a6a1c9c0d81e275a2= 8c6a8e26519e4 Signed-off-by: Christian Marangi Signed-off-by: Brandon Mahdavi --- drivers/net/dsa/qca/qca8k-8xxx.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8= xxx.c index 9dce23aaed76..4adc5081d05d 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1922,15 +1922,12 @@ qca8k_setup(struct dsa_switch *ds) } } =20 - /* Forward all unknown frames to CPU port for Linux processing - * Notice that in multi-cpu config only one port should be set - * for igmp, unknown, multicast and broadcast packet - */ + /* Forward all unknown frames to CPU port for Linux processing */ ret =3D qca8k_write(priv, QCA8K_REG_GLOBAL_FW_CTRL1, - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_IGMP_DP_MASK, BIT(cpu_port)) | - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_BC_DP_MASK, BIT(cpu_port)) | - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_MC_DP_MASK, BIT(cpu_port)) | - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_UC_DP_MASK, BIT(cpu_port))); + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_IGMP_DP_MASK, dsa_cpu_ports(ds)) | + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_BC_DP_MASK, dsa_cpu_ports(ds)) | + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_MC_DP_MASK, dsa_cpu_ports(ds)) | + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_UC_DP_MASK, dsa_cpu_ports(ds))); if (ret) return ret; =20 --=20 2.43.0 From nobody Fri Oct 2 11:42:46 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11023073.outbound.protection.outlook.com [40.93.196.73]) (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 DCD90305670; Sun, 2 Aug 2026 03:47:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.73 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642448; cv=fail; b=gC6tBR4er0WdeuaQdTvpvLjFc3IsJusFgVxXnpLQLP3p3bgp69s1UlACjJLdNzHKu2qC4c5sBIjB1roAGLEyNh+tSp/tzEkKPzqn3TlnkA/Hm/NzKHyHBmKc3LE3yVHMDSf3XZ8NFeBAkQQvSOo35Fox8dz2KZBwlxuDocB1YWs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642448; c=relaxed/simple; bh=JcymnhgRfc0lDCc2nd1fxMFXu0V+bB+fz8DVmGTEd84=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=FNLdXtXO6A05sxyvLl2afMV0uZ4yR0qjzf1E6VeAzqrk7r+6qxYGbY/VqQeGMsye3h3b4DYXGcde62lXD1PbgfV9QavJgXr2Ls3Y7usOps8x2rhN3KnaA6POIB7PlLjaI/15fp60nspFQ/tXMfLIrWvL4jPpJpO5ICPfuJx1F/8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com; spf=pass smtp.mailfrom=Mahcom.com; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b=lCgadMvj; arc=fail smtp.client-ip=40.93.196.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b="lCgadMvj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qQX1s43yrH9mhHS3oVZ4fnS+D8+31NbB41fABrmz/pAo3yFUW+RcGAOAomlsu0TDzNWLOVnfJmtopQ4G7bE+Q4CnXrGDCSTdLukF7sHuhIcCyHAK3EcoIlRc8yIO0iZEoOLsslD8mm8j9QUs/P+9jwU2WX9VbNK2AorVzv1ssbDqqL8XjhvWn1gmGrL8MB6NAmVDwdV4SHT5Wqp6E8UrAvZTydza5ID9w71WNL0ZVvfNxI9yj8Q6ZyGHOdkgVTBhngWv/wAm98CbVBvFhgTKaVCFIWG5BErHlhkycD9BceZqQmj4b39lg4xgg83yGfb1ZJc+CaZruQbAgaYN05EQVQ== 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=aFn8XVnsAoEyxoX/t05sPg5MwNM/NUJQxR80H0lbVdU=; b=M6a7wny6oxVOQnQXLKPzKOlwQseC9EekPKVKx3Z1nLMqJ7Fyy6ZjCsMosP5JkbTA3Tpcqc/NJ+D2okAgUE2JcjKi8HElPezXKe9jZcS6M0HFG361mUb4CN6ctlmRACZXhunxc8DDaut58ez1qy6te+xNFCurdu8CuX5aq+lhjms7ms+IxFXUhnLhiTcwYj8G5zw5zkJjLRswri3Pdzg0qtWXK6X/tlMkcmbbTAVAwMUi5ZPF54EROQBbHECGD4AK8AjfEy8MwX77yotwVah4p9e/f3DCEA615U9SrFgeoSfNOGM0aBNU1x2nRSfB5h1XgUIPcfPhXvC1jiqwDf3rwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mahcom.com; dmarc=pass action=none header.from=mahcom.com; dkim=pass header.d=mahcom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mahcom.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aFn8XVnsAoEyxoX/t05sPg5MwNM/NUJQxR80H0lbVdU=; b=lCgadMvjWGaUs0GaQeLEPnQMVFk9wcbjekR7X+bp9UVvM6OyBAikfBal+PEUJ+1tGsO9gE+WgeVk3UFSdcgFKrU0k3oYaROQA+R3Jdj3IKj+MDDFP/+O2GI3uNK3ifPUToE8aBbGRZEEZM/b4+nXx7/Q7e5YQNOPMNNSfx97LdSqWL575tfl5cE+jM0crQc+w/Zm3vvaQ8QL89jrf5DYRoQi2BoXxaDDfICybLRMkA30g2JjIrfm+paPaCpCo4eRO4WBCypohkoq2B1Siw2QX1fBa20X43Ahodi1/sY0VENyTPoLcrlGh2r26U6g6RMF3HUXTGZMy553uLaVhLpcQQ== Received: from IA0PPF42224DB53.namprd20.prod.outlook.com (2603:10b6:20f:fc02::19) by SA1PR20MB4298.namprd20.prod.outlook.com (2603:10b6:806:235::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sun, 2 Aug 2026 03:47:25 +0000 Received: from IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97]) by IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97%8]) with mapi id 15.21.0270.016; Sun, 2 Aug 2026 03:47:24 +0000 From: Brandon Mahdavi To: "netdev@vger.kernel.org" CC: "andrew@lunn.ch" , "olteanv@gmail.com" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "linux-kernel@vger.kernel.org" , "ansuelsmth@gmail.com" , "hzyitc@outlook.com" , "lists@marzocchi.net" Subject: [RFC PATCH net-next v2 4/6] net: dsa: qca8k: use each user port's CPU conduit Thread-Topic: [RFC PATCH net-next v2 4/6] net: dsa: qca8k: use each user port's CPU conduit Thread-Index: AQHdIjGh3/75PVcuzEOR6x7xmbdV5Q== Date: Sun, 2 Aug 2026 03:47:24 +0000 Message-ID: <20260802034701.3339052-5-brandon.mahdavi@mahcom.com> References: <20260725032159.421627-1-brandon.mahdavi@mahcom.com> <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> In-Reply-To: <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Mahcom.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PPF42224DB53:EE_|SA1PR20MB4298:EE_ x-ms-office365-filtering-correlation-id: 3c4ce35b-882e-4bed-e8bc-08def048c3f8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|38070700021|56012099006|10067099003|4143699003|22082099003|18002099003; x-microsoft-antispam-message-info: clQr2d1Xmoz35FYU/aeVfZSCfXEaRyzQOi9JGchkg0qTNC3Xs1HR0ar9iqsK6D4JlBdfnJZKv4BaZSO7Ab/jtZrjAIxefV7IbgoYOD7MLN2Az2LwgmLGcaOLO8eBh6EFPOIflhiMPWi8Q6QAO0kbazpmfIcWKvKD0K5q4zkIoyr2NpT/8L7rdsqDEarRh0koz560R2JaEk3sj04oW7AKU8VTOSt9P1K4EjisxZ0Rb2fKq6Ar5hAjoircG7xtACowA44tC8tpt0on/fpaHC+01lsXGaB5amf6fm4a14MbJpurIygdn/PwLgyEwXESTxVIs3yKWPsl+Cb5nmNnc9g8clqiLEEG1GTwd876KqroDWTqrtx/9CFogmQUDZREL1HwVY4iq40yuULr2WDmZLheW5uiDb6DUcLb2yDrptwwEagVP2JgjwDP5fg99mFPySCV0y4SSn9BCYTj2xB/MmrBK9tQd2GsA8XuD9igl/YoBCcfcCHwsMUwKngVR264esDlmsjlqNvt0KWrzwyK0YFG41nV7dCvnVOOumCHkr+jKgpxtFsEuFsS3R7iNnFoReRGcev8/IG5iE+Q+skpEMp+DUjSIM/pU18nidx1MUfiABt1O3BJM+7j07dv4qiaz+ysVCAZNuVIqVKUyWl+aWG+TsjyAEhCypxiXXOJksifT/27+ZZ+en3xAVxEdMH1WMu5d9odE1z/CdZMqtyLZ6Yvc8UExZcZG1FMuJFciz4F9Ic= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PPF42224DB53.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(366016)(1800799024)(38070700021)(56012099006)(10067099003)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?hQamAVFcH7o9hzeeV1yu3N2JmHgYhIlIiAqVYw1tYTfMhz83xao1TJxvY1?= =?iso-8859-1?Q?R0AaX/w8MfEUdgIDBZ+SpbPXT6U4HFx4+QQUFRYDPlfLyoboVax3XIBTzB?= =?iso-8859-1?Q?9iPGRhlytT3wFks2I5tA0VdvqtdmBMRKlKCsTs7CZgxhE1k+faekp1Aiye?= =?iso-8859-1?Q?Odv/heK7VYKfD854n0MPT9YiHhB0OKwtlR+Bq3TiTYm4LQqUb64Hd7g/eS?= =?iso-8859-1?Q?Hg8tsht2YXq67sdF6avIGVIRww3K533WFwF7Kqe1ZnIGggqPzwCQeATPum?= =?iso-8859-1?Q?oCnrw4F62ZLB1+2sXW7EBYBEaC5VythD4IeEqacXWXYRvDGw2qKxxJ4FN7?= =?iso-8859-1?Q?wexAdOVPIWADD5tOHidgBkewT75cS6nOghgWvsOah4F+zZOJ8PsIcKp3tF?= =?iso-8859-1?Q?t96jPS6CttxMCInLFE3zLxeziq2sjXtGzywjPdEtRXVTDazM5yAnMTmiyi?= =?iso-8859-1?Q?Cvv7F9qXbQy9jOiFpfmRFbUXbNDoSPvA5z0rPatKvPzqG2OzFchhUmx+El?= =?iso-8859-1?Q?1vgm4bPW+6lB5v2S69J8teB6Gy4ri4LwZgKaqFnPWp7ptZFDZLmmsJJfrN?= =?iso-8859-1?Q?8Zo4ycnzJwzVXgpuAIWjHYfnSso0hWmn7c6sn55UYfzIBleHtbGljKrV1G?= =?iso-8859-1?Q?SvSKiSOZsIz4r8KuWnggwK9h5mLI9AAAgFQJ8WS/J5/V/Txnecdi6/ElZp?= =?iso-8859-1?Q?he+nLEWRhPV0OACrJx1mns2XwNPyPqw/a6zCLQekEfI1D6Lv+z74eok2jM?= =?iso-8859-1?Q?xQ21WNt2iVzedOtB8eoRNdxccMxXdaa7GQxLw/zKAZVNKhPfRiHUv23pJD?= =?iso-8859-1?Q?2uBPPFpLTcfLmMc/W5BvasFp8Xgpd1L14KCnUWiCnuEaxd2l+EMfvP5fJX?= =?iso-8859-1?Q?zJE/7I0SZiRshzgoT/EV/N8iIyP9J9qVJroRC3SGotoXqOnXHLjLE59z1L?= =?iso-8859-1?Q?YePjTPtabvA0rBAHOFC6i6SXA5Ak3hLIs1keOp8e0RW1p+2JHdhbNErdGb?= =?iso-8859-1?Q?7ABtyKYJCoSTfbDUvc76VZEMNPs2Rm8/9wTjwLKUzS1ZCH3HnqQD4K/9OI?= =?iso-8859-1?Q?xGZAgpAkBf+573Eon8/TMtdVR8MZCMaPJ386nNChZ5jl5eCTYPEERbKn1k?= =?iso-8859-1?Q?m9QYjObIIcSMTal6OC0oda3IuGReKlwVz6aK/RqGoPTUMZUmIppnlldh7v?= =?iso-8859-1?Q?Yh3Mr9PTg8Jf6wn1J8ItYhLVF6LGPQb/eDbEVYq/IhnPSYH6g/5RxfRLqu?= =?iso-8859-1?Q?yhj7WNxL7FUUjr/m5NbpvjNdqXSAZ1NNFehQgFJLShzAJj8/TBUr+hHeyz?= =?iso-8859-1?Q?vI1XIgTEuq0Qslt+8t7pF1CPhS4dTQF+P7KF+yGmx2zfpaWDsmePOvKvNK?= =?iso-8859-1?Q?8mfelQxNva/7v046xQTTz3endxIUwUkdH+27axR4nhkXN14LnlyaR+ScYL?= =?iso-8859-1?Q?NHZrYoCExsED/CWy2Ig0Sfm/tw8UzpMAdyw8WwlExwwuFNwSwZZj63wYFD?= =?iso-8859-1?Q?bTbcK1kO2CD+Tz1ZUf8QkypkYKS6WyxHl9e5b+HwatO8yXlGJHbhEfIyhk?= =?iso-8859-1?Q?ho5JPyd31n9XrkcOBJ9ZYYWdOj3SyjQLptEOw0z+GAyj9zZNq+Sae8Dzp/?= =?iso-8859-1?Q?QzHlJsSYsXN83KXzKerrLUGM9qgeYtalNcu2lYAkk2h9b8FBR4UQ1VAgnG?= =?iso-8859-1?Q?wcMV2nfoEuvAm63g5mcsV0dH1DwXaKyAXCS9qxHBI2lNZ+ssRr5kv81K/p?= =?iso-8859-1?Q?G2PonVu0yLYk3uP5n94TwlRkxl3f3Clx5+akcgWvs4r0FAPRif2cakF+GJ?= =?iso-8859-1?Q?7E1ShNP7mg=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Mahcom.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PPF42224DB53.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c4ce35b-882e-4bed-e8bc-08def048c3f8 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2026 03:47:24.9339 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92901e00-cf2e-4465-88d5-f158582648a6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IMoREl6ub576RPWujY+QANxtitaauAk//G0OH0PgpEUeyzt2n6TEEbde+I3tVn0LkyS0gANjEi2kTRhDqBxXoDyg1tG/kF0aCDzjgjrsrAo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR20MB4298 Content-Type: text/plain; charset="utf-8" From: Ziyang Huang QCA8K can use ports 0 and 6 as CPU ports, but the setup path selects only one of them. This leaves the hardware topology out of sync with the per-user-port CPU assignment already made by DSA. Remove the separate CPU-port selection and validate that every CPU port is supported by the hardware. For each user port, program only its assigned CPU port into lookup membership and add the reciprocal membership on that CPU port. Together with flooding unknown traffic to every CPU port, ingress lookup membership limits delivery to the correct conduit and avoids duplicate frames. Link: https://github.com/openwrt/openwrt/pull/21496 Signed-off-by: Ziyang Huang Signed-off-by: Brandon Mahdavi --- drivers/net/dsa/qca/qca8k-8xxx.c | 56 ++++++++++++-------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8= xxx.c index 4adc5081d05d..9eae921ad716 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1087,22 +1087,6 @@ qca8k_setup_mac_pwr_sel(struct qca8k_priv *priv) return ret; } =20 -static int qca8k_find_cpu_port(struct dsa_switch *ds) -{ - struct qca8k_priv *priv =3D ds->priv; - - /* Find the connected cpu port. Valid port are 0 or 6 */ - if (dsa_is_cpu_port(ds, 0)) - return 0; - - dev_dbg(priv->dev, "port 0 is not the CPU port. Checking port 6"); - - if (dsa_is_cpu_port(ds, 6)) - return 6; - - return -EINVAL; -} - static int qca8k_setup_of_pws_reg(struct qca8k_priv *priv) { @@ -1844,13 +1828,13 @@ qca8k_setup(struct dsa_switch *ds) { struct qca8k_priv *priv =3D ds->priv; struct dsa_port *dp; - int cpu_port, ret; - u32 mask; + u32 cpu_ports, mask; + int ret; =20 - cpu_port =3D qca8k_find_cpu_port(ds); - if (cpu_port < 0) { - dev_err(priv->dev, "No cpu port configured in both cpu port0 and port6"); - return cpu_port; + cpu_ports =3D dsa_cpu_ports(ds); + if (!cpu_ports || cpu_ports & ~(BIT(0) | BIT(6))) { + dev_err(priv->dev, "CPU ports must be port 0 or 6"); + return -EINVAL; } =20 /* Parse CPU port config to be later used in phy_link mac_config */ @@ -1922,25 +1906,20 @@ qca8k_setup(struct dsa_switch *ds) } } =20 - /* Forward all unknown frames to CPU port for Linux processing */ + /* Forward unknown frames to every CPU port. The ingress port lookup + * membership restricts each frame to its assigned CPU port. + */ ret =3D qca8k_write(priv, QCA8K_REG_GLOBAL_FW_CTRL1, - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_IGMP_DP_MASK, dsa_cpu_ports(ds)) | - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_BC_DP_MASK, dsa_cpu_ports(ds)) | - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_MC_DP_MASK, dsa_cpu_ports(ds)) | - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_UC_DP_MASK, dsa_cpu_ports(ds))); - if (ret) - return ret; - - /* CPU port gets connected to all user ports of the switch */ - ret =3D qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(cpu_port), - QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds)); + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_IGMP_DP_MASK, cpu_ports) | + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_BC_DP_MASK, cpu_ports) | + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_MC_DP_MASK, cpu_ports) | + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_UC_DP_MASK, cpu_ports)); if (ret) return ret; =20 - /* Setup connection between CPU port & user ports - * Individual user ports get connected to CPU port only - */ + /* Connect each user port bidirectionally to its assigned CPU port. */ dsa_switch_for_each_user_port(dp, ds) { + u8 cpu_port =3D dp->cpu_dp->index; u8 port =3D dp->index; =20 ret =3D qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(port), @@ -1954,6 +1933,11 @@ qca8k_setup(struct dsa_switch *ds) if (ret) return ret; =20 + ret =3D qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(cpu_port), + BIT(port), BIT(port)); + if (ret) + return ret; + /* For port based vlans to work we need to set the * default egress vid */ --=20 2.43.0 From nobody Fri Oct 2 11:42:46 2026 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11021091.outbound.protection.outlook.com [40.107.208.91]) (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 881FF30AAA6; Sun, 2 Aug 2026 03:47:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.91 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642451; cv=fail; b=Vc9BJLFS+Yyavip5xPsYE3po9abARN/7T+8El2stV2gNQYuLTWuWfzQyhs8DcmUyXaqVWwq+wOLe7AuD5EkEtOgJQ7Fwj1jHkANgd7XcWv1vQRNlzf9DIdS1aRZbBgYP+GqRo/E4JdgBPCjqQHaX92i++AOSjfbo2oUXjFA94HE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642451; c=relaxed/simple; bh=TPa3b+Kn5vdZORiWCvOZYQFxHC/2fxygtkvOAGcRqAI=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=W70A0bQPPugtvdGklz1Bh70VhA8sie87MCYha3RxaL8vkTpO7qid+PAsjs0fPCDttYJE/EvlFLYc/Y7SB8mF/L7QaIetMsDrExikJxqGoh60mxHfoNqF+VY/mlpygM4kBFBS3O/3fU4HJ5IvBs2xfMTHMEzhMrhyLAHjT9yuuCs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com; spf=pass smtp.mailfrom=Mahcom.com; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b=U9Pz+vbI; arc=fail smtp.client-ip=40.107.208.91 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b="U9Pz+vbI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TO0rWsTV0rfsL+LWqQ+v7118J/rinEpxEq01joNbzpWnSHDBUwPtUCk1zEW/qlCQ0lXzTUbviDtzyv4bJrQHHMOhPVX5DARpRSOPUCGeQrb185+crl1EywGiSq45FYwB1WSttRxlmZ/SIz49rrmJ+406+4EHEXUPN1vpxH3wvsK8fqx01lounP388pz+zsc5TfP3nbDg6hw0zobJ5d+hMg2SjdPqjW/catn8N8b2CJ5U7XjvHbNeY4qTBUctlDFC9/6rLpIoJbpGz9DN22Dar5U0aNy7MgrnY58bR4LALUSDIyLytjcFaYElfJYrx9bKzhj5PWkkEW69XqnXi9yhRw== 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=31Y8TvBv+gXYVrUSCUIR4jao6Z4WlQiVVmIaeBNyG9o=; b=KnxHBN8Mf2i0lLvmWascNQ4456mujrgJw2wMNvQCKU+z5cLWf1NHUgif/aG3n+eouY14J5oo8ffe6bLgdeaL2K+PmaHzIeSpZfQJhlAZ1Q4tcQBlziczhKewM756BfRcGtE4aLFJ/hwXypNic8ZHabuSxr6rSA1D449R1C0tPvbVj0QGRhAp7gK4oANWbEMVb2bCKd9Lv8eNIqrSE4cUJiJI+a/E7RJihOzRkR75fxbDrhTMyaOZSt/I6oAeBhjJ6wROXWDDzI5VK9X8J+GZo7nw+WN7XDcEwe78+aRo/61EntF6i7eHHmQo1j/VRds0+vs2PsmZiIYgbasrZMTRmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mahcom.com; dmarc=pass action=none header.from=mahcom.com; dkim=pass header.d=mahcom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mahcom.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=31Y8TvBv+gXYVrUSCUIR4jao6Z4WlQiVVmIaeBNyG9o=; b=U9Pz+vbI7TfIi1pGVKtxjw8yX8xxortRHmoyIeIlkc9Qmv7rGBCT7ncbDF2bEqjlIK3kGEWfX0RiGq23zltpmX1OT0oey8jqqC1QUeh+K4gS8bvv9JJBV2zv0OxLmOfa1vJjq6pPhSfI/q02wu13WCy2+KG4ZfgSpd/fE+7YZ/lx6M9t1HOTbbX8Qy6lA9hGwpfhSPP0BDTE3KH4HRNshl98DbwXDV/htgO74YHxslUcktIrn6p+ub74qEisOM5Kfb5HQkt/VKy/TxJ+yktRKAFN5xz2RY7hzPX0/QjgIskkE4MJRPyyLmSFT4J/SuAvCdt4ybnrHtrR8mEl3WrhXw== Received: from IA0PPF42224DB53.namprd20.prod.outlook.com (2603:10b6:20f:fc02::19) by SA1PR20MB4298.namprd20.prod.outlook.com (2603:10b6:806:235::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sun, 2 Aug 2026 03:47:27 +0000 Received: from IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97]) by IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97%8]) with mapi id 15.21.0270.016; Sun, 2 Aug 2026 03:47:27 +0000 From: Brandon Mahdavi To: "netdev@vger.kernel.org" CC: "andrew@lunn.ch" , "olteanv@gmail.com" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "linux-kernel@vger.kernel.org" , "ansuelsmth@gmail.com" , "hzyitc@outlook.com" , "lists@marzocchi.net" Subject: [RFC PATCH net-next v2 5/6] net: dsa: qca8k: support changing the CPU conduit Thread-Topic: [RFC PATCH net-next v2 5/6] net: dsa: qca8k: support changing the CPU conduit Thread-Index: AQHdIjGjFYWuYLpFB0eKlQiM7aQkdg== Date: Sun, 2 Aug 2026 03:47:27 +0000 Message-ID: <20260802034701.3339052-6-brandon.mahdavi@mahcom.com> References: <20260725032159.421627-1-brandon.mahdavi@mahcom.com> <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> In-Reply-To: <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Mahcom.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PPF42224DB53:EE_|SA1PR20MB4298:EE_ x-ms-office365-filtering-correlation-id: 35a41538-cd6e-43fe-21b6-08def048c5b1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|38070700021|6133799003|56012099006|10067099003|5023799004|4143699003|22082099003|18002099003|3023799007; x-microsoft-antispam-message-info: Uveo+OEdnHLcaALXed4ccS/sDqh/QRSOq3CZCNCrKb0UAs2SGRxDY1MSIaDygwJTFTwFhaC4G4ugamabe2I4KKlEwvmlEBuThN6anaGuOiIlPz0MnVwhehGeLsMlIWWfDdzdJVx/6hU3MYTGDPz28ywpa6g96aDKUr21ODCqkk+7/5S2+PgsnSPdAjP/zIlJWS6H1FffeA5ppe894c1h5Yw+26Vw8OaY5xkLPdMHyrp72s3tSuk5bAtek4YHC7P0yWQA8r32Bs0x6RbzYfrGveZjqjZzL85hhhc6+bEo268TZYEX3jxZQS/VsPTTT4cZwAGrMLMEtl2HqpwMzeTxVshkQHO5qgFLTkZgZyqKV6JCq58pqdeVqVjKCcsa0Rp8pJHNqWvhlCDqN+bN5YSTrmkqXztisDVvj6iViVz+Rfd/ht7ahwPaSK4SvWjADPsbI/F9hhxpygLzUClw3MfCqYQ2asU8Qduy5G9bfNtylTdfnVy2Khzn2QWC3gIDfJIlsoSnlsDblVVFB6Wso2vA/zCloqHd0tNSshHrJAOvikWCH7+TPE3yJnbhDQXpMj/68PPUz1mLZ1vIFYEB5ETfpdqtdOTZ10/x5oMe5w8QR5NSaU5Inyc2Pyd7nu/y2VuT7wSMKhv7ADchcnqKjrFz0n0zJvXwnZkDKg/jchDaR594f5/4+4Yf2+3G03JR0Pf/PMTMwmKRAo8bZsol7Yc+JynYKrKlQHJp32tkg6gf8qY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PPF42224DB53.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(366016)(1800799024)(38070700021)(6133799003)(56012099006)(10067099003)(5023799004)(4143699003)(22082099003)(18002099003)(3023799007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?pBwNNODpmt8PaHBJr/IaBCS3majrqj2slSqTC9ykLveN8gHy9ylV423pTT?= =?iso-8859-1?Q?GK1BqtpLg3pzvUfaSUOakndhutuqZqCPo4WSxMvhJqzWLxzsloY/Q5d0mj?= =?iso-8859-1?Q?s0D66J1f7nxQOzzl0iRNZ+9wV/uN+lpkg5bp+7OnHKKZdA4lMEkSQqELe4?= =?iso-8859-1?Q?0eVkIa9a2qm1cDHNUjIPB6ol3BnL2yctgVkbBNK7M4U3fIIkSwNSmHy4NI?= =?iso-8859-1?Q?gWOk/f8+m7oqZpLRyXcvO2GepK7fQzdllZxOfJgjNVsuQjwP9r1usij9we?= =?iso-8859-1?Q?BzvwhQfvg/jW3whVAy7yY6XKdVsabDVWz89m0D3eAoDTxQ9JbFnAXcGJZo?= =?iso-8859-1?Q?OVKt6JC8hSNId0AfUsMsZdshsenqVuRHOKfM8D91XOKresb2KCXMfhexhX?= =?iso-8859-1?Q?PJJGhBB/oUmuQrCjAojCrSGwQNK5c2GSYyAKkYGq2rPShsCLGipIqXuNad?= =?iso-8859-1?Q?9yGcOM+MOqfJ1txligL2XKCbtlEQLtk4wLbjZWNw5QJd7bFS7a0u1vdkKC?= =?iso-8859-1?Q?vRxv0UJkUcEamQk9o5fbo4daWsnUm3gNno+Nq5oljm42ny/hCGEry3oU4Y?= =?iso-8859-1?Q?8kMnPToSFwPBUdBqY5nGuP+UZgaBK8g0Tint7xQ1ua+L3fay827zwzceWh?= =?iso-8859-1?Q?bgJYHGZ+NqKUz1xFkrzd6BJVgiXuxnUO5Gv/aVoaqa/QgZyt+s9o6ScMZc?= =?iso-8859-1?Q?Nd/YhXtnbUgjefffoTKsQkV7yW77enhTYsCtykWRgd6Mn8X1WBPB3vg8WP?= =?iso-8859-1?Q?2pDixjUE8QLueiF86UAhQpxA9V7JWV6OnA893z2UJ1h+Yg/a7olzaeDSR/?= =?iso-8859-1?Q?6fShYj4PXe/Z9grBIbmEHAtw0C+oK40ZA022h+oFwoXc0sjKIh06QhC0zX?= =?iso-8859-1?Q?sgBRn5690kfQQNpLzfoknegbVuSjE47cWmPCRvs8VZyXfgxunAE93scOpH?= =?iso-8859-1?Q?JpM7XiotxopIKE0D+mQz8RN9yEtvPts0EKtWayy2QXU2Ud+rRKCG3cOhza?= =?iso-8859-1?Q?JRbWEBAmffJRK0oIWEV/1ZNGClAWazz3phtqiESO9muul5VCwWdw3GfAMs?= =?iso-8859-1?Q?16Jt4u9Dl5PTG/VOMwSD31FgtgZ7b1KXOgNlHivdIjwKyAhR+jwdSiHMef?= =?iso-8859-1?Q?5H+yrASX6LhwEazgNhaQ9oe1ujzX65driIR351rmgJxYYag8K9kDi+mRKR?= =?iso-8859-1?Q?Ocg3r7qvwNRTLJeUGgXOtg992ASp7l6tol2tOriXONsAhm+dGq+tQtMzjN?= =?iso-8859-1?Q?gQMiqeq1dxmavS9P2ReMY+LXJvHlrO1NB/77Gk2ArPTyws2DERwVaviGdH?= =?iso-8859-1?Q?8A+LNcVYjrpNkFCr1eNfvS0jXp7Jf1l6hm7Xe+MC8WWQ9ICLzlGykPEfrb?= =?iso-8859-1?Q?ygwLg3EO4UeCN07Fm85nt3aMGml+ewKAOSuJg2pGAtmvfCBtruhuLC5K3E?= =?iso-8859-1?Q?MHTyoKYYctFT1paNZ6BXfKftsM6AgwyVoZk3GQXeZxP/XYPe5lBbKCXPj1?= =?iso-8859-1?Q?yOETuA7EaG12J0Qu7W3+jAksDqR94XI5+LvzcLLVVnj+SAJKQryMj0uCcv?= =?iso-8859-1?Q?R1JY0KYrW8jxo//+QSRlsrnGuOmmApEFWOWdK4fzLhCMlUFHWKFHaOp366?= =?iso-8859-1?Q?eWsFwxnc8WkDGnfett10Fdx3J4UCnR7xZz2zGs/+krbnQGdNoscA83FEn5?= =?iso-8859-1?Q?UARxiXn7B5gp9gDHHCBP4W5cSQmIGr8JTysl9XVO1YFV8dXhaCMY8vHOdx?= =?iso-8859-1?Q?kxBrteJ/xru9EvbOHje0IdWzD5QItXvfi/pgDADPAgh8XTx3j8ASITokhF?= =?iso-8859-1?Q?cS9U2kp59Q=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Mahcom.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PPF42224DB53.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35a41538-cd6e-43fe-21b6-08def048c5b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2026 03:47:27.8077 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92901e00-cf2e-4465-88d5-f158582648a6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PDM81TBhfgLiEx5uOSa7l+1aVdWyQV2xoF71QUas2xZDQ0KcwZAmzxDK7ZsX5fyoNweW1B9bs4d+FXhb6Xnb5+YlaMsxTzd2I33auRalBzU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR20MB4298 Content-Type: text/plain; charset="utf-8" From: Christian Marangi Allow DSA to move a user port between the local QCA8K CPU ports or onto a LAG made from those ports. Update both sides of lookup membership so traffic can flow only between the user port and its selected conduit. A CPU port can join or leave a conduit LAG without DSA changing the conduit netdev of user ports already assigned to that LAG. Wrap the LAG callbacks and refresh those users after hardware trunk membership changes. Derive bridge membership from the complete conduit mask as well, so a later bridge rejoin does not reduce a conduit LAG to one physical CPU port. Snapshot both directions of the old lookup membership before a live change and restore them if any register update fails. This keeps the hardware on the old conduit when DSA rejects or unwinds the change. Link: https://github.com/openwrt/openwrt/commit/500dbaefd2a6a1c9c0d81e275a2= 8c6a8e26519e4 Signed-off-by: Christian Marangi Co-developed-by: Brandon Mahdavi Signed-off-by: Brandon Mahdavi --- drivers/net/dsa/qca/qca8k-8xxx.c | 138 ++++++++++++++++++++++++++++- drivers/net/dsa/qca/qca8k-common.c | 47 +++++++++- drivers/net/dsa/qca/qca8k.h | 4 + 3 files changed, 186 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8= xxx.c index 9eae921ad716..32dc626399c9 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -1743,6 +1743,139 @@ qca8k_get_tag_protocol(struct dsa_switch *ds, int p= ort, return DSA_TAG_PROTO_QCA; } =20 +static int qca8k_port_get_conduit_membership(struct dsa_switch *ds, int po= rt, + u32 *user_members, + u32 *cpu_members) +{ + struct qca8k_priv *priv =3D ds->priv; + struct dsa_port *cpu_dp; + u32 val; + int ret; + + ret =3D regmap_read(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(port), &val); + if (ret) + return ret; + + *user_members =3D val & dsa_cpu_ports(ds); + *cpu_members =3D 0; + + dsa_switch_for_each_cpu_port(cpu_dp, ds) { + ret =3D regmap_read(priv->regmap, + QCA8K_PORT_LOOKUP_CTRL(cpu_dp->index), &val); + if (ret) + return ret; + + if (val & BIT(port)) + *cpu_members |=3D BIT(cpu_dp->index); + } + + return 0; +} + +static int qca8k_port_set_conduit_membership(struct dsa_switch *ds, int po= rt, + u32 user_members, + u32 cpu_members) +{ + struct qca8k_priv *priv =3D ds->priv; + struct dsa_port *cpu_dp; + int ret; + + ret =3D regmap_update_bits(priv->regmap, + QCA8K_PORT_LOOKUP_CTRL(port), + dsa_cpu_ports(ds), user_members); + if (ret) + return ret; + + dsa_switch_for_each_cpu_port(cpu_dp, ds) { + u32 member =3D cpu_members & BIT(cpu_dp->index) ? BIT(port) : 0; + + ret =3D regmap_update_bits(priv->regmap, + QCA8K_PORT_LOOKUP_CTRL(cpu_dp->index), + BIT(port), member); + if (ret) + return ret; + } + + return 0; +} + +static int qca8k_port_change_conduit(struct dsa_switch *ds, int port, + struct net_device *conduit, + struct netlink_ext_ack *extack) +{ + struct qca8k_priv *priv =3D ds->priv; + u32 cpu_port_mask, old_cpu_members, old_user_members; + int restore_ret, ret; + + ret =3D qca8k_conduit_port_mask(ds, conduit, &cpu_port_mask, extack); + if (ret) + return ret; + + ret =3D qca8k_port_get_conduit_membership(ds, port, &old_user_members, + &old_cpu_members); + if (ret) + return ret; + + ret =3D qca8k_port_set_conduit_membership(ds, port, cpu_port_mask, + cpu_port_mask); + if (!ret) + return 0; + + restore_ret =3D qca8k_port_set_conduit_membership(ds, port, + old_user_members, + old_cpu_members); + if (restore_ret) + dev_err(priv->dev, + "failed to restore conduit membership for port %d: %pe\n", + port, ERR_PTR(restore_ret)); + + return ret; +} + +static int qca8k_lag_refresh_conduit_ports(struct dsa_switch *ds, + struct dsa_lag lag) +{ + struct dsa_port *dp; + int ret; + + dsa_switch_for_each_user_port(dp, ds) { + if (dsa_port_to_conduit(dp) !=3D lag.dev) + continue; + + ret =3D qca8k_port_change_conduit(ds, dp->index, lag.dev, NULL); + if (ret) + return ret; + } + + return 0; +} + +static int qca8k_port_lag_join_with_conduits(struct dsa_switch *ds, int po= rt, + struct dsa_lag lag, + struct netdev_lag_upper_info *info, + struct netlink_ext_ack *extack) +{ + int ret; + + ret =3D qca8k_port_lag_join(ds, port, lag, info, extack); + if (ret) + return ret; + + return qca8k_lag_refresh_conduit_ports(ds, lag); +} + +static int qca8k_port_lag_leave_with_conduits(struct dsa_switch *ds, int p= ort, + struct dsa_lag lag) +{ + int ret; + + ret =3D qca8k_port_lag_leave(ds, port, lag); + if (ret) + return ret; + + return qca8k_lag_refresh_conduit_ports(ds, lag); +} + static void qca8k_conduit_change(struct dsa_switch *ds, const struct net_device *condu= it, bool operational) @@ -2032,8 +2165,9 @@ static const struct dsa_switch_ops qca8k_switch_ops = =3D { .port_vlan_del =3D qca8k_port_vlan_del, .phylink_get_caps =3D qca8k_phylink_get_caps, .get_phy_flags =3D qca8k_get_phy_flags, - .port_lag_join =3D qca8k_port_lag_join, - .port_lag_leave =3D qca8k_port_lag_leave, + .port_lag_join =3D qca8k_port_lag_join_with_conduits, + .port_lag_leave =3D qca8k_port_lag_leave_with_conduits, + .port_change_conduit =3D qca8k_port_change_conduit, .conduit_state_change =3D qca8k_conduit_change, .connect_tag_protocol =3D qca8k_connect_tag_protocol, }; diff --git a/drivers/net/dsa/qca/qca8k-common.c b/drivers/net/dsa/qca/qca8k= -common.c index c0a0d44e7c70..73e36f5fb358 100644 --- a/drivers/net/dsa/qca/qca8k-common.c +++ b/drivers/net/dsa/qca/qca8k-common.c @@ -637,15 +637,60 @@ void qca8k_port_stp_state_set(struct dsa_switch *ds, = int port, u8 state) qca8k_port_configure_learning(ds, port, learning); } =20 +int qca8k_conduit_port_mask(struct dsa_switch *ds, + struct net_device *conduit, + u32 *port_mask, + struct netlink_ext_ack *extack) +{ + struct dsa_switch_tree *dst =3D ds->dst; + struct dsa_port *dp; + int id; + + *port_mask =3D 0; + + if (!netif_is_lag_master(conduit)) { + dp =3D conduit->dsa_ptr; + if (!dp || dp->ds !=3D ds || !dsa_port_is_cpu(dp)) { + NL_SET_ERR_MSG_MOD(extack, + "Conduit is not a local CPU port"); + return -EOPNOTSUPP; + } + + *port_mask =3D BIT(dp->index); + return 0; + } + + id =3D dsa_lag_id(dst, conduit); + if (id < 0) + return id; + + dsa_lag_foreach_port(dp, dst, dsa_lag_by_id(dst, id)) + if (dp->ds =3D=3D ds && dsa_port_is_cpu(dp)) + *port_mask |=3D BIT(dp->index); + + if (!*port_mask) { + NL_SET_ERR_MSG_MOD(extack, + "Conduit LAG has no local CPU port"); + return -EOPNOTSUPP; + } + + return 0; +} + static int qca8k_update_port_member(struct qca8k_priv *priv, int port, const struct net_device *bridge_dev, bool join) { bool isolated =3D !!(priv->port_isolated_map & BIT(port)), other_isolated; struct dsa_port *dp =3D dsa_to_port(priv->ds, port), *other_dp; - u32 port_mask =3D BIT(dp->cpu_dp->index); + u32 port_mask; int i, ret; =20 + ret =3D qca8k_conduit_port_mask(priv->ds, dsa_port_to_conduit(dp), + &port_mask, NULL); + if (ret) + return ret; + for (i =3D 0; i < QCA8K_NUM_PORTS; i++) { if (i =3D=3D port) continue; diff --git a/drivers/net/dsa/qca/qca8k.h b/drivers/net/dsa/qca/qca8k.h index ab8ea261c0b9..333b343886de 100644 --- a/drivers/net/dsa/qca/qca8k.h +++ b/drivers/net/dsa/qca/qca8k.h @@ -523,6 +523,10 @@ int qca8k_get_sset_count(struct dsa_switch *ds, int po= rt, int sset); int qca8k_set_mac_eee(struct dsa_switch *ds, int port, struct ethtool_keee= *eee); =20 /* Common bridge function */ +int qca8k_conduit_port_mask(struct dsa_switch *ds, + struct net_device *conduit, + u32 *port_mask, + struct netlink_ext_ack *extack); void qca8k_port_stp_state_set(struct dsa_switch *ds, int port, u8 state); int qca8k_port_pre_bridge_flags(struct dsa_switch *ds, int port, struct switchdev_brport_flags flags, --=20 2.43.0 From nobody Fri Oct 2 11:42:46 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11021097.outbound.protection.outlook.com [52.101.62.97]) (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 CB85930E0C0; Sun, 2 Aug 2026 03:47:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.97 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642454; cv=fail; b=ANxT/1hKCLLF/QN3wHcpJ/4I+2Ivm173SKcybBXVuLHUBb00LkLL6sOc7wzWdiae/vbnsbcsiEJRm72LzrwpUepNdOzz1lod3JIP1Z9gFXGTBYjc/JOTkRhrSCv7rwhdWXc38yGT1eK/sRjBu4fWknmqC4Tb6fhrVsieS4ZGoyk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785642454; c=relaxed/simple; bh=Pr3yIMARJH8Gw2pm3LNaKPTKBo8JPf+1dhYZ9XRWmgM=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=aeDlBp61KqqUkOn0BhAXlzGGKVKL9ag4KrZgrOD9WAfANpkv+xdr3TY8vaZSmWkN7mnEx3SLwsdcKqD+PlkkNv7TbGLpCD0bS4WgjASzrwY0GhOhrp2wcdDcD4wClj2hY8h16m15xZpG6MYS8X/rED7rAPerooGqnpz5ayqb7xo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com; spf=pass smtp.mailfrom=Mahcom.com; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b=bIVy8y73; arc=fail smtp.client-ip=52.101.62.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Mahcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Mahcom.com header.i=@Mahcom.com header.b="bIVy8y73" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H6hjv624mvQjbapPMigy/0N/KS1OHSaKlP7tw4BbyZ9Y8dIzqooqKua1XoMffzIUjogo1GeQNJ78AVDwDT3xWL3DLkDdvorbijjtlGW3LmDlqDGwEBOlYVKY1pcWZG3Ml1tbd9Z3JGIB8uLbBEGazcXLtXQpoN9LxUiv1kxOJCX3HGjT0OjdozWXhOacuoDTZeNwniVrSbb1tI2iYXFPWCl8uDZ5Rf7biM8qP3ZsN6RMaBijX5wtWa9/kNY++Bm/UkFddOQoJr02B8FD8xUN4QF7AY2VXQlXpEngiWOV5lSIwVvMRDJnP6Pq7NpIQ6b2QhZATLJB7zVpOiLTFcuSAg== 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=kVlDD+sHtDfraNhZsztpY8YDA2sFJfEADaXf1m/z4KI=; b=QupNnBBz5U6BmL6+9/uV+KOzHSprtWNhlkGUZXu6QE3XqfveFfxYkvR+KwLDvHYsbhzYQgiw6TSqkfpMTQy66LeyjoINSHzttarFdKpynFW1TAwfNU3SBAU8m72eBMbu6nq4QD9Eh4RB1k+G0UoL1hIbZG8X7Tp9ftwaOD0hkTrANul0Iv7MXQQgw3fpbDLsw4iA/gYfqrXnu4DOmGc0XF3YGj/b6hU0JlCAm/aOYZI1ory7wPrlyN+8erMC63d3NiSnA6ltii8bnXt/NvBClC8Sg6MY+pACWGpBcGiIE370BXDhoIGD/jbhlbC4EcIPUr2ZlAw7Z7QvP9iA+XRA+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mahcom.com; dmarc=pass action=none header.from=mahcom.com; dkim=pass header.d=mahcom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mahcom.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kVlDD+sHtDfraNhZsztpY8YDA2sFJfEADaXf1m/z4KI=; b=bIVy8y73Fo2YKcKFHzMQTWUWqYhpt9BucmOJxMpQ/glh1P9aKB09M9XtD3Ub6a9xCeuxOTUGYMQDWVGLiQdIM0nPZR18rqxk62qla1CoxQhBhISY1CRwJ/5E2M/rvRp7P95cbsWZhsFsHRw1yzO4ZUMWjg9Gmt3mHPtJJ3KxAjYBV/xb+xHJcw/yJXJTaGmVUTwBi9PBhJfoqCJXZhHoyGIox0e9Yfjg0upkhcu9Ehnmj+UlbTSJWJAKD8UlcKr5BO1XL8ithJv0wCPnjJU+ULaytLPPMTua5+oUW6noz47HaErtCmNOmniM4aRDxHde+I1zRQIWML2rqY/wcqex2w== Received: from IA0PPF42224DB53.namprd20.prod.outlook.com (2603:10b6:20f:fc02::19) by SA1PR20MB4298.namprd20.prod.outlook.com (2603:10b6:806:235::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sun, 2 Aug 2026 03:47:30 +0000 Received: from IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97]) by IA0PPF42224DB53.namprd20.prod.outlook.com ([fe80::8f44:a6f3:9ef6:1e97%8]) with mapi id 15.21.0270.016; Sun, 2 Aug 2026 03:47:30 +0000 From: Brandon Mahdavi To: "netdev@vger.kernel.org" CC: "andrew@lunn.ch" , "olteanv@gmail.com" , "davem@davemloft.net" , "edumazet@google.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "linux-kernel@vger.kernel.org" , "ansuelsmth@gmail.com" , "hzyitc@outlook.com" , "lists@marzocchi.net" Subject: [RFC PATCH net-next v2 6/6] net: dsa: qca8k: enable assisted learning on CPU ports Thread-Topic: [RFC PATCH net-next v2 6/6] net: dsa: qca8k: enable assisted learning on CPU ports Thread-Index: AQHdIjGlSD60xbmKUkKeAIbQct0HmQ== Date: Sun, 2 Aug 2026 03:47:30 +0000 Message-ID: <20260802034701.3339052-7-brandon.mahdavi@mahcom.com> References: <20260725032159.421627-1-brandon.mahdavi@mahcom.com> <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> In-Reply-To: <20260802034701.3339052-1-brandon.mahdavi@mahcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Mahcom.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PPF42224DB53:EE_|SA1PR20MB4298:EE_ x-ms-office365-filtering-correlation-id: 2adc8630-5508-41bd-b012-08def048c780 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|366016|1800799024|38070700021|6133799003|56012099006|10067099003|4143699003|22082099003|18002099003; x-microsoft-antispam-message-info: BA4Y2j3BYpWiObnqm4+gkJGML4bRlOJoJ9L0ocN/foGn8yy3QSAuv+nocB/SZNFtaxHi3ZXp/uhHFxcPcaYjjaXW34yoAUYXfqGOipbSZXEHzcjOYju4Sij0rC/g2fGPLVkTMUzRjPDqFAyUhjcckYYyflcVvaggmlgIDiKlgJCt69c9GaZZYqoSUbYu0nbh+68UlqPLsXgkmYM1ZSuqHfw1/9IWJtVhav+enlcKkYofmTOri5qXvTfgmQN25hoUFq2le3kzLdPt7dywu+GiJh70gf+hRy71XvbW3DunTqmoElnXw8HmBu5LUM0ZLlD3lbdYqkLDPtJMPLE+INid9ngEEWxYuojyBQfTw5mhwoKx7ipxSlPTgqfwxxC0wby7kUr0UrAL65VsvUKmmppCimsZS4b6xh2E7Kka80GvxDmyyuciERak2m+UwFVlBq8+1bmyu9E6lhjQVS6TtlRov0wcawQIlRQChH1hquMujWn2d2dR9NxLTosT9gFsZi9d1i2Aut03B+LL785MZmAlrZPKDmNpjbjHpe0mozXnRN3WW7bd9BODY1jqlX6uBvVYI9hj2lXP6W7MH7V58Wj8/miBEFWBYx5QFMwGV1FgBVUJmEHD9uF83h77vrcqFhqXAqzn4twPWWlvk+kz7as9WZTrI9cCVMzeOuIoe0KMplgty+TkEBc2Jscnpt3/ORCg/e2X0/AIK57qNXTizP2PINtvm8u481u28c7Ec/zOO4I= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PPF42224DB53.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(366016)(1800799024)(38070700021)(6133799003)(56012099006)(10067099003)(4143699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?inGiZA2FOrSRWfSkt1PxCoM0s9c2XCznlmi+OSoHT2FtgY6Smd/gfRztxt?= =?iso-8859-1?Q?9KPtv1dugjc5f1bt598CsbRJzmgda/J28UZh5ChtMeYPoATGPM6I8PXaCo?= =?iso-8859-1?Q?gj00tzkzM0gDLhoaRsKGC9Sa4Ccaz9TxO2WDvkAkjc7fDi2Bj4VbbLi4l/?= =?iso-8859-1?Q?JFSGe7GAGlYifXjqPjphJCmBlpDWEigTga9B50pwQwAg8fDgmmBYakbHnf?= =?iso-8859-1?Q?68Wvnvsju6yCHs27rAbtL/khbFH7gJzHtb+SPZjQfd34/ZQUChiBY++bi2?= =?iso-8859-1?Q?PsDkocZVaIVuoY8blZaG6i4ca9+aOU8x8OvapxW+ERI/UKSSug//dBCXmV?= =?iso-8859-1?Q?g39jDrNpXtONJrDzx0E7tk+FT5dtwFWuJgvkfycY4rYqh8aSJgo52bshkM?= =?iso-8859-1?Q?gWqgyIbfSgZl9QM4dUE3Ox6iUSjI7FpYjehU5obPr4m4qkTxmE/5T/Tlgd?= =?iso-8859-1?Q?tJ8kptzteLfj8xeQIMlf83gYBXTCafLUi2j9mZ7XSf0rWx0QB8Rnjhm8fy?= =?iso-8859-1?Q?TFTeqEdhoJwrZyS0WY8E+6dVAtH+5YsJE66AtnsaqhnlKT694WXT9VvOzF?= =?iso-8859-1?Q?3XlarF56jZaJKiIunwdJI8+LEts7vfAGoGBnLgAUunxZ6gOFmf8EUgOxhX?= =?iso-8859-1?Q?UKkkR6AT+km0McLOtOSZ/eLDDJ3QklJIMMpRJbcNP9UJcUbS7iWq9x92mw?= =?iso-8859-1?Q?qg0EZfs5hg5hslxSqgDpFZ50gbqRX3YGZooNualPRakMdjm4u6ABAMGPX6?= =?iso-8859-1?Q?sBhONs/mOmyvJwPikEZSap+Sf4XAfOLbn1WvDtXmllYeYR0VolF3qlroum?= =?iso-8859-1?Q?gSasNRATVA0rq8U1EuuBTsnjnVwgV2fU1trtuh0Xi3CJFAVgBokSo6oq4l?= =?iso-8859-1?Q?ev9e25uBgjQaPqx4+f6t9bljj078Ug2lpeTaAVJcwUrodQ96YASYW/M3e2?= =?iso-8859-1?Q?F5sdT4VnvTIxv8SbFHGccahTm58vJo01/THGNG9IcCohshQW3BWC2YxK9s?= =?iso-8859-1?Q?tXUIVijzcs96AJQWTsXrgecSIiE6kc53zCqrttCn+NeoNPhzj1uKsoJNdh?= =?iso-8859-1?Q?uY6PB7Dg056MUloL9WBSQSm/DU8p1EwcyPvIbRUBhuujWmP5y/mkHQv5O5?= =?iso-8859-1?Q?HweVoAqPJEaWmOCv6G1YkhuLnx5CpEcu/D/Y+G9YnahjGJBYATq3K/CXFr?= =?iso-8859-1?Q?abbTKgc/kUKdfLf3eEcAMsBBql5dgU+v1ItXUDt2ktKMsgtYuiuC4Ssxmb?= =?iso-8859-1?Q?jjVkzAhx+KcANwtCrM6fX3NTjRFJLcrkhh8b3MC5I6iEv12jGVlagUdSCK?= =?iso-8859-1?Q?YQIRg62J74pZZi4aYXAcdtsINfDBWArEFzYT1WWotf3cQP7sgpM3Hi5Qx/?= =?iso-8859-1?Q?vq+7q/1LoldWvP3CSJHQUwGqiuYnWlLTm7rI9oR5PolZLzH2ZPVn5po51F?= =?iso-8859-1?Q?SaQtd4U+kIL16e+GQn/Id61ZnD2f4ZAeEr9f1OhYenkwzh3JIdPUflMkGx?= =?iso-8859-1?Q?pRO2+ZnA1S9JFrDTRIxYtj3pSzpWmer4IFB1VKP/sgsY2AtvcKThnz/GO2?= =?iso-8859-1?Q?r6S8LAD+YVs3qXHKuhC/H0tfWSqAC7imJKazcTn4jLNB5adAtVaYm3KFGD?= =?iso-8859-1?Q?rFsIhCfljZvS7MFvsFtIqvsuMeFbPYkuztpzkAFHZXyPKehPenYeruDYxp?= =?iso-8859-1?Q?a3MDo8CjhLARY1GNa9YfKJczTAz1MZeekC2cBIRhdxYgJTRth+N6wrfoB2?= =?iso-8859-1?Q?Bnq5OnsvNnkYLJTwxDlM+o+DabV8KJ6I5bZmylv3bJXltUmqKq40EnfMui?= =?iso-8859-1?Q?IzKl53KxBQ=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Mahcom.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PPF42224DB53.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2adc8630-5508-41bd-b012-08def048c780 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2026 03:47:30.8145 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92901e00-cf2e-4465-88d5-f158582648a6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: S3uZA91vs/HPADVmFPeoQAK5Tn4tNcsxvRrWU9B1kFY9plvAXkTUxNoDnM/VO2kpkTE+JClmITXqjV+a3csDd0EeoKixJ8p34INaY+w/aQg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR20MB4298 Content-Type: text/plain; charset="utf-8" From: Christian Marangi Ask DSA to propagate dynamically learned FDB entries from foreign software bridge ports as host addresses. This lets QCA8K react as soon as a station moves from a switch user port to an interface behind the CPU instead of waiting for the old hardware entry to age out. Disable hardware learning on every port during initial setup, including the CPU ports. Bridge and STP configuration will enable it again where appropriate on user ports, while CPU-side learning remains under software control. Link: https://github.com/openwrt/openwrt/commit/b0048b314620cc99f155c8c5cd4= 541af5e99e578 Signed-off-by: Christian Marangi Signed-off-by: Brandon Mahdavi --- drivers/net/dsa/qca/qca8k-8xxx.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8= xxx.c index 32dc626399c9..4af92d51f046 100644 --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c @@ -2017,9 +2017,10 @@ qca8k_setup(struct dsa_switch *ds) =20 /* Initial setup of all ports */ dsa_switch_for_each_port(dp, ds) { - /* Disable forwarding by default on all ports */ + /* Disable forwarding and learning by default on all ports */ ret =3D qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(dp->index), - QCA8K_PORT_LOOKUP_MEMBER, 0); + QCA8K_PORT_LOOKUP_MEMBER | + QCA8K_PORT_LOOKUP_LEARN, 0); if (ret) return ret; } @@ -2061,11 +2062,6 @@ qca8k_setup(struct dsa_switch *ds) if (ret) return ret; =20 - ret =3D regmap_clear_bits(priv->regmap, QCA8K_PORT_LOOKUP_CTRL(port), - QCA8K_PORT_LOOKUP_LEARN); - if (ret) - return ret; - ret =3D qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(cpu_port), BIT(port), BIT(port)); if (ret) @@ -2122,6 +2118,8 @@ qca8k_setup(struct dsa_switch *ds) /* Set max number of LAGs supported */ ds->num_lag_ids =3D QCA8K_NUM_LAGS; =20 + ds->assisted_learning_on_cpu_port =3D true; + return 0; } =20 --=20 2.43.0