*
* N.B. This should really be done by a util routine.
*/
- dapl_os_atomic_inc (& ((DAPL_EVD *)connect_evd_handle)->evd_ref_count);
+ if (connect_evd_handle != DAT_HANDLE_NULL)
+ {
+ dapl_os_atomic_inc (& ((DAPL_EVD *)connect_evd_handle)->evd_ref_count);
+ }
/* Optional handles */
if (recv_evd_handle != DAT_HANDLE_NULL)
{
NULL, conn->ep);
break;
case RDMA_CM_EVENT_REJECTED:
+ {
+ ib_cm_events_t cm_event;
+
+ /* no device type specified so assume IB for now */
+ if (event->status == 28) /* IB_CM_REJ_CONSUMER_DEFINED */
+ cm_event = IB_CME_DESTINATION_REJECT_PRIVATE_DATA;
+ else
+ cm_event = IB_CME_DESTINATION_REJECT;
+
dapl_dbg_log(
DAPL_DBG_TYPE_WARN,
" dapli_cm_active_handler: REJECTED reason=%d\n",
event->status);
- dapl_evd_connection_callback(conn, IB_CME_DESTINATION_REJECT,
- NULL, conn->ep);
+
+ dapl_evd_connection_callback(conn, cm_event, NULL, conn->ep);
+
break;
-
+ }
case RDMA_CM_EVENT_ESTABLISHED:
dapl_dbg_log(DAPL_DBG_TYPE_CM,
break;
case RDMA_CM_EVENT_REJECTED:
+ {
+ ib_cm_events_t cm_event;
+
+ /* no device type specified so assume IB for now */
+ if (event->status == 28) /* IB_CM_REJ_CONSUMER_DEFINED */
+ cm_event = IB_CME_DESTINATION_REJECT_PRIVATE_DATA;
+ else
+ cm_event = IB_CME_DESTINATION_REJECT;
dapl_dbg_log(
DAPL_DBG_TYPE_WARN,
&ipaddr->dst_addr)->sin_addr.s_addr),
ntohs(((struct sockaddr_in *)
&ipaddr->dst_addr)->sin_port));
-
- dapls_cr_callback(conn, IB_CME_DESTINATION_REJECT,
- NULL, conn->sp);
+
+ dapls_cr_callback(conn, cm_event, NULL, conn->sp);
+
break;
+ }
case RDMA_CM_EVENT_ESTABLISHED:
dapl_dbg_log(DAPL_DBG_TYPE_CM,