Commit 42e6ddda authored by Anumula Murali Mohan Reddy's avatar Anumula Murali Mohan Reddy Committed by Leon Romanovsky
Browse files

RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event



This patch sends IB_EVENT_QP_LAST_WQE_REACHED event on a QP that is in
error state and associated with an SRQ. This behaviour is incorporated
in flush_qp() which is called when QP transitions to error state.
Supports SRQ drain functionality added by commit 844bc12e ("IB/core:
add support for draining Shared receive queues")

Fixes: 844bc12e ("IB/core: add support for draining Shared receive queues")
Signed-off-by: default avatarAnumula Murali Mohan Reddy <anumula@chelsio.com>
Signed-off-by: default avatarPotnuri Bharat Teja <bharat@chelsio.com>
Link: https://patch.msgid.link/20250107095053.81007-1-anumula@chelsio.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent 9264cd6a
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1599,6 +1599,7 @@ static void __flush_qp(struct c4iw_qp *qhp, struct c4iw_cq *rchp,
	int count;
	int rq_flushed = 0, sq_flushed;
	unsigned long flag;
	struct ib_event ev;

	pr_debug("qhp %p rchp %p schp %p\n", qhp, rchp, schp);

@@ -1607,6 +1608,13 @@ static void __flush_qp(struct c4iw_qp *qhp, struct c4iw_cq *rchp,
	if (schp != rchp)
		spin_lock(&schp->lock);
	spin_lock(&qhp->lock);
	if (qhp->srq && qhp->attr.state == C4IW_QP_STATE_ERROR &&
	    qhp->ibqp.event_handler) {
		ev.device = qhp->ibqp.device;
		ev.element.qp = &qhp->ibqp;
		ev.event = IB_EVENT_QP_LAST_WQE_REACHED;
		qhp->ibqp.event_handler(&ev, qhp->ibqp.qp_context);
	}

	if (qhp->wq.flushed) {
		spin_unlock(&qhp->lock);