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 --- |