From d2732e2fd794f6e65085fe597c16a74a0b5407ac Mon Sep 17 00:00:00 2001 From: Steve Wise Date: Fri, 15 Dec 2006 16:50:17 -0600 Subject: [PATCH] --- yaml --- r: 45427 b: refs/heads/master c: 881a045fc5b454b57c69e010acecd5830d87e242 h: refs/heads/master i: 45425: 546054dca35a5f5cab21627422e0a48a87660baf 45423: e1e330f732382104e1a39a8b80bf26f3d4bb9ec9 v: v3 --- [refs] | 2 +- trunk/drivers/infiniband/core/cma.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 9d46d71b510b..cad507012376 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f0938401f2252bf39615c0815734650eab9053c8 +refs/heads/master: 881a045fc5b454b57c69e010acecd5830d87e242 diff --git a/trunk/drivers/infiniband/core/cma.c b/trunk/drivers/infiniband/core/cma.c index 533193d4e5df..9e0ab048c878 100644 --- a/trunk/drivers/infiniband/core/cma.c +++ b/trunk/drivers/infiniband/core/cma.c @@ -1088,10 +1088,21 @@ static int cma_iw_handler(struct iw_cm_id *iw_id, struct iw_cm_event *iw_event) *sin = iw_event->local_addr; sin = (struct sockaddr_in *) &id_priv->id.route.addr.dst_addr; *sin = iw_event->remote_addr; - if (iw_event->status) - event.event = RDMA_CM_EVENT_REJECTED; - else + switch (iw_event->status) { + case 0: event.event = RDMA_CM_EVENT_ESTABLISHED; + break; + case -ECONNRESET: + case -ECONNREFUSED: + event.event = RDMA_CM_EVENT_REJECTED; + break; + case -ETIMEDOUT: + event.event = RDMA_CM_EVENT_UNREACHABLE; + break; + default: + event.event = RDMA_CM_EVENT_CONNECT_ERROR; + break; + } break; case IW_CM_EVENT_ESTABLISHED: event.event = RDMA_CM_EVENT_ESTABLISHED;