mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
d5bf46bbe8
OpenWRT's developer guide prefers having actual patches so they an be sent upstream more easily. However, in this case, Adding proper fields also allows for `git am` to properly function. Some of these patches are quite old, and lack much traceable history. This commit tries to rectify that, by digging in the history to find where and how it was first added. It is by no means perfect and also shows some patches that should have been long gone. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
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
|
|
@@ -2705,6 +2705,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)
|