diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c index 61a2eb77d999..17ed41309756 100644 --- a/drivers/infiniband/sw/rxe/rxe_qp.c +++ b/drivers/infiniband/sw/rxe/rxe_qp.c @@ -758,19 +758,21 @@ static void rxe_qp_do_cleanup(struct work_struct *work) del_timer_sync(&qp->rnr_nak_timer); } - if (qp->resp.task.func) + /* flush out any receive wr's or pending requests */ + if (qp->resp.task.func) { rxe_cleanup_task(&qp->resp.task); + rxe_responder(qp); + } - if (qp->req.task.func) + if (qp->req.task.func) { rxe_cleanup_task(&qp->req.task); + rxe_requester(qp); + } - if (qp->comp.task.func) + if (qp->comp.task.func) { rxe_cleanup_task(&qp->comp.task); - - /* flush out any receive wr's or pending requests */ - rxe_requester(qp); - rxe_completer(qp); - rxe_responder(qp); + rxe_completer(qp); + } if (qp->sq.queue) rxe_queue_cleanup(qp->sq.queue);