Skip to content

Commit 9a97526

Browse files
committed
prov/efa: Remove unit tests that require handshake for DC
In the new code path, I removed the logic that queues a DC packet until a handshake has completed. Going forward, we are targeting backwards compatibiilty up to v2.0 The delivery complete feature was introduced in Libfabric v1.12 Signed-off-by: Sai Sunku <sunkusa@amazon.com>
1 parent 54cfc79 commit 9a97526

3 files changed

Lines changed: 2 additions & 126 deletions

File tree

prov/efa/test/efa_unit_test_ep.c

Lines changed: 0 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -468,128 +468,6 @@ void test_efa_rdm_ep_dc_atomic_queue_before_handshake(struct efa_resource **stat
468468
assert_true(txe->internal_flags & EFA_RDM_OPE_QUEUED_BEFORE_HANDSHAKE);
469469
}
470470

471-
/**
472-
* @brief when delivery complete send was used and handshake packet has not been received
473-
* verify the txe is queued
474-
*
475-
* @param[in] state struct efa_resource that is managed by the framework
476-
*/
477-
void test_efa_rdm_ep_dc_send_queue_before_handshake(struct efa_resource **state)
478-
{
479-
struct efa_rdm_ep *efa_rdm_ep;
480-
struct efa_rdm_peer *peer;
481-
struct fi_msg msg = {0};
482-
struct iovec iov;
483-
struct efa_resource *resource = *state;
484-
struct efa_ep_addr raw_addr = {0};
485-
size_t raw_addr_len = sizeof(struct efa_ep_addr);
486-
fi_addr_t peer_addr;
487-
int err, numaddr;
488-
struct efa_rdm_ope *txe;
489-
490-
/* disable shm to force using efa device to send */
491-
efa_unit_test_resource_construct_rdm_shm_disabled(resource);
492-
493-
/* create a fake peer */
494-
err = fi_getname(&resource->ep->fid, &raw_addr, &raw_addr_len);
495-
assert_int_equal(err, 0);
496-
raw_addr.qpn = 1;
497-
raw_addr.qkey = 0x1234;
498-
numaddr = fi_av_insert(resource->av, &raw_addr, 1, &peer_addr, 0, NULL);
499-
assert_int_equal(numaddr, 1);
500-
501-
msg.addr = peer_addr;
502-
msg.iov_count = 1;
503-
iov.iov_base = NULL;
504-
iov.iov_len = 0;
505-
msg.msg_iov = &iov;
506-
msg.desc = NULL;
507-
508-
efa_rdm_ep = container_of(resource->ep, struct efa_rdm_ep, base_ep.util_ep.ep_fid);
509-
510-
/* set peer->flag to EFA_RDM_PEER_REQ_SENT will make efa_rdm_atomic() think
511-
* a REQ packet has been sent to the peer (so no need to send again)
512-
* handshake has not been received, so we do not know whether the peer support DC
513-
*/
514-
peer = efa_rdm_ep_get_peer(efa_rdm_ep, peer_addr);
515-
peer->flags = EFA_RDM_PEER_REQ_SENT;
516-
peer->is_local = false;
517-
518-
assert_false(efa_rdm_ep->homogeneous_peers);
519-
assert_true(dlist_empty(&efa_rdm_ep->txe_list));
520-
err = fi_sendmsg(resource->ep, &msg, FI_DELIVERY_COMPLETE);
521-
/* DC has been reuquested, but ep do not know whether peer supports it, therefore
522-
* the ope has been queued to domain->ope_queued_list
523-
*/
524-
assert_int_equal(err, 0);
525-
assert_int_equal(efa_unit_test_get_dlist_length(&efa_rdm_ep->txe_list), 1);
526-
assert_int_equal(efa_unit_test_get_dlist_length(&(efa_rdm_ep_domain(efa_rdm_ep)->ope_queued_list)), 1);
527-
txe = container_of(efa_rdm_ep_domain(efa_rdm_ep)->ope_queued_list.next, struct efa_rdm_ope, queued_entry);
528-
assert_true((txe->op == ofi_op_msg));
529-
assert_true(txe->internal_flags & EFA_RDM_OPE_QUEUED_BEFORE_HANDSHAKE);
530-
}
531-
532-
/**
533-
* @brief when delivery complete send was used and handshake packet has not been received
534-
* verify the txes are queued before the number of requests reach EFA_RDM_MAX_QUEUED_OPE_BEFORE_HANDSHAKE.
535-
* After reaching the limit, fi_send should return -FI_EAGAIN
536-
*
537-
* @param[in] state struct efa_resource that is managed by the framework
538-
*/
539-
void test_efa_rdm_ep_dc_send_queue_limit_before_handshake(struct efa_resource **state)
540-
{
541-
struct efa_rdm_ep *efa_rdm_ep;
542-
struct efa_rdm_peer *peer;
543-
struct fi_msg msg = {0};
544-
struct iovec iov;
545-
struct efa_resource *resource = *state;
546-
struct efa_ep_addr raw_addr = {0};
547-
size_t raw_addr_len = sizeof(struct efa_ep_addr);
548-
fi_addr_t peer_addr;
549-
int err, numaddr;
550-
int i;
551-
552-
/* disable shm to force using efa device to send */
553-
efa_unit_test_resource_construct_rdm_shm_disabled(resource);
554-
555-
/* create a fake peer */
556-
err = fi_getname(&resource->ep->fid, &raw_addr, &raw_addr_len);
557-
assert_int_equal(err, 0);
558-
raw_addr.qpn = 1;
559-
raw_addr.qkey = 0x1234;
560-
numaddr = fi_av_insert(resource->av, &raw_addr, 1, &peer_addr, 0, NULL);
561-
assert_int_equal(numaddr, 1);
562-
563-
msg.addr = peer_addr;
564-
msg.iov_count = 1;
565-
iov.iov_base = NULL;
566-
iov.iov_len = 0;
567-
msg.msg_iov = &iov;
568-
msg.desc = NULL;
569-
570-
efa_rdm_ep = container_of(resource->ep, struct efa_rdm_ep, base_ep.util_ep.ep_fid);
571-
572-
/* set peer->flag to EFA_RDM_PEER_REQ_SENT will make efa_rdm_atomic() think
573-
* a REQ packet has been sent to the peer (so no need to send again)
574-
* handshake has not been received, so we do not know whether the peer support DC
575-
*/
576-
peer = efa_rdm_ep_get_peer(efa_rdm_ep, peer_addr);
577-
peer->flags = EFA_RDM_PEER_REQ_SENT;
578-
peer->is_local = false;
579-
580-
assert_false(efa_rdm_ep->homogeneous_peers);
581-
assert_true(dlist_empty(&efa_rdm_ep->txe_list));
582-
583-
for (i = 0; i < EFA_RDM_MAX_QUEUED_OPE_BEFORE_HANDSHAKE; i++) {
584-
err = fi_sendmsg(resource->ep, &msg, FI_DELIVERY_COMPLETE);
585-
assert_int_equal(err, 0);
586-
}
587-
588-
assert_true(efa_rdm_ep->ope_queued_before_handshake_cnt == EFA_RDM_MAX_QUEUED_OPE_BEFORE_HANDSHAKE);
589-
err = fi_sendmsg(resource->ep, &msg, FI_DELIVERY_COMPLETE);
590-
assert_int_equal(err, -FI_EAGAIN);
591-
}
592-
593471
/**
594472
* @brief verify tx entry is queued for rma (read or write) request before handshake is made.
595473
*

prov/efa/test/efa_unit_tests.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,7 @@ int main(void)
178178
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_rx_pkt_pool_flags, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
179179
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_pkt_pool_page_alignment, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
180180
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_dc_atomic_queue_before_handshake, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
181-
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_dc_send_queue_before_handshake, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
182-
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_dc_send_queue_limit_before_handshake, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
181+
183182
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_read_queue_before_handshake, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
184183
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_write_queue_before_handshake, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),
185184
cmocka_unit_test_setup_teardown(test_efa_rdm_ep_trigger_handshake, efa_unit_test_mocks_setup, efa_unit_test_mocks_teardown),

prov/efa/test/efa_unit_tests.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,7 @@ void test_efa_rdm_ep_tx_pkt_pool_flags();
163163
void test_efa_rdm_ep_rx_pkt_pool_flags();
164164
void test_efa_rdm_ep_pkt_pool_page_alignment();
165165
void test_efa_rdm_ep_dc_atomic_queue_before_handshake();
166-
void test_efa_rdm_ep_dc_send_queue_before_handshake();
167-
void test_efa_rdm_ep_dc_send_queue_limit_before_handshake();
166+
168167
void test_efa_rdm_ep_write_queue_before_handshake();
169168
void test_efa_rdm_ep_read_queue_before_handshake();
170169
void test_efa_rdm_ep_trigger_handshake();

0 commit comments

Comments
 (0)