RDMA/iw_cxgb4: in process_timeout() don't move ep state to ABORTING
authorHariprasad S <hariprasad@chelsio.com>
Fri, 6 May 2016 16:48:01 +0000 (22:18 +0530)
committerDoug Ledford <dledford@redhat.com>
Fri, 13 May 2016 23:38:07 +0000 (19:38 -0400)
Moving the state to ABORTING causes the ep to get stuck because
c4iw_ep_timeout() thinks the ABORT has already been done. So leave the
state alone and let c4iw_ep_disconnect() do the right thing given the
ep state.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/cxgb4/cm.c

index 658ea16d3265e9c2e20f43634e5020a725293090..6c22bc95a11227ddee89cd1fd01adc3e4490e4e0 100644 (file)
@@ -3971,12 +3971,10 @@ static void process_timeout(struct c4iw_ep *ep)
        set_bit(TIMEDOUT, &ep->com.history);
        switch (ep->com.state) {
        case MPA_REQ_SENT:
-               __state_set(&ep->com, ABORTING);
                connect_reply_upcall(ep, -ETIMEDOUT);
                break;
        case MPA_REQ_WAIT:
        case MPA_REP_SENT:
-               __state_set(&ep->com, ABORTING);
                break;
        case CLOSING:
        case MORIBUND:
@@ -3986,7 +3984,6 @@ static void process_timeout(struct c4iw_ep *ep)
                                     ep->com.qp, C4IW_QP_ATTR_NEXT_STATE,
                                     &attrs, 1);
                }
-               __state_set(&ep->com, ABORTING);
                close_complete_upcall(ep, -ETIMEDOUT);
                break;
        case ABORTING: