RDMA/hns: Fix unnecessary err return when using invalid congest control algorithm
authorJunxian Huang <huangjunxian6@hisilicon.com>
Sat, 28 Oct 2023 09:32:42 +0000 (17:32 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2023 17:39:12 +0000 (18:39 +0100)
[ Upstream commit efb9cbf66440482ceaa90493d648226ab7ec2ebf ]

Add a default congest control algorithm so that driver won't return
an error when the configured algorithm is invalid.

Fixes: f91696f2f053 ("RDMA/hns: Support congestion control type selection according to the FW")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20231028093242.670325-1-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 8a9d28f..c2ee805 100644 (file)
@@ -4913,10 +4913,15 @@ static int check_cong_type(struct ib_qp *ibqp,
                cong_alg->wnd_mode_sel = WND_LIMIT;
                break;
        default:
-               ibdev_err(&hr_dev->ib_dev,
-                         "error type(%u) for congestion selection.\n",
-                         hr_dev->caps.cong_type);
-               return -EINVAL;
+               ibdev_warn(&hr_dev->ib_dev,
+                          "invalid type(%u) for congestion selection.\n",
+                          hr_dev->caps.cong_type);
+               hr_dev->caps.cong_type = CONG_TYPE_DCQCN;
+               cong_alg->alg_sel = CONG_DCQCN;
+               cong_alg->alg_sub_sel = UNSUPPORT_CONG_LEVEL;
+               cong_alg->dip_vld = DIP_INVALID;
+               cong_alg->wnd_mode_sel = WND_LIMIT;
+               break;
        }
 
        return 0;