forked from Minki/linux
RDMA/ocrdma: Fix QP state transition in destroy_qp
Don't move QP to error state, if QP is in reset state during QP destroy operation. Signed-off-by: Devesh Sharma <devesh.sharma@avagotech.com> Signed-off-by: Selvin Xavier <selvin.xavier@avagotech.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
5e6f9237f8
commit
fe48822bc6
@ -1721,18 +1721,20 @@ int ocrdma_destroy_qp(struct ib_qp *ibqp)
|
||||
struct ocrdma_qp *qp;
|
||||
struct ocrdma_dev *dev;
|
||||
struct ib_qp_attr attrs;
|
||||
int attr_mask = IB_QP_STATE;
|
||||
int attr_mask;
|
||||
unsigned long flags;
|
||||
|
||||
qp = get_ocrdma_qp(ibqp);
|
||||
dev = get_ocrdma_dev(ibqp->device);
|
||||
|
||||
attrs.qp_state = IB_QPS_ERR;
|
||||
pd = qp->pd;
|
||||
|
||||
/* change the QP state to ERROR */
|
||||
_ocrdma_modify_qp(ibqp, &attrs, attr_mask);
|
||||
|
||||
if (qp->state != OCRDMA_QPS_RST) {
|
||||
attrs.qp_state = IB_QPS_ERR;
|
||||
attr_mask = IB_QP_STATE;
|
||||
_ocrdma_modify_qp(ibqp, &attrs, attr_mask);
|
||||
}
|
||||
/* ensure that CQEs for newly created QP (whose id may be same with
|
||||
* one which just getting destroyed are same), dont get
|
||||
* discarded until the old CQEs are discarded.
|
||||
|
Loading…
Reference in New Issue
Block a user