From 722ffc3bf1045ff7113f08cbfce42cb8c84d6e67 Mon Sep 17 00:00:00 2001 From: Arlin Davis Date: Tue, 16 Feb 2016 12:15:08 -0800 Subject: [PATCH] openib: update attributes correctly for iWARP transports Signed-off-by: Arlin Davis --- dapl/openib_common/dapl_ib_common.h | 5 +++ dapl/openib_common/util.c | 67 +++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/dapl/openib_common/dapl_ib_common.h b/dapl/openib_common/dapl_ib_common.h index 4006fd7..8ff898f 100644 --- a/dapl/openib_common/dapl_ib_common.h +++ b/dapl/openib_common/dapl_ib_common.h @@ -170,6 +170,11 @@ typedef struct _ib_named_attr const char *mtu; const char *port; const char *port_num; + const char *iw_ext; + const char *ib_ext; + const char *i_data; + const char *f_add; + const char *c_swap; } ib_named_attr_t; diff --git a/dapl/openib_common/util.c b/dapl/openib_common/util.c index d54d0a8..ec5d72f 100644 --- a/dapl/openib_common/util.c +++ b/dapl/openib_common/util.c @@ -490,16 +490,28 @@ DAT_RETURN dapls_ib_query_hca(IN DAPL_HCA * hca_ptr, #ifdef _OPENIB_MCM_ if (!MFO_EP(&hca_ptr->ib_trans.addr)) #endif - if (hca_ptr->ib_hca_handle->device->transport_type == IBV_TRANSPORT_IWARP) - ia_attr->max_iov_segments_per_rdma_read = 1; + if (hca_ptr->ib_hca_handle->device->transport_type == IBV_TRANSPORT_IWARP) + ia_attr->max_iov_segments_per_rdma_read = 1; ia_attr->max_iov_segments_per_rdma_write = dev_attr.max_sge; ia_attr->num_transport_attr = 0; ia_attr->transport_attr = NULL; ia_attr->num_vendor_attr = 0; ia_attr->vendor_attr = NULL; #ifdef DAT_EXTENSIONS - ia_attr->extension_supported = DAT_EXTENSION_IB; - ia_attr->extension_version = DAT_IB_EXTENSION_VERSION; + if (hca_ptr->ib_hca_handle->device->transport_type == IBV_TRANSPORT_IWARP) { + ia_attr->extension_supported = DAT_EXTENSION_NONE; + tp->na.ib_ext = "FALSE"; + tp->na.i_data = "FALSE"; + tp->na.f_add = "FALSE"; + tp->na.c_swap = "FALSE"; + } else { + ia_attr->extension_supported = DAT_EXTENSION_IB; + ia_attr->extension_version = DAT_IB_EXTENSION_VERSION; + tp->na.ib_ext = "TRUE"; + tp->na.i_data = "TRUE"; + tp->na.f_add = "TRUE"; + tp->na.c_swap = "TRUE"; + } #endif /* save key device attributes for CM exchange */ tp->ib_cm.rd_atom_in = dev_attr.max_qp_rd_atom; @@ -894,28 +906,47 @@ DAT_NAMED_ATTR ib_attrs[] = { void dapls_query_provider_specific_attr(IN DAPL_IA * ia_ptr, IN DAT_PROVIDER_ATTR * attr_ptr) { + int i; + attr_ptr->num_provider_specific_attr = SPEC_ATTR_SIZE(ib_attrs); attr_ptr->provider_specific_attr = ib_attrs; dapl_log(DAPL_DBG_TYPE_UTIL, " prov_attr: %p sz %d\n", ib_attrs, SPEC_ATTR_SIZE(ib_attrs)); - /* update common attributes from providers */ - ib_attrs[1].value = ia_ptr->hca_ptr->ib_trans.na.dev; - ib_attrs[2].value = ia_ptr->hca_ptr->ib_trans.na.mode; - ib_attrs[3].value = ia_ptr->hca_ptr->ib_trans.na.read; - ib_attrs[4].value = ia_ptr->hca_ptr->ib_trans.guid_str; - ib_attrs[5].value = ia_ptr->hca_ptr->ib_trans.na.mtu; - ib_attrs[6].value = ia_ptr->hca_ptr->ib_trans.na.port; - ib_attrs[7].value = ia_ptr->hca_ptr->ib_trans.na.port_num; + for (i=0; ihca_ptr->ib_trans.na.dev; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_CONNECTIVITY_MODE")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.mode; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_RDMA_READ")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.read; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_NODE_GUID")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.guid_str; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_TRANSPORT_MTU")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.mtu; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_PORT_STATUS")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.port; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_PORT_NUMBER")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.port_num; + else if (!strcmp(ib_attrs[i].name, "DAT_EXTENSION_INTERFACE")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.ib_ext; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_IMMED_DATA")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.i_data; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_FETCH_AND_ADD")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.f_add; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_CMP_AND_SWAP")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.c_swap; #ifdef _OPENIB_MCM_ -{ - int i = attr_ptr->num_provider_specific_attr; - ib_attrs[i-3].value = ia_ptr->hca_ptr->ib_trans.fam_str; - ib_attrs[i-2].value = ia_ptr->hca_ptr->ib_trans.mod_str; - ib_attrs[i-1].value = ia_ptr->hca_ptr->ib_trans.ver_str; -} + else if (!strcmp(ib_attrs[i].name, "DAT_IB_PROXY_CPU_FAMILY")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.fam_str; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_PROXY_CPU_MODEL")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.mod_str; + else if (!strcmp(ib_attrs[i].name, "DAT_IB_PROXY_VERSION")) + ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.ver_str; #endif + } } /* -- 2.41.0