From 5163e6ad58ed997b5f1b4dc02760655eb6ae9fd9 Mon Sep 17 00:00:00 2001 From: Shi Jin Date: Fri, 21 Feb 2025 22:36:21 +0000 Subject: [PATCH] fabtests/prov/efa: Fix the rnr read cq error test for efa-direct efa-direct doesn't prepost any rx buffer internally, it posts whatever application posts, the total_send needs to be adjusted to match this behavior difference. Signed-off-by: Shi Jin --- fabtests/prov/efa/Makefile.include | 1 + fabtests/prov/efa/src/efa_shared.h | 19 +++++++++++++++++++ fabtests/prov/efa/src/rdm_rnr_read_cq_error.c | 15 +++++++++++---- 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 fabtests/prov/efa/src/efa_shared.h diff --git a/fabtests/prov/efa/Makefile.include b/fabtests/prov/efa/Makefile.include index f9d2d343354..a141c36b068 100644 --- a/fabtests/prov/efa/Makefile.include +++ b/fabtests/prov/efa/Makefile.include @@ -42,6 +42,7 @@ endif BUILD_EFA_RDMA_CHECKER endif HAVE_VERBS_DEVEL efa_rnr_srcs = \ + prov/efa/src/efa_shared.h \ prov/efa/src/efa_rnr_shared.h \ prov/efa/src/efa_rnr_shared.c diff --git a/fabtests/prov/efa/src/efa_shared.h b/fabtests/prov/efa/src/efa_shared.h new file mode 100644 index 00000000000..25ad093c742 --- /dev/null +++ b/fabtests/prov/efa/src/efa_shared.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0-only */ +/* SPDX-FileCopyrightText: Copyright Amazon.com, Inc. or its affiliates. All + * rights reserved. */ + +#ifndef _EFA_SHARED_H +#define _EFA_SHARED_H + +#define EFA_FABRIC_NAME "efa" +#define EFA_DIRECT_FABRIC_NAME "efa-direct" + +#define EFA_INFO_TYPE_IS_RDM(_info) \ + (_info && _info->ep_attr && (_info->ep_attr->type == FI_EP_RDM) && \ + !strcasecmp(_info->fabric_attr->name, EFA_FABRIC_NAME)) + +#define EFA_INFO_TYPE_IS_DIRECT(_info) \ + (_info && _info->ep_attr && (_info->ep_attr->type == FI_EP_RDM) && \ + !strcasecmp(_info->fabric_attr->name, EFA_DIRECT_FABRIC_NAME)) + +#endif /* _EFA_SHARED_H */ diff --git a/fabtests/prov/efa/src/rdm_rnr_read_cq_error.c b/fabtests/prov/efa/src/rdm_rnr_read_cq_error.c index 85e0e67db1d..ff56b5a5acc 100644 --- a/fabtests/prov/efa/src/rdm_rnr_read_cq_error.c +++ b/fabtests/prov/efa/src/rdm_rnr_read_cq_error.c @@ -36,6 +36,7 @@ #include #include +#include "efa_shared.h" #include "efa_rnr_shared.h" @@ -48,11 +49,17 @@ static int rnr_read_cq_error(void) rnr_flag = 0; /* * In order for the sender to get RNR error, we need to first consume - * all pre-posted receive buffer (in efa provider, fi->rx_attr->size - * receiving buffer are pre-posted) on the receiver side, the subsequent - * sends (expected_rnr_error) will then get RNR errors. + * all pre-posted receive buffer. + * For efa-rdm, it pre-posted fi->rx_attr->size receive buffers during 1st cq read + * For efa-direct, it posted whatever application posts. ft_enable_ep_recv already + * posts 1. */ - total_send = fi->rx_attr->size + expected_rnr_error; + if (EFA_INFO_TYPE_IS_RDM(fi)) { + total_send = fi->rx_attr->size + expected_rnr_error; + } else { + assert(EFA_INFO_TYPE_IS_DIRECT(fi)); + total_send = expected_rnr_error + 1; + } for (i = 0; i < total_send; i++) { do {