Re: [PATCH] RDMA/rxe: Send last wqe reached event on qp cleanup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry ignore this one. I forgot the for-next.

Bob

On 6/2/23 11:40, Bob Pearson wrote:
> The IBA requires:
> 	o11-5.2.5: If the HCA supports SRQ, for RC and UD service,
> 	the CI shall generate a Last WQE Reached Affiliated Asynchronous
> 	Event on a QP that is in the Error State and is associated with
> 	an SRQ when either:
> 		• a CQE is generated for the last WQE, or
> 		• the QP gets in the Error State and there are no more
> 		  WQEs on the RQ.
> 
> This patch implements this behavior in flush_recv_queue() which is
> called as a result of rxe_qp_error() being called whenever the qp
> is put into the error state. The rxe responder executes SRQ WQEs
> directly from the SRQ so there are never more WQES on the RQ.
> 
> Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx>
> ---
>  drivers/infiniband/sw/rxe/rxe_resp.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
> index 172c8f916470..0c24facd12cb 100644
> --- a/drivers/infiniband/sw/rxe/rxe_resp.c
> +++ b/drivers/infiniband/sw/rxe/rxe_resp.c
> @@ -1492,8 +1492,17 @@ static void flush_recv_queue(struct rxe_qp *qp, bool notify)
>  	struct rxe_recv_wqe *wqe;
>  	int err;
>  
> -	if (qp->srq)
> +	if (qp->srq) {
> +		if (notify && qp->ibqp.event_handler) {
> +			struct ib_event ev;
> +
> +			ev.device = qp->ibqp.device;
> +			ev.element.qp = &qp->ibqp;
> +			ev.event = IB_EVENT_QP_LAST_WQE_REACHED;
> +			qp->ibqp.event_handler(&ev, qp->ibqp.qp_context);
> +		}
>  		return;
> +	}
>  
>  	while ((wqe = queue_head(q, q->type))) {
>  		if (notify) {




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux