diff options
author | Samuel Jones <sjones@kalray.eu> | 2016-10-25 09:22:34 +0200 |
---|---|---|
committer | Sagi Grimberg <sagi@grimberg.me> | 2016-12-06 09:17:03 +0100 |
commit | 76c08bf46a2891c80e854813c636bdce1f7d1ca4 (patch) | |
tree | c11bf4eb5ce74f379334483e19d72d2a8f7e260b /drivers/nvme/host/rdma.c | |
parent | nvmet-rdma: Fix REJ status code (diff) | |
download | linux-76c08bf46a2891c80e854813c636bdce1f7d1ca4.tar.xz linux-76c08bf46a2891c80e854813c636bdce1f7d1ca4.zip |
nvme-rdma: force queue size to respect controller capability
Queue size needs to respect the Maximum Queue Entries Supported advertised by
the controller in its Capability register.
Signed-off-by: Samuel Jones <sjones@kalray.eu>
Reviewed-by: Christoph Hellwig <hch@lst.de>
[sagig: fixed queue_size adjustment according to
Daniel Verkamp <daniel.verkamp@intel.com> comment]
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Diffstat (limited to 'drivers/nvme/host/rdma.c')
-rw-r--r-- | drivers/nvme/host/rdma.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index ff1b340606b2..d1df4a5eb1e6 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c @@ -1904,6 +1904,14 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev, opts->queue_size = ctrl->ctrl.maxcmd; } + if (opts->queue_size > ctrl->ctrl.sqsize + 1) { + /* warn if sqsize is lower than queue_size */ + dev_warn(ctrl->ctrl.device, + "queue_size %zu > ctrl sqsize %u, clamping down\n", + opts->queue_size, ctrl->ctrl.sqsize + 1); + opts->queue_size = ctrl->ctrl.sqsize + 1; + } + if (opts->nr_io_queues) { ret = nvme_rdma_create_io_queues(ctrl); if (ret) |