]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async/rdma: implement connection management data in QueuePair
authorChangcheng Liu <changcheng.liu@aliyun.com>
Tue, 27 Aug 2019 05:36:29 +0000 (13:36 +0800)
committerChangcheng Liu <changcheng.liu@aliyun.com>
Tue, 10 Sep 2019 13:22:12 +0000 (21:22 +0800)
1. It's better to use QueuePair to management connection management
   meta data.
2. This patch is to prepare to use seperate function to modify QP to
   RTR & RTS state.

Signed-off-by: Changcheng Liu <changcheng.liu@aliyun.com>
src/msg/async/rdma/Infiniband.cc
src/msg/async/rdma/Infiniband.h

index b511df29327fa0a57fbad61f06b61938703db675..dcbc31cb1a53fe6b1afe98e6fd8cb05ee59bbdad 100644 (file)
@@ -167,7 +167,7 @@ Infiniband::QueuePair::QueuePair(
   pd(infiniband.pd->pd),
   srq(srq),
   qp(NULL),
-  cm_id(cid),
+  cm_id(cid), peer_cm_meta{0}, local_cm_meta{0},
   txcq(txcq),
   rxcq(rxcq),
   initial_psn(lrand48() & PSN_MSK),
@@ -263,6 +263,11 @@ int Infiniband::QueuePair::init()
   }
   ldout(cct, 20) << __func__ << " successfully create queue pair: "
                  << "qp=" << qp << dendl;
+  local_cm_meta.local_qpn = get_local_qp_number();
+  local_cm_meta.psn = get_initial_psn();
+  local_cm_meta.lid = infiniband.get_lid();
+  local_cm_meta.peer_qpn = 0;
+  local_cm_meta.gid = infiniband.get_gid();
   return 0;
 }
 
index dc7ff9e306aac10fd2dfa0fd30915078d354dc55..9558847de901a85e3e6510c322bff071e29942f8 100644 (file)
@@ -499,6 +499,8 @@ class Infiniband {
     ibv_srq*     srq;            // shared receive queue
     ibv_qp*      qp;             // infiniband verbs QP handle
     struct rdma_cm_id *cm_id;
+    ib_cm_meta_t peer_cm_meta;
+    ib_cm_meta_t local_cm_meta;
     Infiniband::CompletionQueue* txcq;
     Infiniband::CompletionQueue* rxcq;
     uint32_t     initial_psn;    // initial packet sequence number