Re: [PATCH] mt7530 fix mt7530_fdb_write vid missing ivl bit
From: Eric Woudstra <hidden>
Date: 2021-07-17 08:10:01
Also in:
linux-mediatek, lkml, netdev
You are right now there is a problem with vlan unaware bridge. We need to change the line to: if (vid > 1) reg[1] |= ATA2_IVL; I have just tested this with a vlan unaware bridge and also with vlan bridge option disabled in the kernel. Only after applying the if statement it works for vlan unaware bridges/kernel. On Jul 16, 2021, 11:06 PM, at 11:06 PM, Vladimir Oltean [off-list ref] wrote:
On Fri, Jul 16, 2021 at 05:36:39PM +0200, ericwouds@gmail.com wrote:quoted
From: Eric Woudstra <redacted> 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] andCVID[11:0]quoted
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.htmlquoted
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 <redacted> --- 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 93136f7e6..9e4df35f9 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c@@ -366,6 +366,7 @@ mt7530_fdb_write(struct mt7530_priv *priv, u16vid,quoted
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'tdiff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h index 334d610a5..b19b389ff 100644 --- a/drivers/net/dsa/mt7530.h +++ b/drivers/net/dsa/mt7530.h@@ -79,6 +79,7 @@ enum mt753x_bpdu_port_fw { #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.25.1Can VLAN-unaware FDB entries still be manipulated successfully after this patch, since it changes 'fid 0' to be interpreted as 'vid 0'? What is your problem with roaming exactly? Have you tried to disable hardware address learning on the CPU port and set ds->assisted_learning_on_cpu_port = true for mt7530? Please note that since kernel v5.14, raw 'self' entries can no longer be managed directly using 'bridge fdb', you need to use 'master static' and go through the bridge: https://www.kernel.org/doc/html/latest/networking/dsa/configuration.html#forwarding-database-fdb-management You will need to update your 'bridgefdbd' program, if it proves to be at all necessary to achieve what you want.
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel