1 Star 0 Fork 50

zhangwenlong01/rdma-core

forked from src-openEuler/rdma-core 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0024-mckey-Use-rdma_create_qp_ex-only-for-loopback-preven.patch 3.25 KB
一键复制 编辑 原始数据 按行查看 历史
tcc@hello 提交于 2022-11-06 23:11 +08:00 . Backport patches from 41.1
From 080f7181a2b4d2316d03c702f65640d6e8b1031e Mon Sep 17 00:00:00 2001
From: Kamal Heib <kamalheib1@gmail.com>
Date: Mon, 19 Sep 2022 11:39:15 -0400
Subject: mckey: Use rdma_create_qp_ex only for loopback prevention
[ Upstream commit 926a1158e33d78573859f5dfea399f7a7edcf11f ]
As not all the providers support the rdma_create_qp_ex(), change the
code to use rdma_create_qp_ex() only when loopback prevention is requested.
Fixes: 40806cc22936 ("rdma-core: Add support for multicast loopback prevention to mckey")
Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
librdmacm/examples/mckey.c | 48 +++++++++++++++++++++++++-------------
1 file changed, 32 insertions(+), 16 deletions(-)
diff --git a/librdmacm/examples/mckey.c b/librdmacm/examples/mckey.c
index 7015ed2..6df53a2 100644
--- a/librdmacm/examples/mckey.c
+++ b/librdmacm/examples/mckey.c
@@ -134,7 +134,8 @@ static int verify_test_params(struct cmatest_node *node)
static int init_node(struct cmatest_node *node)
{
struct ibv_qp_init_attr_ex init_qp_attr_ex;
- int cqe, ret;
+ struct ibv_qp_init_attr init_qp_attr;
+ int cqe, ret = 0;
node->pd = ibv_alloc_pd(node->cma_id->verbs);
if (!node->pd) {
@@ -151,23 +152,38 @@ static int init_node(struct cmatest_node *node)
goto out;
}
- memset(&init_qp_attr_ex, 0, sizeof(init_qp_attr_ex));
- init_qp_attr_ex.cap.max_send_wr = message_count ? message_count : 1;
- init_qp_attr_ex.cap.max_recv_wr = message_count ? message_count : 1;
- init_qp_attr_ex.cap.max_send_sge = 1;
- init_qp_attr_ex.cap.max_recv_sge = 1;
- init_qp_attr_ex.qp_context = node;
- init_qp_attr_ex.sq_sig_all = 0;
- init_qp_attr_ex.qp_type = IBV_QPT_UD;
- init_qp_attr_ex.send_cq = node->cq;
- init_qp_attr_ex.recv_cq = node->cq;
-
- init_qp_attr_ex.comp_mask = IBV_QP_INIT_ATTR_CREATE_FLAGS|IBV_QP_INIT_ATTR_PD;
- init_qp_attr_ex.pd = node->pd;
- if (!loopback)
+ memset(&init_qp_attr, 0, sizeof init_qp_attr);
+ init_qp_attr.cap.max_send_wr = message_count ? message_count : 1;
+ init_qp_attr.cap.max_recv_wr = message_count ? message_count : 1;
+ init_qp_attr.cap.max_send_sge = 1;
+ init_qp_attr.cap.max_recv_sge = 1;
+ init_qp_attr.qp_context = node;
+ init_qp_attr.sq_sig_all = 0;
+ init_qp_attr.qp_type = IBV_QPT_UD;
+ init_qp_attr.send_cq = node->cq;
+ init_qp_attr.recv_cq = node->cq;
+
+ if (!loopback) {
+ memset(&init_qp_attr_ex, 0, sizeof(init_qp_attr_ex));
+ init_qp_attr_ex.cap.max_send_wr = message_count ? message_count : 1;
+ init_qp_attr_ex.cap.max_recv_wr = message_count ? message_count : 1;
+ init_qp_attr_ex.cap.max_send_sge = 1;
+ init_qp_attr_ex.cap.max_recv_sge = 1;
+ init_qp_attr_ex.qp_context = node;
+ init_qp_attr_ex.sq_sig_all = 0;
+ init_qp_attr_ex.qp_type = IBV_QPT_UD;
+ init_qp_attr_ex.send_cq = node->cq;
+ init_qp_attr_ex.recv_cq = node->cq;
+
+ init_qp_attr_ex.comp_mask = IBV_QP_INIT_ATTR_CREATE_FLAGS|IBV_QP_INIT_ATTR_PD;
+ init_qp_attr_ex.pd = node->pd;
init_qp_attr_ex.create_flags = IBV_QP_CREATE_BLOCK_SELF_MCAST_LB;
- ret = rdma_create_qp_ex(node->cma_id, &init_qp_attr_ex);
+ ret = rdma_create_qp_ex(node->cma_id, &init_qp_attr_ex);
+ } else {
+ ret = rdma_create_qp(node->cma_id, node->pd, &init_qp_attr);
+ }
+
if (ret) {
perror("mckey: unable to create QP");
goto out;
--
2.34.1
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhangwenlong01/rdma-core.git
git@gitee.com:zhangwenlong01/rdma-core.git
zhangwenlong01
rdma-core
rdma-core
master

搜索帮助