From 78954a207b6a1869f3763e6df867818e47f09942 Mon Sep 17 00:00:00 2001 From: Haoyue Xu Date: Tue, 5 Dec 2023 11:07:14 +0800 Subject: [PATCH 1/2] RDMA/core: Add support more netdev speed driver inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I8HZAQ -------------------------------------------------------------------------- Add support for 100G and 200G speed display in RDMA. Signed-off-by: Haoyue Xu Signed-off-by: Chengchang Tang --- drivers/infiniband/core/verbs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index 4fcabe5a84be..d1220dae586b 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -1822,8 +1822,9 @@ int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u16 *speed, u8 *width) netdev_speed = lksettings.base.speed; } else { netdev_speed = SPEED_1000; - pr_warn("%s speed is unknown, defaulting to %d\n", netdev->name, - netdev_speed); + if (rc) + pr_warn("%s speed is unknown, defaulting to %d\n", + netdev->name, netdev_speed); } if (netdev_speed <= SPEED_1000) { @@ -1841,9 +1842,15 @@ int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u16 *speed, u8 *width) } else if (netdev_speed <= SPEED_40000) { *width = IB_WIDTH_4X; *speed = IB_SPEED_FDR10; - } else { + } else if (netdev_speed <= SPEED_100000) { *width = IB_WIDTH_4X; *speed = IB_SPEED_EDR; + } else if (netdev_speed <= SPEED_200000) { + *width = IB_WIDTH_4X; + *speed = IB_SPEED_HDR; + } else { + *width = IB_WIDTH_4X; + *speed = IB_SPEED_NDR; } return 0; -- Gitee From d765b0f6c398263199b4de71e9af3f44e8034562 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 4 Aug 2023 09:27:08 +0800 Subject: [PATCH 2/2] RDMA/hns: Fix port active speed mainline inclusion from mainline-v6.6-rc1 commit df1bcf90a66a10967a3a43510b42cb3566208011 category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I8HZAQ CVE: NA Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=df1bcf90a66a10967a3a43510b42cb3566208011 ---------------------------------------------------------------------- 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 Signed-off-by: Junxian Huang Link: https://lore.kernel.org/r/20230804012711.808069-2-huangjunxian6@hisilicon.com Signed-off-by: Leon Romanovsky Signed-off-by: Juan Zhou --- drivers/infiniband/hw/hns/hns_roce_main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c index 4a16200ab950..16151b4e55d3 100644 --- a/drivers/infiniband/hw/hns/hns_roce_main.c +++ b/drivers/infiniband/hw/hns/hns_roce_main.c @@ -293,6 +293,7 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u8 port_num, unsigned long flags; enum ib_mtu mtu; u8 port; + int ret; port = port_num - 1; @@ -305,8 +306,10 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u8 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); -- Gitee