1
1

usnic: remove some legacy libfabric 1.0/1.1 code

We only support running with libfabric v1.3 or greater.  So it's safe
to remove the legacy/adaptive cq_readerr() behavior.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
Этот коммит содержится в:
Jeff Squyres 2016-10-03 11:58:08 -07:00
родитель 345c07a252
Коммит 8b77359cac
2 изменённых файлов: 6 добавлений и 48 удалений

Просмотреть файл

@ -236,13 +236,6 @@ typedef struct opal_btl_usnic_component_t {
the prefix is non-NULL) */
char *connectivity_map_prefix;
/** Expected return value from fi_cq_readerr() upon success. In
libfabric v1.0.0 / API v1.0, the usnic provider returned
sizeof(fi_cq_err_entry) upon success. In libfabric >=v1.1 /
API >=v1.1, the usnic provider returned 1 upon success. */
ssize_t cq_readerr_success_value;
ssize_t cq_readerr_try_again_value;
/** Offset into the send buffer where the payload will go. For
libfabric v1.0.0 / API v1.0, this is 0. For libfabric >=v1.1
/ API >=v1.1, this is the endpoint.msg_prefix_size (i.e.,

Просмотреть файл

@ -636,7 +636,7 @@ static mca_btl_base_module_t** usnic_component_init(int* num_btl_modules,
/* There are multiple dimensions to consider when requesting an
API version number from libfabric:
1. This code understands libfabric API versions v1.0 through
1. This code understands libfabric API versions v1.3 through
v1.4.
2. Open MPI may be *compiled* against one version of libfabric,
@ -684,18 +684,7 @@ static mca_btl_base_module_t** usnic_component_init(int* num_btl_modules,
NOTE: The configure.m4 in this component will require libfabric
>= v1.1.0 (i.e., it won't accept v1.0.0) because it needs
access to the usNIC extension header structures that only
became available in v1.1.0.
All that being said, the compatibility code with libfabric
v1.0.0 in the usNIC BTL has been retained, for two reasons:
1. It's not harmful, nor overly complicated. So the
compatibility code was not ripped out.
2. At least some versions of Cisco Open MPI are shipping with
an embedded (libfabric v1.0.0+critical bug fix).
Someday, #2 may no longer be true, and we may therefore rip out
the libfabric v1.0.0 compatibility code. */
became available in v1.1.0.*/
/* First, check to see if the libfabric we are running with is <=
libfabric v1.3. If so, don't bother going further. */
@ -761,29 +750,6 @@ static mca_btl_base_module_t** usnic_component_init(int* num_btl_modules,
opal_output_verbose(5, USNIC_OUT,
"btl:usnic: usNIC fabrics found");
/* Due to ambiguities in documentation, in libfabric v1.0.0 (i.e.,
API v1.0) the usnic provider returned sizeof(struct
fi_cq_err_entry) from fi_cq_readerr() upon success.
The ambiguities were clarified in libfabric v1.1.0 (i.e., API
v1.1); the usnic provider returned 1 from fi_cq_readerr() upon
success.
So query to see what version of the libfabric API we are
running with, and adapt accordingly. */
libfabric_api = fi_version();
if (1 == FI_MAJOR(libfabric_api) &&
0 == FI_MINOR(libfabric_api)) {
// Old fi_cq_readerr() behavior: success=sizeof(...), try again=0
mca_btl_usnic_component.cq_readerr_success_value =
sizeof(struct fi_cq_err_entry);
mca_btl_usnic_component.cq_readerr_try_again_value = 0;
} else {
// New fi_cq_readerr() behavior: success=1, try again=-FI_EAGAIN
mca_btl_usnic_component.cq_readerr_success_value = 1;
mca_btl_usnic_component.cq_readerr_try_again_value = -FI_EAGAIN;
}
opal_proc_t *me = opal_proc_local_get();
opal_process_name_t *name = &(me->proc_name);
mca_btl_usnic_component.my_hashed_rte_name =
@ -1279,12 +1245,11 @@ usnic_handle_cq_error(opal_btl_usnic_module_t* module,
}
rc = fi_cq_readerr(channel->cq, &err_entry, 0);
if (rc == mca_btl_usnic_component.cq_readerr_try_again_value) {
if (rc == -FI_EAGAIN) {
return;
} else if (rc != mca_btl_usnic_component.cq_readerr_success_value) {
BTL_ERROR(("%s: cq_readerr ret = %d (expected %d)",
module->linux_device_name, rc,
(int) mca_btl_usnic_component.cq_readerr_success_value));
} else if (rc != 1) {
BTL_ERROR(("%s: cq_readerr ret = %d (expected 1)",
module->linux_device_name, rc));
channel->chan_error = true;
}