Lines Matching refs:pg

82 				     struct net_bridge_port_group *pg);
205 br_multicast_pg_to_port_ctx(const struct net_bridge_port_group *pg) in br_multicast_pg_to_port_ctx() argument
207 struct net_bridge_mcast_port *pmctx = &pg->key.port->multicast_ctx; in br_multicast_pg_to_port_ctx()
210 lockdep_assert_held_once(&pg->key.port->br->multicast_lock); in br_multicast_pg_to_port_ctx()
213 if (!pg->key.addr.vid || in br_multicast_pg_to_port_ctx()
214 !br_opt_get(pg->key.port->br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) in br_multicast_pg_to_port_ctx()
224 vlan = br_vlan_find(nbp_vlan_group_rcu(pg->key.port), pg->key.addr.vid); in br_multicast_pg_to_port_ctx()
266 struct net_bridge_port_group *pg, in __fwd_add_star_excl() argument
275 sg_key.port = pg->key.port; in __fwd_add_star_excl()
281 sg_ip, pg->eth_addr, in __fwd_add_star_excl()
290 static void __fwd_del_star_excl(struct net_bridge_port_group *pg, in __fwd_del_star_excl() argument
294 struct net_bridge *br = pg->key.port->br; in __fwd_del_star_excl()
298 sg_key.port = pg->key.port; in __fwd_del_star_excl()
316 void br_multicast_star_g_handle_mode(struct net_bridge_port_group *pg, in br_multicast_star_g_handle_mode() argument
319 struct net_bridge *br = pg->key.port->br; in br_multicast_star_g_handle_mode()
325 if (WARN_ON(!br_multicast_is_star_g(&pg->key.addr))) in br_multicast_star_g_handle_mode()
328 mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_star_g_handle_mode()
331 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_star_g_handle_mode()
336 sg_ip = pg->key.addr; in br_multicast_star_g_handle_mode()
343 if (pg_lst == pg) in br_multicast_star_g_handle_mode()
351 __fwd_del_star_excl(pg, &sg_ip); in br_multicast_star_g_handle_mode()
354 __fwd_add_star_excl(pmctx, pg, &sg_ip); in br_multicast_star_g_handle_mode()
383 struct net_bridge_port_group *pg; in br_multicast_star_g_host_state() local
391 for (pg = mlock_dereference(star_mp->ports, br); in br_multicast_star_g_host_state()
392 pg; in br_multicast_star_g_host_state()
393 pg = mlock_dereference(pg->next, br)) { in br_multicast_star_g_host_state()
396 hlist_for_each_entry(src_ent, &pg->src_list, node) { in br_multicast_star_g_host_state()
448 struct net_bridge_port_group *pg; in br_multicast_sg_add_exclude_ports() local
460 for (pg = mlock_dereference(star_mp->ports, br); in br_multicast_sg_add_exclude_ports()
461 pg; in br_multicast_sg_add_exclude_ports()
462 pg = mlock_dereference(pg->next, br)) { in br_multicast_sg_add_exclude_ports()
465 if (pg == sg || pg->filter_mode == MCAST_INCLUDE) in br_multicast_sg_add_exclude_ports()
468 sg_key.port = pg->key.port; in br_multicast_sg_add_exclude_ports()
472 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_sg_add_exclude_ports()
500 pmctx = br_multicast_pg_to_port_ctx(src->pg); in br_multicast_fwd_src_add()
504 sg_ip = src->pg->key.addr; in br_multicast_fwd_src_add()
508 src->pg->eth_addr, MCAST_INCLUDE, false, in br_multicast_fwd_src_add()
522 star_mp = br_mdb_ip_get(src->br, &src->pg->key.addr); in br_multicast_fwd_src_add()
532 struct net_bridge_port_group *p, *pg = src->pg; in br_multicast_fwd_src_remove() local
538 sg_ip = pg->key.addr; in br_multicast_fwd_src_remove()
548 if (!br_port_group_equal(p, pg->key.port, pg->eth_addr)) in br_multicast_fwd_src_remove()
573 sg_key.addr = src->pg->key.addr; in br_multicast_fwd_src_handle()
575 sg_key.port = src->pg->key.port; in br_multicast_fwd_src_handle()
653 struct net_bridge *br = src->pg->key.port->br; in br_multicast_del_group_src()
657 src->pg->src_ents--; in br_multicast_del_group_src()
664 struct net_bridge_port_group *pg; in br_multicast_destroy_port_group() local
666 pg = container_of(gc, struct net_bridge_port_group, mcast_gc); in br_multicast_destroy_port_group()
667 WARN_ON(!hlist_unhashed(&pg->mglist)); in br_multicast_destroy_port_group()
668 WARN_ON(!hlist_empty(&pg->src_list)); in br_multicast_destroy_port_group()
670 del_timer_sync(&pg->rexmit_timer); in br_multicast_destroy_port_group()
671 del_timer_sync(&pg->timer); in br_multicast_destroy_port_group()
672 kfree_rcu(pg, rcu); in br_multicast_destroy_port_group()
676 struct net_bridge_port_group *pg, in br_multicast_del_pg() argument
679 struct net_bridge *br = pg->key.port->br; in br_multicast_del_pg()
683 rcu_assign_pointer(*pp, pg->next); in br_multicast_del_pg()
684 hlist_del_init(&pg->mglist); in br_multicast_del_pg()
685 br_multicast_eht_clean_sets(pg); in br_multicast_del_pg()
686 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) in br_multicast_del_pg()
688 br_mdb_notify(br->dev, mp, pg, RTM_DELMDB); in br_multicast_del_pg()
690 rhashtable_remove_fast(&br->sg_port_tbl, &pg->rhnode, in br_multicast_del_pg()
694 br_multicast_star_g_handle_mode(pg, MCAST_INCLUDE); in br_multicast_del_pg()
696 hlist_add_head(&pg->mcast_gc.gc_node, &br->mcast_gc_list); in br_multicast_del_pg()
704 struct net_bridge_port_group *pg) in br_multicast_find_del_pg() argument
710 mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_find_del_pg()
717 if (p != pg) in br_multicast_find_del_pg()
720 br_multicast_del_pg(mp, pg, pp); in br_multicast_find_del_pg()
729 struct net_bridge_port_group *pg = from_timer(pg, t, timer); in br_multicast_port_group_expired() local
731 struct net_bridge *br = pg->key.port->br; in br_multicast_port_group_expired()
736 if (!netif_running(br->dev) || timer_pending(&pg->timer) || in br_multicast_port_group_expired()
737 hlist_unhashed(&pg->mglist) || pg->flags & MDB_PG_FLAGS_PERMANENT) in br_multicast_port_group_expired()
740 changed = !!(pg->filter_mode == MCAST_EXCLUDE); in br_multicast_port_group_expired()
741 pg->filter_mode = MCAST_INCLUDE; in br_multicast_port_group_expired()
742 hlist_for_each_entry_safe(src_ent, tmp, &pg->src_list, node) { in br_multicast_port_group_expired()
749 if (hlist_empty(&pg->src_list)) { in br_multicast_port_group_expired()
750 br_multicast_find_del_pg(br, pg); in br_multicast_port_group_expired()
752 struct net_bridge_mdb_entry *mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_port_group_expired()
754 if (changed && br_multicast_is_star_g(&pg->key.addr)) in br_multicast_port_group_expired()
755 br_multicast_star_g_handle_mode(pg, MCAST_INCLUDE); in br_multicast_port_group_expired()
759 br_mdb_notify(br->dev, mp, pg, RTM_NEWMDB); in br_multicast_port_group_expired()
798 struct net_bridge_port_group *pg, in br_ip4_multicast_alloc_query() argument
804 struct net_bridge_port *p = pg ? pg->key.port : NULL; in br_ip4_multicast_alloc_query()
821 if (pg && with_srcs) { in br_ip4_multicast_alloc_query()
824 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip4_multicast_alloc_query()
908 if (!pg || !with_srcs) in br_ip4_multicast_alloc_query()
912 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip4_multicast_alloc_query()
945 struct net_bridge_port_group *pg, in br_ip6_multicast_alloc_query() argument
952 struct net_bridge_port *p = pg ? pg->key.port : NULL; in br_ip6_multicast_alloc_query()
971 if (pg && with_srcs) { in br_ip6_multicast_alloc_query()
974 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip6_multicast_alloc_query()
1071 if (!pg || !with_srcs) in br_ip6_multicast_alloc_query()
1075 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip6_multicast_alloc_query()
1110 struct net_bridge_port_group *pg, in br_multicast_alloc_query() argument
1122 return br_ip4_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1137 return br_ip6_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1186 struct net_bridge_port_group *pg; in br_multicast_group_src_expired() local
1194 pg = src->pg; in br_multicast_group_src_expired()
1195 if (pg->filter_mode == MCAST_INCLUDE) { in br_multicast_group_src_expired()
1197 if (!hlist_empty(&pg->src_list)) in br_multicast_group_src_expired()
1199 br_multicast_find_del_pg(br, pg); in br_multicast_group_src_expired()
1209 br_multicast_find_group_src(struct net_bridge_port_group *pg, struct br_ip *ip) in br_multicast_find_group_src() argument
1215 hlist_for_each_entry(ent, &pg->src_list, node) in br_multicast_find_group_src()
1221 hlist_for_each_entry(ent, &pg->src_list, node) in br_multicast_find_group_src()
1232 br_multicast_new_group_src(struct net_bridge_port_group *pg, struct br_ip *src_ip) in br_multicast_new_group_src() argument
1236 if (unlikely(pg->src_ents >= PG_SRC_ENT_LIMIT)) in br_multicast_new_group_src()
1258 grp_src->pg = pg; in br_multicast_new_group_src()
1259 grp_src->br = pg->key.port->br; in br_multicast_new_group_src()
1264 hlist_add_head_rcu(&grp_src->node, &pg->src_list); in br_multicast_new_group_src()
1265 pg->src_ents++; in br_multicast_new_group_src()
1406 struct net_bridge_port_group *pg; in br_multicast_add_group() local
1410 pg = __br_multicast_add_group(brmctx, pmctx, group, src, filter_mode, in br_multicast_add_group()
1413 err = PTR_ERR_OR_ZERO(pg); in br_multicast_add_group()
1620 struct net_bridge_port_group *pg, in __br_multicast_send_query() argument
1636 skb = br_multicast_alloc_query(brmctx, pmctx, pg, ip_dst, group, in __br_multicast_send_query()
1776 struct net_bridge_port_group *pg = from_timer(pg, t, rexmit_timer); in br_multicast_port_group_rexmit() local
1778 struct net_bridge *br = pg->key.port->br; in br_multicast_port_group_rexmit()
1784 if (!netif_running(br->dev) || hlist_unhashed(&pg->mglist) || in br_multicast_port_group_rexmit()
1788 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_port_group_rexmit()
1795 if (pg->key.addr.proto == htons(ETH_P_IP)) in br_multicast_port_group_rexmit()
1805 if (pg->grp_query_rexmit_cnt) { in br_multicast_port_group_rexmit()
1806 pg->grp_query_rexmit_cnt--; in br_multicast_port_group_rexmit()
1807 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1808 &pg->key.addr, false, 1, NULL); in br_multicast_port_group_rexmit()
1810 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1811 &pg->key.addr, true, 0, &need_rexmit); in br_multicast_port_group_rexmit()
1813 if (pg->grp_query_rexmit_cnt || need_rexmit) in br_multicast_port_group_rexmit()
1814 mod_timer(&pg->rexmit_timer, jiffies + in br_multicast_port_group_rexmit()
1884 struct net_bridge_port_group *pg; in br_multicast_del_port() local
1890 hlist_for_each_entry_safe(pg, n, &port->mglist, mglist) in br_multicast_del_port()
1891 br_multicast_find_del_pg(br, pg); in br_multicast_del_port()
1939 struct net_bridge_port_group *pg; in __br_multicast_disable_port_ctx() local
1943 hlist_for_each_entry_safe(pg, n, &pmctx->port->mglist, mglist) in __br_multicast_disable_port_ctx()
1944 if (!(pg->flags & MDB_PG_FLAGS_PERMANENT) && in __br_multicast_disable_port_ctx()
1946 pg->key.addr.vid == pmctx->vlan->vid)) in __br_multicast_disable_port_ctx()
1947 br_multicast_find_del_pg(pmctx->port->br, pg); in __br_multicast_disable_port_ctx()
1967 static int __grp_src_delete_marked(struct net_bridge_port_group *pg) in __grp_src_delete_marked() argument
1973 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) in __grp_src_delete_marked()
1991 struct net_bridge_port_group *pg) in __grp_src_query_marked_and_rexmit() argument
2002 if (pg->key.addr.proto == htons(ETH_P_IP)) in __grp_src_query_marked_and_rexmit()
2010 hlist_for_each_entry(ent, &pg->src_list, node) { in __grp_src_query_marked_and_rexmit()
2027 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_src_query_marked_and_rexmit()
2028 &pg->key.addr, true, 1, NULL); in __grp_src_query_marked_and_rexmit()
2031 if (!timer_pending(&pg->rexmit_timer) || in __grp_src_query_marked_and_rexmit()
2032 time_after(pg->rexmit_timer.expires, lmi)) in __grp_src_query_marked_and_rexmit()
2033 mod_timer(&pg->rexmit_timer, lmi); in __grp_src_query_marked_and_rexmit()
2038 struct net_bridge_port_group *pg) in __grp_send_query_and_rexmit() argument
2047 if (pg->key.addr.proto == htons(ETH_P_IP)) in __grp_send_query_and_rexmit()
2057 pg->grp_query_rexmit_cnt = brmctx->multicast_last_member_count - 1; in __grp_send_query_and_rexmit()
2058 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_send_query_and_rexmit()
2059 &pg->key.addr, false, 0, NULL); in __grp_send_query_and_rexmit()
2060 if (!timer_pending(&pg->rexmit_timer) || in __grp_send_query_and_rexmit()
2061 time_after(pg->rexmit_timer.expires, lmi)) in __grp_send_query_and_rexmit()
2062 mod_timer(&pg->rexmit_timer, lmi); in __grp_send_query_and_rexmit()
2065 if (pg->filter_mode == MCAST_EXCLUDE && in __grp_send_query_and_rexmit()
2066 (!timer_pending(&pg->timer) || in __grp_send_query_and_rexmit()
2067 time_after(pg->timer.expires, now + br_multicast_lmqt(brmctx)))) in __grp_send_query_and_rexmit()
2068 mod_timer(&pg->timer, now + br_multicast_lmqt(brmctx)); in __grp_send_query_and_rexmit()
2077 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_isinc_allow() argument
2088 src_ip.proto = pg->key.addr.proto; in br_multicast_isinc_allow()
2091 ent = br_multicast_find_group_src(pg, &src_ip); in br_multicast_isinc_allow()
2093 ent = br_multicast_new_group_src(pg, &src_ip); in br_multicast_isinc_allow()
2102 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_isinc_allow()
2115 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_isexc_incl() argument
2123 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_isexc_incl()
2127 src_ip.proto = pg->key.addr.proto; in __grp_src_isexc_incl()
2130 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_isexc_incl()
2134 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_isexc_incl()
2139 br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_isexc_incl()
2142 __grp_src_delete_marked(pg); in __grp_src_isexc_incl()
2152 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_isexc_excl() argument
2162 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_isexc_excl()
2166 src_ip.proto = pg->key.addr.proto; in __grp_src_isexc_excl()
2169 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_isexc_excl()
2173 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_isexc_excl()
2182 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_isexc_excl()
2186 if (__grp_src_delete_marked(pg)) in __grp_src_isexc_excl()
2193 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_isexc() argument
2199 switch (pg->filter_mode) { in br_multicast_isexc()
2201 __grp_src_isexc_incl(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_isexc()
2203 br_multicast_star_g_handle_mode(pg, MCAST_EXCLUDE); in br_multicast_isexc()
2207 changed = __grp_src_isexc_excl(brmctx, pg, h_addr, srcs, nsrcs, in br_multicast_isexc()
2212 pg->filter_mode = MCAST_EXCLUDE; in br_multicast_isexc()
2213 mod_timer(&pg->timer, jiffies + br_multicast_gmi(brmctx)); in br_multicast_isexc()
2224 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toin_incl() argument
2228 u32 src_idx, to_send = pg->src_ents; in __grp_src_toin_incl()
2234 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toin_incl()
2238 src_ip.proto = pg->key.addr.proto; in __grp_src_toin_incl()
2241 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toin_incl()
2246 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toin_incl()
2254 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toin_incl()
2259 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_incl()
2271 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toin_excl() argument
2275 u32 src_idx, to_send = pg->src_ents; in __grp_src_toin_excl()
2281 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toin_excl()
2286 src_ip.proto = pg->key.addr.proto; in __grp_src_toin_excl()
2289 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toin_excl()
2296 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toin_excl()
2304 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toin_excl()
2309 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2311 __grp_send_query_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2318 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_toin() argument
2324 switch (pg->filter_mode) { in br_multicast_toin()
2326 changed = __grp_src_toin_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2330 changed = __grp_src_toin_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2335 if (br_multicast_eht_should_del_pg(pg)) { in br_multicast_toin()
2336 pg->flags |= MDB_PG_FLAGS_FAST_LEAVE; in br_multicast_toin()
2337 br_multicast_find_del_pg(pg->key.port->br, pg); in br_multicast_toin()
2355 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toex_incl() argument
2363 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toex_incl()
2367 src_ip.proto = pg->key.addr.proto; in __grp_src_toex_incl()
2370 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toex_incl()
2376 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toex_incl()
2382 br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toex_incl()
2385 __grp_src_delete_marked(pg); in __grp_src_toex_incl()
2387 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_incl()
2399 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toex_excl() argument
2408 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toex_excl()
2412 src_ip.proto = pg->key.addr.proto; in __grp_src_toex_excl()
2415 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toex_excl()
2419 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toex_excl()
2421 __grp_src_mod_timer(ent, pg->timer.expires); in __grp_src_toex_excl()
2431 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toex_excl()
2435 if (__grp_src_delete_marked(pg)) in __grp_src_toex_excl()
2438 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_excl()
2445 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_toex() argument
2451 switch (pg->filter_mode) { in br_multicast_toex()
2453 __grp_src_toex_incl(brmctx, pmctx, pg, h_addr, srcs, nsrcs, in br_multicast_toex()
2455 br_multicast_star_g_handle_mode(pg, MCAST_EXCLUDE); in br_multicast_toex()
2459 changed = __grp_src_toex_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toex()
2464 pg->filter_mode = MCAST_EXCLUDE; in br_multicast_toex()
2465 mod_timer(&pg->timer, jiffies + br_multicast_gmi(brmctx)); in br_multicast_toex()
2475 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_block_incl() argument
2483 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_block_incl()
2487 src_ip.proto = pg->key.addr.proto; in __grp_src_block_incl()
2490 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_block_incl()
2497 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_block_incl()
2502 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_incl()
2513 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_block_excl() argument
2521 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_block_excl()
2525 src_ip.proto = pg->key.addr.proto; in __grp_src_block_excl()
2528 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_block_excl()
2530 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_block_excl()
2532 __grp_src_mod_timer(ent, pg->timer.expires); in __grp_src_block_excl()
2542 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_block_excl()
2547 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_excl()
2554 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_block() argument
2559 switch (pg->filter_mode) { in br_multicast_block()
2561 changed = __grp_src_block_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2565 changed = __grp_src_block_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2570 if ((pg->filter_mode == MCAST_INCLUDE && hlist_empty(&pg->src_list)) || in br_multicast_block()
2571 br_multicast_eht_should_del_pg(pg)) { in br_multicast_block()
2572 if (br_multicast_eht_should_del_pg(pg)) in br_multicast_block()
2573 pg->flags |= MDB_PG_FLAGS_FAST_LEAVE; in br_multicast_block()
2574 br_multicast_find_del_pg(pg->key.port->br, pg); in br_multicast_block()
2590 struct net_bridge_port_group *pg; in br_multicast_find_port() local
2592 for (pg = mlock_dereference(mp->ports, br); in br_multicast_find_port()
2593 pg; in br_multicast_find_port()
2594 pg = mlock_dereference(pg->next, br)) in br_multicast_find_port()
2595 if (br_port_group_equal(pg, p, src)) in br_multicast_find_port()
2596 return pg; in br_multicast_find_port()
2608 struct net_bridge_port_group *pg; in br_ip4_multicast_igmp3_report() local
2675 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip4_multicast_igmp3_report()
2676 if (!pg || (pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_ip4_multicast_igmp3_report()
2683 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2688 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2693 changed = br_multicast_isexc(brmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2698 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2703 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2708 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2714 br_mdb_notify(brmctx->br->dev, mdst, pg, RTM_NEWMDB); in br_ip4_multicast_igmp3_report()
2730 struct net_bridge_port_group *pg; in br_ip6_multicast_mld2_report() local
2813 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip6_multicast_mld2_report()
2814 if (!pg || (pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_ip6_multicast_mld2_report()
2819 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2825 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2831 changed = br_multicast_isexc(brmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2837 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2843 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2849 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2856 br_mdb_notify(brmctx->br->dev, mdst, pg, RTM_NEWMDB); in br_ip6_multicast_mld2_report()