diff options
author | Li Zhijian <lizhijian@fujitsu.com> | 2022-07-20 04:56:05 -0400 |
---|---|---|
committer | Jason Gunthorpe <jgg@nvidia.com> | 2022-08-02 13:41:36 -0300 |
commit | dea4266f7bf2fc76e49b2e521feccd6c1dbca8c5 (patch) | |
tree | 1f2a233cef221c6e42433722d63626e82a037d7e /drivers/infiniband | |
parent | b5605148e6ce36bb21020d49010b617693933128 (diff) |
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 <lizhijian@fujitsu.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/sw/rxe/rxe_req.c | 2 |
1 files changed, 2 insertions, 0 deletions
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: |