Lines Matching refs:idtab
63 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_alloc() local
65 spin_lock(&idtab->lock); in rio_destid_alloc()
66 destid = find_first_zero_bit(idtab->table, idtab->max); in rio_destid_alloc()
68 if (destid < idtab->max) { in rio_destid_alloc()
69 set_bit(destid, idtab->table); in rio_destid_alloc()
70 destid += idtab->start; in rio_destid_alloc()
74 spin_unlock(&idtab->lock); in rio_destid_alloc()
89 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_reserve() local
91 destid -= idtab->start; in rio_destid_reserve()
92 spin_lock(&idtab->lock); in rio_destid_reserve()
93 oldbit = test_and_set_bit(destid, idtab->table); in rio_destid_reserve()
94 spin_unlock(&idtab->lock); in rio_destid_reserve()
107 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_free() local
109 destid -= idtab->start; in rio_destid_free()
110 spin_lock(&idtab->lock); in rio_destid_free()
111 clear_bit(destid, idtab->table); in rio_destid_free()
112 spin_unlock(&idtab->lock); in rio_destid_free()
122 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_first() local
124 spin_lock(&idtab->lock); in rio_destid_first()
125 destid = find_first_bit(idtab->table, idtab->max); in rio_destid_first()
126 if (destid >= idtab->max) in rio_destid_first()
129 destid += idtab->start; in rio_destid_first()
130 spin_unlock(&idtab->lock); in rio_destid_first()
142 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_next() local
144 spin_lock(&idtab->lock); in rio_destid_next()
145 destid = find_next_bit(idtab->table, idtab->max, from); in rio_destid_next()
146 if (destid >= idtab->max) in rio_destid_next()
149 destid += idtab->start; in rio_destid_next()
150 spin_unlock(&idtab->lock); in rio_destid_next()
847 struct rio_id_table *idtab; in rio_scan_alloc_net() local
855 idtab = kzalloc(size, GFP_KERNEL); in rio_scan_alloc_net()
857 if (idtab == NULL) { in rio_scan_alloc_net()
862 net->enum_data = idtab; in rio_scan_alloc_net()
864 idtab->start = start; in rio_scan_alloc_net()
865 idtab->max = RIO_MAX_ROUTE_ENTRIES(mport->sys_size); in rio_scan_alloc_net()
866 spin_lock_init(&idtab->lock); in rio_scan_alloc_net()