]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: dsa: b53: always rejoin default untagged VLAN on bridge leave
authorJonas Gorski <jonas.gorski@gmail.com>
Tue, 29 Apr 2025 20:17:05 +0000 (22:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 May 2025 06:20:36 +0000 (08:20 +0200)
[ Upstream commit 13b152ae40495966501697693f048f47430c50fd ]

While JOIN_ALL_VLAN allows to join all VLANs, we still need to keep the
default VLAN enabled so that untagged traffic stays untagged.

So rejoin the default VLAN even for switches with JOIN_ALL_VLAN support.

Fixes: 48aea33a77ab ("net: dsa: b53: Add JOIN_ALL_VLAN support")
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20250429201710.330937-7-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 37b3a46b060f53637991e74a08f3dcfbce722ee4..429ea5056235f992958a81790a29bdd7006b55e5 100644 (file)
@@ -1961,12 +1961,12 @@ void b53_br_leave(struct dsa_switch *ds, int port, struct net_device *br)
                if (!(reg & BIT(cpu_port)))
                        reg |= BIT(cpu_port);
                b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg);
-       } else {
-               b53_get_vlan_entry(dev, pvid, vl);
-               vl->members |= BIT(port) | BIT(cpu_port);
-               vl->untag |= BIT(port) | BIT(cpu_port);
-               b53_set_vlan_entry(dev, pvid, vl);
        }
+
+       b53_get_vlan_entry(dev, pvid, vl);
+       vl->members |= BIT(port) | BIT(cpu_port);
+       vl->untag |= BIT(port) | BIT(cpu_port);
+       b53_set_vlan_entry(dev, pvid, vl);
 }
 EXPORT_SYMBOL(b53_br_leave);