ntohl(((struct sockaddr_in *)
&conn->cm_id->route.addr.dst_addr)->sin_addr.s_addr));
+ /* setup local and remote ports for ep query */
+ conn->ep->param.remote_port_qual = rdma_get_dst_port(conn->cm_id);
+ conn->ep->param.local_port_qual = rdma_get_src_port(conn->cm_id);
+
dapl_evd_connection_callback(conn, IB_CME_CONNECTED,
event->param.conn.private_data, conn->ep);
break;
goto bail;
}
+ /* setup local and remote ports for ep query */
+ ep_ptr->param.remote_port_qual = rdma_get_dst_port(cr_conn->cm_id);
+ ep_ptr->param.local_port_qual = rdma_get_src_port(cr_conn->cm_id);
+
return DAT_SUCCESS;
bail:
rdma_reject(cr_conn->cm_id, NULL, 0);
conn->route_retries = dapl_os_get_env_val("DAPL_CM_ROUTE_RETRY_COUNT",
IB_ROUTE_RETRY_COUNT);
+ /* setup up ep->param to reference the bound local address and port */
+ ep_ptr->param.local_ia_address_ptr = &cm_id->route.addr.src_addr;
+ ep_ptr->param.local_port_qual = rdma_get_src_port(cm_id);
+
ep_ptr->qp_handle = conn;
ep_ptr->qp_state = IB_QP_STATE_INIT;
dapl_dbg_log(DAPL_DBG_TYPE_EP,
- " qp_alloc: qpn %p sq %d,%d rq %d,%d\n",
+ " qp_alloc: qpn %p sq %d,%d rq %d,%d port=%d\n",
ep_ptr->qp_handle->cm_id->qp->qp_num,
qp_create.cap.max_send_wr,qp_create.cap.max_send_sge,
- qp_create.cap.max_recv_wr,qp_create.cap.max_recv_sge);
+ qp_create.cap.max_recv_wr,qp_create.cap.max_recv_sge,
+ ep_ptr->param.local_port_qual);
return DAT_SUCCESS;
bail:
# Simple (OpenIB-cma) default with netdev name provided first on list
# to enable use of same dat.conf version on all nodes
#
-# Add examples for multiple interfaces and IPoIB HA fail over
+# Add examples for multiple interfaces and IPoIB HA fail over, and bonding
#
OpenIB-cma u1.2 nonthreadsafe default /usr/lib/libdaplcma.so dapl.1.2 "ib0 0" ""
OpenIB-cma-1 u1.2 nonthreadsafe default /usr/lib/libdaplcma.so dapl.1.2 "ib1 0" ""
OpenIB-cma-2 u1.2 nonthreadsafe default /usr/lib/libdaplcma.so dapl.1.2 "ib2 0" ""
OpenIB-cma-3 u1.2 nonthreadsafe default /usr/lib/libdaplcma.so dapl.1.2 "ib3 0" ""
+OpenIB-bond u1.2 nonthreadsafe default /usr/lib/libdaplcma.so dapl.1.2 "bond0 0" ""
static DAT_VLEN registered_size_send_msg;
static DAT_VADDR registered_addr_send_msg;
static DAT_EP_ATTR ep_attr;
+static DAT_EP_PARAM ep_param;
char hostname[256] = {0};
char provider[256] = DAPL_PROVIDER;
+char addr_str[INET_ADDRSTRLEN];
/* rdma pointers */
char *rbuf = NULL;
} else
LOGPRINTF("%d connect_ep complete\n", getpid());
+ /* query EP for local and remote address information, print */
+ ret = dat_ep_query( h_ep, DAT_EP_FIELD_ALL, &ep_param );
+ if(ret != DAT_SUCCESS) {
+ fprintf(stderr, "%d Error dat_ep_query: %s\n",
+ getpid(),DT_RetToString(ret));
+ goto cleanup;
+ } else
+ LOGPRINTF("%d EP queried %p \n", getpid(), h_ep);
+
+ inet_ntop(AF_INET,
+ &((struct sockaddr_in *)ep_param.local_ia_address_ptr)->sin_addr,
+ addr_str, sizeof(addr_str));
+ printf("\n%d Query EP: LOCAL addr %s port %d\n", getpid(),
+ addr_str, ep_param.local_port_qual);
+ inet_ntop(AF_INET,
+ &((struct sockaddr_in *)ep_param.remote_ia_address_ptr)->sin_addr,
+ addr_str, sizeof(addr_str));
+ printf("%d Query EP: REMOTE addr %s port %d\n", getpid(),
+ addr_str, ep_param.remote_port_qual);
+ fflush(stdout);
+
/*********** RDMA write data *************/
ret = do_rdma_write_with_msg();
if(ret != DAT_SUCCESS) {