Skip to content

Commit 98cc7ca

Browse files
larrchgregkh
authored andcommitted
RDMA/hns: Fixes missing error code of CMDQ
[ Upstream commit 8f86e2e ] 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/[email protected] Signed-off-by: Lang Cheng <[email protected]> Signed-off-by: Weihang Li <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 88cd1b9 commit 98cc7ca

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

drivers/infiniband/hw/hns/hns_roce_hw_v2.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,7 +1264,7 @@ static int __hns_roce_cmq_send(struct hns_roce_dev *hr_dev,
12641264
u32 timeout = 0;
12651265
int handle = 0;
12661266
u16 desc_ret;
1267-
int ret = 0;
1267+
int ret;
12681268
int ntc;
12691269

12701270
spin_lock_bh(&csq->lock);
@@ -1309,15 +1309,14 @@ static int __hns_roce_cmq_send(struct hns_roce_dev *hr_dev,
13091309
if (hns_roce_cmq_csq_done(hr_dev)) {
13101310
complete = true;
13111311
handle = 0;
1312+
ret = 0;
13121313
while (handle < num) {
13131314
/* get the result of hardware write back */
13141315
desc_to_use = &csq->desc[ntc];
13151316
desc[handle] = *desc_to_use;
13161317
dev_dbg(hr_dev->dev, "Get cmq desc:\n");
13171318
desc_ret = le16_to_cpu(desc[handle].retval);
1318-
if (desc_ret == CMD_EXEC_SUCCESS)
1319-
ret = 0;
1320-
else
1319+
if (unlikely(desc_ret != CMD_EXEC_SUCCESS))
13211320
ret = -EIO;
13221321
priv->cmq.last_status = desc_ret;
13231322
ntc++;

0 commit comments

Comments
 (0)