lkml.org 
[lkml]   [2021]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 376/663] RDMA/hns: Fixes missing error code of CMDQ
    Date
    From: Lang Cheng <chenglang@huawei.com>

    [ 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: a04ff739f2a9 ("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>
    ---
    drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 7 +++----
    1 file changed, 3 insertions(+), 4 deletions(-)

    diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
    index 69621e84986d7..ebcf26dec1e30 100644
    --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
    +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
    @@ -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++;
    --
    2.27.0


    \
     
     \ /
      Last update: 2021-03-02 00:40    [W:4.018 / U:0.432 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site