Lines Matching refs:idtab
59 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_alloc() local
61 spin_lock(&idtab->lock); in rio_destid_alloc()
62 destid = find_first_zero_bit(idtab->table, idtab->max); in rio_destid_alloc()
64 if (destid < idtab->max) { in rio_destid_alloc()
65 set_bit(destid, idtab->table); in rio_destid_alloc()
66 destid += idtab->start; in rio_destid_alloc()
70 spin_unlock(&idtab->lock); in rio_destid_alloc()
85 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_reserve() local
87 destid -= idtab->start; in rio_destid_reserve()
88 spin_lock(&idtab->lock); in rio_destid_reserve()
89 oldbit = test_and_set_bit(destid, idtab->table); in rio_destid_reserve()
90 spin_unlock(&idtab->lock); in rio_destid_reserve()
103 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_free() local
105 destid -= idtab->start; in rio_destid_free()
106 spin_lock(&idtab->lock); in rio_destid_free()
107 clear_bit(destid, idtab->table); in rio_destid_free()
108 spin_unlock(&idtab->lock); in rio_destid_free()
118 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_first() local
120 spin_lock(&idtab->lock); in rio_destid_first()
121 destid = find_first_bit(idtab->table, idtab->max); in rio_destid_first()
122 if (destid >= idtab->max) in rio_destid_first()
125 destid += idtab->start; in rio_destid_first()
126 spin_unlock(&idtab->lock); in rio_destid_first()
138 struct rio_id_table *idtab = (struct rio_id_table *)net->enum_data; in rio_destid_next() local
140 spin_lock(&idtab->lock); in rio_destid_next()
141 destid = find_next_bit(idtab->table, idtab->max, from); in rio_destid_next()
142 if (destid >= idtab->max) in rio_destid_next()
145 destid += idtab->start; in rio_destid_next()
146 spin_unlock(&idtab->lock); in rio_destid_next()
841 struct rio_id_table *idtab; in rio_scan_alloc_net() local
849 idtab = kzalloc(size, GFP_KERNEL); in rio_scan_alloc_net()
851 if (idtab == NULL) { in rio_scan_alloc_net()
856 net->enum_data = idtab; in rio_scan_alloc_net()
858 idtab->start = start; in rio_scan_alloc_net()
859 idtab->max = RIO_MAX_ROUTE_ENTRIES(mport->sys_size); in rio_scan_alloc_net()
860 spin_lock_init(&idtab->lock); in rio_scan_alloc_net()