nvme/rdma: Use RDMA provider API to send WRs

Change-Id: I3dc87751d250da84d988b1c7a9c57112b5bd10b0
Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1661
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Seth Howell <seth.howell@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Alexey Marchuk 2020-04-02 14:03:11 +03:00 committed by Tomasz Zawadzki
parent bbb493ce0c
commit 8c6a345534

View File

@ -563,21 +563,21 @@ nvme_rdma_qpair_submit_sends(struct nvme_rdma_qpair *rqpair)
struct ibv_send_wr *bad_send_wr; struct ibv_send_wr *bad_send_wr;
int rc; int rc;
if (rqpair->sends_to_post.first) { rc = spdk_rdma_qp_flush_send_wrs(rqpair->rdma_qp, &bad_send_wr);
rc = ibv_post_send(rqpair->rdma_qp->qp, rqpair->sends_to_post.first, &bad_send_wr);
if (spdk_unlikely(rc)) { if (spdk_unlikely(rc)) {
SPDK_ERRLOG("Failed to post WRs on send queue, errno %d (%s), bad_wr %p\n", SPDK_ERRLOG("Failed to post WRs on send queue, errno %d (%s), bad_wr %p\n",
rc, spdk_strerror(rc), bad_send_wr); rc, spdk_strerror(rc), bad_send_wr);
/* Restart queue from bad wr. If it failed during
* completion processing, controller will be moved to /* Restart queue from bad wr. If it failed during
* failed state. Otherwise it will likely fail again * completion processing, controller will be moved to
* in next submit attempt from completion processing. * failed state. Otherwise it will likely fail again
*/ * in next submit attempt from completion processing.
rqpair->sends_to_post.first = bad_send_wr; */
return -1; spdk_rdma_qp_queue_send_wrs(rqpair->rdma_qp, bad_send_wr);
} return rc;
rqpair->sends_to_post.first = NULL;
} }
return 0; return 0;
} }
@ -612,13 +612,7 @@ nvme_rdma_qpair_queue_send_wr(struct nvme_rdma_qpair *rqpair, struct ibv_send_wr
{ {
assert(wr->next == NULL); assert(wr->next == NULL);
if (rqpair->sends_to_post.first == NULL) { spdk_rdma_qp_queue_send_wrs(rqpair->rdma_qp, wr);
rqpair->sends_to_post.first = wr;
} else {
rqpair->sends_to_post.last->next = wr;
}
rqpair->sends_to_post.last = wr;
if (!rqpair->delay_cmd_submit) { if (!rqpair->delay_cmd_submit) {
return nvme_rdma_qpair_submit_sends(rqpair); return nvme_rdma_qpair_submit_sends(rqpair);