From cc1006c9170f55618b006eb7f1ce8e3ab11be99f Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Tue, 1 Nov 2022 20:52:55 +0800 Subject: [PATCH] Fix missing patch list in spec Patches for hns DSCP was forgotten to add to be added to the spec. And some mistake in DSCP patch is fixed. Fixes: 68f61fd0a1a8 ("Add support for hns DSCP") Signed-off-by: Chengchang Tang --- 0012-libhns-Support-DSCP.patch | 80 +++++++++++++++++++++++++++++----- rdma-core.spec | 2 + 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/0012-libhns-Support-DSCP.patch b/0012-libhns-Support-DSCP.patch index c7c5ea2..130c89a 100644 --- a/0012-libhns-Support-DSCP.patch +++ b/0012-libhns-Support-DSCP.patch @@ -1,4 +1,4 @@ -From 288a89df406d8c77b3e3d6a8ca375ef18b676769 Mon Sep 17 00:00:00 2001 +From b88e6ae3e144651092bce923123ca20361cdacab Mon Sep 17 00:00:00 2001 From: Yixing Liu Date: Tue, 27 Sep 2022 19:06:00 +0800 Subject: [PATCH 12/12] libhns: Support DSCP @@ -9,9 +9,10 @@ the mapping of dscp-tc configured in kernel mode. Signed-off-by: Yixing Liu --- providers/hns/hns_roce_u.h | 7 +++++++ - providers/hns/hns_roce_u_hw_v2.c | 11 ++++++++++- - providers/hns/hns_roce_u_verbs.c | 3 +++ - 3 files changed, 20 insertions(+), 1 deletion(-) + providers/hns/hns_roce_u_abi.h | 6 ++++++ + providers/hns/hns_roce_u_hw_v2.c | 19 +++++++++++++++---- + providers/hns/hns_roce_u_verbs.c | 7 +++++-- + 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h index 6b64cd0..8c1cb1e 100644 @@ -38,19 +39,58 @@ index 6b64cd0..8c1cb1e 100644 unsigned int qkey; enum ibv_mtu path_mtu; +diff --git a/providers/hns/hns_roce_u_abi.h b/providers/hns/hns_roce_u_abi.h +index 2753d30..0519ac7 100644 +--- a/providers/hns/hns_roce_u_abi.h ++++ b/providers/hns/hns_roce_u_abi.h +@@ -49,6 +49,9 @@ DECLARE_DRV_CMD(hns_roce_create_cq_ex, IB_USER_VERBS_EX_CMD_CREATE_CQ, + DECLARE_DRV_CMD(hns_roce_alloc_ucontext, IB_USER_VERBS_CMD_GET_CONTEXT, + hns_roce_ib_alloc_ucontext, hns_roce_ib_alloc_ucontext_resp); + ++DECLARE_DRV_CMD(hns_roce_create_ah, IB_USER_VERBS_CMD_CREATE_AH, empty, ++ hns_roce_ib_create_ah_resp); ++ + DECLARE_DRV_CMD(hns_roce_create_qp, IB_USER_VERBS_CMD_CREATE_QP, + hns_roce_ib_create_qp, hns_roce_ib_create_qp_resp); + +@@ -61,4 +64,7 @@ DECLARE_DRV_CMD(hns_roce_create_srq, IB_USER_VERBS_CMD_CREATE_SRQ, + DECLARE_DRV_CMD(hns_roce_create_srq_ex, IB_USER_VERBS_CMD_CREATE_XSRQ, + hns_roce_ib_create_srq, hns_roce_ib_create_srq_resp); + ++DECLARE_DRV_CMD(hns_roce_modify_qp_ex, IB_USER_VERBS_EX_CMD_MODIFY_QP, ++ empty, hns_roce_ib_modify_qp_resp); ++ + #endif /* _HNS_ROCE_U_ABI_H */ diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c -index a30d461..c90a312 100644 +index a30d461..c652eea 100644 --- a/providers/hns/hns_roce_u_hw_v2.c +++ b/providers/hns/hns_roce_u_hw_v2.c -@@ -1545,6 +1545,7 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, +@@ -1543,10 +1543,11 @@ static void record_qp_attr(struct ibv_qp *qp, struct ibv_qp_attr *attr, + static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + int attr_mask) { - int ret; - struct ibv_modify_qp cmd; +- int ret; +- struct ibv_modify_qp cmd; + struct hns_roce_modify_qp_ex_resp resp_ex = {}; ++ struct hns_roce_modify_qp_ex cmd_ex = {}; struct hns_roce_qp *hr_qp = to_hr_qp(qp); bool flag = false; /* modify qp to error */ ++ int ret; + + if ((attr_mask & IBV_QP_STATE) && (attr->qp_state == IBV_QPS_ERR)) { + pthread_spin_lock(&hr_qp->sq.lock); +@@ -1554,7 +1555,9 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + flag = true; + } -@@ -1564,8 +1565,13 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, +- ret = ibv_cmd_modify_qp(qp, attr, attr_mask, &cmd, sizeof(cmd)); ++ ret = ibv_cmd_modify_qp_ex(qp, attr, attr_mask, &cmd_ex.ibv_cmd, ++ sizeof(cmd_ex), &resp_ex.ibv_resp, ++ sizeof(resp_ex)); + + if (flag) { + pthread_spin_unlock(&hr_qp->rq.lock); +@@ -1564,8 +1567,13 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, if (ret) return ret; @@ -65,7 +105,7 @@ index a30d461..c90a312 100644 if ((attr_mask & IBV_QP_STATE) && attr->qp_state == IBV_QPS_RESET) { if (qp->recv_cq) -@@ -1579,6 +1585,9 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, +@@ -1579,6 +1587,9 @@ 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)); } @@ -76,10 +116,26 @@ index a30d461..c90a312 100644 return ret; diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c -index cff9d1d..a21c837 100644 +index cff9d1d..3b7a67d 100644 --- a/providers/hns/hns_roce_u_verbs.c +++ b/providers/hns/hns_roce_u_verbs.c -@@ -1483,6 +1483,9 @@ struct ibv_ah *hns_roce_u_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) +@@ -1449,7 +1449,7 @@ static int get_tclass(struct ibv_context *context, struct ibv_ah_attr *attr, + struct ibv_ah *hns_roce_u_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) + { + struct hns_roce_device *hr_dev = to_hr_dev(pd->context->device); +- struct ib_uverbs_create_ah_resp resp = {}; ++ struct hns_roce_create_ah_resp resp = {}; + struct hns_roce_ah *ah; + + /* HIP08 don't support create ah */ +@@ -1477,12 +1477,15 @@ struct ibv_ah *hns_roce_u_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) + memcpy(ah->av.dgid, attr->grh.dgid.raw, ARRAY_SIZE(ah->av.dgid)); + } + +- if (ibv_cmd_create_ah(pd, &ah->ibv_ah, attr, &resp, sizeof(resp))) ++ if (ibv_cmd_create_ah(pd, &ah->ibv_ah, attr, &resp.ibv_resp, sizeof(resp))) + goto err; + if (ibv_resolve_eth_l2_from_gid(pd->context, attr, ah->av.mac, NULL)) goto err; diff --git a/rdma-core.spec b/rdma-core.spec index 6f98724..70c88fe 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -16,6 +16,8 @@ Patch6: 0007-libhns-Refactor-rq-inline.patch Patch7: 0008-libhns-RQ-inline-support-wc_x_poll_cq-interface.patch Patch8: 0009-Update-kernel-headers.patch Patch9: 0010-libhns-Support-cqe-inline.patch +Patch10: 0011-Update-kernel-headers.patch +Patch11: 0012-libhns-Support-DSCP.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 -- Gitee