Lines Matching refs:id_tbl

645 static int cnic_init_id_tbl(struct cnic_id_tbl *id_tbl, u32 size, u32 start_id,  in cnic_init_id_tbl()  argument
648 id_tbl->start = start_id; in cnic_init_id_tbl()
649 id_tbl->max = size; in cnic_init_id_tbl()
650 id_tbl->next = next; in cnic_init_id_tbl()
651 spin_lock_init(&id_tbl->lock); in cnic_init_id_tbl()
652 id_tbl->table = kzalloc(DIV_ROUND_UP(size, 32) * 4, GFP_KERNEL); in cnic_init_id_tbl()
653 if (!id_tbl->table) in cnic_init_id_tbl()
659 static void cnic_free_id_tbl(struct cnic_id_tbl *id_tbl) in cnic_free_id_tbl() argument
661 kfree(id_tbl->table); in cnic_free_id_tbl()
662 id_tbl->table = NULL; in cnic_free_id_tbl()
665 static int cnic_alloc_id(struct cnic_id_tbl *id_tbl, u32 id) in cnic_alloc_id() argument
669 id -= id_tbl->start; in cnic_alloc_id()
670 if (id >= id_tbl->max) in cnic_alloc_id()
673 spin_lock(&id_tbl->lock); in cnic_alloc_id()
674 if (!test_bit(id, id_tbl->table)) { in cnic_alloc_id()
675 set_bit(id, id_tbl->table); in cnic_alloc_id()
678 spin_unlock(&id_tbl->lock); in cnic_alloc_id()
683 static u32 cnic_alloc_new_id(struct cnic_id_tbl *id_tbl) in cnic_alloc_new_id() argument
687 spin_lock(&id_tbl->lock); in cnic_alloc_new_id()
688 id = find_next_zero_bit(id_tbl->table, id_tbl->max, id_tbl->next); in cnic_alloc_new_id()
689 if (id >= id_tbl->max) { in cnic_alloc_new_id()
691 if (id_tbl->next != 0) { in cnic_alloc_new_id()
692 id = find_first_zero_bit(id_tbl->table, id_tbl->next); in cnic_alloc_new_id()
693 if (id >= id_tbl->next) in cnic_alloc_new_id()
698 if (id < id_tbl->max) { in cnic_alloc_new_id()
699 set_bit(id, id_tbl->table); in cnic_alloc_new_id()
700 id_tbl->next = (id + 1) & (id_tbl->max - 1); in cnic_alloc_new_id()
701 id += id_tbl->start; in cnic_alloc_new_id()
704 spin_unlock(&id_tbl->lock); in cnic_alloc_new_id()
709 static void cnic_free_id(struct cnic_id_tbl *id_tbl, u32 id) in cnic_free_id() argument
714 id -= id_tbl->start; in cnic_free_id()
715 if (id >= id_tbl->max) in cnic_free_id()
718 clear_bit(id, id_tbl->table); in cnic_free_id()