From: Birger Koblitz Date: Sun, 24 Apr 2022 18:37:33 +0000 (+0200) Subject: realtek: Trap all frames with switch as destination to CPU-port X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=98bb26f9f762408e42bd8a906f0eb01c41ada10a;p=openwrt%2Fstaging%2Fnbd.git 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 Tested-by: Bjørn Mork Signed-off-by: Birger Koblitz [fix code formatting] Signed-off-by: Sander Vanheule --- 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");