]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
openib: update attributes correctly for iWARP transports
authorArlin Davis <arlin.r.davis@intel.com>
Tue, 16 Feb 2016 20:15:08 +0000 (12:15 -0800)
committerArlin Davis <arlin.r.davis@intel.com>
Tue, 16 Feb 2016 20:15:08 +0000 (12:15 -0800)
Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
dapl/openib_common/dapl_ib_common.h
dapl/openib_common/util.c

index 4006fd7e91a57995786bb0934b402d1d2f5b8d2a..8ff898f290fda0088cf1ec2e057bf4998d7906b7 100644 (file)
@@ -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;
 
index d54d0a8ab9148ae5c3daae91ee1f4033d88e15f6..ec5d72f843579f607309e7daf324f58dd8446dbd 100644 (file)
@@ -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; 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
+       }
 }
 
 /*