Blame SOURCES/0005-pyverbs-Fix-CQ-and-PD-assignment-in-QPAttr.patch

baba1b
From 8720f4f288b12b8c89c6e237560986334c0949fa Mon Sep 17 00:00:00 2001
baba1b
From: Maxim Chicherin <maximc@mellanox.com>
baba1b
Date: Mon, 19 Aug 2019 13:59:56 +0300
baba1b
Subject: [PATCH rdma-core 05/13] pyverbs: Fix CQ and PD assignment in QPAttr
baba1b
baba1b
[ Upstream commit d2c24c0d6514678cc8d56f8f2e28fcd6c2e68bbd ]
baba1b
baba1b
Fixed CQs assignment in QPInitAttr, QPInitAttrEx and QP objects:
baba1b
Receive cq parameter was assigned to send_cq attribute in InitAttr
baba1b
objects, and in QP rcq and scq attributes was not initialized properly.
baba1b
Fixed PD assignment in QPInitAttrEx object:
baba1b
In QPInitAttrEx pd pointer was not initialized with PD.pd pointer.
baba1b
baba1b
Fixes: 6d97a4af97b8 ("pyverbs: Avoid casting pointers to object type")
baba1b
Signed-off-by: Maxim Chicherin <maximc@mellanox.com>
baba1b
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
baba1b
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
baba1b
---
baba1b
 pyverbs/qp.pyx | 16 +++++++++-------
baba1b
 1 file changed, 9 insertions(+), 7 deletions(-)
baba1b
 mode change 100644 => 100755 pyverbs/qp.pyx
baba1b
baba1b
diff --git a/pyverbs/qp.pyx b/pyverbs/qp.pyx
baba1b
old mode 100644
baba1b
new mode 100755
baba1b
index 576c0135..60973ca4
baba1b
--- a/pyverbs/qp.pyx
baba1b
+++ b/pyverbs/qp.pyx
baba1b
@@ -104,9 +104,9 @@ cdef class QPInitAttr(PyverbsObject):
baba1b
         self.attr.qp_context = <void*>qp_context
baba1b
         if scq is not None:
baba1b
             if type(scq) is CQ:
baba1b
-                self.attr.send_cq = (<CQ>rcq).cq
baba1b
+                self.attr.send_cq = (<CQ>scq).cq
baba1b
             elif type(scq) is CQEX:
baba1b
-                self.attr.send_cq = (<CQEX>rcq).ibv_cq
baba1b
+                self.attr.send_cq = (<CQEX>scq).ibv_cq
baba1b
             else:
baba1b
                 raise PyverbsUserError('Expected CQ/CQEX, got {t}'.\
baba1b
                                        format(t=type(scq)))
baba1b
@@ -221,9 +221,9 @@ cdef class QPInitAttrEx(PyverbsObject):
baba1b
         _copy_caps(cap, self)
baba1b
         if scq is not None:
baba1b
             if type(scq) is CQ:
baba1b
-                self.attr.send_cq = (<CQ>rcq).cq
baba1b
+                self.attr.send_cq = (<CQ>scq).cq
baba1b
             elif type(scq) is CQEX:
baba1b
-                self.attr.send_cq = (<CQEX>rcq).ibv_cq
baba1b
+                self.attr.send_cq = (<CQEX>scq).ibv_cq
baba1b
             else:
baba1b
                 raise PyverbsUserError('Expected CQ/CQEX, got {t}'.\
baba1b
                                        format(t=type(scq)))
baba1b
@@ -251,7 +251,7 @@ cdef class QPInitAttrEx(PyverbsObject):
baba1b
         self.attr.comp_mask = comp_mask
baba1b
         if pd is not None:
baba1b
             self._pd = pd
baba1b
-            self.attr.pd = <v.ibv_pd*>pd.pd
baba1b
+            self.attr.pd = pd.pd
baba1b
         self.attr.create_flags = create_flags
baba1b
         self.attr.max_tso_header = max_tso_header
baba1b
         self.attr.source_qpn = source_qpn
baba1b
@@ -815,18 +815,20 @@ cdef class QP(PyverbsCM):
baba1b
             if type(init_attr.send_cq) == CQ:
baba1b
                 cq = <CQ>init_attr.send_cq
baba1b
                 cq.add_ref(self)
baba1b
+                self.scq = cq
baba1b
             else:
baba1b
                 cqex = <CQEX>init_attr.send_cq
baba1b
                 cqex.add_ref(self)
baba1b
-            self.scq = cq
baba1b
+                self.scq = cqex
baba1b
         if init_attr.send_cq != init_attr.recv_cq and init_attr.recv_cq is not None:
baba1b
             if type(init_attr.recv_cq) == CQ:
baba1b
                 cq = <CQ>init_attr.recv_cq
baba1b
                 cq.add_ref(self)
baba1b
+                self.rcq = cq
baba1b
             else:
baba1b
                 cqex = <CQEX>init_attr.recv_cq
baba1b
                 cqex.add_ref(self)
baba1b
-            self.rcq = cq
baba1b
+                self.rcq = cqex
baba1b
 
baba1b
     def _create_qp(self, PD pd, QPInitAttr attr):
baba1b
         self.qp = v.ibv_create_qp(pd.pd, &attr.attr)
baba1b
-- 
baba1b
2.20.1
baba1b