--- /dev/null
+Bottom: 1f8a8438356e65ed344028d949bd8033fc3cdae4
+Top: 84611ba9217ac3e6de75f53e37b41fcca0916e87
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2010-09-16 13:24:57 -0700
+
+Refresh of dapl-evd
+
+---
+
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_disconnect.c b/trunk/ulp/dapl2/dapl/common/dapl_ep_disconnect.c
+index 72da620..90748b0 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_disconnect.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_disconnect.c
+@@ -165,6 +165,7 @@ dapl_ep_disconnect(IN DAT_EP_HANDLE ep_handle,
+ }
+ dapl_os_unlock(&ep_ptr->header.lock);
+ dat_status = dapls_ib_disconnect(ep_ptr, disconnect_flags);
++ dapls_ep_flush_cqs(ep_ptr);
+
+ bail:
+ dapl_dbg_log(DAPL_DBG_TYPE_RTN | DAPL_DBG_TYPE_CM,
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c b/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
+index e7268ac..32d50cc 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
+@@ -65,7 +65,6 @@ DAT_RETURN DAT_API dapl_ep_free(IN DAT_EP_HANDLE ep_handle)
+ {
+ DAPL_EP *ep_ptr;
+ DAPL_IA *ia_ptr;
+- DAPL_EVD *evd_ptr;
+ DAT_EP_PARAM *param;
+ dp_ib_cm_handle_t cm_ptr, next_cm_ptr;
+ ib_qp_state_t save_qp_state;
+@@ -203,18 +202,7 @@ DAT_RETURN DAT_API dapl_ep_free(IN DAT_EP_HANDLE ep_handle)
+ }
+ }
+
+- if (ep_ptr->param.request_evd_handle) {
+- evd_ptr = (DAPL_EVD *) ep_ptr->param.request_evd_handle;
+- dapl_os_lock(&evd_ptr->header.lock);
+- dapls_evd_copy_cq(evd_ptr);
+- dapl_os_unlock(&evd_ptr->header.lock);
+- }
+- if (ep_ptr->param.recv_evd_handle) {
+- evd_ptr = (DAPL_EVD *) ep_ptr->param.recv_evd_handle;
+- dapl_os_lock(&evd_ptr->header.lock);
+- dapls_evd_copy_cq(evd_ptr);
+- dapl_os_unlock(&evd_ptr->header.lock);
+- }
++ dapls_ep_flush_cqs(ep_ptr);
+
+ /* Free the resource */
+ dapl_ep_dealloc(ep_ptr);
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c b/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c
+index 9aff242..bd91fc7 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c
+@@ -606,6 +606,22 @@ void dapl_ep_unlink_cm(IN DAPL_EP *ep_ptr, IN dp_ib_cm_handle_t cm_ptr)
+ dapl_os_unlock(&ep_ptr->header.lock);
+ }
+
++static void dapli_ep_flush_evd(DAPL_EVD *evd_ptr)
++{
++ dapl_os_lock(&evd_ptr->header.lock);
++ dapls_evd_copy_cq(evd_ptr);
++ dapl_os_unlock(&evd_ptr->header.lock);
++}
++
++void dapls_ep_flush_cqs(DAPL_EP * ep_ptr)\r
++{\r
++ if (ep_ptr->param.request_evd_handle)
++ dapli_ep_flush_evd((DAPL_EVD *) ep_ptr->param.request_evd_handle);
++
++ if (ep_ptr->param.recv_evd_handle)
++ dapli_ep_flush_evd((DAPL_EVD *) ep_ptr->param.recv_evd_handle);
++}
++
+ /*
+ * Local variables:
+ * c-indent-level: 4
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_util.h b/trunk/ulp/dapl2/dapl/common/dapl_ep_util.h
+index 31d0e23..66b2de6 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_util.h
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_util.h
+@@ -101,5 +101,7 @@ STATIC _INLINE_ dp_ib_cm_handle_t dapl_get_cm_from_ep(IN DAPL_EP *ep_ptr)
+
+ return cm_ptr;
+ }
+-
++
++extern void dapls_ep_flush_cqs(DAPL_EP * ep_ptr);\r
++
+ #endif /* _DAPL_EP_UTIL_H_ */
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c b/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c
+index b27fd15..675e948 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c
+@@ -673,14 +673,6 @@ dapli_evd_post_event(IN DAPL_EVD * evd_ptr, IN const DAT_EVENT * event_ptr)
+ dapl_os_unlock(&evd_ptr->header.lock);\r
+ }\r
+ } else {\r
+- /*\r
+- * We're in DAPL_EVD_STATE_WAITED. Take the lock if\r
+- * we don't have it, recheck, and signal.\r
+- */\r
+- if (!evd_ptr->evd_producer_locking_needed) {\r
+- dapl_os_lock(&evd_ptr->header.lock);\r
+- }\r
+-\r
+ if (evd_ptr->evd_state == DAPL_EVD_STATE_WAITED\r
+ && (dapls_rbuf_count(&evd_ptr->pending_event_queue)\r
+ >= evd_ptr->threshold)) {\r
+diff --git a/trunk/ulp/dapl2/dapl/openib_ucm/device.c b/trunk/ulp/dapl2/dapl/openib_ucm/device.c
+index 1959c76..b7d9efd 100644
+--- a/trunk/ulp/dapl2/dapl/openib_ucm/device.c
++++ b/trunk/ulp/dapl2/dapl/openib_ucm/device.c
+@@ -581,8 +581,6 @@ void ucm_async_event(struct dapl_hca *hca)
+ struct ibv_async_event event;
+ struct _ib_hca_transport *tp = &hca->ib_trans;
+
+- dapl_log(DAPL_DBG_TYPE_WARN, " async_event(%p)\n", hca);
+-
+ if (!ibv_get_async_event(hca->ib_hca_handle, &event)) {
+
+ switch (event.event_type) {