Lines Matching refs:tbl

18 static void mesh_path_free_rcu(struct mesh_table *tbl, struct mesh_path *mpath);
45 struct mesh_table *tbl = tblptr; in mesh_path_rht_free() local
47 mesh_path_free_rcu(tbl, mpath); in mesh_path_rht_free()
67 static void mesh_table_free(struct mesh_table *tbl) in mesh_table_free() argument
69 rhashtable_free_and_destroy(&tbl->rhead, in mesh_table_free()
70 mesh_path_rht_free, tbl); in mesh_table_free()
71 kfree(tbl); in mesh_table_free()
212 static struct mesh_path *mpath_lookup(struct mesh_table *tbl, const u8 *dst, in mpath_lookup() argument
217 mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params); in mpath_lookup()
249 __mesh_path_lookup_by_idx(struct mesh_table *tbl, int idx) in __mesh_path_lookup_by_idx() argument
254 hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) { in __mesh_path_lookup_by_idx()
306 struct mesh_table *tbl; in mesh_path_add_gate() local
310 tbl = mpath->sdata->u.mesh.mesh_paths; in mesh_path_add_gate()
321 spin_lock(&tbl->gates_lock); in mesh_path_add_gate()
322 hlist_add_head_rcu(&mpath->gate_list, &tbl->known_gates); in mesh_path_add_gate()
323 spin_unlock(&tbl->gates_lock); in mesh_path_add_gate()
341 static void mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath) in mesh_gate_del() argument
348 spin_lock_bh(&tbl->gates_lock); in mesh_gate_del()
351 spin_unlock_bh(&tbl->gates_lock); in mesh_gate_del()
402 struct mesh_table *tbl; in mesh_path_add() local
419 tbl = sdata->u.mesh.mesh_paths; in mesh_path_add()
420 spin_lock_bh(&tbl->walk_lock); in mesh_path_add()
421 mpath = rhashtable_lookup_get_insert_fast(&tbl->rhead, in mesh_path_add()
425 hlist_add_head(&new_mpath->walk_list, &tbl->walk_head); in mesh_path_add()
426 spin_unlock_bh(&tbl->walk_lock); in mesh_path_add()
444 struct mesh_table *tbl; in mpp_path_add() local
461 tbl = sdata->u.mesh.mpp_paths; in mpp_path_add()
463 spin_lock_bh(&tbl->walk_lock); in mpp_path_add()
464 ret = rhashtable_lookup_insert_fast(&tbl->rhead, in mpp_path_add()
468 hlist_add_head_rcu(&new_mpath->walk_list, &tbl->walk_head); in mpp_path_add()
469 spin_unlock_bh(&tbl->walk_lock); in mpp_path_add()
490 struct mesh_table *tbl = sdata->u.mesh.mesh_paths; in mesh_plink_broken() local
495 hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) { in mesh_plink_broken()
512 static void mesh_path_free_rcu(struct mesh_table *tbl, in mesh_path_free_rcu() argument
519 mesh_gate_del(tbl, mpath); in mesh_path_free_rcu()
523 atomic_dec(&tbl->entries); in mesh_path_free_rcu()
527 static void __mesh_path_del(struct mesh_table *tbl, struct mesh_path *mpath) in __mesh_path_del() argument
530 rhashtable_remove_fast(&tbl->rhead, &mpath->rhash, mesh_rht_params); in __mesh_path_del()
531 mesh_path_free_rcu(tbl, mpath); in __mesh_path_del()
548 struct mesh_table *tbl = sdata->u.mesh.mesh_paths; in mesh_path_flush_by_nexthop() local
552 spin_lock_bh(&tbl->walk_lock); in mesh_path_flush_by_nexthop()
553 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) { in mesh_path_flush_by_nexthop()
555 __mesh_path_del(tbl, mpath); in mesh_path_flush_by_nexthop()
557 spin_unlock_bh(&tbl->walk_lock); in mesh_path_flush_by_nexthop()
563 struct mesh_table *tbl = sdata->u.mesh.mpp_paths; in mpp_flush_by_proxy() local
567 spin_lock_bh(&tbl->walk_lock); in mpp_flush_by_proxy()
568 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) { in mpp_flush_by_proxy()
570 __mesh_path_del(tbl, mpath); in mpp_flush_by_proxy()
572 spin_unlock_bh(&tbl->walk_lock); in mpp_flush_by_proxy()
575 static void table_flush_by_iface(struct mesh_table *tbl) in table_flush_by_iface() argument
580 spin_lock_bh(&tbl->walk_lock); in table_flush_by_iface()
581 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) { in table_flush_by_iface()
582 __mesh_path_del(tbl, mpath); in table_flush_by_iface()
584 spin_unlock_bh(&tbl->walk_lock); in table_flush_by_iface()
610 static int table_path_del(struct mesh_table *tbl, in table_path_del() argument
616 spin_lock_bh(&tbl->walk_lock); in table_path_del()
617 mpath = rhashtable_lookup_fast(&tbl->rhead, addr, mesh_rht_params); in table_path_del()
619 spin_unlock_bh(&tbl->walk_lock); in table_path_del()
623 __mesh_path_del(tbl, mpath); in table_path_del()
624 spin_unlock_bh(&tbl->walk_lock); in table_path_del()
677 struct mesh_table *tbl; in mesh_path_send_to_gates() local
682 tbl = sdata->u.mesh.mesh_paths; in mesh_path_send_to_gates()
685 hlist_for_each_entry_rcu(gate, &tbl->known_gates, gate_list) { in mesh_path_send_to_gates()
698 hlist_for_each_entry_rcu(gate, &tbl->known_gates, gate_list) { in mesh_path_send_to_gates()
792 struct mesh_table *tbl) in mesh_path_tbl_expire() argument
797 spin_lock_bh(&tbl->walk_lock); in mesh_path_tbl_expire()
798 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) { in mesh_path_tbl_expire()
802 __mesh_path_del(tbl, mpath); in mesh_path_tbl_expire()
804 spin_unlock_bh(&tbl->walk_lock); in mesh_path_tbl_expire()