]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 May 2025 05:41:00 +0000 (07:41 +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 2fc33019e814a18303306ef9c848b97aae3bb6ad..d3428e62bef24505862aaa64b984fd873ad91641 100644 (file)
@@ -686,6 +686,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))
@@ -807,6 +816,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);
 }