ena_napi
struct ena_napi *ena_napi = container_of(dim, struct ena_napi, dim);
ena_napi->rx_ring->smoothed_interval = cur_moder.usec;
static void ena_adjust_adaptive_rx_intr_moderation(struct ena_napi *ena_napi)
struct ena_ring *rx_ring = ena_napi->rx_ring;
net_dim(&ena_napi->dim, &dim_sample);
struct ena_napi *ena_napi = container_of(napi, struct ena_napi, napi);
tx_ring = ena_napi->tx_ring;
rx_ring = ena_napi->rx_ring;
READ_ONCE(ena_napi->interrupts_masked)) {
WRITE_ONCE(ena_napi->interrupts_masked, false);
ena_adjust_adaptive_rx_intr_moderation(ena_napi);
struct ena_napi *ena_napi = data;
WRITE_ONCE(ena_napi->first_interrupt, true);
WRITE_ONCE(ena_napi->interrupts_masked, true);
napi_schedule_irqoff(&ena_napi->napi);
adapter->irq_tbl[irq_idx].data = &adapter->ena_napi[i];
netif_napi_set_irq(&adapter->ena_napi[i].napi, irq->vector);
struct ena_napi *ena_napi;
ena_napi = irq->data;
netif_napi_set_irq(&ena_napi->napi, -1);
ring->napi = &adapter->ena_napi[qid].napi;
netif_napi_del(&adapter->ena_napi[i].napi);
adapter->ena_napi[i].rx_ring);
struct ena_napi *napi = &adapter->ena_napi[i];
napi = &adapter->ena_napi[i].napi;
napi = &adapter->ena_napi[i].napi;
INIT_WORK(&adapter->ena_napi[i].dim.work, ena_dim_work);
cancel_work_sync(&adapter->ena_napi[i].dim.work);
napi_schedule(&adapter->ena_napi[i].napi);
adapter->ena_napi[i].dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE;
struct ena_napi *ena_napi = container_of(rx_ring->napi, struct ena_napi, napi);
if (likely(READ_ONCE(ena_napi->first_interrupt)))
struct ena_napi *ena_napi = container_of(tx_ring->napi, struct ena_napi, napi);
if (unlikely(!READ_ONCE(ena_napi->first_interrupt) && is_tx_comp_time_expired)) {
napi_scheduled = !!(ena_napi->napi.state & NAPIF_STATE_SCHED);
cancel_work_sync(&adapter->ena_napi[i].dim.work);
struct ena_napi ena_napi[ENA_MAX_NUM_IO_QUEUES];
struct ena_napi *ena_napi = container_of(napi, struct ena_napi, napi);
tx_ring = ena_napi->tx_ring;