Re: [PATCH] RDMA/rxe: Advance req.wqe_index when rxe_requester meets error

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

 



When an application wants to move data over, it tells this to the RDMA NIC
that translates work request (WR) into work queues (WQ). This is done by
placing instructions into the respective send or receive queues telling the
rNIC what memory buffers form the registered region it wants to send or
receive. Those instructions are called Work Queue Elements (WQE).

A WQE contains a pointer to the memory buffer. When it’s a send queue
it points to data to be sent over to the other side. In the case of a 
receive
queue, it points to the memory buffer where the data will be written to.

To this commit, rxe skb allocation failed. req.wqe_index should not be 
advanced.
Please do something in other places.

Zhu Yanjun

On 3/13/2020 12:50 AM, huangqingxin wrote:
> From: huangqingxin <huangqingxin@xxxxxxxxxxxxx>
>
> In the rxe_requester, we may fail to xmit packet for missing GID entry.
> We should also advance req.wqe_index too.Otherwise, we won't be able
> to get the new next wqe, and completer would consume the wrong wqe.
>
> Signed-off-by: huangqingxin <huangqingxin@xxxxxxxxxxxxx>
> ---
>   drivers/infiniband/sw/rxe/rxe_req.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c
> index e5031172c..08f4bea06 100644
> --- a/drivers/infiniband/sw/rxe/rxe_req.c
> +++ b/drivers/infiniband/sw/rxe/rxe_req.c
> @@ -756,6 +756,7 @@ int rxe_requester(void *arg)
>   err:
>   	wqe->status = IB_WC_LOC_PROT_ERR;
>   	wqe->state = wqe_state_error;
> +	qp->req.wqe_index = next_index(qp->sq.queue, qp->req.wqe_index);
>   	__rxe_do_task(&qp->comp.task);
>   
>   exit:






[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