#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;
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; i<SPEC_ATTR_SIZE(ib_attrs); i++) {
+ /* update attributes from IA query results */
+ if (!strcmp(ib_attrs[i].name, "DAT_IB_DEVICE_NAME"))
+ ib_attrs[i].value = ia_ptr->hca_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
+ }
}
/*