From: Li Zhijian Date: Wed, 20 Jul 2022 08:56:05 +0000 (-0400) Subject: RDMA/rxe: Update wqe_index for each wqe error completion X-Git-Tag: v6.0-rc1~113^2~5 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=dea4266f7bf2fc76e49b2e521feccd6c1dbca8c5;p=sfrench%2Fcifs-2.6.git RDMA/rxe: Update wqe_index for each wqe error completion Previously, if user space keeps sending abnormal wqe, queue.index will keep increasing while qp->req.wqe_index doesn't. Once qp->req.wqe_index==queue.index in next round, req_next_wqe() will treat queue as empty. In such case, no new completion would be generated. Update wqe_index for each wqe completion so that req_next_wqe() can get next wqe properly. Link: https://lore.kernel.org/r/1658307368-1851-2-git-send-email-lizhijian@fujitsu.com Signed-off-by: Li Zhijian Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c index 49e8f54db6f5..5a85687b9c72 100644 --- a/drivers/infiniband/sw/rxe/rxe_req.c +++ b/drivers/infiniband/sw/rxe/rxe_req.c @@ -802,6 +802,8 @@ done: ret = 0; goto out; err: + /* update wqe_index for each wqe completion */ + qp->req.wqe_index = queue_next_index(qp->sq.queue, qp->req.wqe_index); wqe->state = wqe_state_error; rxe_run_task(&qp->comp.task, 0); exit: