public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Ido Schimmel <idosch@nvidia.com>
To: "Linus Lüssing" <linus.luessing@c0d3.blue>
Cc: bridge@lists.linux.dev, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	Nikolay Aleksandrov <razor@blackwall.org>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	Simon Horman <horms@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Eric Dumazet <edumazet@google.com>,
	"David S . Miller" <davem@davemloft.net>,
	Kuniyuki Iwashima <kuniyu@google.com>,
	Stanislav Fomichev <sdf@fomichev.me>,
	Xiao Liang <shaw.leon@gmail.com>,
	shuah@kernel.org, petrm@nvidia.com
Subject: Re: [PATCH net-next v4 03/14] net: bridge: mcast: avoid sleeping on bridge-down
Date: Mon, 9 Mar 2026 14:31:09 +0200	[thread overview]
Message-ID: <20260309123109.GA1919092@shredder> (raw)
In-Reply-To: <20260307044548.5230-4-linus.luessing@c0d3.blue>

On Sat, Mar 07, 2026 at 05:45:37AM +0100, Linus Lüssing wrote:
> @@ -4111,29 +4123,40 @@ void br_multicast_ctx_init(struct net_bridge *br,
>  	seqcount_spinlock_init(&brmctx->ip6_querier.seq, &br->multicast_lock);
>  #endif
>  
> -	timer_setup(&brmctx->ip4_mc_router_timer,
> -		    br_ip4_multicast_local_router_expired, 0);
> -	timer_setup(&brmctx->ip4_other_query.timer,
> -		    br_ip4_multicast_querier_expired, 0);
> -	timer_setup(&brmctx->ip4_other_query.delay_timer,
> -		    br_multicast_query_delay_expired, 0);
> -	timer_setup(&brmctx->ip4_own_query.timer,
> -		    br_ip4_multicast_query_expired, 0);
> +	timer_setup(&brmctx->ip4_mc_router_timer, NULL, 0);
> +	timer_setup(&brmctx->ip4_other_query.timer, NULL, 0);
> +	timer_setup(&brmctx->ip4_other_query.delay_timer, NULL, 0);
> +	timer_setup(&brmctx->ip4_own_query.timer, NULL, 0);
>  #if IS_ENABLED(CONFIG_IPV6)
> -	timer_setup(&brmctx->ip6_mc_router_timer,
> -		    br_ip6_multicast_local_router_expired, 0);
> -	timer_setup(&brmctx->ip6_other_query.timer,
> -		    br_ip6_multicast_querier_expired, 0);
> -	timer_setup(&brmctx->ip6_other_query.delay_timer,
> -		    br_multicast_query_delay_expired, 0);
> -	timer_setup(&brmctx->ip6_own_query.timer,
> -		    br_ip6_multicast_query_expired, 0);
> +	timer_setup(&brmctx->ip6_mc_router_timer, NULL, 0);
> +	timer_setup(&brmctx->ip6_other_query.timer, NULL, 0);
> +	timer_setup(&brmctx->ip6_other_query.delay_timer, NULL, 0);
> +	timer_setup(&brmctx->ip6_own_query.timer, NULL, 0);
>  #endif
> +
> +	/* for non-vlan multicast timer callbacks:
> +	 * they are set on br_multicast_open() instead
> +	 */
> +	if (!vlan)
> +		return;
> +
> +	spin_lock_bh(&br->multicast_lock);
> +	br_multicast_reset_timer_cbs(&vlan->br_mcast_ctx);
> +	spin_unlock_bh(&br->multicast_lock);

It wasn't clear to me why special treatment is needed for the per-VLAN
context and it's not explained in the commit message either. I suspect
that it's a workaround for the fact that br_multicast_reset_timer_cbs()
is only called for VLANs that were actually added on the bridge (i.e.,
"brentry"), whereas the "other query" timers are used even when the VLAN
entry is not used for filtering.

This is related to my comment on patch #9 and it should probably be
handled in br_multicast_toggle_vlan(), which is called both when
multicast snooping is toggled on a specific VLAN and on all the VLANs
(i.e., "mcast_vlan_snooping").

>  }

  reply	other threads:[~2026-03-09 12:31 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-07  4:45 [PATCH net-next v4 00/14] net: bridge: reduce multicast checks in fast path Linus Lüssing
2026-03-07  4:45 ` [PATCH net-next v4 01/14] net: bridge: mcast: export ip{4,6}_active state to netlink Linus Lüssing
2026-03-07  4:45 ` [PATCH net-next v4 02/14] net: bridge: mcast: track active state, adding tests Linus Lüssing
2026-03-07  4:45 ` [PATCH net-next v4 03/14] net: bridge: mcast: avoid sleeping on bridge-down Linus Lüssing
2026-03-09 12:31   ` Ido Schimmel [this message]
2026-03-07  4:45 ` [PATCH net-next v4 04/14] net: bridge: mcast: track active state, IGMP/MLD querier appearance Linus Lüssing
2026-03-09 12:57   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 05/14] net: bridge: mcast: track active state, foreign IGMP/MLD querier disappearance Linus Lüssing
2026-03-07  4:45 ` [PATCH net-next v4 06/14] net: bridge: mcast: track active state, IPv6 address availability Linus Lüssing
2026-03-07  4:45 ` [PATCH net-next v4 07/14] net: bridge: mcast: track active state, own MLD querier disappearance Linus Lüssing
2026-03-09 13:18   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 08/14] net: bridge: mcast: track active state, if snooping is enabled Linus Lüssing
2026-03-09 13:44   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 09/14] net: bridge: mcast: track active state, VLAN snooping Linus Lüssing
2026-03-08 20:12   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 10/14] net: bridge: mcast: track active state, bridge up/down Linus Lüssing
2026-03-09 15:58   ` Ido Schimmel
2026-03-09 17:49   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 11/14] net: bridge: mcast: track active state, prepare for outside lock reads Linus Lüssing
2026-03-09 16:17   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 12/14] net: bridge: mcast: use combined active state in netlink Linus Lüssing
2026-03-07  4:45 ` [PATCH net-next v4 13/14] net: bridge: mcast: use combined active state in fast/data path Linus Lüssing
2026-03-09 16:51   ` Ido Schimmel
2026-03-07  4:45 ` [PATCH net-next v4 14/14] net: bridge: mcast: add inactive state assertions Linus Lüssing
2026-03-09 17:48   ` Ido Schimmel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260309123109.GA1919092@shredder \
    --to=idosch@nvidia.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=bridge@lists.linux.dev \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=kuniyu@google.com \
    --cc=linus.luessing@c0d3.blue \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=petrm@nvidia.com \
    --cc=razor@blackwall.org \
    --cc=sdf@fomichev.me \
    --cc=shaw.leon@gmail.com \
    --cc=shuah@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox