nvmet_tcp_free_cmds(queue);
        if (queue->hdr_digest || queue->data_digest)
                nvmet_tcp_free_crypto(queue);
-       ida_simple_remove(&nvmet_tcp_queue_ida, queue->idx);
+       ida_free(&nvmet_tcp_queue_ida, queue->idx);
 
        page = virt_to_head_page(queue->pf_cache.va);
        __page_frag_cache_drain(page, queue->pf_cache.pagecnt_bias);
        init_llist_head(&queue->resp_list);
        INIT_LIST_HEAD(&queue->resp_send_list);
 
-       queue->idx = ida_simple_get(&nvmet_tcp_queue_ida, 0, 0, GFP_KERNEL);
+       queue->idx = ida_alloc(&nvmet_tcp_queue_ida, GFP_KERNEL);
        if (queue->idx < 0) {
                ret = queue->idx;
                goto out_free_queue;
 out_free_connect:
        nvmet_tcp_free_cmd(&queue->connect);
 out_ida_remove:
-       ida_simple_remove(&nvmet_tcp_queue_ida, queue->idx);
+       ida_free(&nvmet_tcp_queue_ida, queue->idx);
 out_free_queue:
        kfree(queue);
        return ret;