Hi Tobias, I've tested your patch series on kernel 5.4 and found that it only works when VLAN filtering is enabled. After some debugging, I noticed DSA will add static entries to ATU 0 if VLAN filtering is disabled, regardless of default_pvid of the bridge, which is also the ATU# used by the bridge.
Currently I use the hack below to rewrite ATU# to 1, but it obviously does not solve the root cause. diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index b99f27b8c084..9c897c03896f 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -2106,6 +2106,7 @@ static int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port, struct mv88e6xxx_chip *chip = ds->priv; int err; + vid = vid ? : 1; mv88e6xxx_reg_lock(chip); err = mv88e6xxx_port_db_load_purge(chip, port, addr, vid, MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC); @@ -2120,6 +2121,7 @@ static int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port, struct mv88e6xxx_chip *chip = ds->priv; int err; + vid = vid ? : 1; mv88e6xxx_reg_lock(chip); err = mv88e6xxx_port_db_load_purge(chip, port, addr, vid, 0); mv88e6xxx_reg_unlock(chip); -- Any ideas?