]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event
authorAnumula Murali Mohan Reddy <anumula@chelsio.com>
Tue, 7 Jan 2025 09:50:53 +0000 (15:20 +0530)
committerLeon Romanovsky <leon@kernel.org>
Tue, 14 Jan 2025 11:31:10 +0000 (06:31 -0500)
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 844bc12e6da3 ("IB/core:
add support for draining Shared receive queues")

Fixes: 844bc12e6da3 ("IB/core: add support for draining Shared receive queues")
Signed-off-by: Anumula Murali Mohan Reddy <anumula@chelsio.com>
Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
Link: https://patch.msgid.link/20250107095053.81007-1-anumula@chelsio.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/cxgb4/qp.c

index 7b5c4522b426a6f1ef0bb4156a31b9d04bea6217..955f061a55e9ae4be5b6ff135b7bbe5e3b695192 100644 (file)
@@ -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);