nvme/rdma: Use RDMA provider API to post recv WRs
Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com> Change-Id: I47cc1a21af1104f681519e542edaf66e363bb214 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6296 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
3caf2e710f
commit
47afb9280f
@ -2,7 +2,7 @@
|
|||||||
* BSD LICENSE
|
* BSD LICENSE
|
||||||
*
|
*
|
||||||
* Copyright (c) Intel Corporation. All rights reserved.
|
* Copyright (c) Intel Corporation. All rights reserved.
|
||||||
* Copyright (c) 2019, 2020 Mellanox Technologies LTD. All rights reserved.
|
* Copyright (c) 2019-2021 Mellanox Technologies LTD. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -163,11 +163,6 @@ struct nvme_rdma_poll_group {
|
|||||||
STAILQ_HEAD(, nvme_rdma_destroyed_qpair) destroyed_qpairs;
|
STAILQ_HEAD(, nvme_rdma_destroyed_qpair) destroyed_qpairs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct spdk_nvme_recv_wr_list {
|
|
||||||
struct ibv_recv_wr *first;
|
|
||||||
struct ibv_recv_wr *last;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Memory regions */
|
/* Memory regions */
|
||||||
union nvme_rdma_mr {
|
union nvme_rdma_mr {
|
||||||
struct ibv_mr *mr;
|
struct ibv_mr *mr;
|
||||||
@ -202,8 +197,6 @@ struct nvme_rdma_qpair {
|
|||||||
|
|
||||||
struct ibv_recv_wr *rsp_recv_wrs;
|
struct ibv_recv_wr *rsp_recv_wrs;
|
||||||
|
|
||||||
struct spdk_nvme_recv_wr_list recvs_to_post;
|
|
||||||
|
|
||||||
/* Memory region describing all rsps for this qpair */
|
/* Memory region describing all rsps for this qpair */
|
||||||
union nvme_rdma_mr rsp_mr;
|
union nvme_rdma_mr rsp_mr;
|
||||||
|
|
||||||
@ -662,8 +655,7 @@ nvme_rdma_qpair_submit_recvs(struct nvme_rdma_qpair *rqpair)
|
|||||||
struct ibv_recv_wr *bad_recv_wr;
|
struct ibv_recv_wr *bad_recv_wr;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
if (rqpair->recvs_to_post.first) {
|
rc = spdk_rdma_qp_flush_recv_wrs(rqpair->rdma_qp, &bad_recv_wr);
|
||||||
rc = ibv_post_recv(rqpair->rdma_qp->qp, rqpair->recvs_to_post.first, &bad_recv_wr);
|
|
||||||
if (spdk_unlikely(rc)) {
|
if (spdk_unlikely(rc)) {
|
||||||
SPDK_ERRLOG("Failed to post WRs on receive queue, errno %d (%s), bad_wr %p\n",
|
SPDK_ERRLOG("Failed to post WRs on receive queue, errno %d (%s), bad_wr %p\n",
|
||||||
rc, spdk_strerror(rc), bad_recv_wr);
|
rc, spdk_strerror(rc), bad_recv_wr);
|
||||||
@ -674,8 +666,6 @@ nvme_rdma_qpair_submit_recvs(struct nvme_rdma_qpair *rqpair)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rqpair->recvs_to_post.first = NULL;
|
|
||||||
}
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -708,13 +698,7 @@ nvme_rdma_qpair_queue_recv_wr(struct nvme_rdma_qpair *rqpair, struct ibv_recv_wr
|
|||||||
assert(rqpair->current_num_recvs < rqpair->num_entries);
|
assert(rqpair->current_num_recvs < rqpair->num_entries);
|
||||||
|
|
||||||
rqpair->current_num_recvs++;
|
rqpair->current_num_recvs++;
|
||||||
if (rqpair->recvs_to_post.first == NULL) {
|
spdk_rdma_qp_queue_recv_wrs(rqpair->rdma_qp, wr);
|
||||||
rqpair->recvs_to_post.first = wr;
|
|
||||||
} else {
|
|
||||||
rqpair->recvs_to_post.last->next = wr;
|
|
||||||
}
|
|
||||||
|
|
||||||
rqpair->recvs_to_post.last = wr;
|
|
||||||
|
|
||||||
if (!rqpair->delay_cmd_submit) {
|
if (!rqpair->delay_cmd_submit) {
|
||||||
return nvme_rdma_qpair_submit_recvs(rqpair);
|
return nvme_rdma_qpair_submit_recvs(rqpair);
|
||||||
|
Loading…
Reference in New Issue
Block a user