--- /dev/null
+Bottom: e0a336baf5ecfc37b867ad87df4aa629ac448200
+Top: 1f8a8438356e65ed344028d949bd8033fc3cdae4
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2010-09-16 11:57:26 -0700
+
+Refresh of dapl-evd
+
+---
+
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c b/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
+index 3bfc541..e7268ac 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
+@@ -65,6 +65,7 @@ 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;
+@@ -202,6 +203,19 @@ 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);
++ }
++
+ /* Free the resource */
+ dapl_ep_dealloc(ep_ptr);
+
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c b/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c
+index 4035008..b27fd15 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_evd_util.c
+@@ -1187,10 +1187,6 @@ dapli_evd_cqe_to_event(IN DAPL_EVD * evd_ptr,
+ \r
+ ep_ptr = cookie->ep;\r
+ dapl_os_assert((NULL != ep_ptr));\r
+- if (ep_ptr->header.magic != DAPL_MAGIC_EP) {\r
+- /* ep may have been freed, just return */\r
+- return;\r
+- }\r
+ \r
+ dapls_io_trc_update_completion(ep_ptr, cookie, dto_status);\r
+ \r
+@@ -1392,7 +1388,7 @@ void dapls_evd_copy_cq(DAPL_EVD * evd_ptr)
+ \r
+ dapli_evd_cqe_to_event(evd_ptr, &cur_cqe, event);\r
+ \r
+- dapli_evd_post_event_nosignal(evd_ptr, event);\r
++ dapli_evd_post_event(evd_ptr, event);\r
+ }\r
+ \r
+ if (DAT_GET_TYPE(dat_status) != DAT_QUEUE_EMPTY) {\r
+diff --git a/trunk/ulp/dapl2/dapl/udapl/dapl_evd_wait.c b/trunk/ulp/dapl2/dapl/udapl/dapl_evd_wait.c
+index 79afb0d..135951c 100644
+--- a/trunk/ulp/dapl2/dapl/udapl/dapl_evd_wait.c
++++ b/trunk/ulp/dapl2/dapl/udapl/dapl_evd_wait.c
+@@ -168,9 +168,7 @@ DAT_RETURN DAT_API dapl_evd_wait(IN DAT_EVD_HANDLE evd_handle,
+ * return right away if the ib_cq_handle associate with these evd
+ * equal to IB_INVALID_HANDLE
+ */
+- dapl_os_unlock(&evd_ptr->header.lock);
+ dapls_evd_copy_cq(evd_ptr);
+- dapl_os_lock(&evd_ptr->header.lock);
+
+ if (dapls_rbuf_count(&evd_ptr->pending_event_queue) >=
+ threshold) {