On Fri, Feb 06, 2026 at 03:52:15AM +0100, Linus Lüssing wrote:
> If VLAN aware multicast snooping is enabled then we need to perform a
> few extra checks to figure out if multicast snooping is actually enabled
> for a specific VLAN, as there is then an additional per VLAN multicast
> snooping toggle.
> 
> Signed-off-by: Linus Lüssing <[email protected]>
> ---
>  net/bridge/br_multicast.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
> index 4bdc3838c3dc..2a2f54009e0f 100644
> --- a/net/bridge/br_multicast.c
> +++ b/net/bridge/br_multicast.c
> @@ -1143,6 +1143,26 @@ static void br_multicast_update_active(struct 
> net_bridge_mcast *brmctx)
>       if (!br_opt_get(brmctx->br, BROPT_MULTICAST_ENABLED))
>               force_inactive = true;

Once you set 'force_inactive' the other checks become redundant, maybe
just jump to br_ip{4,6}_multicast_update_active()?

>  
> +     if (br_opt_get(brmctx->br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) {
> +             /* with per-vlan snooping enabled there is an extra per-vlan
> +              * toggle to enable/disable snooping which we must check
> +              */
> +             if (br_multicast_ctx_vlan_global_disabled(brmctx))
> +                     force_inactive = true;
> +
> +             /* with per-vlan snooping enabled the non-vlan multicast
> +              * snooping context is inactive
> +              */
> +             if (!br_multicast_ctx_is_vlan(brmctx))
> +                     force_inactive = true;
> +     } else {
> +             /* with per-vlan snooping disabled a vlan multicast
> +              * snooping context is inactive
> +              */
> +             if (br_multicast_ctx_is_vlan(brmctx))
> +                     force_inactive = true;
> +     }
> +
>       br_ip4_multicast_update_active(brmctx, force_inactive);
>       br_ip6_multicast_update_active(brmctx, force_inactive);
>  
> -- 
> 2.51.0
> 

Reply via email to