--- /dev/null
+Bottom: 6ef74d9f085bf61fd5210149cb3820201c01776a
+Top: 5034e05a01d7729acdcca5c64d2c35e6d20b05f8
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2010-01-22 17:05:44 -0800
+
+Refresh of dapl-pdata
+
+---
+
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_adapter_util.h b/trunk/ulp/dapl2/dapl/common/dapl_adapter_util.h
+index 97ab42e..389b35b 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_adapter_util.h
++++ b/trunk/ulp/dapl2/dapl/common/dapl_adapter_util.h
+@@ -239,11 +239,6 @@ DAT_RETURN dapls_ib_cm_remote_addr (
+ IN DAT_HANDLE dat_handle,
+ OUT DAT_SOCK_ADDR6 *remote_ia_address);
+
+-int dapls_ib_private_data_size (
+- IN DAPL_PRIVATE *prd_ptr,
+- IN DAPL_PDATA_OP conn_op,
+- IN DAPL_HCA *hca_ptr);
+-
+ void
+ dapls_query_provider_specific_attr(
+ IN DAPL_IA *ia_ptr,
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_cr_callback.c b/trunk/ulp/dapl2/dapl/common/dapl_cr_callback.c
+index 2340489..af68f85 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_cr_callback.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_cr_callback.c
+@@ -51,6 +51,7 @@
+ DAT_RETURN dapli_connection_request(IN dp_ib_cm_handle_t ib_cm_handle,
+ IN DAPL_SP * sp_ptr,
+ IN DAPL_PRIVATE * prd_ptr,
++ IN int private_data_size,
+ IN DAPL_EVD * evd_ptr);
+
+ DAPL_EP *dapli_get_sp_ep(IN dp_ib_cm_handle_t ib_cm_handle,
+@@ -74,7 +75,8 @@ DAPL_EP *dapli_get_sp_ep(IN dp_ib_cm_handle_t ib_cm_handle,
+ * None
+ *
+ */
+-void dapls_cr_callback(IN dp_ib_cm_handle_t ib_cm_handle, IN const ib_cm_events_t ib_cm_event, IN const void *private_data_ptr, /* event data */
++void dapls_cr_callback(IN dp_ib_cm_handle_t ib_cm_handle, IN const ib_cm_events_t ib_cm_event,
++ IN const void *private_data_ptr, IN const int private_data_size,
+ IN const void *context)
+ {
+ DAPL_EP *ep_ptr;
+@@ -174,8 +176,7 @@ void dapls_cr_callback(IN dp_ib_cm_handle_t ib_cm_handle, IN const ib_cm_events_
+ * event if appropriate.
+ */
+ dat_status = dapli_connection_request(ib_cm_handle,
+- sp_ptr,
+- prd_ptr, evd_ptr);
++ sp_ptr, prd_ptr, private_data_size, evd_ptr);
+ /* Set evd_ptr = NULL so we don't generate an event below */
+ evd_ptr = NULL;
+
+@@ -308,7 +309,8 @@ void dapls_cr_callback(IN dp_ib_cm_handle_t ib_cm_handle, IN const ib_cm_events_
+ DAT_RETURN
+ dapli_connection_request(IN dp_ib_cm_handle_t ib_cm_handle,
+ IN DAPL_SP * sp_ptr,
+- IN DAPL_PRIVATE * prd_ptr, IN DAPL_EVD * evd_ptr)
++ IN DAPL_PRIVATE * prd_ptr, IN int private_data_size,
++ IN DAPL_EVD * evd_ptr)
+ {
+ DAT_RETURN dat_status;
+
+@@ -346,14 +348,7 @@ dapli_connection_request(IN dp_ib_cm_handle_t ib_cm_handle,
+
+ /* Private data size will be determined by the provider layer */
+ cr_ptr->param.private_data = cr_ptr->private_data;
+- if (prd_ptr == NULL) {
+- cr_ptr->param.private_data_size = 0;
+- } else {
+- cr_ptr->param.private_data_size =
+- dapls_ib_private_data_size(prd_ptr, DAPL_PDATA_CONN_REQ,
+- sp_ptr->header.owner_ia->
+- hca_ptr);
+- }
++ cr_ptr->param.private_data_size = private_data_size;
+ if (cr_ptr->param.private_data_size > 0) {
+ dapl_os_memcpy(cr_ptr->private_data,
+ prd_ptr->private_data,
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_cr_util.h b/trunk/ulp/dapl2/dapl/common/dapl_cr_util.h
+index 33aed7c..cec980f 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_cr_util.h
++++ b/trunk/ulp/dapl2/dapl/common/dapl_cr_util.h
+@@ -52,7 +52,8 @@ void
+ dapls_cr_callback (
+ IN dp_ib_cm_handle_t ib_cm_handle,
+ IN const ib_cm_events_t ib_cm_event,
+- IN const void *instant_data_p,
++ IN const void *private_data_ptr,
++ IN const int private_data_size,
+ IN const void *context);
+
+ #endif /* _DAPL_CR_UTIL_H_ */
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_connect.c b/trunk/ulp/dapl2/dapl/common/dapl_ep_connect.c
+index 5e4dc41..4e5e112 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_connect.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_connect.c
+@@ -79,7 +79,6 @@ dapl_ep_connect(IN DAT_EP_HANDLE ep_handle,
+ DAPL_EP alloc_ep;
+ DAT_RETURN dat_status;
+ DAT_COUNT req_hdr_size;
+- DAT_UINT32 max_req_pdata_size;
+ void *private_data_ptr;
+
+ dapl_dbg_log(DAPL_DBG_TYPE_API | DAPL_DBG_TYPE_CM,
+@@ -258,16 +257,6 @@ dapl_ep_connect(IN DAT_EP_HANDLE ep_handle,
+ */
+ req_hdr_size = (sizeof(DAPL_PRIVATE) - DAPL_MAX_PRIVATE_DATA_SIZE);
+
+- max_req_pdata_size =
+- dapls_ib_private_data_size(NULL, DAPL_PDATA_CONN_REQ,
+- ep_ptr->header.owner_ia->hca_ptr);
+-
+- if (private_data_size + req_hdr_size > (DAT_COUNT) max_req_pdata_size) {
+- dapl_os_unlock(&ep_ptr->header.lock);
+- dat_status = DAT_ERROR(DAT_INVALID_PARAMETER, DAT_INVALID_ARG5);
+- goto bail;
+- }
+-
+ /* transition the state before requesting a connection to avoid
+ * race conditions
+ */
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c b/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c
+index a50a6cb..505a9f2 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_ep_util.c
+@@ -565,11 +565,11 @@ dapl_ep_legacy_post_disconnect(DAPL_EP * ep_ptr,
+ ep_ptr, cr_ptr->ib_cm_handle);
+
+ dapls_cr_callback(cr_ptr->ib_cm_handle,
+- ib_cm_event, NULL, cr_ptr->sp_ptr);
++ ib_cm_event, NULL, 0, cr_ptr->sp_ptr);
+ } else {
+ dapl_evd_connection_callback(ep_ptr->cm_handle,
+ ib_cm_event,
+- NULL, (void *)ep_ptr);
++ NULL, 0, (void *)ep_ptr);
+ }
+ } else {
+ dapl_os_unlock(&ep_ptr->header.lock);
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_evd_connection_callb.c b/trunk/ulp/dapl2/dapl/common/dapl_evd_connection_callb.c
+index e2fb93b..8881362 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_evd_connection_callb.c
++++ b/trunk/ulp/dapl2/dapl/common/dapl_evd_connection_callb.c
+@@ -65,6 +65,7 @@ void
+ dapl_evd_connection_callback(IN dp_ib_cm_handle_t ib_cm_handle,
+ IN const ib_cm_events_t ib_cm_event,
+ IN const void *private_data_ptr,
++ IN const int private_data_size,
+ IN const void *context)
+ {
+ DAPL_EP *ep_ptr;
+@@ -72,7 +73,6 @@ dapl_evd_connection_callback(IN dp_ib_cm_handle_t ib_cm_handle,
+ DAPL_PRIVATE *prd_ptr;
+ DAT_EVENT_NUMBER dat_event_num;
+ DAT_RETURN dat_status;
+- int private_data_size;
+
+ dapl_dbg_log(DAPL_DBG_TYPE_CM | DAPL_DBG_TYPE_CALLBACK,
+ "--> dapl_evd_connection_callback: ctxt: %p event: %x cm_handle %p\n",
+@@ -96,7 +96,6 @@ dapl_evd_connection_callback(IN dp_ib_cm_handle_t ib_cm_handle,
+ DAPL_CNTR(evd_ptr, DCNT_EVD_CONN_CALLBACK);
+
+ prd_ptr = (DAPL_PRIVATE *) private_data_ptr;
+- private_data_size = 0;
+ /*
+ * All operations effect the EP, so lock it once and unlock
+ * when necessary
+@@ -132,16 +131,6 @@ dapl_evd_connection_callback(IN dp_ib_cm_handle_t ib_cm_handle,
+ }
+ ep_ptr->param.ep_state = DAT_EP_STATE_CONNECTED;
+ ep_ptr->cm_handle = ib_cm_handle;
+- if (prd_ptr == NULL) {
+- private_data_size = 0;
+- } else {
+- private_data_size =
+- dapls_ib_private_data_size(prd_ptr,
+- DAPL_PDATA_CONN_REP,
+- ep_ptr->header.
+- owner_ia->
+- hca_ptr);
+- }
+
+ if (private_data_size > 0) {
+ /* copy in the private data */
+@@ -157,13 +146,6 @@ dapl_evd_connection_callback(IN dp_ib_cm_handle_t ib_cm_handle,
+ case DAT_CONNECTION_EVENT_PEER_REJECTED:
+ {
+ /* peer reject may include private data */
+- if (prd_ptr != NULL)
+- private_data_size =
+- dapls_ib_private_data_size(prd_ptr,
+- DAPL_PDATA_CONN_REJ,
+- ep_ptr->header.
+- owner_ia->
+- hca_ptr);
+
+ if (private_data_size > 0)
+ dapl_os_memcpy(ep_ptr->private.private_data,
+diff --git a/trunk/ulp/dapl2/dapl/common/dapl_evd_util.h b/trunk/ulp/dapl2/dapl/common/dapl_evd_util.h
+index 2304435..e5a7c3f 100644
+--- a/trunk/ulp/dapl2/dapl/common/dapl_evd_util.h
++++ b/trunk/ulp/dapl2/dapl/common/dapl_evd_util.h
+@@ -137,7 +137,8 @@ dapls_evd_post_connection_event_ext (
+ extern void dapl_evd_connection_callback (
+ IN dp_ib_cm_handle_t ib_cm_handle,
+ IN const ib_cm_events_t ib_cm_events,
+- IN const void *instant_data_p,
++ IN const void *private_data_ptr,
++ IN const int private_data_size,
+ IN const void * context );
+
+ /* dto verb callback */
+diff --git a/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c b/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c
+index 149bcbf..591f92d 100644
+--- a/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c
++++ b/trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c
+@@ -216,6 +216,7 @@ dapli_ib_cm_dreq_cb (
+ dapls_cr_callback ( ep_ptr->cm_handle,
+ IB_CME_DISCONNECTED,
+ (void * __ptr64) p_cm_dreq_rec->p_dreq_pdata,
++ IB_DREQ_PDATA_SIZE,
+ (void *) (((DAPL_CR *) ep_ptr->cr_ptr)->sp_ptr) );
+ }
+ else
+@@ -226,6 +227,7 @@ dapli_ib_cm_dreq_cb (
+ IB_CME_DISCONNECTED,
+ (void * __ptr64)
+ p_cm_dreq_rec->p_dreq_pdata,
++ IB_DREQ_PDATA_SIZE,
+ p_cm_dreq_rec->qp_context );
+ }
+ }
+@@ -285,6 +287,7 @@ dapli_ib_cm_drep_cb (
+ dapls_cr_callback ( ep_ptr->cm_handle,
+ IB_CME_DISCONNECTED,
+ (void * __ptr64) p_cm_drep_rec->p_drep_pdata,
++ IB_DREP_PDATA_SIZE,
+ (void *) (((DAPL_CR *) ep_ptr->cr_ptr)->sp_ptr) );
+ }
+ else
+@@ -294,6 +297,7 @@ dapli_ib_cm_drep_cb (
+ ep_ptr->cm_handle,
+ IB_CME_DISCONNECTED,
+ (void * __ptr64) p_cm_drep_rec->p_drep_pdata,
++ IB_DREP_PDATA_SIZE,
+ p_cm_drep_rec->qp_context );
+ }
+ }
+@@ -371,6 +375,7 @@ dapli_ib_cm_rep_cb (
+ (dp_ib_cm_handle_t)&p_cm_rep_rec->h_cm_rep,
+ cm_cb_op,
+ (void *) prd_ptr,
++ IB_REP_PDATA_SIZE,
+ (void * __ptr64) p_cm_rep_rec->qp_context);
+ }
+
+@@ -454,6 +459,7 @@ dapli_ib_cm_rej_cb (
+ dapls_cr_callback ( ep_ptr->cm_handle,
+ cm_event,
+ (void * __ptr64) p_cm_rej_rec->p_rej_pdata,
++ IB_REJ_PDATA_SIZE,
+ (void *) ((DAPL_CR *) ep_ptr->cr_ptr)->sp_ptr);
+ }
+ else
+@@ -462,6 +468,7 @@ dapli_ib_cm_rej_cb (
+ ep_ptr->cm_handle,
+ cm_event,
+ (void * __ptr64) p_cm_rej_rec->p_rej_pdata,
++ IB_REJ_PDATA_SIZE,
+ (void * __ptr64) p_cm_rej_rec->qp_context );
+ }
+
+@@ -610,6 +617,7 @@ dapli_ib_cm_req_cb ( IN ib_cm_req_rec_t *p_cm_req_rec )
+ dapls_cr_callback ( cm_handle,
+ IB_CME_CONNECTION_REQUEST_PENDING,
+ (void * __ptr64) p_cm_req_rec->p_req_pdata,
++ IB_REQ_PDATA_SIZE,
+ (void * __ptr64) sp_ptr );
+ }
+
+@@ -652,6 +660,7 @@ dapli_ib_cm_rtu_cb (
+ dapls_cr_callback ( ep_ptr->cm_handle,
+ IB_CME_CONNECTED,
+ (void * __ptr64) p_cm_rtu_rec->p_rtu_pdata,
++ IB_RTU_PDATA_SIZE,
+ (void *) sp_ptr);
+
+ }
+@@ -661,6 +670,7 @@ dapli_ib_cm_rtu_cb (
+ ep_ptr->cm_handle,
+ IB_CME_CONNECTED,
+ (void * __ptr64) p_cm_rtu_rec->p_rtu_pdata,
++ IB_RTU_PDATA_SIZE,
+ (void *) ep_ptr);
+ }
+ }
+@@ -1297,15 +1307,6 @@ dapls_ib_reject_connection ( IN dp_ib_cm_handle_t ib_cm_handle,
+ cm_rej.p_ari = (ib_ari_t *)&rej_table[reject_reason];
+ cm_rej.ari_length = (uint8_t)strlen (rej_table[reject_reason]);
+
+- if (private_data_size >
+- dapls_ib_private_data_size(NULL,DAPL_PDATA_CONN_REJ,NULL))
+- {
+- dapl_dbg_log ( DAPL_DBG_TYPE_ERR,
+- "--> DsRjC: private_data size(%d) > Max(%d)\n",
+- private_data_size, IB_MAX_REJ_PDATA_SIZE );
+- return DAT_ERROR(DAT_INVALID_PARAMETER, DAT_INVALID_ARG3);
+- }
+-
+ cm_rej.p_rej_pdata = private_data;
+ cm_rej.rej_length = private_data_size;
+
+diff --git a/trunk/ulp/dapl2/dapl/openib_cma/cm.c b/trunk/ulp/dapl2/dapl/openib_cma/cm.c
+index c52e716..b17978a 100644
+--- a/trunk/ulp/dapl2/dapl/openib_cma/cm.c
++++ b/trunk/ulp/dapl2/dapl/openib_cma/cm.c
+@@ -95,7 +95,7 @@ static void dapli_addr_resolve(struct dapl_cm_id *conn)
+ ret, strerror(errno));
+ dapl_evd_connection_callback(conn,
+ IB_CME_LOCAL_FAILURE,
+- NULL, conn->ep);
++ NULL, 0, conn->ep);
+ }
+ }
+
+@@ -149,7 +149,7 @@ static void dapli_route_resolve(struct dapl_cm_id *conn)
+
+ bail:
+ dapl_evd_connection_callback(conn,
+- IB_CME_LOCAL_FAILURE, NULL, conn->ep);
++ IB_CME_LOCAL_FAILURE, NULL, 0, conn->ep);
+ }
+
+ dp_ib_cm_handle_t dapls_ib_cm_create(DAPL_EP *ep)
+@@ -416,7 +416,8 @@ static void dapli_cm_active_cb(struct dapl_cm_id *conn,
+
+ dapl_os_unlock(lock);
+ if (conn)
+- dapl_evd_connection_callback(conn, ib_cm_event, pdata, conn->ep);
++ dapl_evd_connection_callback(conn, ib_cm_event, pdata,
++ event->param.conn.private_data_len, conn->ep);
+ }
+
+ static void dapli_cm_passive_cb(struct dapl_cm_id *conn,
+@@ -496,7 +497,8 @@ static void dapli_cm_passive_cb(struct dapl_cm_id *conn,
+
+ dapl_os_unlock(&conn->lock);
+ if (conn_recv)
+- dapls_cr_callback(conn_recv, ib_cm_event, pdata, conn_recv->sp);
++ dapls_cr_callback(conn_recv, ib_cm_event, pdata,
++ event->param.conn.private_data_len, conn_recv->sp);
+ }
+
+ /************************ DAPL provider entry points **********************/
+@@ -922,11 +924,6 @@ dapls_ib_reject_connection(IN dp_ib_cm_handle_t cm_handle,
+ return DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CR);
+ }
+
+- if (private_data_size >
+- dapls_ib_private_data_size(NULL, DAPL_PDATA_CONN_REJ,
+- cm_handle->hca))
+- return DAT_ERROR(DAT_INVALID_PARAMETER, DAT_INVALID_ARG3);
+-
+ /* setup pdata_hdr and users data, in CR pdata buffer */
+ dapl_os_memcpy(cm_handle->p_data, &pdata_hdr, offset);
+ if (private_data_size)
+@@ -999,62 +996,6 @@ dapls_ib_cm_remote_addr(IN DAT_HANDLE dat_handle, OUT DAT_SOCK_ADDR6 * raddr)
+ }
+
+ /*
+- * dapls_ib_private_data_size
+- *
+- * Return the size of private data given a connection op type
+- *
+- * Input:
+- * prd_ptr private data pointer
+- * conn_op connection operation type
+- * hca_ptr hca pointer, needed for transport type
+- *
+- * If prd_ptr is NULL, this is a query for the max size supported by
+- * the provider, otherwise it is the actual size of the private data
+- * contained in prd_ptr.
+- *
+- *
+- * Output:
+- * None
+- *
+- * Returns:
+- * length of private data
+- *
+- */
+-int dapls_ib_private_data_size(IN DAPL_PRIVATE * prd_ptr,
+- IN DAPL_PDATA_OP conn_op, IN DAPL_HCA * hca_ptr)
+-{
+- int size;
+-
+- if (hca_ptr->ib_hca_handle->device->transport_type
+- == IBV_TRANSPORT_IWARP)
+- return (IWARP_MAX_PDATA_SIZE - sizeof(struct dapl_pdata_hdr));
+-
+- switch (conn_op) {
+-
+- case DAPL_PDATA_CONN_REQ:
+- size = IB_MAX_REQ_PDATA_SIZE;
+- break;
+- case DAPL_PDATA_CONN_REP:
+- size = IB_MAX_REP_PDATA_SIZE;
+- break;
+- case DAPL_PDATA_CONN_REJ:
+- size = IB_MAX_REJ_PDATA_SIZE - sizeof(struct dapl_pdata_hdr);
+- break;
+- case DAPL_PDATA_CONN_DREQ:
+- size = IB_MAX_DREQ_PDATA_SIZE;
+- break;
+- case DAPL_PDATA_CONN_DREP:
+- size = IB_MAX_DREP_PDATA_SIZE;
+- break;
+- default:
+- size = 0;
+-
+- } /* end case */
+-
+- return size;
+-}
+-
+-/*
+ * Map all CMA event codes to the DAT equivelent.
+ */
+ #define DAPL_IB_EVENT_CNT 13
+@@ -1238,7 +1179,7 @@ void dapli_cma_event_cb(void)
+
+ dapl_evd_connection_callback(conn,
+ IB_CME_DESTINATION_UNREACHABLE,
+- NULL, conn->ep);
++ NULL, 0, conn->ep);
+ break;
+
+ case RDMA_CM_EVENT_ROUTE_ERROR:
+@@ -1267,14 +1208,14 @@ void dapli_cma_event_cb(void)
+
+ dapl_evd_connection_callback(conn,
+ IB_CME_DESTINATION_UNREACHABLE,
+- NULL, conn->ep);
++ NULL, 0, conn->ep);
+ }
+ break;
+
+ case RDMA_CM_EVENT_DEVICE_REMOVAL:
+ dapl_evd_connection_callback(conn,
+ IB_CME_LOCAL_FAILURE,
+- NULL, conn->ep);
++ NULL, 0, conn->ep);
+ break;
+ case RDMA_CM_EVENT_CONNECT_REQUEST:
+ case RDMA_CM_EVENT_CONNECT_ERROR:
+diff --git a/trunk/ulp/dapl2/dapl/openib_scm/cm.c b/trunk/ulp/dapl2/dapl/openib_scm/cm.c
+index 105351c..bfa7187 100644
+--- a/trunk/ulp/dapl2/dapl/openib_scm/cm.c
++++ b/trunk/ulp/dapl2/dapl/openib_scm/cm.c
+@@ -430,12 +430,12 @@ DAT_RETURN dapli_socket_disconnect(dp_ib_cm_handle_t cm_ptr)
+ if (ep_ptr->cr_ptr) {
+ dapls_cr_callback(cm_ptr,
+ IB_CME_DISCONNECTED,
+- NULL,
++ NULL, 0,
+ ((DAPL_CR *) ep_ptr->cr_ptr)->sp_ptr);
+ } else {
+ dapl_evd_connection_callback(ep_ptr->cm_handle,
+ IB_CME_DISCONNECTED,
+- NULL, ep_ptr);
++ NULL, 0, ep_ptr);
+ }
+ }
+
+@@ -506,7 +506,7 @@ static void dapli_socket_connected(dp_ib_cm_handle_t cm_ptr, int err)
+ bail:
+ /* close socket, free cm structure and post error event */
+ dapls_ib_cm_free(cm_ptr, cm_ptr->ep);
+- dapl_evd_connection_callback(NULL, IB_CME_LOCAL_FAILURE, NULL, ep_ptr);
++ dapl_evd_connection_callback(NULL, IB_CME_LOCAL_FAILURE, NULL, 0, ep_ptr);
+ }
+
+ /*
+@@ -833,7 +833,8 @@ ud_bail:
+ #endif
+ {
+ ep_ptr->cm_handle = cm_ptr; /* only RC, multi CR's on UD */
+- dapl_evd_connection_callback(cm_ptr, event, cm_ptr->msg.p_data, ep_ptr);
++ dapl_evd_connection_callback(cm_ptr, event, cm_ptr->msg.p_data,
++ DCM_MAX_PDATA_SIZE, ep_ptr);
+ }
+ return;
+
+@@ -847,7 +848,8 @@ bail:
+ dapls_modify_qp_state(ep_ptr->qp_handle, IBV_QPS_ERR, 0, 0, 0);
+ closesocket(cm_ptr->socket);
+ cm_ptr->socket = DAPL_INVALID_SOCKET;
+- dapl_evd_connection_callback(NULL, event, cm_ptr->msg.p_data, ep_ptr);
++ dapl_evd_connection_callback(NULL, event, cm_ptr->msg.p_data,
++ DCM_MAX_PDATA_SIZE, ep_ptr);
+ }
+
+ /*
+@@ -1044,7 +1046,7 @@ static void dapli_socket_accept_data(ib_cm_srvc_handle_t acm_ptr)
+ /* trigger CR event and return SUCCESS */
+ dapls_cr_callback(acm_ptr,
+ IB_CME_CONNECTION_REQUEST_PENDING,
+- p_data, acm_ptr->sp);
++ p_data, exp, acm_ptr->sp);
+ return;
+ bail:
+ /* close socket, free cm structure, active will see close as rej */
+@@ -1274,7 +1276,7 @@ ud_bail:
+ #endif
+ {
+ cm_ptr->ep->cm_handle = cm_ptr; /* only RC, multi CR's on UD */
+- dapls_cr_callback(cm_ptr, event, NULL, cm_ptr->sp);
++ dapls_cr_callback(cm_ptr, event, NULL, 0, cm_ptr->sp);
+ }
+ return;
+
+@@ -1285,7 +1287,7 @@ bail:
+ #endif
+ dapls_modify_qp_state(cm_ptr->ep->qp_handle, IBV_QPS_ERR, 0, 0, 0);
+ dapls_ib_cm_free(cm_ptr, cm_ptr->ep);
+- dapls_cr_callback(cm_ptr, event, NULL, cm_ptr->sp);
++ dapls_cr_callback(cm_ptr, event, NULL, 0, cm_ptr->sp);
+ }
+
+ /*
+@@ -1605,46 +1607,6 @@ dapls_ib_cm_remote_addr(IN DAT_HANDLE dat_handle,
+ }
+
+ /*
+- * dapls_ib_private_data_size
+- *
+- * Return the size of private data given a connection op type
+- *
+- * Input:
+- * prd_ptr private data pointer
+- * conn_op connection operation type
+- *
+- * If prd_ptr is NULL, this is a query for the max size supported by
+- * the provider, otherwise it is the actual size of the private data
+- * contained in prd_ptr.
+- *
+- *
+- * Output:
+- * None
+- *
+- * Returns:
+- * length of private data
+- *
+- */
+-int dapls_ib_private_data_size(IN DAPL_PRIVATE * prd_ptr,
+- IN DAPL_PDATA_OP conn_op, IN DAPL_HCA * hca_ptr)
+-{
+- int size;
+-
+- switch (conn_op) {
+- case DAPL_PDATA_CONN_REQ:
+- case DAPL_PDATA_CONN_REP:
+- case DAPL_PDATA_CONN_REJ:
+- case DAPL_PDATA_CONN_DREQ:
+- case DAPL_PDATA_CONN_DREP:
+- size = DCM_MAX_PDATA_SIZE;
+- break;
+- default:
+- size = 0;
+- }
+- return size;
+-}
+-
+-/*
+ * Map all socket CM event codes to the DAT equivelent.
+ */
+ #define DAPL_IB_EVENT_CNT 10
+diff --git a/trunk/ulp/dapl2/dapl/openib_ucm/cm.c b/trunk/ulp/dapl2/dapl/openib_ucm/cm.c
+index b51556a..291e4e8 100644
+--- a/trunk/ulp/dapl2/dapl/openib_ucm/cm.c
++++ b/trunk/ulp/dapl2/dapl/openib_ucm/cm.c
+@@ -798,9 +798,9 @@ static void ucm_disconnect_final(dp_ib_cm_handle_t cm)
+ dapl_os_unlock(&cm->lock);
+
+ if (cm->sp)
+- dapls_cr_callback(cm, IB_CME_DISCONNECTED, NULL, cm->sp);
++ dapls_cr_callback(cm, IB_CME_DISCONNECTED, NULL, 0, cm->sp);
+ else
+- dapl_evd_connection_callback(cm, IB_CME_DISCONNECTED, NULL, cm->ep);
++ dapl_evd_connection_callback(cm, IB_CME_DISCONNECTED, NULL, 0, cm->ep);
+ }
+
+ /*
+@@ -911,7 +911,7 @@ dapli_cm_connect(DAPL_EP *ep, dp_ib_cm_handle_t cm)
+ #endif
+ dapl_evd_connection_callback(cm,
+ IB_CME_DESTINATION_UNREACHABLE,
+- NULL, ep);
++ NULL, 0, ep);
+
+ return DAT_ERROR(DAT_INVALID_ADDRESS,
+ DAT_INVALID_ADDRESS_UNREACHABLE);
+@@ -1126,14 +1126,14 @@ ud_bail:
+ cm->ep->cm_handle = cm; /* only RC, multi CR's on UD */
+ dapl_evd_connection_callback(cm,
+ IB_CME_CONNECTED,
+- cm->msg.p_data, cm->ep);
++ cm->msg.p_data, ntohs(cm->msg.p_size), cm->ep);
+ }
+ return;
+ bail:
+ if (cm->msg.saddr.ib.qp_type != IBV_QPT_UD)
+ dapls_ib_reinit_ep(cm->ep); /* reset QP state */
+
+- dapl_evd_connection_callback(NULL, event, cm->msg.p_data, cm->ep);
++ dapl_evd_connection_callback(NULL, event, cm->msg.p_data, ntohs(cm->msg.p_size), cm->ep);
+ dapls_ib_cm_free(cm, NULL);
+ }
+
+@@ -1204,7 +1204,7 @@ static void ucm_accept(ib_cm_srvc_handle_t cm, ib_cm_msg_t *msg)
+ /* trigger CR event and return SUCCESS */
+ dapls_cr_callback(acm,
+ IB_CME_CONNECTION_REQUEST_PENDING,
+- acm->msg.p_data, acm->sp);
++ acm->msg.p_data, ntohs(msg->p_size), acm->sp);
+ return;
+
+ bail:
+@@ -1295,14 +1295,14 @@ static void ucm_accept_rtu(dp_ib_cm_handle_t cm, ib_cm_msg_t *msg)
+ } else {
+ #endif
+ cm->ep->cm_handle = cm; /* only RC, multi CR's on UD */
+- dapls_cr_callback(cm, IB_CME_CONNECTED, NULL, cm->sp);
++ dapls_cr_callback(cm, IB_CME_CONNECTED, NULL, 0, cm->sp);
+ }
+ return;
+ bail:
+ if (cm->msg.saddr.ib.qp_type != IBV_QPT_UD)
+ dapls_ib_reinit_ep(cm->ep); /* reset QP state */
+ dapls_ib_cm_free(cm, cm->ep);
+- dapls_cr_callback(cm, IB_CME_LOCAL_FAILURE, NULL, cm->sp);
++ dapls_cr_callback(cm, IB_CME_LOCAL_FAILURE, NULL, 0, cm->sp);
+ }
+
+ /*
+@@ -1354,7 +1354,7 @@ static int ucm_reply(dp_ib_cm_handle_t cm)
+ } else
+ #endif
+ dapls_cr_callback(cm, IB_CME_LOCAL_FAILURE,
+- NULL, cm->sp);
++ NULL, 0, cm->sp);
+ return -1;
+ }
+ dapl_os_get_time(&cm->timer); /* RTU expected */
+@@ -1843,46 +1843,6 @@ dapls_ib_cm_remote_addr(IN DAT_HANDLE dat_handle,
+ }
+
+ /*
+- * dapls_ib_private_data_size
+- *
+- * Return the size of private data given a connection op type
+- *
+- * Input:
+- * prd_ptr private data pointer
+- * conn_op connection operation type
+- *
+- * If prd_ptr is NULL, this is a query for the max size supported by
+- * the provider, otherwise it is the actual size of the private data
+- * contained in prd_ptr.
+- *
+- *
+- * Output:
+- * None
+- *
+- * Returns:
+- * length of private data
+- *
+- */
+-int dapls_ib_private_data_size(IN DAPL_PRIVATE * prd_ptr,
+- IN DAPL_PDATA_OP conn_op, IN DAPL_HCA * hca_ptr)
+-{
+- int size;
+-
+- switch (conn_op) {
+- case DAPL_PDATA_CONN_REQ:
+- case DAPL_PDATA_CONN_REP:
+- case DAPL_PDATA_CONN_REJ:
+- case DAPL_PDATA_CONN_DREQ:
+- case DAPL_PDATA_CONN_DREP:
+- size = DCM_MAX_PDATA_SIZE;
+- break;
+- default:
+- size = 0;
+- }
+- return size;
+-}
+-
+-/*
+ * Map all socket CM event codes to the DAT equivelent.
+ */
+ #define DAPL_IB_EVENT_CNT 10