/* * Alter the returned fi_info based on the user hints. We assume that * the hints have been validated and the starting fi_info is properly * configured by the provider. */ void ofi_alter_info(struct fi_info *info, const struct fi_info *hints, uint32_t api_version) { if (!hints) return; for (; info; info = info->next) { /* This should stay before call to fi_alter_domain_attr as * the checks depend on unmodified provider mr_mode attr */ info->caps = ofi_get_info_caps(info, hints, api_version); if ((info->domain_attr->mr_mode & FI_MR_LOCAL) && (FI_VERSION_LT(api_version, FI_VERSION(1, 5)) || (hints && hints->domain_attr && (hints->domain_attr->mr_mode & (FI_MR_BASIC | FI_MR_SCALABLE))))) info->mode |= FI_LOCAL_MR; info->handle = hints->handle; fi_alter_domain_attr(info->domain_attr, hints->domain_attr, info->caps, api_version); fi_alter_ep_attr(info->ep_attr, hints->ep_attr, info->caps); fi_alter_rx_attr(info->rx_attr, hints->rx_attr, info->caps); fi_alter_tx_attr(info->tx_attr, hints->tx_attr, info->caps); } }
/* * Alter the returned fi_info based on the user hints. We assume that * the hints have been validated and the starting fi_info is properly * configured by the provider. */ void ofi_alter_info(struct fi_info *info, const struct fi_info *hints) { if (!hints) return; for (; info; info = info->next) { info->caps = (hints->caps & FI_PRIMARY_CAPS) | (info->caps & FI_SECONDARY_CAPS); info->handle = hints->handle; fi_alter_domain_attr(info->domain_attr, hints->domain_attr, info->caps); fi_alter_ep_attr(info->ep_attr, hints->ep_attr); fi_alter_rx_attr(info->rx_attr, hints->rx_attr, info->caps); fi_alter_tx_attr(info->tx_attr, hints->tx_attr, info->caps); } }