Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d32ae393 authored by Tom Tucker's avatar Tom Tucker Committed by Roland Dreier
Browse files

RDMA/cxgb4: Mark QP in error before disabling the queue in firmware



QPs need to be moved to error before telling the firwmare to shutdown
the queue.  Otherwise, the application can submit WRs that will never
get fetched by the hardware and never flushed by the driver.

Signed-off-by: default avatarKumar Sanghvi <kumaras@chelsio.com>
Acked-by: default avatarSteve Wise <swsie@opengridcomputing.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent 581bbe2c
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1221,6 +1221,8 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
				disconnect = 1;
				c4iw_get_ep(&qhp->ep->com);
			}
			if (qhp->ibqp.uobject)
				t4_set_wq_in_error(&qhp->wq);
			ret = rdma_fini(rhp, qhp, ep);
			if (ret)
				goto err;
@@ -1237,6 +1239,8 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
			break;
		case C4IW_QP_STATE_ERROR:
			set_state(qhp, C4IW_QP_STATE_ERROR);
			if (qhp->ibqp.uobject)
				t4_set_wq_in_error(&qhp->wq);
			if (!internal) {
				abort = 1;
				disconnect = 1;