diff options
author | Birger Koblitz <git@birger-koblitz.de> | 2022-04-24 20:37:33 +0200 |
---|---|---|
committer | Sander Vanheule <sander@svanheule.net> | 2022-05-14 21:26:14 +0200 |
commit | 7b4702afef64b71c6c103b962535d390f3b7f240 (patch) | |
tree | a15f5b7f454014c742a74f016ff01e18bc23a69d | |
parent | 1c6a179e1ad94fe08663f9dc267d76e7cc525683 (diff) | |
download | upstream-7b4702afef64b71c6c103b962535d390f3b7f240.tar.gz upstream-7b4702afef64b71c6c103b962535d390f3b7f240.tar.bz2 upstream-7b4702afef64b71c6c103b962535d390f3b7f240.zip |
realtek: Trap all frames with switch as destination to CPU-port
This fixes a bug where frames sent to the switch itself were
flooded to all ports unless the MAC address of the CPU-port
was learned otherwise.
Tested-by: Wenli Looi <wlooi@ucalgary.ca>
Tested-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
[fix code formatting]
Signed-off-by: Sander Vanheule <sander@svanheule.net>
(cherry picked from commit 98bb26f9f762408e42bd8a906f0eb01c41ada10a)
-rw-r--r-- | target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c index 4780632983..2e3ab4a805 100644 --- a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c +++ b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c @@ -205,6 +205,15 @@ static int rtl83xx_setup(struct dsa_switch *ds) priv->r->l2_learning_setup(); + /* + * Make sure all frames sent to the switch's MAC are trapped to the CPU-port + * 0: FWD, 1: DROP, 2: TRAP2CPU + */ + if (priv->family_id == RTL8380_FAMILY_ID) + sw_w32(0x2, RTL838X_SPCL_TRAP_SWITCH_MAC_CTRL); + else + sw_w32(0x2, RTL839X_SPCL_TRAP_SWITCH_MAC_CTRL); + /* Enable MAC Polling PHY again */ rtl83xx_enable_phy_polling(priv); pr_debug("Please wait until PHY is settled\n"); |