Lines Matching refs:eht_set
80 br_multicast_eht_set_entry_lookup(struct net_bridge_group_eht_set *eht_set, in br_multicast_eht_set_entry_lookup() argument
83 struct rb_node *node = eht_set->entry_tree.rb_node; in br_multicast_eht_set_entry_lookup()
151 struct net_bridge_group_eht_set *eht_set; in br_multicast_destroy_eht_set() local
153 eht_set = container_of(gc, struct net_bridge_group_eht_set, mcast_gc); in br_multicast_destroy_eht_set()
154 WARN_ON(!RB_EMPTY_NODE(&eht_set->rb_node)); in br_multicast_destroy_eht_set()
155 WARN_ON(!RB_EMPTY_ROOT(&eht_set->entry_tree)); in br_multicast_destroy_eht_set()
157 timer_shutdown_sync(&eht_set->timer); in br_multicast_destroy_eht_set()
158 kfree(eht_set); in br_multicast_destroy_eht_set()
166 rb_erase(&set_h->rb_node, &set_h->eht_set->entry_tree); in __eht_del_set_entry()
179 static void br_multicast_del_eht_set(struct net_bridge_group_eht_set *eht_set) in br_multicast_del_eht_set() argument
184 while ((node = rb_first(&eht_set->entry_tree))) { in br_multicast_del_eht_set()
190 rb_erase(&eht_set->rb_node, &eht_set->pg->eht_set_tree); in br_multicast_del_eht_set()
191 RB_CLEAR_NODE(&eht_set->rb_node); in br_multicast_del_eht_set()
192 hlist_add_head(&eht_set->mcast_gc.gc_node, &eht_set->br->mcast_gc_list); in br_multicast_del_eht_set()
193 queue_work(system_long_wq, &eht_set->br->mcast_gc_work); in br_multicast_del_eht_set()
198 struct net_bridge_group_eht_set *eht_set; in br_multicast_eht_clean_sets() local
202 eht_set = rb_entry(node, struct net_bridge_group_eht_set, in br_multicast_eht_clean_sets()
204 br_multicast_del_eht_set(eht_set); in br_multicast_eht_clean_sets()
217 br_multicast_del_eht_set_entry(set_h->eht_set->pg, in br_multicast_eht_set_entry_expired()
218 &set_h->eht_set->src_addr, in br_multicast_eht_set_entry_expired()
226 struct net_bridge_group_eht_set *eht_set = from_timer(eht_set, t, in br_multicast_eht_set_expired() local
228 struct net_bridge *br = eht_set->br; in br_multicast_eht_set_expired()
231 if (RB_EMPTY_NODE(&eht_set->rb_node) || timer_pending(&eht_set->timer)) in br_multicast_eht_set_expired()
234 br_multicast_del_eht_set(eht_set); in br_multicast_eht_set_expired()
285 struct net_bridge_group_eht_set *eht_set, in __eht_lookup_create_set_entry() argument
289 struct rb_node **link = &eht_set->entry_tree.rb_node, *parent = NULL; in __eht_lookup_create_set_entry()
320 set_h->eht_set = eht_set; in __eht_lookup_create_set_entry()
327 rb_insert_color(&set_h->rb_node, &eht_set->entry_tree); in __eht_lookup_create_set_entry()
342 struct net_bridge_group_eht_set *eht_set; in __eht_lookup_create_set() local
360 eht_set = kzalloc(sizeof(*eht_set), GFP_ATOMIC); in __eht_lookup_create_set()
361 if (!eht_set) in __eht_lookup_create_set()
364 memcpy(&eht_set->src_addr, src_addr, sizeof(*src_addr)); in __eht_lookup_create_set()
365 eht_set->mcast_gc.destroy = br_multicast_destroy_eht_set; in __eht_lookup_create_set()
366 eht_set->pg = pg; in __eht_lookup_create_set()
367 eht_set->br = pg->key.port->br; in __eht_lookup_create_set()
368 eht_set->entry_tree = RB_ROOT; in __eht_lookup_create_set()
369 timer_setup(&eht_set->timer, br_multicast_eht_set_expired, 0); in __eht_lookup_create_set()
371 rb_link_node(&eht_set->rb_node, parent, link); in __eht_lookup_create_set()
372 rb_insert_color(&eht_set->rb_node, &pg->eht_set_tree); in __eht_lookup_create_set()
374 return eht_set; in __eht_lookup_create_set()
427 struct net_bridge_group_eht_set *eht_set; in br_multicast_create_eht_set_entry() local
434 eht_set = __eht_lookup_create_set(pg, src_addr); in br_multicast_create_eht_set_entry()
435 if (!eht_set) in br_multicast_create_eht_set_entry()
442 set_h = __eht_lookup_create_set_entry(br, eht_set, eht_host, in br_multicast_create_eht_set_entry()
448 mod_timer(&eht_set->timer, jiffies + br_multicast_gmi(brmctx)); in br_multicast_create_eht_set_entry()
456 if (RB_EMPTY_ROOT(&eht_set->entry_tree)) in br_multicast_create_eht_set_entry()
457 br_multicast_del_eht_set(eht_set); in br_multicast_create_eht_set_entry()
465 struct net_bridge_group_eht_set *eht_set; in br_multicast_del_eht_set_entry() local
468 eht_set = br_multicast_eht_set_lookup(pg, src_addr); in br_multicast_del_eht_set_entry()
469 if (!eht_set) in br_multicast_del_eht_set_entry()
472 set_h = br_multicast_eht_set_entry_lookup(eht_set, h_addr); in br_multicast_del_eht_set_entry()
478 if (RB_EMPTY_ROOT(&eht_set->entry_tree)) { in br_multicast_del_eht_set_entry()
479 br_multicast_del_eht_set(eht_set); in br_multicast_del_eht_set_entry()
499 br_multicast_del_eht_set_entry(set_h->eht_set->pg, in br_multicast_del_eht_host()
500 &set_h->eht_set->src_addr, in br_multicast_del_eht_host()
626 struct net_bridge_group_eht_set *eht_set; in __eht_inc_exc() local
652 eht_set = br_multicast_eht_set_lookup(pg, in __eht_inc_exc()
654 if (!eht_set) in __eht_inc_exc()
656 mod_timer(&eht_set->timer, jiffies + br_multicast_lmqt(brmctx)); in __eht_inc_exc()