RDMA/iw_cxgb4: in process_timeout() don't move ep state to ABORTING

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>
This commit is contained in:
Hariprasad S 2016-05-06 22:18:01 +05:30 committed by Doug Ledford
parent caa6c9f247
commit 8a70f812b1

View file

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