After switching to DSA, users reported that roaming between APs that use DSA is broken, probably because the MAC table of the switch is not synced between the host bridge properly [1].
Enabling MAC learning on CPU port can help, according to Andrew Lunn[2], but it may cause some traffic to go through the slow path. Use this as a workaround, until the bug is fixed upstream properly. Run-tested with 2 MT7621 APs. [1] https://github.com/openwrt/openwrt/pull/2798 [2] https://lore.kernel.org/netdev/[email protected]/ Signed-off-by: DENG Qingfang <[email protected]> --- ...a-mt7530-enable-learning-on-cpu-port.patch | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 target/linux/generic/hack-5.4/710-net-dsa-mt7530-enable-learning-on-cpu-port.patch diff --git a/target/linux/generic/hack-5.4/710-net-dsa-mt7530-enable-learning-on-cpu-port.patch b/target/linux/generic/hack-5.4/710-net-dsa-mt7530-enable-learning-on-cpu-port.patch new file mode 100644 index 0000000000..ad30f5a253 --- /dev/null +++ b/target/linux/generic/hack-5.4/710-net-dsa-mt7530-enable-learning-on-cpu-port.patch @@ -0,0 +1,31 @@ +From: DENG Qingfang <[email protected]> +Date: Mon, 6 Apr 2020 19:54:25 +0800 +Subject: [PATCH] net: dsa: mt7530: enable MAC learning on CPU port + +After switching to DSA, users reported that roaming between APs that +use DSA is broken, probably because the MAC table of the switch is +not synced between the host bridge properly [1]. + +Enabling MAC learning on CPU port can help, according to Andrew Lunn[2], +but it may cause some traffic to go through the slow path. + +Use this as a workaround, until the bug is fixed upstream properly. + +Run-tested with 2 MT7621 APs. + +[1] https://github.com/openwrt/openwrt/pull/2798 +[2] https://lore.kernel.org/netdev/[email protected]/ +Signed-off-by: DENG Qingfang <[email protected]> + +--- a/drivers/net/dsa/mt7530.c ++++ b/drivers/net/dsa/mt7530.c +@@ -712,9 +712,6 @@ mt7530_cpu_port_enable(struct mt7530_priv *priv, + mt7530_write(priv, MT7530_PVC_P(port), + PORT_SPEC_TAG); + +- /* Disable auto learning on the cpu port */ +- mt7530_set(priv, MT7530_PSC_P(port), SA_DIS); +- + /* Unknown unicast frame fordwarding to the cpu port */ + mt7530_set(priv, MT7530_MFC, UNU_FFP(BIT(port))); + -- 2.26.0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
