Skip to content

Commit b943586

Browse files
shijin-awsdarrylabbate
authored andcommitted
prov/efa: report correct inject_msg_size for zcpy rx
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 <[email protected]> (cherry picked from commit 765cc16)
1 parent 78088aa commit b943586

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

prov/efa/src/rdm/efa_rdm_ep_fiops.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1255,8 +1255,10 @@ static int efa_rdm_ep_ctrl(struct fid *fid, int command, void *arg)
12551255
* TODO: Distinguish between inline data sizes for RDMA {send,write}
12561256
* when supported
12571257
*/
1258-
if (ep->use_zcpy_rx)
1258+
if (ep->use_zcpy_rx) {
1259+
ep->inject_msg_size = MIN(ep->inject_msg_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
12591260
ep->inject_rma_size = MIN(ep->inject_rma_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
1261+
}
12601262

12611263
ret = efa_rdm_ep_create_base_ep_ibv_qp(ep);
12621264
if (ret)

prov/efa/test/efa_unit_test_ep.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ static void test_efa_rdm_ep_use_zcpy_rx_impl(struct efa_resource *resource,
924924
struct efa_domain *efa_domain;
925925
struct efa_rdm_ep *ep;
926926
size_t max_msg_size = 1000;
927+
size_t inject_msg_size = 0;
927928
size_t inject_rma_size = 0;
928929
bool shm_permitted = false;
929930

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

968969
assert_true(ep->use_zcpy_rx == expected_use_zcpy_rx);
970+
971+
assert_int_equal(fi_getopt(&resource->ep->fid, FI_OPT_ENDPOINT, FI_OPT_INJECT_MSG_SIZE,
972+
&inject_msg_size, &(size_t){sizeof inject_msg_size}), 0);
973+
assert_int_equal(ep->inject_msg_size, inject_msg_size);
974+
969975
assert_int_equal(fi_getopt(&resource->ep->fid, FI_OPT_ENDPOINT, FI_OPT_INJECT_RMA_SIZE,
970976
&inject_rma_size, &(size_t){sizeof inject_rma_size}), 0);
971977
assert_int_equal(ep->inject_rma_size, inject_rma_size);
972-
if (expected_use_zcpy_rx)
978+
979+
if (expected_use_zcpy_rx) {
980+
assert_int_equal(inject_msg_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
973981
assert_int_equal(inject_rma_size, efa_rdm_ep_domain(ep)->device->efa_attr.inline_buf_size);
974-
else
982+
} else {
983+
assert_int_equal(inject_msg_size, resource->info->tx_attr->inject_size);
975984
assert_int_equal(inject_rma_size, resource->info->tx_attr->inject_size);
985+
}
976986
}
977987

978988
/**

0 commit comments

Comments
 (0)