]> www.infradead.org Git - users/hch/misc.git/commitdiff
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)
committerJakub Kicinski <kuba@kernel.org>
Thu, 17 Apr 2025 01:10:53 +0000 (18:10 -0700)
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>
drivers/net/dsa/b53/b53_common.c

index 61d164ffb3ae9731daf88a711fa06b2e5f7aa622..e5ba718979064bfb7914bfdf5d0f4c256714d7be 100644 (file)
@@ -737,6 +737,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))
@@ -876,6 +885,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);
 }