]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sif: rq: do not flush rq if it is an srq
authorWei Lin Guay <wei.lin.guay@oracle.com>
Mon, 31 Oct 2016 20:25:26 +0000 (21:25 +0100)
committerKnut Omang <knut.omang@oracle.com>
Fri, 11 Nov 2016 16:36:58 +0000 (17:36 +0100)
sifdrv needs to flush a regular rq (non-srq) once it
detects that a qp is transitioned into  ERR state.
Nevertheless, if a qp is created with srq and
with no event handler, the srq might be accidentally
flushed once the qp is transitioned into ERR sate.

Orabug: 25071205

Signed-off-by: Wei Lin Guay <wei.lin.guay@oracle.com>
Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
drivers/infiniband/hw/sif/sif_eq.c

index 4af42e225b88935a8264594cec7cfea78a64e2d1..f452d5e9b6dc29fa9c2f076f72ea7430f9dbbcfd 100644 (file)
@@ -682,7 +682,7 @@ static void handle_event_work(struct work_struct *work)
                                        .element.qp = &qp->ibqp
                                };
                                ibqp->event_handler(&ibe, ibqp->qp_context);
-                       } else {
+                       } else if (!rq->is_srq) {
                                /* WA #622: if reqular RQ, flush */
                                if (sif_flush_rq_wq(sdev, rq, qp, atomic_read(&rq_sw->length)))
                                        sif_log(sdev, SIF_INFO, "failed to flush RQ %d",