Signed-off by: Arlin Davis [EMAIL PROTECTED]
---
 dapl/openib_scm/dapl_ib_qp.c   |   42
+++++++++++++++++++++------------------
 dapl/openib_scm/dapl_ib_util.c |    7 ++++++
 dapl/openib_scm/dapl_ib_util.h |   11 +++++++++-
 3 files changed, 40 insertions(+), 20 deletions(-)

diff --git a/dapl/openib_scm/dapl_ib_qp.c b/dapl/openib_scm/dapl_ib_qp.c
index 1eba2bd..8577131 100644
--- a/dapl/openib_scm/dapl_ib_qp.c
+++ b/dapl/openib_scm/dapl_ib_qp.c
@@ -25,9 +25,9 @@
 
 /**********************************************************************
  *
- * MODULE: dapl_det_qp.c
+ * MODULE: dapl_ib_qp.c
  *
- * PURPOSE: QP routines for access to DET Verbs
+ * PURPOSE: QP routines for access to ofa rdma verbs 
  *
  * $Id: $
 
**********************************************************************/
@@ -285,17 +285,12 @@ void
 dapls_ib_reinit_ep (
        IN  DAPL_EP     *ep_ptr)
 {
-       
        if ( ep_ptr->qp_handle != IB_INVALID_HANDLE ) {
                /* move to RESET state and then to INIT */
                dapls_modify_qp_state(ep_ptr->qp_handle, IBV_QPS_RESET,
0);
                dapls_modify_qp_state(ep_ptr->qp_handle, IBV_QPS_INIT,
0);
                ep_ptr->qp_state = IB_QP_STATE_INIT;
        }
-
-       /* TODO: When IB-CM is implement then handle timewait before 
-        * allowing re-use of this QP
-        */
 }
 
 /* 
@@ -325,19 +320,28 @@ dapls_modify_qp_state ( IN ib_qp_handle_t
qp_handle,
                                IBV_QP_MAX_DEST_RD_ATOMIC |
                                IBV_QP_MIN_RNR_TIMER;
 
-                       qp_attr.qp_state                = IBV_QPS_RTR;
-                       qp_attr.path_mtu                = IBV_MTU_2048;
-                       qp_attr.dest_qp_num             = qp_cm->qpn;
-                       qp_attr.rq_psn                  = 1;
-                       qp_attr.max_dest_rd_atomic      = 
+                       qp_attr.qp_state = IBV_QPS_RTR;
+                       qp_attr.dest_qp_num = qp_cm->qpn;
+                       qp_attr.rq_psn = 1;
+                       qp_attr.path_mtu = 
+                               ia_ptr->hca_ptr->ib_trans.mtu;
+                       qp_attr.max_dest_rd_atomic = 
                                ep_ptr->param.ep_attr.max_rdma_read_out;
-                       qp_attr.min_rnr_timer           =
ia_ptr->hca_ptr->ib_trans.rnr_timer;
-                       qp_attr.ah_attr.is_global       = 0;
-                       qp_attr.ah_attr.grh.dgid        = qp_cm->gid;
-                       qp_attr.ah_attr.dlid            = qp_cm->lid;
-                       qp_attr.ah_attr.sl              = 0;
-                       qp_attr.ah_attr.src_path_bits   = 0;
-                       qp_attr.ah_attr.port_num        = qp_cm->port;
+                       qp_attr.min_rnr_timer =
+                               ia_ptr->hca_ptr->ib_trans.rnr_timer;
+                       qp_attr.ah_attr.dlid = qp_cm->lid;
+                       /* global routing */
+                       if (ia_ptr->hca_ptr->ib_trans.global) {
+                               qp_attr.ah_attr.is_global = 1;
+                               qp_attr.ah_attr.grh.dgid = qp_cm->gid;
+                               qp_attr.ah_attr.grh.hop_limit = 
+
ia_ptr->hca_ptr->ib_trans.hop_limit;
+                               qp_attr.ah_attr.grh.traffic_class = 
+
ia_ptr->hca_ptr->ib_trans.tclass;
+                       }
+                       qp_attr.ah_attr.sl = 0;
+                       qp_attr.ah_attr.src_path_bits = 0;
+                       qp_attr.ah_attr.port_num = qp_cm->port;
                        
                        dapl_dbg_log (DAPL_DBG_TYPE_EP,
                              " modify_qp_rtr: qpn %x lid %x "
diff --git a/dapl/openib_scm/dapl_ib_util.c
b/dapl/openib_scm/dapl_ib_util.c
index a9941f5..ecf6f6a 100644
--- a/dapl/openib_scm/dapl_ib_util.c
+++ b/dapl/openib_scm/dapl_ib_util.c
@@ -210,6 +210,12 @@ found:
                dapl_os_get_env_val("DAPL_RNR_RETRY", SCM_RNR_RETRY);
        hca_ptr->ib_trans.rnr_timer = 
                dapl_os_get_env_val("DAPL_RNR_TIMER", SCM_RNR_TIMER);
+       hca_ptr->ib_trans.global = 
+               dapl_os_get_env_val("DAPL_GLOBAL_ROUTING", SCM_GLOBAL);
+       hca_ptr->ib_trans.hop_limit = 
+               dapl_os_get_env_val("DAPL_HOP_LIMIT", SCM_HOP_LIMIT);
+       hca_ptr->ib_trans.tclass = 
+               dapl_os_get_env_val("DAPL_TCLASS", SCM_TCLASS);
 
        /* initialize cq_lock */
        dat_status = dapl_os_lock_init(&hca_ptr->ib_trans.cq_lock);
@@ -433,6 +439,7 @@ DAT_RETURN dapls_ib_query_hca (
                ia_attr->vendor_attr              = NULL;
                hca_ptr->ib_trans.ack_timer       =
DAPL_MAX(dev_attr.local_ca_ack_delay,
 
hca_ptr->ib_trans.ack_timer);
+               hca_ptr->ib_trans.mtu             =
port_attr.active_mtu;
                dapl_dbg_log (DAPL_DBG_TYPE_UTIL, 
                        " query_hca: (%x.%x) ep %d ep_q %d evd %d evd_q
%d\n", 
                        ia_attr->hardware_version_major,
diff --git a/dapl/openib_scm/dapl_ib_util.h
b/dapl/openib_scm/dapl_ib_util.h
index 81a1752..37c5dbb 100644
--- a/dapl/openib_scm/dapl_ib_util.h
+++ b/dapl/openib_scm/dapl_ib_util.h
@@ -186,6 +186,11 @@ typedef struct ibv_comp_channel
*ib_wait_obj_handle_t;
 #define SCM_RNR_TIMER 28       /* 5 bits, 28 == 163ms, 31 == 491ms */
 #define SCM_RNR_RETRY 7                /* 3 bits, 7 == infinite */
 
+/* Global routing defaults */
+#define SCM_GLOBAL     0       /* global routing is disabled */
+#define SCM_HOP_LIMIT  0xff
+#define SCM_TCLASS     0
+
 /* CM private data areas */
 #define        IB_MAX_REQ_PDATA_SIZE   92
 #define        IB_MAX_REP_PDATA_SIZE   196
@@ -193,7 +198,7 @@ typedef struct ibv_comp_channel
*ib_wait_obj_handle_t;
 #define        IB_MAX_DREQ_PDATA_SIZE  220
 #define        IB_MAX_DREP_PDATA_SIZE  224
 
-/* DTO OPs, ordered for DAPL ENUM definitions ???*/
+/* DTO OPs, ordered for DAPL ENUM definitions */
 #define OP_RDMA_WRITE           IBV_WR_RDMA_WRITE
 #define OP_RDMA_WRITE_IMM       IBV_WR_RDMA_WRITE_WITH_IMM
 #define OP_SEND                 IBV_WR_SEND
@@ -295,6 +300,10 @@ typedef struct _ib_hca_transport
        uint8_t                 ack_retry;
        uint8_t                 rnr_timer;
        uint8_t                 rnr_retry;
+       uint8_t                 global;
+       uint8_t                 hop_limit;
+       uint8_t                 tclass;
+       uint8_t                 mtu;
 } ib_hca_transport_t;
 
 /* provider specfic fields for shared memory support */
-- 
1.5.2.5

_______________________________________________
general mailing list
general@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to