@@ -813,7 +813,8 @@ void test_ibv_cq_ex_read_ignore_removed_peer()
813
813
#endif
814
814
815
815
static void test_efa_cq_read (struct efa_resource * resource , fi_addr_t * addr ,
816
- int ibv_wc_opcode , int status , int vendor_error )
816
+ int ibv_wc_opcode , int status , int vendor_error ,
817
+ struct efa_context * ctx )
817
818
{
818
819
int ret ;
819
820
size_t raw_addr_len = sizeof (struct efa_ep_addr );
@@ -847,7 +848,9 @@ static void test_efa_cq_read(struct efa_resource *resource, fi_addr_t *addr,
847
848
if (ibv_wc_opcode == IBV_WC_RECV ) {
848
849
ibv_cqx = container_of (base_ep -> util_ep .rx_cq , struct efa_cq , util_cq )-> ibv_cq .ibv_cq_ex ;
849
850
ibv_cqx -> start_poll = & efa_mock_ibv_start_poll_return_mock ;
850
- ibv_cqx -> wr_id = (uintptr_t )12345 ;
851
+ ctx -> completion_flags = FI_RECV | FI_MSG ;
852
+ ctx -> addr = 0x12345678 ;
853
+ ibv_cqx -> wr_id = (uintptr_t ) ctx ;
851
854
will_return (efa_mock_ibv_start_poll_return_mock , 0 );
852
855
ibv_cqx -> status = status ;
853
856
} else {
@@ -894,16 +897,19 @@ void test_efa_cq_read_send_success(struct efa_resource **state)
894
897
{
895
898
struct efa_resource * resource = * state ;
896
899
struct efa_unit_test_buff send_buff ;
900
+ struct fi_context2 * ctx ;
897
901
struct fi_cq_data_entry cq_entry ;
898
902
fi_addr_t addr ;
899
903
int ret ;
900
904
901
- test_efa_cq_read (resource , & addr , IBV_WC_SEND , IBV_WC_SUCCESS , 0 );
905
+ ctx = malloc (sizeof (struct fi_context2 ));
906
+ assert_non_null (ctx );
907
+ test_efa_cq_read (resource , & addr , IBV_WC_SEND , IBV_WC_SUCCESS , 0 , (struct efa_context * )ctx );
902
908
efa_unit_test_buff_construct (& send_buff , resource , 4096 /* buff_size */ );
903
909
904
910
assert_int_equal (g_ibv_submitted_wr_id_cnt , 0 );
905
911
ret = fi_send (resource -> ep , send_buff .buff , send_buff .size ,
906
- fi_mr_desc (send_buff .mr ), addr , ( void * ) 12345 );
912
+ fi_mr_desc (send_buff .mr ), addr , ctx );
907
913
assert_int_equal (ret , 0 );
908
914
assert_int_equal (g_ibv_submitted_wr_id_cnt , 1 );
909
915
@@ -913,6 +919,7 @@ void test_efa_cq_read_send_success(struct efa_resource **state)
913
919
assert_int_equal (ret , 1 );
914
920
915
921
efa_unit_test_buff_destruct (& send_buff );
922
+ free (ctx );
916
923
}
917
924
918
925
/**
@@ -924,20 +931,24 @@ void test_efa_cq_read_recv_success(struct efa_resource **state)
924
931
struct efa_resource * resource = * state ;
925
932
struct efa_unit_test_buff recv_buff ;
926
933
struct fi_cq_data_entry cq_entry ;
934
+ struct fi_context2 * ctx ;
927
935
fi_addr_t addr ;
928
936
int ret ;
929
937
930
- test_efa_cq_read (resource , & addr , IBV_WC_RECV , IBV_WC_SUCCESS , 0 );
938
+ ctx = malloc (sizeof (struct fi_context2 ));
939
+ assert_non_null (ctx );
940
+ test_efa_cq_read (resource , & addr , IBV_WC_RECV , IBV_WC_SUCCESS , 0 , (struct efa_context * )ctx );
931
941
efa_unit_test_buff_construct (& recv_buff , resource , 4096 /* buff_size */ );
932
942
933
943
ret = fi_recv (resource -> ep , recv_buff .buff , recv_buff .size ,
934
- fi_mr_desc (recv_buff .mr ), addr , NULL );
944
+ fi_mr_desc (recv_buff .mr ), addr , ctx );
935
945
assert_int_equal (ret , 0 );
936
946
937
947
ret = fi_cq_read (resource -> cq , & cq_entry , 1 );
938
948
assert_int_equal (ret , 1 );
939
949
940
950
efa_unit_test_buff_destruct (& recv_buff );
951
+ free (ctx );
941
952
}
942
953
943
954
static void efa_cq_check_cq_err_entry (struct efa_resource * resource , int vendor_error ) {
@@ -974,16 +985,19 @@ void test_efa_cq_read_send_failure(struct efa_resource **state)
974
985
struct efa_resource * resource = * state ;
975
986
struct efa_unit_test_buff send_buff ;
976
987
struct fi_cq_data_entry cq_entry ;
988
+ struct fi_context2 * ctx ;
977
989
fi_addr_t addr ;
978
990
int ret ;
979
991
992
+ ctx = malloc (sizeof (struct fi_context2 ));
993
+ assert_non_null (ctx );
980
994
test_efa_cq_read (resource , & addr , IBV_WC_SEND , IBV_WC_GENERAL_ERR ,
981
- EFA_IO_COMP_STATUS_LOCAL_ERROR_UNRESP_REMOTE );
995
+ EFA_IO_COMP_STATUS_LOCAL_ERROR_UNRESP_REMOTE , ( struct efa_context * ) ctx );
982
996
efa_unit_test_buff_construct (& send_buff , resource , 4096 /* buff_size */ );
983
997
984
998
assert_int_equal (g_ibv_submitted_wr_id_cnt , 0 );
985
999
ret = fi_send (resource -> ep , send_buff .buff , send_buff .size ,
986
- fi_mr_desc (send_buff .mr ), addr , ( void * ) 12345 );
1000
+ fi_mr_desc (send_buff .mr ), addr , ctx );
987
1001
assert_int_equal (ret , 0 );
988
1002
assert_int_equal (g_ibv_submitted_wr_id_cnt , 1 );
989
1003
@@ -996,6 +1010,7 @@ void test_efa_cq_read_send_failure(struct efa_resource **state)
996
1010
EFA_IO_COMP_STATUS_LOCAL_ERROR_UNRESP_REMOTE );
997
1011
998
1012
efa_unit_test_buff_destruct (& send_buff );
1013
+ free (ctx );
999
1014
}
1000
1015
1001
1016
/**
@@ -1011,15 +1026,18 @@ void test_efa_cq_read_recv_failure(struct efa_resource **state)
1011
1026
struct efa_resource * resource = * state ;
1012
1027
struct efa_unit_test_buff recv_buff ;
1013
1028
struct fi_cq_data_entry cq_entry ;
1029
+ struct fi_context2 * ctx ;
1014
1030
fi_addr_t addr ;
1015
1031
int ret ;
1016
1032
1033
+ ctx = malloc (sizeof (struct fi_context2 ));
1034
+ assert_non_null (ctx );
1017
1035
test_efa_cq_read (resource , & addr , IBV_WC_RECV , IBV_WC_GENERAL_ERR ,
1018
- EFA_IO_COMP_STATUS_LOCAL_ERROR_UNRESP_REMOTE );
1036
+ EFA_IO_COMP_STATUS_LOCAL_ERROR_UNRESP_REMOTE , ( struct efa_context * ) ctx );
1019
1037
efa_unit_test_buff_construct (& recv_buff , resource , 4096 /* buff_size */ );
1020
1038
1021
1039
ret = fi_recv (resource -> ep , recv_buff .buff , recv_buff .size ,
1022
- fi_mr_desc (recv_buff .mr ), addr , NULL );
1040
+ fi_mr_desc (recv_buff .mr ), addr , ctx );
1023
1041
assert_int_equal (ret , 0 );
1024
1042
1025
1043
ret = fi_cq_read (resource -> cq , & cq_entry , 1 );
@@ -1029,4 +1047,5 @@ void test_efa_cq_read_recv_failure(struct efa_resource **state)
1029
1047
EFA_IO_COMP_STATUS_LOCAL_ERROR_UNRESP_REMOTE );
1030
1048
1031
1049
efa_unit_test_buff_destruct (& recv_buff );
1050
+ free (ctx );
1032
1051
}
0 commit comments