Lines Matching defs:mp

350 	struct net_bridge_mdb_entry *mp;
356 mp = br_mdb_ip_get(br, &pg->key.addr);
357 if (!mp)
366 for (pg_lst = mlock_dereference(mp->ports, br);
562 struct net_bridge_mdb_entry *mp;
569 mp = br_mdb_ip_get(src->br, &sg_ip);
570 if (!mp)
573 for (pp = &mp->ports;
586 br_multicast_del_pg(mp, p, pp);
628 struct net_bridge_mdb_entry *mp;
630 mp = container_of(gc, struct net_bridge_mdb_entry, mcast_gc);
631 WARN_ON(!hlist_unhashed(&mp->mdb_node));
632 WARN_ON(mp->ports);
634 timer_shutdown_sync(&mp->timer);
635 kfree_rcu(mp, rcu);
638 static void br_multicast_del_mdb_entry(struct net_bridge_mdb_entry *mp)
640 struct net_bridge *br = mp->br;
642 rhashtable_remove_fast(&br->mdb_hash_tbl, &mp->rhnode,
644 hlist_del_init_rcu(&mp->mdb_node);
645 hlist_add_head(&mp->mcast_gc.gc_node, &br->mcast_gc_list);
651 struct net_bridge_mdb_entry *mp = from_timer(mp, t, timer);
652 struct net_bridge *br = mp->br;
655 if (hlist_unhashed(&mp->mdb_node) || !netif_running(br->dev) ||
656 timer_pending(&mp->timer))
659 br_multicast_host_leave(mp, true);
661 if (mp->ports)
663 br_multicast_del_mdb_entry(mp);
804 void br_multicast_del_pg(struct net_bridge_mdb_entry *mp,
817 br_mdb_notify(br->dev, mp, pg, RTM_DELMDB);
818 if (!br_multicast_is_star_g(&mp->addr)) {
821 br_multicast_sg_del_exclude_ports(mp);
829 if (!mp->ports && !mp->host_joined && netif_running(br->dev))
830 mod_timer(&mp->timer, jiffies);
837 struct net_bridge_mdb_entry *mp;
840 mp = br_mdb_ip_get(br, &pg->key.addr);
841 if (WARN_ON(!mp))
844 for (pp = &mp->ports;
850 br_multicast_del_pg(mp, pg, pp);
882 struct net_bridge_mdb_entry *mp = br_mdb_ip_get(br, &pg->key.addr);
887 if (WARN_ON(!mp))
889 br_mdb_notify(br->dev, mp, pg, RTM_NEWMDB);
1281 struct net_bridge_mdb_entry *mp;
1284 mp = br_mdb_ip_get(br, group);
1285 if (mp)
1286 return mp;
1295 mp = kzalloc(sizeof(*mp), GFP_ATOMIC);
1296 if (unlikely(!mp))
1299 mp->br = br;
1300 mp->addr = *group;
1301 mp->mcast_gc.destroy = br_multicast_destroy_mdb_entry;
1302 timer_setup(&mp->timer, br_multicast_group_expired, 0);
1303 err = rhashtable_lookup_insert_fast(&br->mdb_hash_tbl, &mp->rhnode,
1306 kfree(mp);
1307 mp = ERR_PTR(err);
1309 hlist_add_head_rcu(&mp->mdb_node, &br->mdb_list);
1312 return mp;
1475 struct net_bridge_mdb_entry *mp, bool notify)
1477 if (!mp->host_joined) {
1478 mp->host_joined = true;
1479 if (br_multicast_is_star_g(&mp->addr))
1480 br_multicast_star_g_host_state(mp);
1482 br_mdb_notify(mp->br->dev, mp, NULL, RTM_NEWMDB);
1485 if (br_group_is_l2(&mp->addr))
1488 mod_timer(&mp->timer, jiffies + brmctx->multicast_membership_interval);
1491 void br_multicast_host_leave(struct net_bridge_mdb_entry *mp, bool notify)
1493 if (!mp->host_joined)
1496 mp->host_joined = false;
1497 if (br_multicast_is_star_g(&mp->addr))
1498 br_multicast_star_g_host_state(mp);
1500 br_mdb_notify(mp->br->dev, mp, NULL, RTM_DELMDB);
1514 struct net_bridge_mdb_entry *mp;
1520 mp = br_multicast_new_group(brmctx->br, group);
1521 if (IS_ERR(mp))
1522 return ERR_CAST(mp);
1525 br_multicast_host_join(brmctx, mp, true);
1529 for (pp = &mp->ports;
1547 br_mdb_notify(brmctx->br->dev, mp, p, RTM_NEWMDB);
2767 br_multicast_find_port(struct net_bridge_mdb_entry *mp,
2771 struct net_bridge *br __maybe_unused = mp->br;
2774 for (pg = mlock_dereference(mp->ports, br);
3431 struct net_bridge_mdb_entry *mp;
3476 mp = br_mdb_ip4_get(brmctx->br, group, vid);
3477 if (!mp)
3482 if (mp->host_joined &&
3483 (timer_pending(&mp->timer) ?
3484 time_after(mp->timer.expires, now + max_delay) :
3485 try_to_del_timer_sync(&mp->timer) >= 0))
3486 mod_timer(&mp->timer, now + max_delay);
3488 for (pp = &mp->ports;
3511 struct net_bridge_mdb_entry *mp;
3566 mp = br_mdb_ip6_get(brmctx->br, group, vid);
3567 if (!mp)
3571 if (mp->host_joined &&
3572 (timer_pending(&mp->timer) ?
3573 time_after(mp->timer.expires, now + max_delay) :
3574 try_to_del_timer_sync(&mp->timer) >= 0))
3575 mod_timer(&mp->timer, now + max_delay);
3577 for (pp = &mp->ports;
3602 struct net_bridge_mdb_entry *mp;
3611 mp = br_mdb_ip_get(brmctx->br, group);
3612 if (!mp)
3618 for (pp = &mp->ports;
3628 br_multicast_del_pg(mp, p, pp);
3637 __br_multicast_send_query(brmctx, pmctx, NULL, NULL, &mp->addr,
3645 for (p = mlock_dereference(mp->ports, brmctx->br);
3667 if (mp->host_joined &&
3668 (timer_pending(&mp->timer) ?
3669 time_after(mp->timer.expires, time) :
3670 try_to_del_timer_sync(&mp->timer) >= 0)) {
3671 mod_timer(&mp->timer, time);
3677 for (p = mlock_dereference(mp->ports, brmctx->br);
4362 struct net_bridge_mdb_entry *mp;
4367 hlist_for_each_entry_safe(mp, tmp, &br->mdb_list, mdb_node)
4368 br_multicast_del_mdb_entry(mp);