MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ena_com_admin_init_aenq

Function ena_com_admin_init_aenq

dpdk/drivers/net/ena/base/ena_com.c:134–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

132}
133
134static int ena_com_admin_init_aenq(struct ena_com_dev *ena_dev,
135 struct ena_aenq_handlers *aenq_handlers)
136{
137 struct ena_com_aenq *aenq = &ena_dev->aenq;
138 u32 addr_low, addr_high, aenq_caps;
139 u16 size;
140
141 ena_dev->aenq.q_depth = ENA_ASYNC_QUEUE_DEPTH;
142 size = ADMIN_AENQ_SIZE(ENA_ASYNC_QUEUE_DEPTH);
143 ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, size,
144 aenq->entries,
145 aenq->dma_addr,
146 aenq->mem_handle);
147
148 if (!aenq->entries) {
149 ena_trc_err(ena_dev, "Memory allocation failed\n");
150 return ENA_COM_NO_MEM;
151 }
152
153 aenq->head = aenq->q_depth;
154 aenq->phase = 1;
155
156 addr_low = ENA_DMA_ADDR_TO_UINT32_LOW(aenq->dma_addr);
157 addr_high = ENA_DMA_ADDR_TO_UINT32_HIGH(aenq->dma_addr);
158
159 ENA_REG_WRITE32(ena_dev->bus, addr_low, ena_dev->reg_bar + ENA_REGS_AENQ_BASE_LO_OFF);
160 ENA_REG_WRITE32(ena_dev->bus, addr_high, ena_dev->reg_bar + ENA_REGS_AENQ_BASE_HI_OFF);
161
162 aenq_caps = 0;
163 aenq_caps |= ena_dev->aenq.q_depth & ENA_REGS_AENQ_CAPS_AENQ_DEPTH_MASK;
164 aenq_caps |= (sizeof(struct ena_admin_aenq_entry) <<
165 ENA_REGS_AENQ_CAPS_AENQ_ENTRY_SIZE_SHIFT) &
166 ENA_REGS_AENQ_CAPS_AENQ_ENTRY_SIZE_MASK;
167 ENA_REG_WRITE32(ena_dev->bus, aenq_caps, ena_dev->reg_bar + ENA_REGS_AENQ_CAPS_OFF);
168
169 if (unlikely(!aenq_handlers)) {
170 ena_trc_err(ena_dev, "AENQ handlers pointer is NULL\n");
171 return ENA_COM_INVAL;
172 }
173
174 aenq->aenq_handlers = aenq_handlers;
175
176 return 0;
177}
178
179static void comp_ctxt_release(struct ena_com_admin_queue *queue,
180 struct ena_comp_ctx *comp_ctx)

Callers 1

ena_com_admin_initFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected