mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 16:20:55 +07:00
RDMA/hns: Fixes missing error code of CMDQ
[ Upstream commit 8f86e2eadac968200a6ab1d7074fc0f5cbc1e075 ]
When posting a multi-descriptors command, the error code of previous
failed descriptors may be rewrote to 0 by a later successful descriptor.
Fixes: a04ff739f2
("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
95f432c0a3
commit
55bfe125b4
@ -1232,7 +1232,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);
|
||||
@ -1277,15 +1277,14 @@ static int __hns_roce_cmq_send(struct hns_roce_dev *hr_dev,
|
||||
if (hns_roce_cmq_csq_done(hr_dev)) {
|
||||
complete = true;
|
||||
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;
|
||||
priv->cmq.last_status = desc_ret;
|
||||
ntc++;
|
||||
|
Loading…
Reference in New Issue
Block a user