Skip to content
This repository has been archived by the owner on Sep 5, 2023. It is now read-only.

Commit

Permalink
rpma: replace rdma_create_qp() with rdma_create_qp_ex()
Browse files Browse the repository at this point in the history
Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com>
  • Loading branch information
yangx-jy committed Nov 21, 2022
1 parent 34d417c commit ddc3360
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 27 deletions.
9 changes: 6 additions & 3 deletions src/peer.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ rpma_peer_setup_qp(struct rpma_peer *peer, struct rdma_cm_id *id, struct rpma_cq

struct ibv_cq *ibv_cq = rpma_cq_get_ibv_cq(cq);

struct ibv_qp_init_attr qp_init_attr;
struct ibv_qp_init_attr_ex qp_init_attr;
qp_init_attr.qp_context = NULL;
qp_init_attr.send_cq = ibv_cq;
qp_init_attr.recv_cq = rcq ? rpma_cq_get_ibv_cq(rcq) : ibv_cq;
Expand All @@ -186,14 +186,17 @@ rpma_peer_setup_qp(struct rpma_peer *peer, struct rdma_cm_id *id, struct rpma_cq
*/
qp_init_attr.sq_sig_all = 0;

qp_init_attr.comp_mask = IBV_QP_INIT_ATTR_PD;
qp_init_attr.pd = peer->pd;

/*
* The actual capabilities and properties of the created QP are returned through
* qp_init_attr.
*/
RPMA_FAULT_INJECTION(RPMA_E_PROVIDER, {});
if (rdma_create_qp(id, peer->pd, &qp_init_attr)) {
if (rdma_create_qp_ex(id, &qp_init_attr)) {
RPMA_LOG_ERROR_WITH_ERRNO(errno,
"rdma_create_qp(max_send_wr=%" PRIu32
"rdma_create_qp_ex(max_send_wr=%" PRIu32
", max_recv_wr=%" PRIu32
", max_send/recv_sge=%i, max_inline_data=%i, qp_type=IBV_QPT_RC, sq_sig_all=0)",
sq_size, rq_size, RPMA_MAX_SGE,
Expand Down
8 changes: 4 additions & 4 deletions tests/unit/common/mocks-rdma_cm.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,12 @@ int Mock_ctrl_defer_destruction = MOCK_CTRL_NO_DEFER;
const struct rdma_cm_id Cmid_zero = {0};

/*
* rdma_create_qp -- rdma_create_qp() mock
* rdma_create_qp_ex -- rdma_create_qp_ex() mock
*/
int
rdma_create_qp(struct rdma_cm_id *id, struct ibv_pd *pd,
struct ibv_qp_init_attr *qp_init_attr)
rdma_create_qp_ex(struct rdma_cm_id *id, struct ibv_qp_init_attr_ex *qp_init_attr)
{
check_expected_ptr(id);
check_expected_ptr(pd);
assert_non_null(qp_init_attr);
check_expected(qp_init_attr->qp_context);
check_expected(qp_init_attr->send_cq);
Expand All @@ -51,6 +49,8 @@ rdma_create_qp(struct rdma_cm_id *id, struct ibv_pd *pd,
check_expected(qp_init_attr->cap.max_inline_data);
assert_int_equal(qp_init_attr->qp_type, IBV_QPT_RC);
assert_int_equal(qp_init_attr->sq_sig_all, 0);
check_expected(qp_init_attr->comp_mask);
check_expected(qp_init_attr->pd);

errno = mock_type(int);
if (errno)
Expand Down
41 changes: 21 additions & 20 deletions tests/unit/peer/peer-create_qp.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ static struct rpma_cq *rcqs[] = {
static int num_rcqs = sizeof(rcqs) / sizeof(rcqs[0]);

/*
* configure_create_qp -- configure common mock for rdma_create_qp()
* configure_create_qp_ex -- configure common mock for rdma_create_qp_ex()
*/
static void
configure_create_qp(struct rpma_cq *rcq)
configure_create_qp_ex(struct rpma_cq *rcq)
{
will_return(rpma_conn_cfg_get_sq_size, &Get_args);
will_return(rpma_conn_cfg_get_rq_size, &Get_args);
Expand All @@ -55,25 +55,26 @@ configure_create_qp(struct rpma_cq *rcq)
expect_value(rpma_cq_get_ibv_cq, cq, rcq);
will_return(rpma_cq_get_ibv_cq, MOCK_GET_IBV_RCQ(rcq));
}
expect_value(rdma_create_qp, id, MOCK_CM_ID);
expect_value(rdma_create_qp, pd, MOCK_IBV_PD);
expect_value(rdma_create_qp, qp_init_attr->qp_context, NULL);
expect_value(rdma_create_qp, qp_init_attr->send_cq,
expect_value(rdma_create_qp_ex, id, MOCK_CM_ID);
expect_value(rdma_create_qp_ex, qp_init_attr->qp_context, NULL);
expect_value(rdma_create_qp_ex, qp_init_attr->send_cq,
MOCK_IBV_CQ);
expect_value(rdma_create_qp, qp_init_attr->recv_cq,
expect_value(rdma_create_qp_ex, qp_init_attr->recv_cq,
rcq ? MOCK_GET_IBV_RCQ(rcq) : MOCK_IBV_CQ);
expect_value(rdma_create_qp, qp_init_attr->srq, Get_args.srq ?
expect_value(rdma_create_qp_ex, qp_init_attr->srq, Get_args.srq ?
MOCK_IBV_SRQ : NULL);
expect_value(rdma_create_qp, qp_init_attr->cap.max_send_wr,
expect_value(rdma_create_qp_ex, qp_init_attr->cap.max_send_wr,
MOCK_SQ_SIZE_CUSTOM);
expect_value(rdma_create_qp, qp_init_attr->cap.max_recv_wr,
expect_value(rdma_create_qp_ex, qp_init_attr->cap.max_recv_wr,
MOCK_RQ_SIZE_CUSTOM);
expect_value(rdma_create_qp, qp_init_attr->cap.max_send_sge,
expect_value(rdma_create_qp_ex, qp_init_attr->cap.max_send_sge,
RPMA_MAX_SGE);
expect_value(rdma_create_qp, qp_init_attr->cap.max_recv_sge,
expect_value(rdma_create_qp_ex, qp_init_attr->cap.max_recv_sge,
RPMA_MAX_SGE);
expect_value(rdma_create_qp, qp_init_attr->cap.max_inline_data,
expect_value(rdma_create_qp_ex, qp_init_attr->cap.max_inline_data,
RPMA_MAX_INLINE_DATA);
expect_value(rdma_create_qp_ex, qp_init_attr->comp_mask, IBV_QP_INIT_ATTR_PD);
expect_value(rdma_create_qp_ex, qp_init_attr->pd, MOCK_IBV_PD);
}

/*
Expand Down Expand Up @@ -123,18 +124,18 @@ create_qp__cq_NULL(void **pprestate)
}

/*
* create_qp__rdma_create_qp_ERRNO -- rdma_create_qp() fails with MOCK_ERRNO
* create_qp__rdma_create_qp_ex_ERRNO -- rdma_create_qp_ex() fails with MOCK_ERRNO
*/
static void
create_qp__rdma_create_qp_ERRNO(void **pprestate)
create_qp__rdma_create_qp_ex_ERRNO(void **pprestate)
{
struct prestate *prestate = *pprestate;

for (int i = 0; i < num_rcqs; i++) {
/* configure mock */
Get_args.srq = (i == 2) ? MOCK_RPMA_SRQ : NULL;
configure_create_qp(rcqs[i]);
will_return(rdma_create_qp, MOCK_ERRNO);
configure_create_qp_ex(rcqs[i]);
will_return(rdma_create_qp_ex, MOCK_ERRNO);

/* run test */
int ret = rpma_peer_setup_qp(prestate->peer, MOCK_CM_ID, MOCK_RPMA_CQ,
Expand All @@ -156,8 +157,8 @@ create_qp__success(void **pprestate)
for (int i = 0; i < num_rcqs; i++) {
/* configure mock */
Get_args.srq = (i == 2) ? MOCK_RPMA_SRQ : NULL;
configure_create_qp(rcqs[i]);
will_return(rdma_create_qp, MOCK_OK);
configure_create_qp_ex(rcqs[i]);
will_return(rdma_create_qp_ex, MOCK_OK);

/* run test */
int ret = rpma_peer_setup_qp(prestate->peer, MOCK_CM_ID, MOCK_RPMA_CQ,
Expand All @@ -179,7 +180,7 @@ main(int argc, char *argv[])
cmocka_unit_test_prestate_setup_teardown(create_qp__cq_NULL,
setup__peer, teardown__peer, &prestate_OdpCapable),
cmocka_unit_test_prestate_setup_teardown(
create_qp__rdma_create_qp_ERRNO,
create_qp__rdma_create_qp_ex_ERRNO,
setup__peer, teardown__peer, &prestate_OdpCapable),
cmocka_unit_test_prestate_setup_teardown(create_qp__success,
setup__peer, teardown__peer, &prestate_OdpCapable),
Expand Down

0 comments on commit ddc3360

Please sign in to comment.