Commit 913b0bfd authored by Sameeh Jubran's avatar Sameeh Jubran Committed by David S. Miller
Browse files

net: ena: Add first_interrupt field to napi struct



The first_interrupt field is accessed in ena_intr_msix_io() upon
receiving an interrupt.The rx_ring and tx_ring fields of napi can
be NULL when receiving interrupt for xdp queues. This patch fixes
the issue by moving the field to the ena_napi struct.

Signed-off-by: default avatarSameeh Jubran <sameehj@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 548c4940
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -219,6 +219,7 @@ static int ena_xdp_io_poll(struct napi_struct *napi, int budget)
	int ret;

	xdp_ring = ena_napi->xdp_ring;
	xdp_ring->first_interrupt = ena_napi->first_interrupt;

	xdp_budget = budget;

@@ -1869,6 +1870,9 @@ static int ena_io_poll(struct napi_struct *napi, int budget)
	tx_ring = ena_napi->tx_ring;
	rx_ring = ena_napi->rx_ring;

	tx_ring->first_interrupt = ena_napi->first_interrupt;
	rx_ring->first_interrupt = ena_napi->first_interrupt;

	tx_budget = tx_ring->ring_size / ENA_TX_POLL_BUDGET_DIVIDER;

	if (!test_bit(ENA_FLAG_DEV_UP, &tx_ring->adapter->flags) ||
@@ -1940,8 +1944,7 @@ static irqreturn_t ena_intr_msix_io(int irq, void *data)
{
	struct ena_napi *ena_napi = data;

	ena_napi->tx_ring->first_interrupt = true;
	ena_napi->rx_ring->first_interrupt = true;
	ena_napi->first_interrupt = true;

	napi_schedule_irqoff(&ena_napi->napi);

+1 −0
Original line number Diff line number Diff line
@@ -169,6 +169,7 @@ struct ena_napi {
	struct ena_ring *tx_ring;
	struct ena_ring *rx_ring;
	struct ena_ring *xdp_ring;
	bool first_interrupt;
	u32 qid;
	struct dim dim;
};