}
}
+const char *dapl_ib_gid_str(union ibv_gid *gid, char *str)
+{
+ sprintf(str, "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
+ gid->raw[0], gid->raw[1], gid->raw[2], gid->raw[3],
+ gid->raw[4], gid->raw[5], gid->raw[6], gid->raw[7],
+ gid->raw[8], gid->raw[9], gid->raw[10],gid->raw[11],
+ gid->raw[12],gid->raw[13],gid->raw[14],gid->raw[15]);
+
+ return str;
+}
+
+
/*
* dapls_ib_query_hca
*
ib_hca_transport_t *tp = &hca_ptr->ib_trans;
struct ibv_device_attr dev_attr;
struct ibv_port_attr port_attr;
+ union ibv_gid port_gid;
/* local IP address of device, set during ia_open */
if (ip_addr)
tp->na.mtu = dapl_ib_mtu_str(tp->ib_cm.mtu);
tp->na.port = dapl_ib_port_str(port_attr.state);
tp->na.port_num = dapl_ib_port_num_str(hca_ptr->port_num);
+ /* get gid and init named attribute */
+ ibv_query_gid(hca_ptr->ib_hca_handle, (uint8_t)hca_ptr->port_num, 0, &port_gid);
+ tp->na.gid = dapl_ib_gid_str(&port_gid, tp->gid_str);
+
if (!tp->guid) {
#ifdef _OPENIB_MCM_
if (MFO_EP(&hca_ptr->ib_trans.addr) && tp->self.node)
{
"DAT_IB_NODE_GUID", "xxxx:xxxx:xxxx:xxxx"}
,
+ {
+ "DAT_IB_GID", "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx"}
+ ,
{
"DAT_IB_TRANSPORT_MTU", "2048"}
,
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_GID"))
+ ib_attrs[i].value = ia_ptr->hca_ptr->ib_trans.na.gid;
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"))