]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/hns: Fix port active speed
authorChengchang Tang <tangchengchang@huawei.com>
Fri, 4 Aug 2023 01:27:08 +0000 (09:27 +0800)
committerLeon Romanovsky <leon@kernel.org>
Mon, 7 Aug 2023 13:46:58 +0000 (16:46 +0300)
HW supports a variety of different speed, but the current speed
is fixed.

The real speed should be querried from ethernet.

Fixes: 9a4435375cd1 ("IB/hns: Add driver files for hns RoCE driver")
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20230804012711.808069-2-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hns/hns_roce_main.c

index 485e110ca43336e7efea48a6539d19c147f16eea..9141eadf33d2ad97449662abacc77b246cb93ef3 100644 (file)
@@ -219,6 +219,7 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u32 port_num,
        unsigned long flags;
        enum ib_mtu mtu;
        u32 port;
+       int ret;
 
        port = port_num - 1;
 
@@ -231,8 +232,10 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u32 port_num,
                                IB_PORT_BOOT_MGMT_SUP;
        props->max_msg_sz = HNS_ROCE_MAX_MSG_LEN;
        props->pkey_tbl_len = 1;
-       props->active_width = IB_WIDTH_4X;
-       props->active_speed = 1;
+       ret = ib_get_eth_speed(ib_dev, port_num, &props->active_speed,
+                              &props->active_width);
+       if (ret)
+               ibdev_warn(ib_dev, "failed to get speed, ret = %d.\n", ret);
 
        spin_lock_irqsave(&hr_dev->iboe.lock, flags);