Replace napi_schedule() with napi_schedule_irqoff()
in the interrupt handler path in igc driver
Tested on Intel Corporation Ethernet Controller I226-V.
Suggested-by: Kohei Enju <kohei@enjuk.jp>
Signed-off-by: Daiki Harada <daiky0325@gmail.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 72bc5128d8b8..712605886104 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -5688,7 +5688,7 @@ static irqreturn_t igc_msix_ring(int irq, void *data)
/* Write the ITR value calculated from the previous interrupt. */
igc_write_itr(q_vector);
- napi_schedule(&q_vector->napi);
+ napi_schedule_irqoff(&q_vector->napi);
return IRQ_HANDLED;
}
@@ -6059,7 +6059,7 @@ static irqreturn_t igc_intr_msi(int irq, void *data)
if (icr & IGC_ICR_TS)
igc_tsync_interrupt(adapter);
- napi_schedule(&q_vector->napi);
+ napi_schedule_irqoff(&q_vector->napi);
return IRQ_HANDLED;
}
@@ -6105,7 +6105,7 @@ static irqreturn_t igc_intr(int irq, void *data)
if (icr & IGC_ICR_TS)
igc_tsync_interrupt(adapter);
- napi_schedule(&q_vector->napi);
+ napi_schedule_irqoff(&q_vector->napi);
return IRQ_HANDLED;
}
--
2.53.0
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf > Of Daiki Harada > Sent: Tuesday, March 31, 2026 12:39 PM > To: intel-wired-lan@lists.osuosl.org; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org > Cc: Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Kitszel, > Przemyslaw <przemyslaw.kitszel@intel.com>; Andrew Lunn > <andrew+netdev@lunn.ch>; David S. Miller <davem@davemloft.net>; Eric > Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; Paolo > Abeni <pabeni@redhat.com>; Daiki Harada <daiky0325@gmail.com>; Kohei > Enju <kohei@enjuk.jp> > Subject: [Intel-wired-lan] [PATCH iwl-next v1 2/2] igc: use > napi_schedule_irqoff() instead of napi_schedule() > > Replace napi_schedule() with napi_schedule_irqoff() in the interrupt > handler path in igc driver Tested on Intel Corporation Ethernet > Controller I226-V. > > Suggested-by: Kohei Enju <kohei@enjuk.jp> > Signed-off-by: Daiki Harada <daiky0325@gmail.com> > --- > drivers/net/ethernet/intel/igc/igc_main.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/intel/igc/igc_main.c > b/drivers/net/ethernet/intel/igc/igc_main.c > index 72bc5128d8b8..712605886104 100644 > --- a/drivers/net/ethernet/intel/igc/igc_main.c > +++ b/drivers/net/ethernet/intel/igc/igc_main.c > @@ -5688,7 +5688,7 @@ static irqreturn_t igc_msix_ring(int irq, void > *data) > /* Write the ITR value calculated from the previous interrupt. > */ > igc_write_itr(q_vector); > > - napi_schedule(&q_vector->napi); > + napi_schedule_irqoff(&q_vector->napi); > > return IRQ_HANDLED; > } > @@ -6059,7 +6059,7 @@ static irqreturn_t igc_intr_msi(int irq, void > *data) > if (icr & IGC_ICR_TS) > igc_tsync_interrupt(adapter); > > - napi_schedule(&q_vector->napi); > + napi_schedule_irqoff(&q_vector->napi); > > return IRQ_HANDLED; > } > @@ -6105,7 +6105,7 @@ static irqreturn_t igc_intr(int irq, void *data) > if (icr & IGC_ICR_TS) > igc_tsync_interrupt(adapter); > > - napi_schedule(&q_vector->napi); > + napi_schedule_irqoff(&q_vector->napi); > > return IRQ_HANDLED; > } > -- > 2.53.0 Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
© 2016 - 2026 Red Hat, Inc.