Add collective member address and threading information
on a per transport basis. Call create/free service with
HCA open/close.

Signed-off-by: Arlin Davis <[email protected]>
---
 dapl/openib_scm/dapl_ib_util.h |   18 +++++++++++++++++-
 dapl/openib_scm/device.c       |   13 +++++++++++++
 2 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/dapl/openib_scm/dapl_ib_util.h b/dapl/openib_scm/dapl_ib_util.h
index 5f9fb43..0d7f9f3 100644
--- a/dapl/openib_scm/dapl_ib_util.h
+++ b/dapl/openib_scm/dapl_ib_util.h
@@ -111,7 +111,23 @@ typedef struct _ib_hca_transport
        uint8_t                 sl;
        uint16_t                pkey;
        int                     pkey_idx;
-
+#ifdef DAT_IB_COLLECTIVES
+       /* Collective member device and address information */
+       ib_thread_state_t       coll_thread_state;
+       DAPL_OS_THREAD          coll_thread;
+       DAPL_OS_LOCK            coll_lock;
+       DAPL_OS_WAIT_OBJECT     coll_event;
+       struct dapl_llist_entry *grp_list;
+       user_progress_func_t    *user_func;
+       int                     l_sock;
+       struct sockaddr_in      m_addr;
+       void                    *m_ctx;
+       void                    *m_info;
+       void                    *f_info;
+       int                     m_size;
+       int                     f_size;
+       int                     t_id;
+#endif
 } ib_hca_transport_t;
 
 /* prototypes */
diff --git a/dapl/openib_scm/device.c b/dapl/openib_scm/device.c
index 4c50f03..41fccdf 100644
--- a/dapl/openib_scm/device.c
+++ b/dapl/openib_scm/device.c
@@ -57,6 +57,10 @@ static const char rcsid[] = "$Id:  $";
 
 #include <stdlib.h>
 
+#ifdef DAT_IB_COLLECTIVES
+#include <collectives/ib_collectives.h>
+#endif
+
 ib_thread_state_t g_ib_thread_state = 0;
 DAPL_OS_THREAD g_ib_thread;
 DAPL_OS_LOCK g_hca_lock;
@@ -440,6 +444,11 @@ found:
                     (unsigned long long)htonll(hca_ptr->ib_trans.gid.global.
                                                interface_id));
 
+#ifdef DAT_IB_COLLECTIVES
+       if (dapli_create_collective_service(hca_ptr))
+               goto bail;
+#endif
+
        ibv_free_device_list(dev_list);
        return dat_status;
 
@@ -471,6 +480,10 @@ DAT_RETURN dapls_ib_close_hca(IN DAPL_HCA * hca_ptr)
 {
        dapl_dbg_log(DAPL_DBG_TYPE_UTIL, " close_hca: %p\n", hca_ptr);
 
+#ifdef DAT_IB_COLLECTIVES
+               dapli_free_collective_service(hca_ptr);
+#endif
+
        dapl_os_lock(&g_hca_lock);
        if (g_ib_thread_state != IB_THREAD_RUN) {
                dapl_os_unlock(&g_hca_lock);
-- 
1.7.3



_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to