mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 14:37:57 +00:00
20d74c6811
Backport qca8k fixes for big endian system (to make them working again) and a patch fixing MDIO conflicts if other PHY are connected and mgmt eth is used to control the switch. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
38 lines
1.6 KiB
Diff
38 lines
1.6 KiB
Diff
From b954d61d9ecfa64450fc178586719dc2a95b92a7 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Tue, 20 Jun 2023 21:48:24 +0200
|
|
Subject: [PATCH 3/4] net: dsa: qca8k: enable flooding to both CPU port
|
|
|
|
To permit a multi-CPU setup, flood all unknown frames to all CPU ports.
|
|
Each CPU port should have correct LOOKUP MEMBER configuration to
|
|
prevent receiving duplicate packets from user ports.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
---
|
|
drivers/net/dsa/qca/qca8k-8xxx.c | 13 +++++--------
|
|
1 file changed, 5 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
|
@@ -1893,15 +1893,12 @@ qca8k_setup(struct dsa_switch *ds)
|
|
}
|
|
}
|
|
|
|
- /* 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 = 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;
|
|
|