A few days after this patch, I send in another as it needs a fix. If you apply this patch, please also apply the other: set ivl bit only for vid larger than 1. On Jul 27, 2021, 3:20 PM, at 3:20 PM, Sasha Levin <sashal@xxxxxxxxxx> wrote: >From: Eric Woudstra <ericwouds@xxxxxxxxx> > >[ Upstream commit 11d8d98cbeef1496469b268d79938b05524731e8 ] > >According to reference guides mt7530 (mt7620) and mt7531: > >NOTE: When IVL is reset, MAC[47:0] and FID[2:0] will be used to >read/write the address table. When IVL is set, MAC[47:0] and CVID[11:0] >will be used to read/write the address table. > >Since the function only fills in CVID and no FID, we need to set the >IVL bit. The existing code does not set it. > >This is a fix for the issue I dropped here earlier: > >http://lists.infradead.org/pipermail/linux-mediatek/2021-June/025697.html > >With this patch, it is now possible to delete the 'self' fdb entry >manually. However, wifi roaming still has the same issue, the entry >does not get deleted automatically. Wifi roaming also needs a fix >somewhere else to function correctly in combination with vlan. > >Signed-off-by: Eric Woudstra <ericwouds@xxxxxxxxx> >Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> >Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> >--- > drivers/net/dsa/mt7530.c | 1 + > drivers/net/dsa/mt7530.h | 1 + > 2 files changed, 2 insertions(+) > >diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c >index 6335c4ea0957..96dbc51caf48 100644 >--- a/drivers/net/dsa/mt7530.c >+++ b/drivers/net/dsa/mt7530.c >@@ -414,6 +414,7 @@ mt7530_fdb_write(struct mt7530_priv *priv, u16 vid, > int i; > > reg[1] |= vid & CVID_MASK; >+ reg[1] |= ATA2_IVL; > reg[2] |= (aging & AGE_TIMER_MASK) << AGE_TIMER; > reg[2] |= (port_mask & PORT_MAP_MASK) << PORT_MAP; > /* STATIC_ENT indicate that entry is static wouldn't >diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h >index 101d309ee445..72f53e6bc145 100644 >--- a/drivers/net/dsa/mt7530.h >+++ b/drivers/net/dsa/mt7530.h >@@ -43,6 +43,7 @@ > #define STATIC_EMP 0 > #define STATIC_ENT 3 > #define MT7530_ATA2 0x78 >+#define ATA2_IVL BIT(15) > > /* Register for address table write data */ > #define MT7530_ATWD 0x7c >-- >2.30.2