On Wed, Jul 08, 2026 at 03:28:19PM +0300, Ido Schimmel wrote:
> @@ -1783,6 +1841,7 @@ static void __br_multicast_send_query(struct 
> net_bridge_mcast *brmctx,
>                                     u8 sflag,
>                                     bool *need_rexmit)
>  {
> +     struct sk_buff_head *queue;
>       bool over_lmqt = !!sflag;
>       struct sk_buff *skb;
>       u8 igmp_type;
> @@ -1791,7 +1850,12 @@ static void __br_multicast_send_query(struct 
> net_bridge_mcast *brmctx,
>           !br_multicast_ctx_matches_vlan_snooping(brmctx))
>               return;
>  
> +     queue = pmctx ? &pmctx->query_queue : &brmctx->query_queue;
> +
>  again_under_lmqt:
> +     if (skb_queue_len_lockless(queue) >= BR_MULTICAST_QUERY_QUEUE_LEN_MAX)
> +             return;
> +
>       skb = br_multicast_alloc_query(brmctx, pmctx, pg, ip_dst, group,
>                                      with_srcs, over_lmqt, sflag, &igmp_type,
>                                      need_rexmit);
> @@ -1800,11 +1864,8 @@ static void __br_multicast_send_query(struct 
> net_bridge_mcast *brmctx,
>  
>       if (pmctx) {
>               skb->dev = pmctx->port->dev;
> -             br_multicast_count(brmctx->br, pmctx->port, skb, igmp_type,
> -                                BR_MCAST_DIR_TX);
> -             NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_OUT,
> -                     dev_net(pmctx->port->dev), NULL, skb, NULL, skb->dev,
> -                     br_dev_queue_push_xmit);
> +             skb_queue_tail(queue, skb);
> +             queue_work(system_highpri_wq, &pmctx->query_queue_work);

The issue reported by sashiko-gemini [1] is addressed in patch #2.

[1]
"This isn't a bug, but it looks like the local variable igmp_type is no
longer used in __br_multicast_send_query.

Since br_multicast_count() was moved out of this function and into the
workqueue processing, the value returned via the &igmp_type parameter
from br_multicast_alloc_query() is no longer read. Could we clean this
up and remove the local variable entirely?"

Reply via email to