f89904ad78
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.77 Removed upstreamed: generic/backport-6.1/707-v6.8-01-net-phy-at803x-fix-passing-the-wrong-reference-for-c.patch[1] generic/backport-6.1/796-v6.8-ipmr-fix-kernel-panic-when-forwarding-mcast-packets.patch[2] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.77&id=7dc0fefd37dd5fb03fdac6e3e01b1c2291148ccb 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.77&id=d2f1b7fe74afd66298dbb3c7b39e7b62e4df1724 Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia <therealgraysky@proton.me>
54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
From 18e8feae4a807994e4906d659116d249bfecd4c5 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Sun, 30 Jul 2023 09:41:11 +0200
|
|
Subject: [PATCH 2/4] net: dsa: qca8k: limit user ports access to the first CPU
|
|
port on setup
|
|
|
|
In preparation for multi-CPU support, set CPU port LOOKUP MEMBER outside
|
|
the port loop and setup the LOOKUP MEMBER mask for user ports only to
|
|
the first CPU port.
|
|
|
|
This is to handle flooding condition where every CPU port is set as
|
|
target and prevent packet duplication for unknown frames from user ports.
|
|
|
|
Secondary CPU port LOOKUP MEMBER mask will be setup later when
|
|
port_change_master will be implemented.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
Reviewed-by: Simon Horman <simon.horman@corigine.com>
|
|
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
|
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
|
Link: https://lore.kernel.org/r/20230730074113.21889-3-ansuelsmth@gmail.com
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
---
|
|
drivers/net/dsa/qca/qca8k-8xxx.c | 14 ++++++--------
|
|
1 file changed, 6 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
|
@@ -1885,18 +1885,16 @@ qca8k_setup(struct dsa_switch *ds)
|
|
if (ret)
|
|
return ret;
|
|
|
|
+ /* CPU port gets connected to all user ports of the switch */
|
|
+ ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(cpu_port),
|
|
+ QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds));
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
/* Setup connection between CPU port & user ports
|
|
* Configure specific switch configuration for ports
|
|
*/
|
|
for (i = 0; i < QCA8K_NUM_PORTS; i++) {
|
|
- /* CPU port gets connected to all user ports of the switch */
|
|
- if (dsa_is_cpu_port(ds, i)) {
|
|
- ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i),
|
|
- QCA8K_PORT_LOOKUP_MEMBER, dsa_user_ports(ds));
|
|
- if (ret)
|
|
- return ret;
|
|
- }
|
|
-
|
|
/* Individual user ports get connected to CPU port only */
|
|
if (dsa_is_user_port(ds, i)) {
|
|
ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(i),
|