diff --git a/0026-libhns-Add-RoH-device-IDs.patch b/0026-libhns-Add-RoH-device-IDs.patch new file mode 100644 index 0000000000000000000000000000000000000000..9c7d9481cb1db5c4e13c15366018b6dc828a8719 --- /dev/null +++ b/0026-libhns-Add-RoH-device-IDs.patch @@ -0,0 +1,36 @@ +From 8c9305fce0941a6660582ed9aaf62c5a8367bc0f Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Fri, 9 Oct 2020 11:14:39 +0800 +Subject: [PATCH 1/2] libhns: Add RoH device IDs + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I9FFIU + +------------------------------------------------------------------ + +Add RoH device IDs. +0xA22C is a 200Gb/s RoH device. +0xA22D is a 400Gb/s RoH device. + +Signed-off-by: Chengchang Tang +--- + providers/hns/hns_roce_u.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 93a0312..f9abe2f 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -53,6 +53,8 @@ static const struct verbs_match_ent hca_table[] = { + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA226, &hns_roce_u_hw_v2), + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA227, &hns_roce_u_hw_v2), + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA228, &hns_roce_u_hw_v2), ++ VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA22C, &hns_roce_u_hw_v2), ++ VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA22D, &hns_roce_u_hw_v2), + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA22F, &hns_roce_u_hw_v2), + {} + }; +-- +2.33.0 + diff --git a/0027-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch b/0027-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch new file mode 100644 index 0000000000000000000000000000000000000000..d8e377ab5191d091384e6c4241b1a6e8e8267349 --- /dev/null +++ b/0027-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch @@ -0,0 +1,125 @@ +From 928442c4184ceb115665da2040accc7e6c716b79 Mon Sep 17 00:00:00 2001 +From: Yangyang Li +Date: Tue, 13 Sep 2022 20:09:27 +0800 +Subject: [PATCH 2/2] libhns: Add the parsing of mac type in RoH mode + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I9FFIU + +------------------------------------------------------------------ + +After parsing the mac type as RoH mode, the user driver +needs to set the dmac field of ud wqe to 0xFF, the hardware +will recognize this field, and increase the recognition of +the IP field in RoH mode, which is used for the CM link +building function in user mode. + +Signed-off-by: Yangyang Li +Signed-off-by: Guofeng Yue +--- + providers/hns/hns_roce_u.c | 34 +++++++++++++++++++++++++++++++- + providers/hns/hns_roce_u.h | 6 ++++++ + providers/hns/hns_roce_u_hw_v2.c | 4 ++++ + 3 files changed, 43 insertions(+), 1 deletion(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index f9abe2f..7a3d1a2 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -95,6 +95,38 @@ static const struct verbs_context_ops hns_common_ops = { + .alloc_parent_domain = hns_roce_u_alloc_pad, + }; + ++static struct { ++ uint32_t device_id; ++ enum hns_device_link_type link_type; ++} device_link_types[] = { ++ {0xA222, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA223, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA224, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA225, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA226, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA228, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA22F, HNS_DEV_LINK_TYPE_ETH}, ++ {0xA227, HNS_DEV_LINK_TYPE_HCCS}, ++ {0xA22C, HNS_DEV_LINK_TYPE_HCCS}, ++ {0xA22D, HNS_DEV_LINK_TYPE_HCCS} ++}; ++ ++static int get_link_type(uint32_t device_id, ++ enum hns_device_link_type *link_type) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(device_link_types); i++) { ++ if (device_id == device_link_types[i].device_id) { ++ *link_type = device_link_types[i].link_type; ++ return 0; ++ } ++ } ++ ++ return ENOENT; ++} ++ ++ + static uint32_t calc_table_shift(uint32_t entry_count, uint32_t size_shift) + { + uint32_t count_shift = hr_ilog32(entry_count); +@@ -303,7 +335,7 @@ static int set_context_attr(struct hns_roce_device *hr_dev, + context->max_srq_wr = dev_attrs.max_srq_wr; + context->max_srq_sge = dev_attrs.max_srq_sge; + +- return 0; ++ return get_link_type(dev_attrs.vendor_part_id, &hr_dev->link_type); + } + + static void ucontext_set_cmd(struct hns_roce_alloc_ucontext *cmd, +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 691bf61..5eedb81 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -161,12 +161,18 @@ enum { + #define HNS_ROCE_SRQ_TABLE_BITS 8 + #define HNS_ROCE_SRQ_TABLE_SIZE BIT(HNS_ROCE_SRQ_TABLE_BITS) + ++enum hns_device_link_type { ++ HNS_DEV_LINK_TYPE_ETH, ++ HNS_DEV_LINK_TYPE_HCCS, ++}; ++ + struct hns_roce_device { + struct verbs_device ibv_dev; + int page_size; + const struct hns_roce_u_hw *u_hw; + int hw_version; + uint8_t congest_cap; ++ enum hns_device_link_type link_type; + }; + + struct hns_roce_buf { +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 15d9108..b2d452b 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -1377,6 +1377,7 @@ static inline void enable_wqe(struct hns_roce_qp *qp, void *sq_wqe, + static int set_ud_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr, + unsigned int nreq, struct hns_roce_sge_info *sge_info) + { ++ struct hns_roce_device *hr_dev = to_hr_dev(qp->verbs_qp.qp.context->device); + struct hns_roce_ah *ah = to_hr_ah(wr->wr.ud.ah); + struct hns_roce_ud_sq_wqe *ud_sq_wqe = wqe; + int ret = 0; +@@ -1401,6 +1402,9 @@ static int set_ud_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr, + if (ret) + return ret; + ++ if (hr_dev->link_type == HNS_DEV_LINK_TYPE_HCCS) ++ ud_sq_wqe->dmac[0] = 0xF0; ++ + ret = fill_ud_data_seg(ud_sq_wqe, qp, wr, sge_info); + if (ret) + return ret; +-- +2.33.0 + diff --git a/rdma-core.spec b/rdma-core.spec index 7ad39a15bd6dc96ee3282823ca29300d51882461..6b101bab39d1a77209ad0f9a1f316bdbbe2d3f4f 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -1,6 +1,6 @@ Name: rdma-core Version: 50.0 -Release: 6 +Release: 7 Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core @@ -31,6 +31,8 @@ patch22: 0022-libhns-Add-support-for-attaching-QP-s-WQE-buffer.patch patch23: 0023-libhns-Use-shared-memory-to-sync-DCA-status.patch patch24: 0024-libhns-Sync-DCA-status-by-shared-memory.patch patch25: 0025-libhns-Add-direct-verbs-support-to-config-DCA.patch +patch26: 0026-libhns-Add-RoH-device-IDs.patch +patch27: 0027-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0) BuildRequires: pkgconfig(libnl-route-3.0) valgrind-devel systemd systemd-devel @@ -610,6 +612,12 @@ fi %doc %{_docdir}/%{name}-%{version}/70-persistent-ipoib.rules %changelog +* Fri Apr 12 2024 Ke Chen - 50.0-7 +- Type: requirement +- ID: NA +- SUG: NA +- DESC: Add support for ROH + * Thu Apr 11 2024 Ran Zhou - 50.0-6 - Type: requirement - ID: NA