br_multicast.c (87832e937c808a7ebc41254b408362e3255c87c9) br_multicast.c (e3145ca904fa8dbfd1a5bf0187905bc117b0efce)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Bridge multicast support.
4 *
5 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
6 */
7
8#include <linux/err.h>

--- 2030 unchanged lines hidden (view full) ---

2039
2040 return 0;
2041}
2042
2043void br_multicast_del_port(struct net_bridge_port *port)
2044{
2045 struct net_bridge *br = port->br;
2046 struct net_bridge_port_group *pg;
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Bridge multicast support.
4 *
5 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
6 */
7
8#include <linux/err.h>

--- 2030 unchanged lines hidden (view full) ---

2039
2040 return 0;
2041}
2042
2043void br_multicast_del_port(struct net_bridge_port *port)
2044{
2045 struct net_bridge *br = port->br;
2046 struct net_bridge_port_group *pg;
2047 HLIST_HEAD(deleted_head);
2048 struct hlist_node *n;
2049
2050 /* Take care of the remaining groups, only perm ones should be left */
2051 spin_lock_bh(&br->multicast_lock);
2052 hlist_for_each_entry_safe(pg, n, &port->mglist, mglist)
2053 br_multicast_find_del_pg(br, pg);
2047 struct hlist_node *n;
2048
2049 /* Take care of the remaining groups, only perm ones should be left */
2050 spin_lock_bh(&br->multicast_lock);
2051 hlist_for_each_entry_safe(pg, n, &port->mglist, mglist)
2052 br_multicast_find_del_pg(br, pg);
2054 hlist_move_list(&br->mcast_gc_list, &deleted_head);
2055 spin_unlock_bh(&br->multicast_lock);
2053 spin_unlock_bh(&br->multicast_lock);
2056 br_multicast_gc(&deleted_head);
2054 flush_work(&br->mcast_gc_work);
2057 br_multicast_port_ctx_deinit(&port->multicast_ctx);
2058 free_percpu(port->mcast_stats);
2059}
2060
2061static void br_multicast_enable(struct bridge_mcast_own_query *query)
2062{
2063 query->startup_sent = 0;
2064

--- 3065 unchanged lines hidden ---
2055 br_multicast_port_ctx_deinit(&port->multicast_ctx);
2056 free_percpu(port->mcast_stats);
2057}
2058
2059static void br_multicast_enable(struct bridge_mcast_own_query *query)
2060{
2061 query->startup_sent = 0;
2062

--- 3065 unchanged lines hidden ---