Lines Matching refs:pg
82 struct net_bridge_port_group *pg);
208 br_multicast_pg_to_port_ctx(const struct net_bridge_port_group *pg) in br_multicast_pg_to_port_ctx() argument
210 struct net_bridge_mcast_port *pmctx = &pg->key.port->multicast_ctx; in br_multicast_pg_to_port_ctx()
213 lockdep_assert_held_once(&pg->key.port->br->multicast_lock); in br_multicast_pg_to_port_ctx()
216 if (!pg->key.addr.vid || in br_multicast_pg_to_port_ctx()
217 !br_opt_get(pg->key.port->br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) in br_multicast_pg_to_port_ctx()
227 vlan = br_vlan_find(nbp_vlan_group_rcu(pg->key.port), pg->key.addr.vid); in br_multicast_pg_to_port_ctx()
269 struct net_bridge_port_group *pg, in __fwd_add_star_excl() argument
278 sg_key.port = pg->key.port; in __fwd_add_star_excl()
284 sg_ip, pg->eth_addr, in __fwd_add_star_excl()
293 static void __fwd_del_star_excl(struct net_bridge_port_group *pg, in __fwd_del_star_excl() argument
297 struct net_bridge *br = pg->key.port->br; in __fwd_del_star_excl()
301 sg_key.port = pg->key.port; in __fwd_del_star_excl()
319 void br_multicast_star_g_handle_mode(struct net_bridge_port_group *pg, in br_multicast_star_g_handle_mode() argument
322 struct net_bridge *br = pg->key.port->br; in br_multicast_star_g_handle_mode()
328 if (WARN_ON(!br_multicast_is_star_g(&pg->key.addr))) in br_multicast_star_g_handle_mode()
331 mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_star_g_handle_mode()
334 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_star_g_handle_mode()
339 sg_ip = pg->key.addr; in br_multicast_star_g_handle_mode()
346 if (pg_lst == pg) in br_multicast_star_g_handle_mode()
354 __fwd_del_star_excl(pg, &sg_ip); in br_multicast_star_g_handle_mode()
357 __fwd_add_star_excl(pmctx, pg, &sg_ip); in br_multicast_star_g_handle_mode()
386 struct net_bridge_port_group *pg; in br_multicast_star_g_host_state() local
394 for (pg = mlock_dereference(star_mp->ports, br); in br_multicast_star_g_host_state()
395 pg; in br_multicast_star_g_host_state()
396 pg = mlock_dereference(pg->next, br)) { in br_multicast_star_g_host_state()
399 hlist_for_each_entry(src_ent, &pg->src_list, node) { in br_multicast_star_g_host_state()
451 struct net_bridge_port_group *pg; in br_multicast_sg_add_exclude_ports() local
463 for (pg = mlock_dereference(star_mp->ports, br); in br_multicast_sg_add_exclude_ports()
464 pg; in br_multicast_sg_add_exclude_ports()
465 pg = mlock_dereference(pg->next, br)) { in br_multicast_sg_add_exclude_ports()
468 if (pg == sg || pg->filter_mode == MCAST_INCLUDE) in br_multicast_sg_add_exclude_ports()
471 sg_key.port = pg->key.port; in br_multicast_sg_add_exclude_ports()
475 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_sg_add_exclude_ports()
503 pmctx = br_multicast_pg_to_port_ctx(src->pg); in br_multicast_fwd_src_add()
507 sg_ip = src->pg->key.addr; in br_multicast_fwd_src_add()
511 src->pg->eth_addr, MCAST_INCLUDE, false, in br_multicast_fwd_src_add()
525 star_mp = br_mdb_ip_get(src->br, &src->pg->key.addr); in br_multicast_fwd_src_add()
535 struct net_bridge_port_group *p, *pg = src->pg; in br_multicast_fwd_src_remove() local
541 sg_ip = pg->key.addr; in br_multicast_fwd_src_remove()
551 if (!br_port_group_equal(p, pg->key.port, pg->eth_addr)) in br_multicast_fwd_src_remove()
576 sg_key.addr = src->pg->key.addr; in br_multicast_fwd_src_handle()
578 sg_key.port = src->pg->key.port; in br_multicast_fwd_src_handle()
656 struct net_bridge *br = src->pg->key.port->br; in br_multicast_del_group_src()
660 src->pg->src_ents--; in br_multicast_del_group_src()
667 struct net_bridge_port_group *pg; in br_multicast_destroy_port_group() local
669 pg = container_of(gc, struct net_bridge_port_group, mcast_gc); in br_multicast_destroy_port_group()
670 WARN_ON(!hlist_unhashed(&pg->mglist)); in br_multicast_destroy_port_group()
671 WARN_ON(!hlist_empty(&pg->src_list)); in br_multicast_destroy_port_group()
673 del_timer_sync(&pg->rexmit_timer); in br_multicast_destroy_port_group()
674 del_timer_sync(&pg->timer); in br_multicast_destroy_port_group()
675 kfree_rcu(pg, rcu); in br_multicast_destroy_port_group()
679 struct net_bridge_port_group *pg, in br_multicast_del_pg() argument
682 struct net_bridge *br = pg->key.port->br; in br_multicast_del_pg()
686 rcu_assign_pointer(*pp, pg->next); in br_multicast_del_pg()
687 hlist_del_init(&pg->mglist); in br_multicast_del_pg()
688 br_multicast_eht_clean_sets(pg); in br_multicast_del_pg()
689 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) in br_multicast_del_pg()
691 br_mdb_notify(br->dev, mp, pg, RTM_DELMDB); in br_multicast_del_pg()
693 rhashtable_remove_fast(&br->sg_port_tbl, &pg->rhnode, in br_multicast_del_pg()
697 br_multicast_star_g_handle_mode(pg, MCAST_INCLUDE); in br_multicast_del_pg()
699 hlist_add_head(&pg->mcast_gc.gc_node, &br->mcast_gc_list); in br_multicast_del_pg()
707 struct net_bridge_port_group *pg) in br_multicast_find_del_pg() argument
713 mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_find_del_pg()
720 if (p != pg) in br_multicast_find_del_pg()
723 br_multicast_del_pg(mp, pg, pp); in br_multicast_find_del_pg()
732 struct net_bridge_port_group *pg = from_timer(pg, t, timer); in br_multicast_port_group_expired() local
734 struct net_bridge *br = pg->key.port->br; in br_multicast_port_group_expired()
739 if (!netif_running(br->dev) || timer_pending(&pg->timer) || in br_multicast_port_group_expired()
740 hlist_unhashed(&pg->mglist) || pg->flags & MDB_PG_FLAGS_PERMANENT) in br_multicast_port_group_expired()
743 changed = !!(pg->filter_mode == MCAST_EXCLUDE); in br_multicast_port_group_expired()
744 pg->filter_mode = MCAST_INCLUDE; in br_multicast_port_group_expired()
745 hlist_for_each_entry_safe(src_ent, tmp, &pg->src_list, node) { in br_multicast_port_group_expired()
752 if (hlist_empty(&pg->src_list)) { in br_multicast_port_group_expired()
753 br_multicast_find_del_pg(br, pg); in br_multicast_port_group_expired()
755 struct net_bridge_mdb_entry *mp = br_mdb_ip_get(br, &pg->key.addr); in br_multicast_port_group_expired()
757 if (changed && br_multicast_is_star_g(&pg->key.addr)) in br_multicast_port_group_expired()
758 br_multicast_star_g_handle_mode(pg, MCAST_INCLUDE); in br_multicast_port_group_expired()
762 br_mdb_notify(br->dev, mp, pg, RTM_NEWMDB); in br_multicast_port_group_expired()
801 struct net_bridge_port_group *pg, in br_ip4_multicast_alloc_query() argument
807 struct net_bridge_port *p = pg ? pg->key.port : NULL; in br_ip4_multicast_alloc_query()
824 if (pg && with_srcs) { in br_ip4_multicast_alloc_query()
827 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip4_multicast_alloc_query()
911 if (!pg || !with_srcs) in br_ip4_multicast_alloc_query()
915 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip4_multicast_alloc_query()
948 struct net_bridge_port_group *pg, in br_ip6_multicast_alloc_query() argument
955 struct net_bridge_port *p = pg ? pg->key.port : NULL; in br_ip6_multicast_alloc_query()
974 if (pg && with_srcs) { in br_ip6_multicast_alloc_query()
977 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip6_multicast_alloc_query()
1074 if (!pg || !with_srcs) in br_ip6_multicast_alloc_query()
1078 hlist_for_each_entry(ent, &pg->src_list, node) { in br_ip6_multicast_alloc_query()
1113 struct net_bridge_port_group *pg, in br_multicast_alloc_query() argument
1125 return br_ip4_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1140 return br_ip6_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1190 struct net_bridge_port_group *pg; in br_multicast_group_src_expired() local
1198 pg = src->pg; in br_multicast_group_src_expired()
1199 if (pg->filter_mode == MCAST_INCLUDE) { in br_multicast_group_src_expired()
1201 if (!hlist_empty(&pg->src_list)) in br_multicast_group_src_expired()
1203 br_multicast_find_del_pg(br, pg); in br_multicast_group_src_expired()
1213 br_multicast_find_group_src(struct net_bridge_port_group *pg, struct br_ip *ip) in br_multicast_find_group_src() argument
1219 hlist_for_each_entry(ent, &pg->src_list, node) in br_multicast_find_group_src()
1225 hlist_for_each_entry(ent, &pg->src_list, node) in br_multicast_find_group_src()
1236 br_multicast_new_group_src(struct net_bridge_port_group *pg, struct br_ip *src_ip) in br_multicast_new_group_src() argument
1240 if (unlikely(pg->src_ents >= PG_SRC_ENT_LIMIT)) in br_multicast_new_group_src()
1262 grp_src->pg = pg; in br_multicast_new_group_src()
1263 grp_src->br = pg->key.port->br; in br_multicast_new_group_src()
1268 hlist_add_head_rcu(&grp_src->node, &pg->src_list); in br_multicast_new_group_src()
1269 pg->src_ents++; in br_multicast_new_group_src()
1410 struct net_bridge_port_group *pg; in br_multicast_add_group() local
1414 pg = __br_multicast_add_group(brmctx, pmctx, group, src, filter_mode, in br_multicast_add_group()
1417 err = PTR_ERR_OR_ZERO(pg); in br_multicast_add_group()
1624 struct net_bridge_port_group *pg, in __br_multicast_send_query() argument
1640 skb = br_multicast_alloc_query(brmctx, pmctx, pg, ip_dst, group, in __br_multicast_send_query()
1780 struct net_bridge_port_group *pg = from_timer(pg, t, rexmit_timer); in br_multicast_port_group_rexmit() local
1782 struct net_bridge *br = pg->key.port->br; in br_multicast_port_group_rexmit()
1788 if (!netif_running(br->dev) || hlist_unhashed(&pg->mglist) || in br_multicast_port_group_rexmit()
1792 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_port_group_rexmit()
1799 if (pg->key.addr.proto == htons(ETH_P_IP)) in br_multicast_port_group_rexmit()
1809 if (pg->grp_query_rexmit_cnt) { in br_multicast_port_group_rexmit()
1810 pg->grp_query_rexmit_cnt--; in br_multicast_port_group_rexmit()
1811 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1812 &pg->key.addr, false, 1, NULL); in br_multicast_port_group_rexmit()
1814 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1815 &pg->key.addr, true, 0, &need_rexmit); in br_multicast_port_group_rexmit()
1817 if (pg->grp_query_rexmit_cnt || need_rexmit) in br_multicast_port_group_rexmit()
1818 mod_timer(&pg->rexmit_timer, jiffies + in br_multicast_port_group_rexmit()
1888 struct net_bridge_port_group *pg; in br_multicast_del_port() local
1894 hlist_for_each_entry_safe(pg, n, &port->mglist, mglist) in br_multicast_del_port()
1895 br_multicast_find_del_pg(br, pg); in br_multicast_del_port()
1943 struct net_bridge_port_group *pg; in __br_multicast_disable_port_ctx() local
1947 hlist_for_each_entry_safe(pg, n, &pmctx->port->mglist, mglist) in __br_multicast_disable_port_ctx()
1948 if (!(pg->flags & MDB_PG_FLAGS_PERMANENT) && in __br_multicast_disable_port_ctx()
1950 pg->key.addr.vid == pmctx->vlan->vid)) in __br_multicast_disable_port_ctx()
1951 br_multicast_find_del_pg(pmctx->port->br, pg); in __br_multicast_disable_port_ctx()
1971 static int __grp_src_delete_marked(struct net_bridge_port_group *pg) in __grp_src_delete_marked() argument
1977 hlist_for_each_entry_safe(ent, tmp, &pg->src_list, node) in __grp_src_delete_marked()
1995 struct net_bridge_port_group *pg) in __grp_src_query_marked_and_rexmit() argument
2006 if (pg->key.addr.proto == htons(ETH_P_IP)) in __grp_src_query_marked_and_rexmit()
2014 hlist_for_each_entry(ent, &pg->src_list, node) { in __grp_src_query_marked_and_rexmit()
2031 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_src_query_marked_and_rexmit()
2032 &pg->key.addr, true, 1, NULL); in __grp_src_query_marked_and_rexmit()
2035 if (!timer_pending(&pg->rexmit_timer) || in __grp_src_query_marked_and_rexmit()
2036 time_after(pg->rexmit_timer.expires, lmi)) in __grp_src_query_marked_and_rexmit()
2037 mod_timer(&pg->rexmit_timer, lmi); in __grp_src_query_marked_and_rexmit()
2042 struct net_bridge_port_group *pg) in __grp_send_query_and_rexmit() argument
2051 if (pg->key.addr.proto == htons(ETH_P_IP)) in __grp_send_query_and_rexmit()
2061 pg->grp_query_rexmit_cnt = brmctx->multicast_last_member_count - 1; in __grp_send_query_and_rexmit()
2062 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_send_query_and_rexmit()
2063 &pg->key.addr, false, 0, NULL); in __grp_send_query_and_rexmit()
2064 if (!timer_pending(&pg->rexmit_timer) || in __grp_send_query_and_rexmit()
2065 time_after(pg->rexmit_timer.expires, lmi)) in __grp_send_query_and_rexmit()
2066 mod_timer(&pg->rexmit_timer, lmi); in __grp_send_query_and_rexmit()
2069 if (pg->filter_mode == MCAST_EXCLUDE && in __grp_send_query_and_rexmit()
2070 (!timer_pending(&pg->timer) || in __grp_send_query_and_rexmit()
2071 time_after(pg->timer.expires, now + br_multicast_lmqt(brmctx)))) in __grp_send_query_and_rexmit()
2072 mod_timer(&pg->timer, now + br_multicast_lmqt(brmctx)); in __grp_send_query_and_rexmit()
2081 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_isinc_allow() argument
2092 src_ip.proto = pg->key.addr.proto; in br_multicast_isinc_allow()
2095 ent = br_multicast_find_group_src(pg, &src_ip); in br_multicast_isinc_allow()
2097 ent = br_multicast_new_group_src(pg, &src_ip); in br_multicast_isinc_allow()
2106 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_isinc_allow()
2119 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_isexc_incl() argument
2127 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_isexc_incl()
2131 src_ip.proto = pg->key.addr.proto; in __grp_src_isexc_incl()
2134 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_isexc_incl()
2138 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_isexc_incl()
2143 br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_isexc_incl()
2146 __grp_src_delete_marked(pg); in __grp_src_isexc_incl()
2156 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_isexc_excl() argument
2166 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_isexc_excl()
2170 src_ip.proto = pg->key.addr.proto; in __grp_src_isexc_excl()
2173 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_isexc_excl()
2177 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_isexc_excl()
2186 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_isexc_excl()
2190 if (__grp_src_delete_marked(pg)) in __grp_src_isexc_excl()
2197 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_isexc() argument
2203 switch (pg->filter_mode) { in br_multicast_isexc()
2205 __grp_src_isexc_incl(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in br_multicast_isexc()
2207 br_multicast_star_g_handle_mode(pg, MCAST_EXCLUDE); in br_multicast_isexc()
2211 changed = __grp_src_isexc_excl(brmctx, pg, h_addr, srcs, nsrcs, in br_multicast_isexc()
2216 pg->filter_mode = MCAST_EXCLUDE; in br_multicast_isexc()
2217 mod_timer(&pg->timer, jiffies + br_multicast_gmi(brmctx)); in br_multicast_isexc()
2228 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toin_incl() argument
2232 u32 src_idx, to_send = pg->src_ents; in __grp_src_toin_incl()
2238 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toin_incl()
2242 src_ip.proto = pg->key.addr.proto; in __grp_src_toin_incl()
2245 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toin_incl()
2250 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toin_incl()
2258 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toin_incl()
2263 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_incl()
2275 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toin_excl() argument
2279 u32 src_idx, to_send = pg->src_ents; in __grp_src_toin_excl()
2285 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toin_excl()
2290 src_ip.proto = pg->key.addr.proto; in __grp_src_toin_excl()
2293 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toin_excl()
2300 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toin_excl()
2308 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toin_excl()
2313 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2315 __grp_send_query_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2322 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_toin() argument
2328 switch (pg->filter_mode) { in br_multicast_toin()
2330 changed = __grp_src_toin_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2334 changed = __grp_src_toin_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2339 if (br_multicast_eht_should_del_pg(pg)) { in br_multicast_toin()
2340 pg->flags |= MDB_PG_FLAGS_FAST_LEAVE; in br_multicast_toin()
2341 br_multicast_find_del_pg(pg->key.port->br, pg); in br_multicast_toin()
2359 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toex_incl() argument
2367 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toex_incl()
2371 src_ip.proto = pg->key.addr.proto; in __grp_src_toex_incl()
2374 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toex_incl()
2380 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toex_incl()
2386 br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toex_incl()
2389 __grp_src_delete_marked(pg); in __grp_src_toex_incl()
2391 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_incl()
2403 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_toex_excl() argument
2412 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_toex_excl()
2416 src_ip.proto = pg->key.addr.proto; in __grp_src_toex_excl()
2419 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_toex_excl()
2423 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_toex_excl()
2425 __grp_src_mod_timer(ent, pg->timer.expires); in __grp_src_toex_excl()
2435 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_toex_excl()
2439 if (__grp_src_delete_marked(pg)) in __grp_src_toex_excl()
2442 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_excl()
2449 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_toex() argument
2455 switch (pg->filter_mode) { in br_multicast_toex()
2457 __grp_src_toex_incl(brmctx, pmctx, pg, h_addr, srcs, nsrcs, in br_multicast_toex()
2459 br_multicast_star_g_handle_mode(pg, MCAST_EXCLUDE); in br_multicast_toex()
2463 changed = __grp_src_toex_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toex()
2468 pg->filter_mode = MCAST_EXCLUDE; in br_multicast_toex()
2469 mod_timer(&pg->timer, jiffies + br_multicast_gmi(brmctx)); in br_multicast_toex()
2479 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_block_incl() argument
2487 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_block_incl()
2491 src_ip.proto = pg->key.addr.proto; in __grp_src_block_incl()
2494 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_block_incl()
2501 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_block_incl()
2506 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_incl()
2517 struct net_bridge_port_group *pg, void *h_addr, in __grp_src_block_excl() argument
2525 hlist_for_each_entry(ent, &pg->src_list, node) in __grp_src_block_excl()
2529 src_ip.proto = pg->key.addr.proto; in __grp_src_block_excl()
2532 ent = br_multicast_find_group_src(pg, &src_ip); in __grp_src_block_excl()
2534 ent = br_multicast_new_group_src(pg, &src_ip); in __grp_src_block_excl()
2536 __grp_src_mod_timer(ent, pg->timer.expires); in __grp_src_block_excl()
2546 if (br_multicast_eht_handle(brmctx, pg, h_addr, srcs, nsrcs, addr_size, in __grp_src_block_excl()
2551 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_excl()
2558 struct net_bridge_port_group *pg, void *h_addr, in br_multicast_block() argument
2563 switch (pg->filter_mode) { in br_multicast_block()
2565 changed = __grp_src_block_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2569 changed = __grp_src_block_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2574 if ((pg->filter_mode == MCAST_INCLUDE && hlist_empty(&pg->src_list)) || in br_multicast_block()
2575 br_multicast_eht_should_del_pg(pg)) { in br_multicast_block()
2576 if (br_multicast_eht_should_del_pg(pg)) in br_multicast_block()
2577 pg->flags |= MDB_PG_FLAGS_FAST_LEAVE; in br_multicast_block()
2578 br_multicast_find_del_pg(pg->key.port->br, pg); in br_multicast_block()
2594 struct net_bridge_port_group *pg; in br_multicast_find_port() local
2596 for (pg = mlock_dereference(mp->ports, br); in br_multicast_find_port()
2597 pg; in br_multicast_find_port()
2598 pg = mlock_dereference(pg->next, br)) in br_multicast_find_port()
2599 if (br_port_group_equal(pg, p, src)) in br_multicast_find_port()
2600 return pg; in br_multicast_find_port()
2612 struct net_bridge_port_group *pg; in br_ip4_multicast_igmp3_report() local
2679 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip4_multicast_igmp3_report()
2680 if (!pg || (pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_ip4_multicast_igmp3_report()
2687 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2692 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2697 changed = br_multicast_isexc(brmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2702 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2707 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2712 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2718 br_mdb_notify(brmctx->br->dev, mdst, pg, RTM_NEWMDB); in br_ip4_multicast_igmp3_report()
2734 struct net_bridge_port_group *pg; in br_ip6_multicast_mld2_report() local
2817 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip6_multicast_mld2_report()
2818 if (!pg || (pg->flags & MDB_PG_FLAGS_PERMANENT)) in br_ip6_multicast_mld2_report()
2823 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2829 changed = br_multicast_isinc_allow(brmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2835 changed = br_multicast_isexc(brmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2841 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2847 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2853 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
2860 br_mdb_notify(brmctx->br->dev, mdst, pg, RTM_NEWMDB); in br_ip6_multicast_mld2_report()