Lines Matching defs:tbl

19 static void mesh_path_free_rcu(struct mesh_table *tbl, struct mesh_path *mpath);
81 struct mesh_table *tbl = tblptr;
83 mesh_path_free_rcu(tbl, mpath);
86 static void mesh_table_init(struct mesh_table *tbl)
88 INIT_HLIST_HEAD(&tbl->known_gates);
89 INIT_HLIST_HEAD(&tbl->walk_head);
90 atomic_set(&tbl->entries, 0);
91 spin_lock_init(&tbl->gates_lock);
92 spin_lock_init(&tbl->walk_lock);
97 WARN_ON(rhashtable_init(&tbl->rhead, &mesh_rht_params));
100 static void mesh_table_free(struct mesh_table *tbl)
102 rhashtable_free_and_destroy(&tbl->rhead,
103 mesh_path_rht_free, tbl);
242 static struct mesh_path *mpath_lookup(struct mesh_table *tbl, const u8 *dst,
247 mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params);
279 __mesh_path_lookup_by_idx(struct mesh_table *tbl, int idx)
284 hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) {
336 struct mesh_table *tbl;
340 tbl = &mpath->sdata->u.mesh.mesh_paths;
351 spin_lock(&tbl->gates_lock);
352 hlist_add_head_rcu(&mpath->gate_list, &tbl->known_gates);
353 spin_unlock(&tbl->gates_lock);
368 * @tbl: table which holds our list of known gates
371 static void mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath)
378 spin_lock_bh(&tbl->gates_lock);
381 spin_unlock_bh(&tbl->gates_lock);
669 struct mesh_table *tbl;
686 tbl = &sdata->u.mesh.mesh_paths;
687 spin_lock_bh(&tbl->walk_lock);
688 mpath = rhashtable_lookup_get_insert_fast(&tbl->rhead,
692 hlist_add_head(&new_mpath->walk_list, &tbl->walk_head);
693 spin_unlock_bh(&tbl->walk_lock);
711 struct mesh_table *tbl;
728 tbl = &sdata->u.mesh.mpp_paths;
730 spin_lock_bh(&tbl->walk_lock);
731 ret = rhashtable_lookup_insert_fast(&tbl->rhead,
735 hlist_add_head_rcu(&new_mpath->walk_list, &tbl->walk_head);
736 spin_unlock_bh(&tbl->walk_lock);
759 struct mesh_table *tbl = &sdata->u.mesh.mesh_paths;
764 hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) {
781 static void mesh_path_free_rcu(struct mesh_table *tbl,
788 mesh_gate_del(tbl, mpath);
792 atomic_dec(&tbl->entries);
797 static void __mesh_path_del(struct mesh_table *tbl, struct mesh_path *mpath)
800 rhashtable_remove_fast(&tbl->rhead, &mpath->rhash, mesh_rht_params);
801 if (tbl == &mpath->sdata->u.mesh.mpp_paths)
805 mesh_path_free_rcu(tbl, mpath);
822 struct mesh_table *tbl = &sdata->u.mesh.mesh_paths;
826 spin_lock_bh(&tbl->walk_lock);
827 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
829 __mesh_path_del(tbl, mpath);
831 spin_unlock_bh(&tbl->walk_lock);
837 struct mesh_table *tbl = &sdata->u.mesh.mpp_paths;
841 spin_lock_bh(&tbl->walk_lock);
842 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
844 __mesh_path_del(tbl, mpath);
846 spin_unlock_bh(&tbl->walk_lock);
849 static void table_flush_by_iface(struct mesh_table *tbl)
854 spin_lock_bh(&tbl->walk_lock);
855 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
856 __mesh_path_del(tbl, mpath);
858 spin_unlock_bh(&tbl->walk_lock);
878 * @tbl: mesh or mpp path table
884 static int table_path_del(struct mesh_table *tbl,
890 spin_lock_bh(&tbl->walk_lock);
891 mpath = rhashtable_lookup_fast(&tbl->rhead, addr, mesh_rht_params);
893 spin_unlock_bh(&tbl->walk_lock);
897 __mesh_path_del(tbl, mpath);
898 spin_unlock_bh(&tbl->walk_lock);
951 struct mesh_table *tbl;
956 tbl = &sdata->u.mesh.mesh_paths;
959 hlist_for_each_entry_rcu(gate, &tbl->known_gates, gate_list) {
972 hlist_for_each_entry_rcu(gate, &tbl->known_gates, gate_list) {
1046 struct mesh_table *tbl)
1051 spin_lock_bh(&tbl->walk_lock);
1052 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
1056 __mesh_path_del(tbl, mpath);
1058 spin_unlock_bh(&tbl->walk_lock);