[RFC PATCH net-next v2 0/6] net: dsa: qca8k: support multiple CPU conduits

From: Brandon Mahdavi

Date: Sat Aug 01 2026 - 23:47:30 EST


The v1 RFC contained only the host FDB handling change. Andrew noted
that it had no mainline user without the QCA8K multi-conduit work and
asked that it be submitted together with those prerequisites. This v2
brings the minimal dependency chain to current net-next.

QCA8K can use ports 0 and 6 as CPU ports, but the current setup path
selects one port for the hardware topology even when DSA assigns user
ports to different CPU conduits. Host FDB entries are also unsuitable
for that topology because the ATU has only one destination mask per
{MAC, VID}: successive CPU-port entries overwrite each other, while a
combined mask duplicates host-bound traffic.

The series first supplies LAG FDB callbacks and makes the host FDB path
safe. It then floods unknown traffic to every CPU port, honors each user
port's DSA conduit assignment, supports live conduit changes including
a CPU-port LAG, and enables assisted learning. Live changes snapshot and
restore both directions of lookup membership on register errors, and
bridge reconfiguration preserves the complete CPU-LAG mask.

This is a current-mainline rework of QCA8K patches carried by OpenWrt,
principally from Christian Marangi and Ziyang Huang, together with the
host FDB handling developed by Brandon Mahdavi from an approach suggested
by Olaf Marzocchi.

The scope is intentionally limited to the two CPU-capable ports already
supported by mainline QCA8K, ports 0 and 6. It does not include OpenWrt's
PHY-to-PHY CPU links, DT node-name fallback, preferred-CPU selection, or
unrelated LED changes.

The complete series and every intermediate commit were compile-tested
with GCC 13.3 using a focused ARM64 configuration. The build linked a
minimal vmlinux and the bridge, bonding, DSA core, QCA tagger, QCA8K,
phylink, PHYLIB and MDIO modules with W=1.

The non-LAG host FDB purge path was tested on a downstream IPQ4019
qca8k-common user with assisted learning enabled. A stale entry was
removed when a wireless station associated and downstream traffic
recovered immediately. The multiple-conduit and CPU-conduit-LAG paths
have not yet been tested on hardware.

Changes in v2:
- expand the host FDB RFC into the complete six-patch prerequisite series
- add LAG FDB operations and CPU-conduit-LAG host handling
- configure and change multiple CPU conduits using current DSA APIs
- preserve bridge membership for a CPU LAG and roll back failed changes
- enable assisted learning on CPU ports
- limit the host FDB exception to CPU ports
- rebase onto current net-next

Link: https://lore.kernel.org/netdev/20260725032159.421627-1-brandon.mahdavi@xxxxxxxxxx/

Brandon Mahdavi (1):
net: dsa: qca8k: skip host FDB entries on CPU conduits

Christian Marangi (4):
net: dsa: qca8k: implement LAG FDB operations
net: dsa: qca8k: flood unknown frames to all CPU ports
net: dsa: qca8k: support changing the CPU conduit
net: dsa: qca8k: enable assisted learning on CPU ports

Ziyang Huang (1):
net: dsa: qca8k: use each user port's CPU conduit

drivers/net/dsa/qca/qca8k-8xxx.c | 203 ++++++++++++++++++++++-------
drivers/net/dsa/qca/qca8k-common.c | 157 +++++++++++++++++++++-
drivers/net/dsa/qca/qca8k.h | 10 ++
3 files changed, 325 insertions(+), 45 deletions(-)


base-commit: 69963a0678a347d57c4ac8b16939dba216eb95ce
--
2.43.0