nvme_rdma_alloc_io_queues is heading to generic code, we want to decouple its dependency from the various transports. Signed-off-by: Sagi Grimberg <sagi@xxxxxxxxxxx> --- drivers/nvme/host/rdma.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index 7f4b66cf67cc..ce63dd40e6b4 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c @@ -625,6 +625,14 @@ static int nvme_rdma_alloc_queue(struct nvme_rdma_ctrl *ctrl, ctrl->ctrl.max_hw_sectors = (ctrl->max_fr_pages - 1) << (PAGE_SHIFT - 9); + /* + * we map queues according to the device irq vectors for + * optimal locality so we don't need more queues than + * completion vectors. + */ + ctrl->ctrl.max_queues = min_t(u32, ctrl->ctrl.max_queues, + ctrl->device->dev->num_comp_vectors + 1); + ret = nvme_rdma_alloc_qe(ctrl->queues[0].device->dev, &ctrl->async_event_sqe, sizeof(struct nvme_command), DMA_TO_DEVICE); @@ -632,7 +640,6 @@ static int nvme_rdma_alloc_queue(struct nvme_rdma_ctrl *ctrl, nvme_rdma_destroy_queue_ib(&ctrl->queues[0]); goto out_destroy_cm_id; } - } clear_bit(NVME_RDMA_Q_DELETING, &queue->flags); @@ -733,18 +740,9 @@ static int nvme_rdma_start_io_queues(struct nvme_rdma_ctrl *ctrl) static int nvme_rdma_alloc_io_queues(struct nvme_rdma_ctrl *ctrl) { unsigned int nr_io_queues = ctrl->ctrl.max_queues - 1; - struct ib_device *ibdev = ctrl->device->dev; int i, ret; nr_io_queues = min(nr_io_queues, num_online_cpus()); - /* - * we map queues according to the device irq vectors for - * optimal locality so we don't need more queues than - * completion vectors. - */ - nr_io_queues = min_t(unsigned int, nr_io_queues, - ibdev->num_comp_vectors); - ret = nvme_set_queue_count(&ctrl->ctrl, &nr_io_queues); if (ret) return ret; -- 2.7.4