return __nvme_tcp_alloc_io_queues(ctrl);
 }
 
-static void nvme_tcp_destroy_io_queues(struct nvme_ctrl *ctrl, bool remove)
-{
-       nvme_tcp_stop_io_queues(ctrl);
-       if (remove)
-               nvme_remove_io_tag_set(ctrl);
-       nvme_tcp_free_io_queues(ctrl);
-}
-
 static int nvme_tcp_configure_io_queues(struct nvme_ctrl *ctrl, bool new)
 {
        int ret, nr_queues;
        nvme_sync_io_queues(ctrl);
        nvme_tcp_stop_io_queues(ctrl);
        nvme_cancel_tagset(ctrl);
-       if (remove)
+       if (remove) {
                nvme_unquiesce_io_queues(ctrl);
-       nvme_tcp_destroy_io_queues(ctrl, remove);
+               nvme_remove_io_tag_set(ctrl);
+       }
+       nvme_tcp_free_io_queues(ctrl);
 }
 
 static void nvme_tcp_reconnect_or_remove(struct nvme_ctrl *ctrl,
                nvme_sync_io_queues(ctrl);
                nvme_tcp_stop_io_queues(ctrl);
                nvme_cancel_tagset(ctrl);
-               nvme_tcp_destroy_io_queues(ctrl, new);
+               if (new)
+                       nvme_remove_io_tag_set(ctrl);
+               nvme_tcp_free_io_queues(ctrl);
        }
 destroy_admin:
        nvme_stop_keep_alive(ctrl);