diff --git a/src/cndm/tb/cndm.py b/src/cndm/tb/cndm.py index 824997a..5e75d99 100644 --- a/src/cndm/tb/cndm.py +++ b/src/cndm/tb/cndm.py @@ -57,69 +57,67 @@ CNDM_CMD_PTP_FLG_OFFSET_REL = 0x00000008 CNDM_CMD_PTP_FLG_OFFSET_FNS = 0x00000010 CNDM_CMD_PTP_FLG_SET_PERIOD = 0x00000080 -class Port: - def __init__(self, driver, index): + +class Cq: + def __init__(self, driver, port): self.driver = driver self.log = driver.log - self.index = index - self.hw_regs = driver.hw_regs - self.rxq_log_size = (256).bit_length()-1 - self.rxq_size = 2**self.rxq_log_size - self.rxq_mask = self.rxq_size-1 - self.rxq = None - self.rxq_prod = 0 - self.rxq_cons = 0 - self.rx_rqn = 0 - self.rxq_db_offs = 0 + self.port = port + self.irqn = None - self.rx_info = [None] * self.rxq_size + self.log_size = 0 + self.size = 0 + self.size_mask = 0 + self.stride = 0 + self.cqn = None + self.enabled = False - self.rxcq_log_size = (256).bit_length()-1 - self.rxcq_size = 2**self.rxcq_log_size - self.rxcq_mask = self.rxcq_size-1 - self.rxcq = None - self.rxcq_prod = 0 - self.rxcq_cons = 0 - self.rx_cqn = 0 + self.buf_size = 0 + self.buf_region = None + self.buf_dma = 0 + self.buf = None - self.txq_log_size = (256).bit_length()-1 - self.txq_size = 2**self.txq_log_size - self.txq_mask = self.txq_size-1 - self.txq = None - self.txq_prod = 0 - self.txq_cons = 0 - self.tx_sqn = 0 - self.txq_db_offs = 0 + self.eq = None - self.tx_info = [None] * self.txq_size + self.src_ring = None + self.handler = None - self.txcq_log_size = (256).bit_length()-1 - self.txcq_size = 2**self.txcq_log_size - self.txcq_mask = self.txcq_size-1 - self.txcq = None - self.txcq_prod = 0 - self.txcq_cons = 0 - self.tx_cqn = 0 + self.cons_ptr = None - self.rx_queue = Queue() + self.hw_regs = self.driver.hw_regs - async def init(self): + async def open(self, irqn, size): + if self.cqn is not None: + raise Exception("Already open") - self.rxcq = self.driver.pool.alloc_region(self.rxcq_size*16) - addr = self.rxcq.get_absolute_address(0) + self.irqn = irqn + + self.log_size = size.bit_length() - 1 + self.size = 2**self.log_size + self.size_mask = self.size-1 + self.stride = 16 + + self.buf_size = self.size*self.stride + self.buf_region = self.driver.pool.alloc_region(self.buf_size) + self.buf_dma = self.buf_region.get_absolute_address(0) + self.buf = self.buf_region.mem + + self.buf[0:self.buf_size] = b'\x00'*self.buf_size + + self.cons_ptr = 0 rsp = await self.driver.exec_cmd(struct.pack("