Skip to content

Commit

Permalink
prov/efa: report correct inject_msg_size for zcpy rx
Browse files Browse the repository at this point in the history
When zcpy rx is on, both inject_msg_size and inject_rma_size
should be reported as inline buf size.

Signed-off-by: Shi Jin <sjina@amazon.com>
  • Loading branch information
shijin-aws committed Oct 9, 2024
1 parent 3e9b17b commit 765cc16
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
4 changes: 3 additions & 1 deletion prov/efa/src/rdm/efa_rdm_ep_fiops.c
Original file line number Diff line number Diff line change
Expand Up @@ -1255,8 +1255,10 @@ static int efa_rdm_ep_ctrl(struct fid *fid, int command, void *arg)
* TODO: Distinguish between inline data sizes for RDMA {send,write}
* when supported
*/
if (ep->use_zcpy_rx)
if (ep->use_zcpy_rx) {
ep->inject_msg_size = MIN(ep->inject_msg_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
ep->inject_rma_size = MIN(ep->inject_rma_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
}

ret = efa_rdm_ep_create_base_ep_ibv_qp(ep);
if (ret)
Expand Down
14 changes: 12 additions & 2 deletions prov/efa/test/efa_unit_test_ep.c
Original file line number Diff line number Diff line change
Expand Up @@ -924,6 +924,7 @@ static void test_efa_rdm_ep_use_zcpy_rx_impl(struct efa_resource *resource,
struct efa_domain *efa_domain;
struct efa_rdm_ep *ep;
size_t max_msg_size = 1000;
size_t inject_msg_size = 0;
size_t inject_rma_size = 0;
bool shm_permitted = false;

Expand Down Expand Up @@ -966,13 +967,22 @@ static void test_efa_rdm_ep_use_zcpy_rx_impl(struct efa_resource *resource,
assert_int_equal(fi_enable(resource->ep), 0);

assert_true(ep->use_zcpy_rx == expected_use_zcpy_rx);

assert_int_equal(fi_getopt(&resource->ep->fid, FI_OPT_ENDPOINT, FI_OPT_INJECT_MSG_SIZE,
&inject_msg_size, &(size_t){sizeof inject_msg_size}), 0);
assert_int_equal(ep->inject_msg_size, inject_msg_size);

assert_int_equal(fi_getopt(&resource->ep->fid, FI_OPT_ENDPOINT, FI_OPT_INJECT_RMA_SIZE,
&inject_rma_size, &(size_t){sizeof inject_rma_size}), 0);
assert_int_equal(ep->inject_rma_size, inject_rma_size);
if (expected_use_zcpy_rx)

if (expected_use_zcpy_rx) {
assert_int_equal(inject_msg_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
assert_int_equal(inject_rma_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
else
} else {
assert_int_equal(inject_msg_size, resource->info->tx_attr->inject_size);
assert_int_equal(inject_rma_size, resource->info->tx_attr->inject_size);
}
}

/**
Expand Down

0 comments on commit 765cc16

Please sign in to comment.