[openib-general] [PATCH] uDAPL openib_cma, cleanup reported CM error events, add TIMEOUT
James Lentini
jlentini at netapp.com
Mon Jun 12 08:44:29 PDT 2006
On Fri, 9 Jun 2006, Arlin Davis wrote:
> James,
>
> I cleaned up the connection error events to report the proper events
> during address resolution errors and timeouts. It was returning
> incorrect DAT event codes.
Looks good. I committed in revision 7931 with a few minor
additions (see below).
> Index: dapl_ib_cm.c
> ===================================================================
> --- dapl_ib_cm.c (revision 7839)
> +++ dapl_ib_cm.c (working copy)
> @@ -330,6 +330,8 @@ static void dapli_cm_active_cb(struct da
> switch (event->event) {
> case RDMA_CM_EVENT_UNREACHABLE:
> case RDMA_CM_EVENT_CONNECT_ERROR:
> + {
> + ib_cm_events_t cm_event;
> dapl_dbg_log(
> DAPL_DBG_TYPE_WARN,
> " dapli_cm_active_handler: CONN_ERR "
> @@ -337,10 +339,15 @@ static void dapli_cm_active_cb(struct da
> event->event, event->status,
> (event->status == -110)?"TIMEOUT":"" );
>
> - dapl_evd_connection_callback(conn,
> - IB_CME_DESTINATION_UNREACHABLE,
> - NULL, conn->ep);
> + /* no device type specified so assume IB for now */
> + if (event->status == -110) /* IB timeout */
I changed -110 to -ETIMEDOUT
> + cm_event = IB_CME_TIMEOUT;
> + else
> + cm_event = IB_CME_DESTINATION_UNREACHABLE;
> +
> + dapl_evd_connection_callback(conn, cm_event, NULL, conn->ep);
> break;
> + }
> case RDMA_CM_EVENT_REJECTED:
> {
> ib_cm_events_t cm_event;
> @@ -357,7 +364,6 @@ static void dapli_cm_active_cb(struct da
> event->status);
>
> dapl_evd_connection_callback(conn, cm_event, NULL, conn->ep);
> -
> break;
> }
> case RDMA_CM_EVENT_ESTABLISHED:
> @@ -1028,7 +1034,7 @@ int dapls_ib_private_data_size(IN DAPL_P
> /*
> * Map all socket CM event codes to the DAT equivelent.
I corrected this comment.
> */
> -#define DAPL_IB_EVENT_CNT 12
> +#define DAPL_IB_EVENT_CNT 13
>
> static struct ib_cm_event_map
> {
> @@ -1058,7 +1064,9 @@ static struct ib_cm_event_map
> /* 10 */ { IB_CME_LOCAL_FAILURE,
> DAT_CONNECTION_EVENT_BROKEN},
> /* 11 */ { IB_CME_BROKEN,
> - DAT_CONNECTION_EVENT_BROKEN}
> + DAT_CONNECTION_EVENT_BROKEN},
> + /* 12 */ { IB_CME_TIMEOUT,
> + DAT_CONNECTION_EVENT_TIMED_OUT},
> };
>
> /*
> @@ -1164,7 +1172,7 @@ void dapli_cma_event_cb(void)
> case RDMA_CM_EVENT_ADDR_ERROR:
> case RDMA_CM_EVENT_ROUTE_ERROR:
> dapl_evd_connection_callback(conn,
> - IB_CME_LOCAL_FAILURE,
> + IB_CME_DESTINATION_UNREACHABLE,
> NULL, conn->ep);
> break;
> case RDMA_CM_EVENT_DEVICE_REMOVAL:
> Index: dapl_ib_util.h
> ===================================================================
> --- dapl_ib_util.h (revision 7839)
> +++ dapl_ib_util.h (working copy)
> @@ -86,7 +86,8 @@ typedef enum {
> IB_CME_DESTINATION_UNREACHABLE,
> IB_CME_TOO_MANY_CONNECTION_REQUESTS,
> IB_CME_LOCAL_FAILURE,
> - IB_CME_BROKEN
> + IB_CME_BROKEN,
> + IB_CME_TIMEOUT
> } ib_cm_events_t;
>
> /* CQ notifications */
>
More information about the general
mailing list