rdma-core/0083-libhns-Fix-overwritten-SL-in-DSCP-mode.patch
Xinghai Cen 4ece021efa libhns:Fixes several bugs for hns
driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IALOAP

----------------------------------------------------------------------

Fixes several bugs for hns:
libhns: Fix overwritten SL in DSCP mode
libhns: Support returning the final value of SL configuration
libhns: Fix memory leakage when DCA is enabled
libhns: Fix the exception branch of wr_start() is not locked

Signed-off-by: Xinghai Cen <cenxinghai@h-partners.com>
(cherry picked from commit f7e92a7c61500e17a864d2e016e842436bd1f442)
2024-08-22 21:19:44 +08:00

45 lines
1.5 KiB
Diff

From 40e7e1643cd67bbdd0865372c4ff64d42d1aaf0b Mon Sep 17 00:00:00 2001
From: Luoyouming <luoyouming@huawei.com>
Date: Mon, 29 Jan 2024 15:38:18 +0800
Subject: [PATCH 1/4] libhns: Fix overwritten SL in DSCP mode
After configuring the DSCP mode, the driver needs to use the
priority as the SL instead of the user-configured SL.
Adjusting the assignment order ensures that the priority is
used as the SL in DSCP mode.
Fixes: 6ec5d1f3f04c ("libhns: Support DSCP")
Signed-off-by: Luoyouming <luoyouming@huawei.com>
---
providers/hns/hns_roce_u_hw_v2.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c
index 8f071e1..42b4f32 100644
--- a/providers/hns/hns_roce_u_hw_v2.c
+++ b/providers/hns/hns_roce_u_hw_v2.c
@@ -1896,7 +1896,9 @@ static void record_qp_attr(struct ibv_qp *qp, struct ibv_qp_attr *attr,
if (attr_mask & IBV_QP_PORT)
hr_qp->port_num = attr->port_num;
- if (attr_mask & IBV_QP_AV)
+ if (hr_qp->tc_mode == HNS_ROCE_TC_MAP_MODE_DSCP)
+ hr_qp->sl = hr_qp->priority;
+ else if (attr_mask & IBV_QP_AV)
hr_qp->sl = attr->ah_attr.sl;
if (attr_mask & IBV_QP_QKEY)
@@ -1959,9 +1961,6 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr,
hns_roce_init_qp_indices(to_hr_qp(qp));
}
- if (hr_qp->tc_mode == HNS_ROCE_TC_MAP_MODE_DSCP)
- hr_qp->sl = hr_qp->priority;
-
/* Try to shrink the DCA mem */
if (ctx->dca_ctx.mem_cnt > 0)
hns_roce_shrink_dca_mem(ctx);
--
2.33.0