[openib-general] RE: [PATCH2] uDAPL: fix uCMA provider event types and dapl_ep_create segv bug

2006-05-18 Thread James Lentini


On Wed, 17 May 2006, Arlin Davis wrote:

 Fix for uCMA provider to return the correct event as a result of 
 rejects. Also, ran into a segv bug with dapl_ep_create when 
 creating without a conn_evd.

Committed in revision 7346.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] RE: [PATCH2] uDAPL: fix uCMA provider event types and dapl_ep_create segv bug

2006-05-17 Thread Arlin Davis

-Original Message-
From: Arlin Davis [mailto:[EMAIL PROTECTED]
Sent: Wednesday, May 17, 2006 12:17 PM
To: 'James Lentini'
Cc: openib-general
Subject: [PATCH] uDAPL: fix uCMA provider event types and dapl_ep_create segv 
bug

James,

Fix for uCMA provider to return the correct event as a result of rejects. 
Also, ran into a segv bug
with dapl_ep_create when creating without a conn_evd.

Thanks,

-arlin

 Signed-off by: Arlin Davis [EMAIL PROTECTED]


Sorry, the last patch was wrong. Try again...

-arlin


Signed-off by: Arlin Davis [EMAIL PROTECTED]


Index: dapl/common/dapl_ep_create.c
===
--- dapl/common/dapl_ep_create.c(revision 7299)
+++ dapl/common/dapl_ep_create.c(working copy)
@@ -310,7 +310,10 @@ dapl_ep_create (
  *
  * 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)
 {
Index: dapl/openib_cma/dapl_ib_cm.c
===
--- dapl/openib_cma/dapl_ib_cm.c(revision 7299)
+++ dapl/openib_cma/dapl_ib_cm.c(working copy)
@@ -287,14 +287,24 @@ static void dapli_cm_active_cb(struct da
 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, 
@@ -383,6 +393,14 @@ static void dapli_cm_passive_cb(struct d
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, 
@@ -397,10 +415,11 @@ static void dapli_cm_passive_cb(struct d
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, 

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general