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;
47 mesh_path_free_rcu(tbl, mpath);
50 static void mesh_table_init(struct mesh_table *tbl)
52 INIT_HLIST_HEAD(&tbl->known_gates);
53 INIT_HLIST_HEAD(&tbl->walk_head);
54 atomic_set(&tbl->entries, 0);
55 spin_lock_init(&tbl->gates_lock);
56 spin_lock_init(&tbl->walk_lock);
61 WARN_ON(rhashtable_init(&tbl->rhead, &mesh_rht_params));
64 static void mesh_table_free(struct mesh_table *tbl)
66 rhashtable_free_and_destroy(&tbl->rhead,
67 mesh_path_rht_free, tbl);
206 static struct mesh_path *mpath_lookup(struct mesh_table *tbl, const u8 *dst,
211 mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params);
243 __mesh_path_lookup_by_idx(struct mesh_table *tbl, int idx)
248 hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) {
300 struct mesh_table *tbl;
304 tbl = &mpath->sdata->u.mesh.mesh_paths;
315 spin_lock(&tbl->gates_lock);
316 hlist_add_head_rcu(&mpath->gate_list, &tbl->known_gates);
317 spin_unlock(&tbl->gates_lock);
332 * @tbl: table which holds our list of known gates
335 static void mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath)
342 spin_lock_bh(&tbl->gates_lock);
345 spin_unlock_bh(&tbl->gates_lock);
396 struct mesh_table *tbl;
413 tbl = &sdata->u.mesh.mesh_paths;
414 spin_lock_bh(&tbl->walk_lock);
415 mpath = rhashtable_lookup_get_insert_fast(&tbl->rhead,
419 hlist_add_head(&new_mpath->walk_list, &tbl->walk_head);
420 spin_unlock_bh(&tbl->walk_lock);
438 struct mesh_table *tbl;
455 tbl = &sdata->u.mesh.mpp_paths;
457 spin_lock_bh(&tbl->walk_lock);
458 ret = rhashtable_lookup_insert_fast(&tbl->rhead,
462 hlist_add_head_rcu(&new_mpath->walk_list, &tbl->walk_head);
463 spin_unlock_bh(&tbl->walk_lock);
484 struct mesh_table *tbl = &sdata->u.mesh.mesh_paths;
489 hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) {
506 static void mesh_path_free_rcu(struct mesh_table *tbl,
513 mesh_gate_del(tbl, mpath);
517 atomic_dec(&tbl->entries);
522 static void __mesh_path_del(struct mesh_table *tbl, struct mesh_path *mpath)
525 rhashtable_remove_fast(&tbl->rhead, &mpath->rhash, mesh_rht_params);
526 mesh_path_free_rcu(tbl, mpath);
543 struct mesh_table *tbl = &sdata->u.mesh.mesh_paths;
547 spin_lock_bh(&tbl->walk_lock);
548 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
550 __mesh_path_del(tbl, mpath);
552 spin_unlock_bh(&tbl->walk_lock);
558 struct mesh_table *tbl = &sdata->u.mesh.mpp_paths;
562 spin_lock_bh(&tbl->walk_lock);
563 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
565 __mesh_path_del(tbl, mpath);
567 spin_unlock_bh(&tbl->walk_lock);
570 static void table_flush_by_iface(struct mesh_table *tbl)
575 spin_lock_bh(&tbl->walk_lock);
576 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
577 __mesh_path_del(tbl, mpath);
579 spin_unlock_bh(&tbl->walk_lock);
599 * @tbl: mesh or mpp path table
605 static int table_path_del(struct mesh_table *tbl,
611 spin_lock_bh(&tbl->walk_lock);
612 mpath = rhashtable_lookup_fast(&tbl->rhead, addr, mesh_rht_params);
614 spin_unlock_bh(&tbl->walk_lock);
618 __mesh_path_del(tbl, mpath);
619 spin_unlock_bh(&tbl->walk_lock);
672 struct mesh_table *tbl;
677 tbl = &sdata->u.mesh.mesh_paths;
680 hlist_for_each_entry_rcu(gate, &tbl->known_gates, gate_list) {
693 hlist_for_each_entry_rcu(gate, &tbl->known_gates, gate_list) {
778 struct mesh_table *tbl)
783 spin_lock_bh(&tbl->walk_lock);
784 hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
788 __mesh_path_del(tbl, mpath);
790 spin_unlock_bh(&tbl->walk_lock);