rdma_destroy_id(ep_conn->cm_id);
dapls_cm_release(ep_conn);
- /* add new CM to EP linking, qp_handle unchanged */
- dapl_ep_link_cm(ep_ptr, cr_conn);
+ /* add new CM to EP linking, qp_handle unchanged, !PSP !RSP */
+ if (!cr_conn->sp->ep_handle && !cr_conn->sp->psp_flags)
+ dapl_ep_link_cm(ep_ptr, cr_conn);
cr_conn->ep = ep_ptr;
} else {
dapl_log(DAPL_DBG_TYPE_ERR,
cm_ptr->state = DCM_ACCEPTED;
dapl_os_unlock(&cm_ptr->lock);
- /* Link CM to EP, already queued on work thread */
- dapl_ep_link_cm(ep_ptr, cm_ptr);
+ /* Link CM to EP, already queued on work thread, !PSP !RSP */
+ if (!cm_ptr->sp->ep_handle && !cm_ptr->sp->psp_flags)
+ dapl_ep_link_cm(ep_ptr, cm_ptr);
cm_ptr->ep = ep_ptr;
local.p_size = htons(p_size);
cm->p_size = p_size;
dapl_os_memcpy(&cm->p_data, p_data, p_size);
- /* save state and setup valid reference to EP, HCA */
- dapl_ep_link_cm(ep, cm);
+ /* save state and setup valid reference to EP, HCA. !PSP !RSP */
+ if (!cm->sp->ep_handle && !cm->sp->psp_flags)
+ dapl_ep_link_cm(ep, cm);
cm->ep = ep;
cm->hca = ia->hca_ptr;