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

Commit 12171971 authored by Vijay Immanuel's avatar Vijay Immanuel Committed by Doug Ledford
Browse files

rxe: fix broken receive queue draining



If we modified the qp to ERROR state, and
drained the recieve queue, post_recv must
trigger the responder task to complete
the drain work request.

Cc: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: default avatarVijay Immanuel <vijayi@attalasystems.com>
Signed-off-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarBart Van Assche <bart.vanassche@wdc.com&gt;-->
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent c75d3ec8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1219,6 +1219,9 @@ void rxe_drain_req_pkts(struct rxe_qp *qp, bool notify)
		kfree_skb(skb);
	}

	if (notify)
		return;

	while (!qp->srq && qp->rq.queue && queue_head(qp->rq.queue))
		advance_consumer(qp->rq.queue);
}
+3 −0
Original line number Diff line number Diff line
@@ -914,6 +914,9 @@ static int rxe_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr,

	spin_unlock_irqrestore(&rq->producer_lock, flags);

	if (qp->resp.state == QP_STATE_ERROR)
		rxe_run_task(&qp->resp.task, 1);

err1:
	return err;
}