cm_id = info->cm_id;
cm_channel = info->cm_channel;
status = RDMA_ID_CREATED;
- remote_qpn = info->qp_num;
+ peer_qpn = info->qp_num;
if (alloc_resource()) {
close_notify();
return;
}, false);
status = RESOURCE_ALLOCATED;
local_qpn = qp->get_local_qp_number();
- qp->get_local_cm_meta().local_qpn = local_qpn;
+ qp->get_local_cm_meta().peer_qpn = peer_qpn;
+ qp->get_peer_cm_meta().local_qpn = peer_qpn;
} else {
is_server = false;
cm_channel = rdma_create_event_channel();
ldout(cct, 20) << __func__ << " qp_num=" << cm_id->qp->qp_num << dendl;
status = CONNECTED;
if (!is_server) {
- remote_qpn = event->param.conn.qp_num;
+ peer_qpn = event->param.conn.qp_num;
activate();
+ qp->get_local_cm_meta().peer_qpn = peer_qpn;
+ qp->get_peer_cm_meta().local_qpn = peer_qpn;
notify();
}
break;
virtual void close() override;
virtual void shutdown() override;
virtual void handle_cm_connection();
- uint32_t get_local_qpn() const { return local_qpn; }
void activate();
int alloc_resource();
void close_notify();
private:
rdma_cm_id *cm_id;
rdma_event_channel *cm_channel;
- uint32_t local_qpn;
- uint32_t remote_qpn;
EventCallbackRef cm_con_handler;
- bool is_server;
std::mutex close_mtx;
std::condition_variable close_condition;
bool closed;