]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: bridge: mcast: fix br_multicast_ctx_vlan_global_disabled helper
authorNikolay Aleksandrov <nikolay@nvidia.com>
Tue, 28 Dec 2021 15:31:42 +0000 (17:31 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 30 Dec 2021 01:49:45 +0000 (17:49 -0800)
We need to first check if the context is a vlan one, then we need to
check the global bridge multicast vlan snooping flag, and finally the
vlan's multicast flag, otherwise we will unnecessarily enable vlan mcast
processing (e.g. querier timers).

Fixes: a6dc6325c1b7 ("net: bridge: multicast: add vlan state initialization and control")
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Link: https://lore.kernel.org/r/20211228153142.536969-1-nikolay@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/bridge/br_private.h

index 2187a0c3fd222ed9a256904fd9655ff299fce557..e8c6ee322c7178d4d332e8e7e45ab4a1312deb39 100644 (file)
@@ -1153,9 +1153,9 @@ br_multicast_port_ctx_get_global(const struct net_bridge_mcast_port *pmctx)
 static inline bool
 br_multicast_ctx_vlan_global_disabled(const struct net_bridge_mcast *brmctx)
 {
-       return br_opt_get(brmctx->br, BROPT_MCAST_VLAN_SNOOPING_ENABLED) &&
-              br_multicast_ctx_is_vlan(brmctx) &&
-              !(brmctx->vlan->priv_flags & BR_VLFLAG_GLOBAL_MCAST_ENABLED);
+       return br_multicast_ctx_is_vlan(brmctx) &&
+              (!br_opt_get(brmctx->br, BROPT_MCAST_VLAN_SNOOPING_ENABLED) ||
+               !(brmctx->vlan->priv_flags & BR_VLFLAG_GLOBAL_MCAST_ENABLED));
 }
 
 static inline bool