nvme/rdma: Get right initiatior depth by ibv_device_query

Change-Id: I125e95dd405c21c5aea852e619801f1ef2de94ee
Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
Ziye Yang 2016-12-08 21:45:25 +08:00 committed by Daniel Verkamp
parent 5f78155fde
commit da43f64b17

View File

@ -518,8 +518,15 @@ nvme_rdma_connect(struct nvme_rdma_qpair *rqpair)
struct spdk_nvmf_rdma_request_private_data pdata; struct spdk_nvmf_rdma_request_private_data pdata;
const union spdk_nvmf_rdma_private_data *data; const union spdk_nvmf_rdma_private_data *data;
struct rdma_cm_event *event; struct rdma_cm_event *event;
struct ibv_device_attr attr;
int ret; int ret;
ret = ibv_query_device(rqpair->cm_id->verbs, &attr);
if (ret != 0) {
SPDK_ERRLOG("Failed to query RDMA device attributes.\n");
return ret;
}
memset(&conn_param, 0, sizeof(conn_param)); memset(&conn_param, 0, sizeof(conn_param));
/* Note: the following parameters apply only for PS = RDMA_PS_TCP, /* Note: the following parameters apply only for PS = RDMA_PS_TCP,
and even then it appears that any values supplied here by host and even then it appears that any values supplied here by host
@ -529,7 +536,7 @@ nvme_rdma_connect(struct nvme_rdma_qpair *rqpair)
replaced. replaced.
*/ */
conn_param.responder_resources = 1; /* 0 or 1*/ conn_param.responder_resources = 1; /* 0 or 1*/
conn_param.initiator_depth = rqpair->max_queue_depth; conn_param.initiator_depth = nvme_min(rqpair->max_queue_depth, attr.max_qp_init_rd_atom);
conn_param.retry_count = 7; conn_param.retry_count = 7;
conn_param.rnr_retry_count = 7; conn_param.rnr_retry_count = 7;