!199 libhns: Fix missing fields for SRQ WC
From: @cxh269 Reviewed-by: @hellotcc Signed-off-by: @hellotcc
This commit is contained in:
commit
8163145507
82
0043-libhns-Fix-missing-fields-for-SRQ-WC.patch
Normal file
82
0043-libhns-Fix-missing-fields-for-SRQ-WC.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
From b52618371517527ce8ea4b8f5bd2571c7f69a2ba Mon Sep 17 00:00:00 2001
|
||||||
|
From: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Date: Wed, 15 Jan 2025 15:55:29 +0800
|
||||||
|
Subject: [PATCH] libhns: Fix missing fields for SRQ WC
|
||||||
|
|
||||||
|
mainline inclusion
|
||||||
|
from mainline-master
|
||||||
|
commit 65a7ce99cf4bfd6748346206f546e51c0a82c993
|
||||||
|
category: bugfix
|
||||||
|
bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/IBIEA4
|
||||||
|
CVE: NA
|
||||||
|
Reference: https://github.com/linux-rdma/rdma-core/pull/1543/commits/65a7ce99cf4bfd6748346206f546e51c0a82c993
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
The sl and src_qpn fields in recv-WC are not filled when the QP is UD
|
||||||
|
and has an SRQ. Here fix it.
|
||||||
|
|
||||||
|
In addition, UD QP does not support RQ INLINE and CQE INLINE features.
|
||||||
|
Reorder the related if-else statements to reduce the number of
|
||||||
|
conditional checks in IO path.
|
||||||
|
|
||||||
|
Fixes: 061f7e1757ca ("libhns: Refactor the poll one interface")
|
||||||
|
Signed-off-by: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Signed-off-by: Xinghai Cen <cenxinghai@h-partners.com>
|
||||||
|
---
|
||||||
|
providers/hns/hns_roce_u_hw_v2.c | 13 ++++++++-----
|
||||||
|
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
index 0628646..aadea7a 100644
|
||||||
|
--- a/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
+++ b/providers/hns/hns_roce_u_hw_v2.c
|
||||||
|
@@ -519,7 +519,8 @@ static void parse_for_ud_qp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void parse_cqe_for_srq(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc,
|
||||||
|
- struct hns_roce_srq *srq)
|
||||||
|
+ struct hns_roce_srq *srq,
|
||||||
|
+ struct hns_roce_qp *hr_qp)
|
||||||
|
{
|
||||||
|
uint32_t wqe_idx;
|
||||||
|
|
||||||
|
@@ -529,6 +530,8 @@ static void parse_cqe_for_srq(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc,
|
||||||
|
|
||||||
|
if (hr_reg_read(cqe, CQE_CQE_INLINE))
|
||||||
|
handle_recv_cqe_inl_from_srq(cqe, srq);
|
||||||
|
+ else if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD)
|
||||||
|
+ parse_for_ud_qp(cqe, wc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc,
|
||||||
|
@@ -540,13 +543,13 @@ static void parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc,
|
||||||
|
wc->wr_id = wq->wrid[wq->tail & (wq->wqe_cnt - 1)];
|
||||||
|
++wq->tail;
|
||||||
|
|
||||||
|
- if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD)
|
||||||
|
- parse_for_ud_qp(cqe, wc);
|
||||||
|
-
|
||||||
|
if (hr_reg_read(cqe, CQE_CQE_INLINE))
|
||||||
|
handle_recv_cqe_inl_from_rq(cqe, hr_qp);
|
||||||
|
else if (hr_reg_read(cqe, CQE_RQ_INLINE))
|
||||||
|
handle_recv_rq_inl(cqe, hr_qp);
|
||||||
|
+ else if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD)
|
||||||
|
+ parse_for_ud_qp(cqe, wc);
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
static void parse_cqe_for_req(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc,
|
||||||
|
@@ -753,7 +756,7 @@ static int parse_cqe_for_cq(struct hns_roce_context *ctx, struct hns_roce_cq *cq
|
||||||
|
return V2_CQ_POLL_ERR;
|
||||||
|
|
||||||
|
if (srq)
|
||||||
|
- parse_cqe_for_srq(cqe, wc, srq);
|
||||||
|
+ parse_cqe_for_srq(cqe, wc, srq, cur_qp);
|
||||||
|
else
|
||||||
|
parse_cqe_for_resp(cqe, wc, cur_qp);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: rdma-core
|
Name: rdma-core
|
||||||
Version: 50.0
|
Version: 50.0
|
||||||
Release: 20
|
Release: 21
|
||||||
Summary: RDMA core userspace libraries and daemons
|
Summary: RDMA core userspace libraries and daemons
|
||||||
License: GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
|
License: GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
|
||||||
Url: https://github.com/linux-rdma/rdma-core
|
Url: https://github.com/linux-rdma/rdma-core
|
||||||
@ -47,6 +47,7 @@ patch39: 0039-libhns-Fix-the-exception-branch-of-wr_start-is-not-l.patch
|
|||||||
patch40: 0040-libhns-Fix-memory-leakage-when-DCA-is-enabled.patch
|
patch40: 0040-libhns-Fix-memory-leakage-when-DCA-is-enabled.patch
|
||||||
patch41: 0041-libhns-Fix-coredump-during-QP-destruction-when-send_.patch
|
patch41: 0041-libhns-Fix-coredump-during-QP-destruction-when-send_.patch
|
||||||
patch42: 0042-libhns-Add-error-logs-to-help-diagnosis.patch
|
patch42: 0042-libhns-Add-error-logs-to-help-diagnosis.patch
|
||||||
|
patch43: 0043-libhns-Fix-missing-fields-for-SRQ-WC.patch
|
||||||
|
|
||||||
BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0)
|
BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0)
|
||||||
BuildRequires: pkgconfig(libnl-route-3.0) systemd systemd-devel
|
BuildRequires: pkgconfig(libnl-route-3.0) systemd systemd-devel
|
||||||
@ -620,6 +621,12 @@ fi
|
|||||||
%doc %{_docdir}/%{name}-%{version}/70-persistent-ipoib.rules
|
%doc %{_docdir}/%{name}-%{version}/70-persistent-ipoib.rules
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 17 2025 Xinghai Cen <cenxinghai@h-partners.com> - 50.0-21
|
||||||
|
- Type: bugfix
|
||||||
|
- ID: NA
|
||||||
|
- SUG: NA
|
||||||
|
- DESC: Fix missing fields for SRQ WC
|
||||||
|
|
||||||
* Wed Jan 08 2025 Funda Wang <fundawang@yeah.net> - 50.0-20
|
* Wed Jan 08 2025 Funda Wang <fundawang@yeah.net> - 50.0-20
|
||||||
- Type: bugfix
|
- Type: bugfix
|
||||||
- ID: NA
|
- ID: NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user