From: Changcheng Liu Date: Tue, 27 Aug 2019 05:36:29 +0000 (+0800) Subject: msg/async/rdma: implement connection management data in QueuePair X-Git-Tag: v15.1.0~1481^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=946769fa12139e97dcf5520596a4babce5e638a8;p=ceph.git msg/async/rdma: implement connection management data in QueuePair 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 --- diff --git a/src/msg/async/rdma/Infiniband.cc b/src/msg/async/rdma/Infiniband.cc index b511df29327..dcbc31cb1a5 100644 --- a/src/msg/async/rdma/Infiniband.cc +++ b/src/msg/async/rdma/Infiniband.cc @@ -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; } diff --git a/src/msg/async/rdma/Infiniband.h b/src/msg/async/rdma/Infiniband.h index dc7ff9e306a..9558847de90 100644 --- a/src/msg/async/rdma/Infiniband.h +++ b/src/msg/async/rdma/Infiniband.h @@ -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