Skip to content

Commit

Permalink
RDMA/hns: Fixes missing error code of CMDQ
Browse files Browse the repository at this point in the history
When posting a multi-descriptors command, the error code of previous
failed descriptors may be rewrote to 0 by a later successful descriptor.

Fixes: a04ff73 ("RDMA/hns: Add command queue support for hip08 RoCE driver")
Link: https://lore.kernel.org/r/1612688143-28226-3-git-send-email-liweihang@huawei.com
Signed-off-by: Lang Cheng <chenglang@huawei.com>
Signed-off-by: Weihang Li <liweihang@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
  • Loading branch information
Lang Cheng authored and Jason Gunthorpe committed Feb 16, 2021
1 parent 2295572 commit 8f86e2e
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/infiniband/hw/hns/hns_roce_hw_v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -1317,7 +1317,7 @@ static int __hns_roce_cmq_send(struct hns_roce_dev *hr_dev,
u32 timeout = 0;
int handle = 0;
u16 desc_ret;
int ret = 0;
int ret;
int ntc;

spin_lock_bh(&csq->lock);
Expand Down Expand Up @@ -1361,15 +1361,14 @@ static int __hns_roce_cmq_send(struct hns_roce_dev *hr_dev,

if (hns_roce_cmq_csq_done(hr_dev)) {
handle = 0;
ret = 0;
while (handle < num) {
/* get the result of hardware write back */
desc_to_use = &csq->desc[ntc];
desc[handle] = *desc_to_use;
dev_dbg(hr_dev->dev, "Get cmq desc:\n");
desc_ret = le16_to_cpu(desc[handle].retval);
if (desc_ret == CMD_EXEC_SUCCESS)
ret = 0;
else
if (unlikely(desc_ret != CMD_EXEC_SUCCESS))
ret = -EIO;

ntc++;
Expand Down

0 comments on commit 8f86e2e

Please sign in to comment.