Lines Matching refs:pmctx

56 					struct net_bridge_mcast_port *pmctx);
58 struct net_bridge_mcast_port *pmctx,
65 br_multicast_rport_del_notify(struct net_bridge_mcast_port *pmctx, bool deleted);
67 struct net_bridge_mcast_port *pmctx);
70 struct net_bridge_mcast_port *pmctx,
76 struct net_bridge_mcast_port *pmctx,
211 struct net_bridge_mcast_port *pmctx = &pg->key.port->multicast_ctx; in br_multicast_pg_to_port_ctx() local
230 pmctx = &vlan->port_mcast_ctx; in br_multicast_pg_to_port_ctx()
232 pmctx = NULL; in br_multicast_pg_to_port_ctx()
235 return pmctx; in br_multicast_pg_to_port_ctx()
241 struct net_bridge_mcast_port *pmctx = NULL; in br_multicast_port_vid_to_port_ctx() local
254 pmctx = &vlan->port_mcast_ctx; in br_multicast_port_vid_to_port_ctx()
258 return pmctx; in br_multicast_port_vid_to_port_ctx()
268 const struct net_bridge_mcast_port *pmctx) in br_multicast_ctx_should_use() argument
273 if (pmctx) in br_multicast_ctx_should_use()
274 return !br_multicast_port_ctx_state_disabled(pmctx); in br_multicast_ctx_should_use()
292 static void __fwd_add_star_excl(struct net_bridge_mcast_port *pmctx, in __fwd_add_star_excl() argument
301 brmctx = br_multicast_port_ctx_get_global(pmctx); in __fwd_add_star_excl()
307 src_pg = __br_multicast_add_group(brmctx, pmctx, in __fwd_add_star_excl()
348 struct net_bridge_mcast_port *pmctx; in br_multicast_star_g_handle_mode() local
358 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_star_g_handle_mode()
359 if (!pmctx) in br_multicast_star_g_handle_mode()
381 __fwd_add_star_excl(pmctx, pg, &sg_ip); in br_multicast_star_g_handle_mode()
474 struct net_bridge_mcast_port *pmctx; in br_multicast_sg_add_exclude_ports() local
499 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_sg_add_exclude_ports()
500 if (!pmctx) in br_multicast_sg_add_exclude_ports()
502 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_sg_add_exclude_ports()
504 src_pg = __br_multicast_add_group(brmctx, pmctx, in br_multicast_sg_add_exclude_ports()
518 struct net_bridge_mcast_port *pmctx; in br_multicast_fwd_src_add() local
527 pmctx = br_multicast_pg_to_port_ctx(src->pg); in br_multicast_fwd_src_add()
528 if (!pmctx) in br_multicast_fwd_src_add()
530 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_fwd_src_add()
534 sg = __br_multicast_add_group(brmctx, pmctx, &sg_ip, in br_multicast_fwd_src_add()
696 br_multicast_port_ngroups_inc_one(struct net_bridge_mcast_port *pmctx, in br_multicast_port_ngroups_inc_one() argument
700 u32 max = READ_ONCE(pmctx->mdb_max_entries); in br_multicast_port_ngroups_inc_one()
701 u32 n = READ_ONCE(pmctx->mdb_n_entries); in br_multicast_port_ngroups_inc_one()
709 WRITE_ONCE(pmctx->mdb_n_entries, n + 1); in br_multicast_port_ngroups_inc_one()
713 static void br_multicast_port_ngroups_dec_one(struct net_bridge_mcast_port *pmctx) in br_multicast_port_ngroups_dec_one() argument
715 u32 n = READ_ONCE(pmctx->mdb_n_entries); in br_multicast_port_ngroups_dec_one()
718 WRITE_ONCE(pmctx->mdb_n_entries, n - 1); in br_multicast_port_ngroups_dec_one()
725 struct net_bridge_mcast_port *pmctx; in br_multicast_port_ngroups_inc() local
744 pmctx = br_multicast_port_vid_to_port_ctx(port, group->vid); in br_multicast_port_ngroups_inc()
745 if (!pmctx) in br_multicast_port_ngroups_inc()
748 err = br_multicast_port_ngroups_inc_one(pmctx, extack, "Port-VLAN"); in br_multicast_port_ngroups_inc()
763 struct net_bridge_mcast_port *pmctx; in br_multicast_port_ngroups_dec() local
768 pmctx = br_multicast_port_vid_to_port_ctx(port, vid); in br_multicast_port_ngroups_dec()
769 if (pmctx) in br_multicast_port_ngroups_dec()
770 br_multicast_port_ngroups_dec_one(pmctx); in br_multicast_port_ngroups_dec()
775 u32 br_multicast_ngroups_get(const struct net_bridge_mcast_port *pmctx) in br_multicast_ngroups_get() argument
777 return READ_ONCE(pmctx->mdb_n_entries); in br_multicast_ngroups_get()
780 void br_multicast_ngroups_set_max(struct net_bridge_mcast_port *pmctx, u32 max) in br_multicast_ngroups_set_max() argument
782 WRITE_ONCE(pmctx->mdb_max_entries, max); in br_multicast_ngroups_set_max()
785 u32 br_multicast_ngroups_get_max(const struct net_bridge_mcast_port *pmctx) in br_multicast_ngroups_get_max() argument
787 return READ_ONCE(pmctx->mdb_max_entries); in br_multicast_ngroups_get_max()
906 struct net_bridge_mcast_port *pmctx, in __br_multicast_query_handle_vlan() argument
911 if (pmctx && br_multicast_port_ctx_is_vlan(pmctx)) in __br_multicast_query_handle_vlan()
912 vlan = pmctx->vlan; in __br_multicast_query_handle_vlan()
926 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_alloc_query() argument
975 __br_multicast_query_handle_vlan(brmctx, pmctx, skb); in br_ip4_multicast_alloc_query()
1073 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_alloc_query() argument
1125 __br_multicast_query_handle_vlan(brmctx, pmctx, skb); in br_ip6_multicast_alloc_query()
1238 struct net_bridge_mcast_port *pmctx, in br_multicast_alloc_query() argument
1251 return br_ip4_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1266 return br_ip6_multicast_alloc_query(brmctx, pmctx, pg, in br_multicast_alloc_query()
1504 struct net_bridge_mcast_port *pmctx, in __br_multicast_add_group() argument
1516 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in __br_multicast_add_group()
1523 if (!pmctx) { in __br_multicast_add_group()
1531 if (br_port_group_equal(p, pmctx->port, src)) in __br_multicast_add_group()
1533 if ((unsigned long)p->key.port < (unsigned long)pmctx->port) in __br_multicast_add_group()
1537 p = br_multicast_new_port_group(pmctx->port, group, *pp, 0, src, in __br_multicast_add_group()
1558 struct net_bridge_mcast_port *pmctx, in br_multicast_add_group() argument
1568 pg = __br_multicast_add_group(brmctx, pmctx, group, src, filter_mode, in br_multicast_add_group()
1578 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_add_group() argument
1596 return br_multicast_add_group(brmctx, pmctx, &br_group, src, in br_ip4_multicast_add_group()
1602 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_add_group() argument
1620 return br_multicast_add_group(brmctx, pmctx, &br_group, src, in br_ip6_multicast_add_group()
1634 static bool br_ip4_multicast_rport_del(struct net_bridge_mcast_port *pmctx) in br_ip4_multicast_rport_del() argument
1636 return br_multicast_rport_del(&pmctx->ip4_rlist); in br_ip4_multicast_rport_del()
1639 static bool br_ip6_multicast_rport_del(struct net_bridge_mcast_port *pmctx) in br_ip6_multicast_rport_del() argument
1642 return br_multicast_rport_del(&pmctx->ip6_rlist); in br_ip6_multicast_rport_del()
1648 static void br_multicast_router_expired(struct net_bridge_mcast_port *pmctx, in br_multicast_router_expired() argument
1652 struct net_bridge *br = pmctx->port->br; in br_multicast_router_expired()
1656 if (pmctx->multicast_router == MDB_RTR_TYPE_DISABLED || in br_multicast_router_expired()
1657 pmctx->multicast_router == MDB_RTR_TYPE_PERM || in br_multicast_router_expired()
1662 br_multicast_rport_del_notify(pmctx, del); in br_multicast_router_expired()
1669 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip4_multicast_router_expired() local
1672 br_multicast_router_expired(pmctx, t, &pmctx->ip4_rlist); in br_ip4_multicast_router_expired()
1678 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip6_multicast_router_expired() local
1681 br_multicast_router_expired(pmctx, t, &pmctx->ip6_rlist); in br_ip6_multicast_router_expired()
1777 struct net_bridge_mcast_port *pmctx, in __br_multicast_send_query() argument
1789 if (!br_multicast_ctx_should_use(brmctx, pmctx) || in __br_multicast_send_query()
1794 skb = br_multicast_alloc_query(brmctx, pmctx, pg, ip_dst, group, in __br_multicast_send_query()
1800 if (pmctx) { in __br_multicast_send_query()
1801 skb->dev = pmctx->port->dev; in __br_multicast_send_query()
1802 br_multicast_count(brmctx->br, pmctx->port, skb, igmp_type, in __br_multicast_send_query()
1805 dev_net(pmctx->port->dev), NULL, skb, NULL, skb->dev, in __br_multicast_send_query()
1845 struct net_bridge_mcast_port *pmctx, in br_multicast_send_query() argument
1853 if (!br_multicast_ctx_should_use(brmctx, pmctx) || in br_multicast_send_query()
1860 if (pmctx ? (own_query == &pmctx->ip4_own_query) : in br_multicast_send_query()
1877 if (!pmctx && querier->port_ifidx) { in br_multicast_send_query()
1883 __br_multicast_send_query(brmctx, pmctx, NULL, NULL, &br_group, false, in br_multicast_send_query()
1894 br_multicast_port_query_expired(struct net_bridge_mcast_port *pmctx, in br_multicast_port_query_expired() argument
1897 struct net_bridge *br = pmctx->port->br; in br_multicast_port_query_expired()
1901 if (br_multicast_port_ctx_state_stopped(pmctx)) in br_multicast_port_query_expired()
1904 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_port_query_expired()
1908 br_multicast_send_query(brmctx, pmctx, query); in br_multicast_port_query_expired()
1916 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip4_multicast_port_query_expired() local
1919 br_multicast_port_query_expired(pmctx, &pmctx->ip4_own_query); in br_ip4_multicast_port_query_expired()
1925 struct net_bridge_mcast_port *pmctx = from_timer(pmctx, t, in br_ip6_multicast_port_query_expired() local
1928 br_multicast_port_query_expired(pmctx, &pmctx->ip6_own_query); in br_ip6_multicast_port_query_expired()
1937 struct net_bridge_mcast_port *pmctx; in br_multicast_port_group_rexmit() local
1946 pmctx = br_multicast_pg_to_port_ctx(pg); in br_multicast_port_group_rexmit()
1947 if (!pmctx) in br_multicast_port_group_rexmit()
1949 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_port_group_rexmit()
1965 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1968 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in br_multicast_port_group_rexmit()
1993 struct net_bridge_mcast_port *pmctx) in br_multicast_port_ctx_init() argument
1995 pmctx->port = port; in br_multicast_port_ctx_init()
1996 pmctx->vlan = vlan; in br_multicast_port_ctx_init()
1997 pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY; in br_multicast_port_ctx_init()
1998 timer_setup(&pmctx->ip4_mc_router_timer, in br_multicast_port_ctx_init()
2000 timer_setup(&pmctx->ip4_own_query.timer, in br_multicast_port_ctx_init()
2003 timer_setup(&pmctx->ip6_mc_router_timer, in br_multicast_port_ctx_init()
2005 timer_setup(&pmctx->ip6_own_query.timer, in br_multicast_port_ctx_init()
2010 void br_multicast_port_ctx_deinit(struct net_bridge_mcast_port *pmctx) in br_multicast_port_ctx_deinit() argument
2013 del_timer_sync(&pmctx->ip6_mc_router_timer); in br_multicast_port_ctx_deinit()
2015 del_timer_sync(&pmctx->ip4_mc_router_timer); in br_multicast_port_ctx_deinit()
2066 static void __br_multicast_enable_port_ctx(struct net_bridge_mcast_port *pmctx) in __br_multicast_enable_port_ctx() argument
2068 struct net_bridge *br = pmctx->port->br; in __br_multicast_enable_port_ctx()
2071 brmctx = br_multicast_port_ctx_get_global(pmctx); in __br_multicast_enable_port_ctx()
2076 br_multicast_enable(&pmctx->ip4_own_query); in __br_multicast_enable_port_ctx()
2078 br_multicast_enable(&pmctx->ip6_own_query); in __br_multicast_enable_port_ctx()
2080 if (pmctx->multicast_router == MDB_RTR_TYPE_PERM) { in __br_multicast_enable_port_ctx()
2081 br_ip4_multicast_add_router(brmctx, pmctx); in __br_multicast_enable_port_ctx()
2082 br_ip6_multicast_add_router(brmctx, pmctx); in __br_multicast_enable_port_ctx()
2085 if (br_multicast_port_ctx_is_vlan(pmctx)) { in __br_multicast_enable_port_ctx()
2097 hlist_for_each_entry(pg, &pmctx->port->mglist, mglist) { in __br_multicast_enable_port_ctx()
2098 if (pg->key.addr.vid == pmctx->vlan->vid) in __br_multicast_enable_port_ctx()
2101 WRITE_ONCE(pmctx->mdb_n_entries, n); in __br_multicast_enable_port_ctx()
2114 static void __br_multicast_disable_port_ctx(struct net_bridge_mcast_port *pmctx) in __br_multicast_disable_port_ctx() argument
2120 hlist_for_each_entry_safe(pg, n, &pmctx->port->mglist, mglist) in __br_multicast_disable_port_ctx()
2122 (!br_multicast_port_ctx_is_vlan(pmctx) || in __br_multicast_disable_port_ctx()
2123 pg->key.addr.vid == pmctx->vlan->vid)) in __br_multicast_disable_port_ctx()
2124 br_multicast_find_del_pg(pmctx->port->br, pg); in __br_multicast_disable_port_ctx()
2126 del |= br_ip4_multicast_rport_del(pmctx); in __br_multicast_disable_port_ctx()
2127 del_timer(&pmctx->ip4_mc_router_timer); in __br_multicast_disable_port_ctx()
2128 del_timer(&pmctx->ip4_own_query.timer); in __br_multicast_disable_port_ctx()
2129 del |= br_ip6_multicast_rport_del(pmctx); in __br_multicast_disable_port_ctx()
2131 del_timer(&pmctx->ip6_mc_router_timer); in __br_multicast_disable_port_ctx()
2132 del_timer(&pmctx->ip6_own_query.timer); in __br_multicast_disable_port_ctx()
2134 br_multicast_rport_del_notify(pmctx, del); in __br_multicast_disable_port_ctx()
2167 struct net_bridge_mcast_port *pmctx, in __grp_src_query_marked_and_rexmit() argument
2204 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_src_query_marked_and_rexmit()
2214 struct net_bridge_mcast_port *pmctx, in __grp_send_query_and_rexmit() argument
2235 __br_multicast_send_query(brmctx, pmctx, pg, &pg->key.addr, in __grp_send_query_and_rexmit()
2400 struct net_bridge_mcast_port *pmctx, in __grp_src_toin_incl() argument
2436 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_incl()
2447 struct net_bridge_mcast_port *pmctx, in __grp_src_toin_excl() argument
2486 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2488 __grp_send_query_and_rexmit(brmctx, pmctx, pg); in __grp_src_toin_excl()
2494 struct net_bridge_mcast_port *pmctx, in br_multicast_toin() argument
2503 changed = __grp_src_toin_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2507 changed = __grp_src_toin_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toin()
2531 struct net_bridge_mcast_port *pmctx, in __grp_src_toex_incl() argument
2564 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_incl()
2575 struct net_bridge_mcast_port *pmctx, in __grp_src_toex_excl() argument
2615 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_toex_excl()
2621 struct net_bridge_mcast_port *pmctx, in br_multicast_toex() argument
2630 __grp_src_toex_incl(brmctx, pmctx, pg, h_addr, srcs, nsrcs, in br_multicast_toex()
2636 changed = __grp_src_toex_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_toex()
2651 struct net_bridge_mcast_port *pmctx, in __grp_src_block_incl() argument
2679 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_incl()
2689 struct net_bridge_mcast_port *pmctx, in __grp_src_block_excl() argument
2724 __grp_src_query_marked_and_rexmit(brmctx, pmctx, pg); in __grp_src_block_excl()
2730 struct net_bridge_mcast_port *pmctx, in br_multicast_block() argument
2738 changed = __grp_src_block_incl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2742 changed = __grp_src_block_excl(brmctx, pmctx, pg, h_addr, srcs, in br_multicast_block()
2779 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_igmp3_report() argument
2830 if (!pmctx || igmpv2) { in br_ip4_multicast_igmp3_report()
2831 br_ip4_multicast_leave_group(brmctx, pmctx, in br_ip4_multicast_igmp3_report()
2836 err = br_ip4_multicast_add_group(brmctx, pmctx, group, in br_ip4_multicast_igmp3_report()
2842 if (!pmctx || igmpv2) in br_ip4_multicast_igmp3_report()
2846 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip4_multicast_igmp3_report()
2852 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip4_multicast_igmp3_report()
2875 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2880 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2885 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip4_multicast_igmp3_report()
2901 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_mld2_report() argument
2966 if (!pmctx || mldv1) { in br_ip6_multicast_mld2_report()
2967 br_ip6_multicast_leave_group(brmctx, pmctx, in br_ip6_multicast_mld2_report()
2973 err = br_ip6_multicast_add_group(brmctx, pmctx, in br_ip6_multicast_mld2_report()
2980 if (!pmctx || mldv1) in br_ip6_multicast_mld2_report()
2984 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip6_multicast_mld2_report()
2990 pg = br_multicast_find_port(mdst, pmctx->port, src); in br_ip6_multicast_mld2_report()
3014 changed = br_multicast_toin(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
3020 changed = br_multicast_toex(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
3026 changed = br_multicast_block(brmctx, pmctx, pg, h_addr, in br_ip6_multicast_mld2_report()
3043 struct net_bridge_mcast_port *pmctx, in br_multicast_select_querier() argument
3046 int port_ifidx = pmctx ? pmctx->port->dev->ifindex : 0; in br_multicast_select_querier()
3223 struct net_bridge_mcast_port *pmctx; in br_multicast_rport_from_node() local
3227 pmctx = hlist_entry(rlist, struct net_bridge_mcast_port, in br_multicast_rport_from_node()
3231 pmctx = hlist_entry(rlist, struct net_bridge_mcast_port, in br_multicast_rport_from_node()
3234 return pmctx->port; in br_multicast_rport_from_node()
3259 static bool br_multicast_no_router_otherpf(struct net_bridge_mcast_port *pmctx, in br_multicast_no_router_otherpf() argument
3263 if (rnode != &pmctx->ip6_rlist) in br_multicast_no_router_otherpf()
3264 return hlist_unhashed(&pmctx->ip6_rlist); in br_multicast_no_router_otherpf()
3266 return hlist_unhashed(&pmctx->ip4_rlist); in br_multicast_no_router_otherpf()
3277 struct net_bridge_mcast_port *pmctx, in br_multicast_add_router() argument
3286 slot = br_multicast_get_rport_slot(brmctx, pmctx->port, mc_router_list); in br_multicast_add_router()
3297 if (br_multicast_no_router_otherpf(pmctx, rlist)) { in br_multicast_add_router()
3298 br_rtr_notify(pmctx->port->br->dev, pmctx, RTM_NEWMDB); in br_multicast_add_router()
3299 br_port_mc_router_state_change(pmctx->port, true); in br_multicast_add_router()
3308 struct net_bridge_mcast_port *pmctx) in br_ip4_multicast_add_router() argument
3310 br_multicast_add_router(brmctx, pmctx, &pmctx->ip4_rlist, in br_ip4_multicast_add_router()
3319 struct net_bridge_mcast_port *pmctx) in br_ip6_multicast_add_router() argument
3322 br_multicast_add_router(brmctx, pmctx, &pmctx->ip6_rlist, in br_ip6_multicast_add_router()
3328 struct net_bridge_mcast_port *pmctx, in br_multicast_mark_router() argument
3335 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_multicast_mark_router()
3338 if (!pmctx) { in br_multicast_mark_router()
3348 if (pmctx->multicast_router == MDB_RTR_TYPE_DISABLED || in br_multicast_mark_router()
3349 pmctx->multicast_router == MDB_RTR_TYPE_PERM) in br_multicast_mark_router()
3352 br_multicast_add_router(brmctx, pmctx, rlist, mc_router_list); in br_multicast_mark_router()
3357 struct net_bridge_mcast_port *pmctx) in br_ip4_multicast_mark_router() argument
3362 if (pmctx) { in br_ip4_multicast_mark_router()
3363 timer = &pmctx->ip4_mc_router_timer; in br_ip4_multicast_mark_router()
3364 rlist = &pmctx->ip4_rlist; in br_ip4_multicast_mark_router()
3367 br_multicast_mark_router(brmctx, pmctx, timer, rlist, in br_ip4_multicast_mark_router()
3372 struct net_bridge_mcast_port *pmctx) in br_ip6_multicast_mark_router() argument
3378 if (pmctx) { in br_ip6_multicast_mark_router()
3379 timer = &pmctx->ip6_mc_router_timer; in br_ip6_multicast_mark_router()
3380 rlist = &pmctx->ip6_rlist; in br_ip6_multicast_mark_router()
3383 br_multicast_mark_router(brmctx, pmctx, timer, rlist, in br_ip6_multicast_mark_router()
3390 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_query_received() argument
3395 if (!br_multicast_select_querier(brmctx, pmctx, saddr)) in br_ip4_multicast_query_received()
3399 br_ip4_multicast_mark_router(brmctx, pmctx); in br_ip4_multicast_query_received()
3405 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_query_received() argument
3410 if (!br_multicast_select_querier(brmctx, pmctx, saddr)) in br_ip6_multicast_query_received()
3414 br_ip6_multicast_mark_router(brmctx, pmctx); in br_ip6_multicast_query_received()
3419 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_query() argument
3436 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip4_multicast_query()
3465 br_ip4_multicast_query_received(brmctx, pmctx, in br_ip4_multicast_query()
3500 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_query() argument
3519 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_ip6_multicast_query()
3553 br_ip6_multicast_query_received(brmctx, pmctx, in br_ip6_multicast_query()
3591 struct net_bridge_mcast_port *pmctx, in br_multicast_leave_group() argument
3603 if (!br_multicast_ctx_should_use(brmctx, pmctx)) in br_multicast_leave_group()
3610 if (pmctx && (pmctx->port->flags & BR_MULTICAST_FAST_LEAVE)) { in br_multicast_leave_group()
3616 if (!br_port_group_equal(p, pmctx->port, src)) in br_multicast_leave_group()
3632 __br_multicast_send_query(brmctx, pmctx, NULL, NULL, &mp->addr, in br_multicast_leave_group()
3641 p != NULL && pmctx != NULL; in br_multicast_leave_group()
3643 if (!br_port_group_equal(p, pmctx->port, src)) in br_multicast_leave_group()
3661 if (!pmctx) { in br_multicast_leave_group()
3675 if (p->key.port != pmctx->port) in br_multicast_leave_group()
3692 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_leave_group() argument
3703 own_query = pmctx ? &pmctx->ip4_own_query : &brmctx->ip4_own_query; in br_ip4_multicast_leave_group()
3710 br_multicast_leave_group(brmctx, pmctx, &br_group, in br_ip4_multicast_leave_group()
3717 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_leave_group() argument
3728 own_query = pmctx ? &pmctx->ip6_own_query : &brmctx->ip6_own_query; in br_ip6_multicast_leave_group()
3735 br_multicast_leave_group(brmctx, pmctx, &br_group, in br_ip6_multicast_leave_group()
3775 struct net_bridge_mcast_port *pmctx, in br_multicast_pim() argument
3787 br_ip4_multicast_mark_router(brmctx, pmctx); in br_multicast_pim()
3792 struct net_bridge_mcast_port *pmctx, in br_ip4_multicast_mrd_rcv() argument
3800 br_ip4_multicast_mark_router(brmctx, pmctx); in br_ip4_multicast_mrd_rcv()
3807 struct net_bridge_mcast_port *pmctx, in br_multicast_ipv4_rcv() argument
3811 struct net_bridge_port *p = pmctx ? pmctx->port : NULL; in br_multicast_ipv4_rcv()
3823 br_multicast_pim(brmctx, pmctx, skb); in br_multicast_ipv4_rcv()
3825 br_ip4_multicast_mrd_rcv(brmctx, pmctx, skb); in br_multicast_ipv4_rcv()
3842 err = br_ip4_multicast_add_group(brmctx, pmctx, ih->group, vid, in br_multicast_ipv4_rcv()
3846 err = br_ip4_multicast_igmp3_report(brmctx, pmctx, skb, vid); in br_multicast_ipv4_rcv()
3849 br_ip4_multicast_query(brmctx, pmctx, skb, vid); in br_multicast_ipv4_rcv()
3852 br_ip4_multicast_leave_group(brmctx, pmctx, ih->group, vid, src); in br_multicast_ipv4_rcv()
3864 struct net_bridge_mcast_port *pmctx, in br_ip6_multicast_mrd_rcv() argument
3871 br_ip6_multicast_mark_router(brmctx, pmctx); in br_ip6_multicast_mrd_rcv()
3876 struct net_bridge_mcast_port *pmctx, in br_multicast_ipv6_rcv() argument
3880 struct net_bridge_port *p = pmctx ? pmctx->port : NULL; in br_multicast_ipv6_rcv()
3892 br_ip6_multicast_mrd_rcv(brmctx, pmctx, skb); in br_multicast_ipv6_rcv()
3907 err = br_ip6_multicast_add_group(brmctx, pmctx, &mld->mld_mca, in br_multicast_ipv6_rcv()
3911 err = br_ip6_multicast_mld2_report(brmctx, pmctx, skb, vid); in br_multicast_ipv6_rcv()
3914 err = br_ip6_multicast_query(brmctx, pmctx, skb, vid); in br_multicast_ipv6_rcv()
3918 br_ip6_multicast_leave_group(brmctx, pmctx, &mld->mld_mca, vid, in br_multicast_ipv6_rcv()
3931 struct net_bridge_mcast_port **pmctx, in br_multicast_rcv() argument
3952 *pmctx = NULL; in br_multicast_rcv()
3956 *pmctx = &vlan->port_mcast_ctx; in br_multicast_rcv()
3965 ret = br_multicast_ipv4_rcv(*brmctx, *pmctx, skb, vid); in br_multicast_rcv()
3969 ret = br_multicast_ipv6_rcv(*brmctx, *pmctx, skb, vid); in br_multicast_rcv()
4401 br_multicast_rport_del_notify(struct net_bridge_mcast_port *pmctx, bool deleted) in br_multicast_rport_del_notify() argument
4409 if (!hlist_unhashed(&pmctx->ip4_rlist)) in br_multicast_rport_del_notify()
4412 if (!hlist_unhashed(&pmctx->ip6_rlist)) in br_multicast_rport_del_notify()
4416 br_rtr_notify(pmctx->port->br->dev, pmctx, RTM_DELMDB); in br_multicast_rport_del_notify()
4417 br_port_mc_router_state_change(pmctx->port, false); in br_multicast_rport_del_notify()
4420 if (pmctx->multicast_router == MDB_RTR_TYPE_TEMP) in br_multicast_rport_del_notify()
4421 pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY; in br_multicast_rport_del_notify()
4424 int br_multicast_set_port_router(struct net_bridge_mcast_port *pmctx, in br_multicast_set_port_router() argument
4432 brmctx = br_multicast_port_ctx_get_global(pmctx); in br_multicast_set_port_router()
4434 if (pmctx->multicast_router == val) { in br_multicast_set_port_router()
4436 if (pmctx->multicast_router == MDB_RTR_TYPE_TEMP) { in br_multicast_set_port_router()
4437 mod_timer(&pmctx->ip4_mc_router_timer, in br_multicast_set_port_router()
4440 mod_timer(&pmctx->ip6_mc_router_timer, in br_multicast_set_port_router()
4449 pmctx->multicast_router = MDB_RTR_TYPE_DISABLED; in br_multicast_set_port_router()
4450 del |= br_ip4_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4451 del_timer(&pmctx->ip4_mc_router_timer); in br_multicast_set_port_router()
4452 del |= br_ip6_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4454 del_timer(&pmctx->ip6_mc_router_timer); in br_multicast_set_port_router()
4456 br_multicast_rport_del_notify(pmctx, del); in br_multicast_set_port_router()
4459 pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY; in br_multicast_set_port_router()
4460 del |= br_ip4_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4461 del |= br_ip6_multicast_rport_del(pmctx); in br_multicast_set_port_router()
4462 br_multicast_rport_del_notify(pmctx, del); in br_multicast_set_port_router()
4465 pmctx->multicast_router = MDB_RTR_TYPE_PERM; in br_multicast_set_port_router()
4466 del_timer(&pmctx->ip4_mc_router_timer); in br_multicast_set_port_router()
4467 br_ip4_multicast_add_router(brmctx, pmctx); in br_multicast_set_port_router()
4469 del_timer(&pmctx->ip6_mc_router_timer); in br_multicast_set_port_router()
4471 br_ip6_multicast_add_router(brmctx, pmctx); in br_multicast_set_port_router()
4474 pmctx->multicast_router = MDB_RTR_TYPE_TEMP; in br_multicast_set_port_router()
4475 br_ip4_multicast_mark_router(brmctx, pmctx); in br_multicast_set_port_router()
4476 br_ip6_multicast_mark_router(brmctx, pmctx); in br_multicast_set_port_router()
4893 struct net_bridge_mcast_port *pmctx; in br_multicast_has_router_adjacent() local
4906 hlist_for_each_entry_rcu(pmctx, &brmctx->ip4_mc_router_list, in br_multicast_has_router_adjacent()
4908 if (pmctx->port == port) in br_multicast_has_router_adjacent()
4917 hlist_for_each_entry_rcu(pmctx, &brmctx->ip6_mc_router_list, in br_multicast_has_router_adjacent()
4919 if (pmctx->port == port) in br_multicast_has_router_adjacent()