aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.10/769-v5.15-net-dsa-mt7530-always-install-FDB-entries-with-IVL-a.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/backport-5.10/769-v5.15-net-dsa-mt7530-always-install-FDB-entries-with-IVL-a.patch')
-rw-r--r--target/linux/generic/backport-5.10/769-v5.15-net-dsa-mt7530-always-install-FDB-entries-with-IVL-a.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.10/769-v5.15-net-dsa-mt7530-always-install-FDB-entries-with-IVL-a.patch b/target/linux/generic/backport-5.10/769-v5.15-net-dsa-mt7530-always-install-FDB-entries-with-IVL-a.patch
new file mode 100644
index 0000000000..97824068f0
--- /dev/null
+++ b/target/linux/generic/backport-5.10/769-v5.15-net-dsa-mt7530-always-install-FDB-entries-with-IVL-a.patch
@@ -0,0 +1,54 @@
+From 138c126a33f7564edb66b1da5b847e4a60740bfc Mon Sep 17 00:00:00 2001
+From: DENG Qingfang <dqfext@gmail.com>
+Date: Wed, 4 Aug 2021 00:04:04 +0800
+Subject: [PATCH] net: dsa: mt7530: always install FDB entries with IVL and FID
+ 1
+
+This reverts commit 7e777021780e ("mt7530 mt7530_fdb_write only set ivl
+bit vid larger than 1").
+
+Before this series, the default value of all ports' PVID is 1, which is
+copied into the FDB entry, even if the ports are VLAN unaware. So
+`bridge fdb show` will show entries like `dev swp0 vlan 1 self` even on
+a VLAN-unaware bridge.
+
+The blamed commit does not solve that issue completely, instead it may
+cause a new issue that FDB is inaccessible in a VLAN-aware bridge with
+PVID 1.
+
+This series sets PVID to 0 on VLAN-unaware ports, so `bridge fdb show`
+will no longer print `vlan 1` on VLAN-unaware bridges, and that special
+case in fdb_write is not required anymore.
+
+Set FDB entries' filter ID to 1 to match the VLAN table.
+
+Signed-off-by: DENG Qingfang <dqfext@gmail.com>
+Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/dsa/mt7530.c | 2 ++
+ drivers/net/dsa/mt7530.h | 2 ++
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
+@@ -361,6 +361,8 @@ mt7530_fdb_write(struct mt7530_priv *pri
+ int i;
+
+ reg[1] |= vid & CVID_MASK;
++ reg[1] |= ATA2_IVL;
++ reg[1] |= ATA2_FID(FID_BRIDGED);
+ 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
+--- a/drivers/net/dsa/mt7530.h
++++ b/drivers/net/dsa/mt7530.h
+@@ -77,6 +77,8 @@ enum mt753x_bpdu_port_fw {
+ #define STATIC_EMP 0
+ #define STATIC_ENT 3
+ #define MT7530_ATA2 0x78
++#define ATA2_IVL BIT(15)
++#define ATA2_FID(x) (((x) & 0x7) << 12)
+
+ /* Register for address table write data */
+ #define MT7530_ATWD 0x7c