const struct sfc_evq_info *evq_info;
struct sfc_evq *evq;
efsys_mem_t *esmp;
+ uint32_t evq_flags = sa->evq_flags;
unsigned int total_delay_us;
unsigned int delay_us;
int rc;
esmp = &evq->mem;
/* Clear all events */
- (void)memset((void *)esmp->esm_base, 0xff,
- EFX_EVQ_SIZE(evq_info->entries));
+ (void)memset((void *)esmp->esm_base, 0xff, EFX_EVQ_SIZE(evq->entries));
+
+ if (sa->intr.lsc_intr && sw_index == sa->mgmt_evq_index)
+ evq_flags |= EFX_EVQ_FLAGS_NOTIFY_INTERRUPT;
+ else
+ evq_flags |= EFX_EVQ_FLAGS_NOTIFY_DISABLED;
/* Create the common code event queue */
- rc = efx_ev_qcreate(sa->nic, sw_index, esmp, evq_info->entries,
- 0 /* unused on EF10 */, 0, evq_info->flags,
+ rc = efx_ev_qcreate(sa->nic, sw_index, esmp, evq->entries,
+ 0 /* unused on EF10 */, 0, evq_flags,
&evq->common);
if (rc != 0)
goto fail_ev_qcreate;
evq_info = &sa->evq_info[sw_index];
SFC_ASSERT(rte_is_power_of_2(entries));
- SFC_ASSERT(entries <= evq_info->max_entries);
- evq_info->entries = entries;
rc = ENOMEM;
evq = rte_zmalloc_socket("sfc-evq", sizeof(*evq), RTE_CACHE_LINE_SIZE,
evq->sa = sa;
evq->evq_index = sw_index;
evq->type = type;
+ evq->entries = entries;
/* Allocate DMA space */
rc = sfc_dma_alloc(sa, sfc_evq_type2str(type), type_index,
- EFX_EVQ_SIZE(evq_info->entries),
- socket_id, &evq->mem);
+ EFX_EVQ_SIZE(evq->entries), socket_id, &evq->mem);
if (rc != 0)
goto fail_dma_alloc;
static int
sfc_ev_qinit_info(struct sfc_adapter *sa, unsigned int sw_index)
{
- struct sfc_evq_info *evq_info = &sa->evq_info[sw_index];
- unsigned int max_entries;
-
sfc_log_init(sa, "sw_index=%u", sw_index);
- max_entries = sfc_evq_max_entries(sa, sw_index);
- SFC_ASSERT(rte_is_power_of_2(max_entries));
-
- evq_info->max_entries = max_entries;
- evq_info->flags = sa->evq_flags |
- ((sa->intr.lsc_intr && sw_index == sa->mgmt_evq_index) ?
- EFX_EVQ_FLAGS_NOTIFY_INTERRUPT :
- EFX_EVQ_FLAGS_NOTIFY_DISABLED);
-
return 0;
}