@@ -61,6 +61,16 @@ mca_btl_ugni_module_t mca_btl_ugni_module = {
6161 }
6262};
6363
64+ static void * mca_btl_ugni_datagram_event (int foo , short bar , void * arg )
65+ {
66+ mca_btl_ugni_module_t * ugni_module = (mca_btl_ugni_module_t * ) arg ;
67+ mca_btl_ugni_device_t * device = ugni_module -> devices ;
68+
69+ mca_btl_ugni_progress_datagram (device );
70+
71+ opal_event_evtimer_add (& ugni_module -> connection_event , (& (struct timeval ) {.tv_sec = 0 , .tv_usec = MCA_BTL_UGNI_CONNECT_USEC }));
72+ }
73+
6474int
6575mca_btl_ugni_module_init (mca_btl_ugni_module_t * ugni_module )
6676{
@@ -74,6 +84,10 @@ mca_btl_ugni_module_init (mca_btl_ugni_module_t *ugni_module)
7484 ugni_module -> initialized = false;
7585 ugni_module -> nlocal_procs = 0 ;
7686 ugni_module -> connected_peer_count = 0 ;
87+ ugni_module -> active_datagrams = 0 ;
88+
89+ opal_event_evtimer_set (opal_sync_event_base , & ugni_module -> connection_event ,
90+ mca_btl_ugni_datagram_event , ugni_module );
7791
7892 OBJ_CONSTRUCT (& ugni_module -> failed_frags , opal_list_t );
7993 OBJ_CONSTRUCT (& ugni_module -> failed_frags_lock , opal_mutex_t );
@@ -170,6 +184,8 @@ mca_btl_ugni_module_finalize (struct mca_btl_base_module_t *btl)
170184 if (GNI_RC_SUCCESS != rc ) {
171185 BTL_VERBOSE (("btl/ugni error destroying endpoint - %s" ,gni_err_str [rc ]));
172186 }
187+
188+ opal_event_del (& ugni_module -> connection_event );
173189 }
174190
175191 for (int i = 0 ; i < MCA_BTL_UGNI_LIST_MAX ; ++ i ) {
0 commit comments