Blame SOURCES/0001-libqedr-Set-XRC-functions-only-in-RoCE-mode.patch

6961dc
From fd10f4c26b1ff052ea3b893247d1b6d06d01e36a Mon Sep 17 00:00:00 2001
6961dc
From: Kamal Heib <kamalheib1@gmail.com>
6961dc
Date: Tue, 10 Nov 2020 16:59:59 +0200
6961dc
Subject: [PATCH] libqedr: Set XRC functions only in RoCE mode
6961dc
6961dc
As libqedr support both RoCE and iWarp, make sure to set the XRC
6961dc
functions only in RoCE mode, also change the assignment of the XRC
6961dc
functions to use verbs_set_ops().
6961dc
6961dc
Fixes: cae4a99ae679 ("libqedr: add support for XRC-SRQ's.")
6961dc
Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
6961dc
---
6961dc
 providers/qedr/qelr_main.c | 18 ++++++++++--------
6961dc
 1 file changed, 10 insertions(+), 8 deletions(-)
6961dc
6961dc
diff --git a/providers/qedr/qelr_main.c b/providers/qedr/qelr_main.c
6961dc
index bdfaa930f0c6..e31cd452906f 100644
6961dc
--- a/providers/qedr/qelr_main.c
6961dc
+++ b/providers/qedr/qelr_main.c
6961dc
@@ -113,6 +113,14 @@ static const struct verbs_context_ops qelr_ctx_ops = {
6961dc
 	.free_context = qelr_free_context,
6961dc
 };
6961dc
 
6961dc
+static const struct verbs_context_ops qelr_ctx_roce_ops = {
6961dc
+	.close_xrcd = qelr_close_xrcd,
6961dc
+	.create_qp_ex = qelr_create_qp_ex,
6961dc
+	.create_srq_ex = qelr_create_srq_ex,
6961dc
+	.get_srq_num = qelr_get_srq_num,
6961dc
+	.open_xrcd = qelr_open_xrcd,
6961dc
+};
6961dc
+
6961dc
 static void qelr_uninit_device(struct verbs_device *verbs_device)
6961dc
 {
6961dc
 	struct qelr_device *dev = get_qelr_dev(&verbs_device->device);
6961dc
@@ -171,7 +179,6 @@ static struct verbs_context *qelr_alloc_context(struct ibv_device *ibdev,
6961dc
 						int cmd_fd,
6961dc
 						void *private_data)
6961dc
 {
6961dc
-	struct verbs_context *v_ctx;
6961dc
 	struct qelr_devctx *ctx;
6961dc
 	struct qelr_alloc_context cmd = {};
6961dc
 	struct qelr_alloc_context_resp resp;
6961dc
@@ -181,7 +188,6 @@ static struct verbs_context *qelr_alloc_context(struct ibv_device *ibdev,
6961dc
 	if (!ctx)
6961dc
 		return NULL;
6961dc
 
6961dc
-	v_ctx = &ctx->ibv_ctx;
6961dc
 	memset(&resp, 0, sizeof(resp));
6961dc
 
6961dc
 	qelr_open_debug_file(ctx);
6961dc
@@ -194,6 +200,8 @@ static struct verbs_context *qelr_alloc_context(struct ibv_device *ibdev,
6961dc
 		goto cmd_err;
6961dc
 
6961dc
 	verbs_set_ops(&ctx->ibv_ctx, &qelr_ctx_ops);
6961dc
+	if (IS_ROCE(ibdev))
6961dc
+		verbs_set_ops(&ctx->ibv_ctx, &qelr_ctx_roce_ops);
6961dc
 
6961dc
 	ctx->srq_table = calloc(QELR_MAX_SRQ_ID, sizeof(*ctx->srq_table));
6961dc
 	if (!ctx->srq_table) {
6961dc
@@ -252,12 +260,6 @@ static struct verbs_context *qelr_alloc_context(struct ibv_device *ibdev,
6961dc
 		goto cmd_err;
6961dc
 	}
6961dc
 
6961dc
-	v_ctx->create_qp_ex = qelr_create_qp_ex;
6961dc
-	v_ctx->open_xrcd = qelr_open_xrcd;
6961dc
-	v_ctx->close_xrcd = qelr_close_xrcd;
6961dc
-	v_ctx->create_srq_ex = qelr_create_srq_ex;
6961dc
-	v_ctx->get_srq_num = qelr_get_srq_num;
6961dc
-
6961dc
 	return &ctx->ibv_ctx;
6961dc
 
6961dc
 cmd_err:
6961dc
-- 
6961dc
2.25.4
6961dc