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

Commit d19081e0 authored by Dan Carpenter's avatar Dan Carpenter Committed by Roland Dreier
Browse files

RDMA/ocrdma: Tiny locking cleanup



We only need to disable the IRQs one time.

Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>

[ Rename "wq_flags" to more conventional "flags."  - Roland ]

Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent 55a8d62a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1431,7 +1431,7 @@ int ocrdma_destroy_qp(struct ib_qp *ibqp)
	struct ocrdma_dev *dev;
	struct ib_qp_attr attrs;
	int attr_mask = IB_QP_STATE;
	unsigned long wq_flags = 0, rq_flags = 0;
	unsigned long flags;

	qp = get_ocrdma_qp(ibqp);
	dev = qp->dev;
@@ -1453,15 +1453,15 @@ int ocrdma_destroy_qp(struct ib_qp *ibqp)
	 * acquire CQ lock while destroy is in progress, in order to
	 * protect against proessing in-flight CQEs for this QP.
	 */
	spin_lock_irqsave(&qp->sq_cq->cq_lock, wq_flags);
	spin_lock_irqsave(&qp->sq_cq->cq_lock, flags);
	if (qp->rq_cq && (qp->rq_cq != qp->sq_cq))
		spin_lock_irqsave(&qp->rq_cq->cq_lock, rq_flags);
		spin_lock(&qp->rq_cq->cq_lock);

	ocrdma_del_qpn_map(dev, qp);

	if (qp->rq_cq && (qp->rq_cq != qp->sq_cq))
		spin_unlock_irqrestore(&qp->rq_cq->cq_lock, rq_flags);
	spin_unlock_irqrestore(&qp->sq_cq->cq_lock, wq_flags);
		spin_unlock(&qp->rq_cq->cq_lock);
	spin_unlock_irqrestore(&qp->sq_cq->cq_lock, flags);

	if (!pd->uctx) {
		ocrdma_discard_cqes(qp, qp->sq_cq);