def test_get(self): for I in rdma.get_devices(): with rdma.get_verbs(I) as X: print X for Q in I.end_ports: with rdma.get_verbs(Q) as X: print X
def __init__(self, parent, path, depth=16): """*path* is used to set the PKey and QKey for all MADs sent through this interface.""" rdma.madtransactor.MADTransactor.__init__(self) self._tid = int(os.urandom(8).encode("hex"), 16) if isinstance(parent, rdma.devices.EndPort): self._ctx = rdma.get_verbs(parent) self._allocated_ctx = True elif isinstance(parent, ibv.Context): self._ctx = parent self.end_port = path.end_port if path.end_port.parent != self._ctx.node: raise rdma.RDMAError("Cannot connect path %r to verbs %r" % (self._ctx, path)) self._cc = self._ctx.comp_channel() self._cq = self._ctx.cq(2 * depth, self._cc) self._poller = rdma.vtools.CQPoller(self._cq) self._pd = self._ctx.pd() self._pool = rdma.vtools.BufferPool(self._pd, 2 * depth, 256 + 40) self._qp = self._pd.qp(ibv.IBV_QPT_UD, depth, self._cq, depth, self._cq) self._pool.post_recvs(self._qp, min(self._qp.max_recv_wr, depth)) self._recvs = collections.deque() # Adjust the number of buffers so that we can't exceed the send q depth while len(self._pool._buffers) > self._qp.max_send_wr: self._pool._buffers.pop() path = path.copy(sqpn=self._qp.qp_num, sqpsn=self._tid & 0xFFFFFF) self._qp.establish(path) self.qkey = path.qkey self.pkey = path.pkey
def __init__(self,parent,path,depth=16): """*path* is used to set the PKey and QKey for all MADs sent through this interface.""" rdma.madtransactor.MADTransactor.__init__(self); self._tid = int(os.urandom(8).encode("hex"),16); if isinstance(parent,rdma.devices.EndPort): self._ctx = rdma.get_verbs(parent); self._allocated_ctx = True; elif isinstance(parent,ibv.Context): self._ctx = parent; self.end_port = path.end_port; if path.end_port.parent != self._ctx.node: raise rdma.RDMAError("Cannot connect path %r to verbs %r"%(self._ctx,path)) self._cc = self._ctx.comp_channel(); self._cq = self._ctx.cq(2*depth,self._cc); self._poller = rdma.vtools.CQPoller(self._cq); self._pd = self._ctx.pd(); self._pool = rdma.vtools.BufferPool(self._pd,2*depth,256+40); self._qp = self._pd.qp(ibv.IBV_QPT_UD,depth,self._cq, depth,self._cq); self._pool.post_recvs(self._qp,min(self._qp.max_recv_wr,depth)); self._recvs = collections.deque(); # Adjust the number of buffers so that we can't exceed the send q depth while len(self._pool._buffers) > self._qp.max_send_wr: self._pool._buffers.pop(); path = path.copy(sqpn=self._qp.qp_num,sqpsn=self._tid&0xFFFFFF); self._qp.establish(path); self.qkey = path.qkey; self.pkey = path.pkey;
def setUp(self): self.end_port = rdma.get_end_port(); self.ctx = rdma.get_verbs(self.end_port);