mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 08:21:14 +00:00
78a468f690
All patches automatically rebased. Signed-off-by: John Audia <therealgraysky@proton.me>
42 lines
1.7 KiB
Diff
42 lines
1.7 KiB
Diff
From: DENG Qingfang <dqfext@gmail.com>
|
|
Subject: DSA: roaming fix for Marvell mv88e6xxx
|
|
|
|
Marvell mv88e6xxx switch series cannot perform MAC learning from
|
|
CPU-injected (FROM_CPU) DSA frames, which results in 2 issues.
|
|
- excessive flooding, due to the fact that DSA treats those addresses
|
|
as unknown
|
|
- the risk of stale routes, which can lead to temporary packet loss
|
|
|
|
Backport those patch series from netdev mailing list, which solve these
|
|
issues by adding and clearing static entries to the switch's FDB.
|
|
|
|
Add a hack patch to set default VID to 1 in port_fdb_{add,del}. Otherwise
|
|
the static entries will be added to the switch's private FDB if VLAN
|
|
filtering disabled, which will not work.
|
|
|
|
The switch may generate an "ATU violation" warning when a client moves
|
|
from the CPU port to a switch port because the static ATU entry added by
|
|
DSA core still points to the CPU port. DSA core will then clear the static
|
|
entry so it is not fatal. Disable the warning so it will not confuse users.
|
|
|
|
Link: https://lore.kernel.org/netdev/20210106095136.224739-1-olteanv@gmail.com/
|
|
Link: https://lore.kernel.org/netdev/20210116012515.3152-1-tobias@waldekranz.com/
|
|
Ref: https://gitlab.nic.cz/turris/turris-build/-/issues/165
|
|
Submitted-by: DENG Qingfang <dqfext@gmail.com>
|
|
---
|
|
drivers/net/dsa/mv88e6xxx/chip.c | 3 +++
|
|
3 files changed, 3 insertions(+)
|
|
|
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
|
@@ -2714,6 +2714,9 @@ static int mv88e6xxx_setup_port(struct m
|
|
if (dsa_is_cpu_port(ds, port))
|
|
reg = 0;
|
|
|
|
+ /* Disable ATU member violation interrupt */
|
|
+ reg |= MV88E6XXX_PORT_ASSOC_VECTOR_IGNORE_WRONG;
|
|
+
|
|
err = mv88e6xxx_port_write(chip, port, MV88E6XXX_PORT_ASSOC_VECTOR,
|
|
reg);
|
|
if (err)
|