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