[PATCH v2 2/5] nvme-rdma: fix sqsize/hsqsize per spec

J Freyensee james_p_freyensee at linux.intel.com
Tue Aug 16 09:20:30 PDT 2016


On Tue, 2016-08-16 at 11:57 +0300, Sagi Grimberg wrote:
> 
> On 15/08/16 19:47, Jay Freyensee wrote:
> > 
> > Per NVMe-over-Fabrics 1.0 spec, sqsize is represented as
> > a 0-based value.
> > 
> > Also per spec, the RDMA binding values shall be set
> > to sqsize, which makes hsqsize 0-based values.
> > 
> > Thus, the sqsize during NVMf connect() is now:
> > 
> > [root at fedora23-fabrics-host1 for-48]# dmesg
> > [  318.720645] nvme_fabrics: nvmf_connect_admin_queue(): sqsize for
> > admin queue: 31
> > [  318.720884] nvme nvme0: creating 16 I/O queues.
> > [  318.810114] nvme_fabrics: nvmf_connect_io_queue(): sqsize for
> > i/o
> > queue: 127
> > 
> > Reported-by: Daniel Verkamp <daniel.verkamp at intel.com>
> > Signed-off-by: Jay Freyensee <james_p_freyensee at linux.intel.com>
> > ---
> >  drivers/nvme/host/rdma.c | 10 +++++-----
> >  1 file changed, 5 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> > index 168cd23..6aa913e 100644
> > --- a/drivers/nvme/host/rdma.c
> > +++ b/drivers/nvme/host/rdma.c
> > @@ -649,7 +649,7 @@ static int nvme_rdma_init_io_queues(struct
> > nvme_rdma_ctrl *ctrl)
> >  	int i, ret;
> > 
> >  	for (i = 1; i < ctrl->queue_count; i++) {
> > -		ret = nvme_rdma_init_queue(ctrl, i, ctrl-
> > >ctrl.sqsize);
> > +		ret = nvme_rdma_init_queue(ctrl, i, ctrl-
> > >ctrl.sqsize + 1);
> 
> Just use opts->queue_size here.

OK, no problem.

> 
> > 
> >  		if (ret) {
> >  			dev_info(ctrl->ctrl.device,
> >  				"failed to initialize i/o queue:
> > %d\n", ret);
> > @@ -1292,8 +1292,8 @@ static int nvme_rdma_route_resolved(struct
> > nvme_rdma_queue *queue)
> >  		priv.hrqsize = cpu_to_le16(NVMF_AQ_DEPTH - 1);
> >  		priv.hsqsize = cpu_to_le16(NVMF_AQ_DEPTH - 1);
> >  	} else {
> > -		priv.hrqsize = cpu_to_le16(queue->queue_size);
> > -		priv.hsqsize = cpu_to_le16(queue->queue_size);
> > +		priv.hrqsize = cpu_to_le16(queue->ctrl-
> > >ctrl.sqsize);
> > +		priv.hsqsize = cpu_to_le16(queue->ctrl-
> > >ctrl.sqsize);
> >  	}
> > 
> >  	ret = rdma_connect(queue->cm_id, &param);
> > @@ -1818,7 +1818,7 @@ static int nvme_rdma_create_io_queues(struct
> > nvme_rdma_ctrl *ctrl)
> > 
> >  	memset(&ctrl->tag_set, 0, sizeof(ctrl->tag_set));
> >  	ctrl->tag_set.ops = &nvme_rdma_mq_ops;
> > -	ctrl->tag_set.queue_depth = ctrl->ctrl.sqsize;
> > +	ctrl->tag_set.queue_depth = ctrl->ctrl.sqsize + 1;
> 
> Same here.

Dido.

Thanks,
J




More information about the Linux-nvme mailing list