]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
Bug Fixes:
authorArlin Davis <arlin.r.davis@intel.com>
Wed, 9 May 2007 19:51:53 +0000 (12:51 -0700)
committerArlin Davis <arlin.r.davis@intel.com>
Wed, 9 May 2007 19:51:53 +0000 (12:51 -0700)
- 606: Return local and remote ports with dat_ep_query
- 585: Add bonding example to dat.conf

dapl/openib_cma/dapl_ib_cm.c
dapl/openib_cma/dapl_ib_qp.c [changed mode: 0644->0755]
doc/dat.conf
test/dtest/dtest.c [changed mode: 0644->0755]

index 8bdd0eb63989c384a2d9e4808c952323489ea430..06c1a654ccab1b829205030bca939a667282f7da 100755 (executable)
@@ -388,6 +388,10 @@ static void dapli_cm_active_cb(struct dapl_cm_id *conn,
                     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;
@@ -891,6 +895,10 @@ dapls_ib_accept_connection(IN DAT_CR_HANDLE cr_handle,
                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);
old mode 100644 (file)
new mode 100755 (executable)
index f1e1671..69c49a9
@@ -179,14 +179,19 @@ DAT_RETURN dapls_ib_qp_alloc(IN DAPL_IA *ia_ptr,
        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:
index e21de511b1d4914f12c5c65aab2d0e021f53798e..cb9ff0022223b0e7a55488e0c72dd5d088a65f9d 100644 (file)
 # 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" ""
old mode 100644 (file)
new mode 100755 (executable)
index ec8a82e..36f32f3
@@ -106,8 +106,10 @@ static DAT_RMR_CONTEXT    rmr_context_send_msg;
 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;
@@ -341,6 +343,27 @@ main(int argc, char **argv)
        } 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) {