From 7b4702afef64b71c6c103b962535d390f3b7f240 Mon Sep 17 00:00:00 2001 From: Birger Koblitz Date: Sun, 24 Apr 2022 20:37:33 +0200 Subject: [PATCH] realtek: Trap all frames with switch as destination to CPU-port MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Tested-by: Bjørn Mork Signed-off-by: Birger Koblitz [fix code formatting] Signed-off-by: Sander Vanheule (cherry picked from commit 98bb26f9f762408e42bd8a906f0eb01c41ada10a) --- .../realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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"); -- 2.30.2