def create_qps(self): """ Initializes self.qps with an XRC SEND/RECV QPs. :return: None """ qp_attr = QPAttr(port_num=self.ib_port) qp_attr.pkey_index = 0 for _ in range(self.qp_count): attr_ex = QPInitAttrEx(qp_type=e.IBV_QPT_XRC_RECV, comp_mask=e.IBV_QP_INIT_ATTR_XRCD, xrcd=self.xrcd) qp_attr.qp_access_flags = e.IBV_ACCESS_REMOTE_WRITE | \ e.IBV_ACCESS_REMOTE_READ recv_qp = QP(self.ctx, attr_ex, qp_attr) self.rqp_lst.append(recv_qp) qp_caps = QPCap(max_send_wr=self.num_msgs, max_recv_sge=0, max_recv_wr=0) attr_ex = QPInitAttrEx(qp_type=e.IBV_QPT_XRC_SEND, sq_sig_all=1, comp_mask=e.IBV_QP_INIT_ATTR_PD, pd=self.pd, scq=self.cq, cap=qp_caps) qp_attr.qp_access_flags = 0 send_qp =QP(self.ctx, attr_ex, qp_attr) self.sqp_lst.append(send_qp) self.qps_num.append((recv_qp.qp_num, send_qp.qp_num)) self.psns.append(random.getrandbits(24))
def create_qp_ex(agr_obj, qp_type, send_flags): if qp_type == e.IBV_QPT_XRC_SEND: cap = QPCap(max_send_wr=agr_obj.num_msgs, max_recv_wr=0, max_recv_sge=0, max_send_sge=1) else: cap = QPCap(max_send_wr=agr_obj.num_msgs, max_recv_wr=agr_obj.num_msgs, max_recv_sge=1, max_send_sge=1) qia = QPInitAttrEx(cap=cap, qp_type=qp_type, scq=agr_obj.cq, rcq=agr_obj.cq, pd=agr_obj.pd, send_ops_flags=send_flags, comp_mask=e.IBV_QP_INIT_ATTR_PD | e.IBV_QP_INIT_ATTR_SEND_OPS_FLAGS) qp_attr = QPAttr(port_num=agr_obj.ib_port) if qp_type == e.IBV_QPT_UD: qp_attr.qkey = agr_obj.UD_QKEY qp_attr.pkey_index = agr_obj.UD_PKEY_INDEX if qp_type == e.IBV_QPT_RC: qp_attr.qp_access_flags = e.IBV_ACCESS_REMOTE_WRITE | \ e.IBV_ACCESS_REMOTE_READ | \ e.IBV_ACCESS_REMOTE_ATOMIC try: # We don't have capability bits for this qp = QPEx(agr_obj.ctx, qia, qp_attr) except PyverbsRDMAError as ex: if ex.error_code == errno.EOPNOTSUPP: raise unittest.SkipTest('Extended QP is not supported on this device') raise ex return qp
def create_qp(self): qp_caps = QPCap(max_recv_wr=self.num_msgs) qp_init_attr = QPInitAttr(qp_type=e.IBV_QPT_UD, cap=qp_caps, scq=self.cq, rcq=self.cq) qp_attr = QPAttr(port_num=self.ib_port) qp_attr.qkey = self.UD_QKEY qp_attr.pkey_index = self.UD_PKEY_INDEX self.qp = QP(self.pd, qp_init_attr, qp_attr)
def create_qp(self): qp_attr = QPAttr(port_num=self.ib_port) qp_attr.pkey_index = 0 for _ in range(self.qp_count): attr_ex = QPInitAttrEx(qp_type=e.IBV_QPT_XRC_RECV, comp_mask=e.IBV_QP_INIT_ATTR_XRCD, xrcd=self.xrcd) qp_attr.qp_access_flags = e.IBV_ACCESS_REMOTE_WRITE | \ e.IBV_ACCESS_REMOTE_READ recv_qp = QP(self.ctx, attr_ex, qp_attr) self.rqp_lst.append(recv_qp) send_qp = create_qp_ex(self, e.IBV_QPT_XRC_SEND, e.IBV_QP_EX_WITH_SEND) self.sqp_lst.append(send_qp) self.qps_num.append((recv_qp.qp_num, send_qp.qp_num)) self.psns.append(random.getrandbits(24))
def create_qp_attr(self): attr = QPAttr(port_num=self.ib_port) attr.qkey = self.SRD_QKEY attr.pkey_index = self.SRD_PKEY_INDEX return attr