net: b53: enable BPDU reception for management port
authorJonas Gorski <jonas.gorski@gmail.com>
Mon, 14 Apr 2025 20:04:34 +0000 (22:04 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 25 Apr 2025 08:45:43 +0000 (10:45 +0200)
[ Upstream commit 36355ddfe8955f226a88a543ed354b9f6b84cd70 ]

For STP to work, receiving BPDUs is essential, but the appropriate bit
was never set. Without GC_RX_BPDU_EN, the switch chip will filter all
BPDUs, even if an appropriate PVID VLAN was setup.

Fixes: ff39c2d68679 ("net: dsa: b53: Add bridge support")
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Link: https://patch.msgid.link/20250414200434.194422-1-jonas.gorski@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/dsa/b53/b53_common.c

index 4a2c9a9134d8c80e9dca1d28c5498840d77a96c6..cfcda893f1a16d1ebac11ce687402427a531d4db 100644 (file)
@@ -724,6 +724,15 @@ static void b53_enable_mib(struct b53_device *dev)
        b53_write8(dev, B53_MGMT_PAGE, B53_GLOBAL_CONFIG, gc);
 }
 
+static void b53_enable_stp(struct b53_device *dev)
+{
+       u8 gc;
+
+       b53_read8(dev, B53_MGMT_PAGE, B53_GLOBAL_CONFIG, &gc);
+       gc |= GC_RX_BPDU_EN;
+       b53_write8(dev, B53_MGMT_PAGE, B53_GLOBAL_CONFIG, gc);
+}
+
 static u16 b53_default_pvid(struct b53_device *dev)
 {
        if (is5325(dev) || is5365(dev))
@@ -863,6 +872,7 @@ static int b53_switch_reset(struct b53_device *dev)
        }
 
        b53_enable_mib(dev);
+       b53_enable_stp(dev);
 
        return b53_flush_arl(dev, FAST_AGE_STATIC);
 }