On Tue, Oct 3, 2023 at 8:36 PM Christian Marangi <ansuelsmth@xxxxxxxxx> wrote: > > Replace if condition of napi_schedule_prep/__napi_schedule and use bool > from napi_schedule directly where possible. > > Signed-off-by: Christian Marangi <ansuelsmth@xxxxxxxxx> > --- > drivers/net/ethernet/atheros/atlx/atl1.c | 4 +--- > drivers/net/ethernet/toshiba/tc35815.c | 4 +--- > drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 4 +--- > 3 files changed, 3 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c > index 02aa6fd8ebc2..a9014d7932db 100644 > --- a/drivers/net/ethernet/atheros/atlx/atl1.c > +++ b/drivers/net/ethernet/atheros/atlx/atl1.c > @@ -2446,7 +2446,7 @@ static int atl1_rings_clean(struct napi_struct *napi, int budget) > > static inline int atl1_sched_rings_clean(struct atl1_adapter* adapter) > { > - if (!napi_schedule_prep(&adapter->napi)) > + if (!napi_schedule(&adapter->napi)) > /* It is possible in case even the RX/TX ints are disabled via IMR > * register the ISR bits are set anyway (but do not produce IRQ). > * To handle such situation the napi functions used to check is > @@ -2454,8 +2454,6 @@ static inline int atl1_sched_rings_clean(struct atl1_adapter* adapter) > */ > return 0; > > - __napi_schedule(&adapter->napi); > - > /* > * Disable RX/TX ints via IMR register if it is > * allowed. NAPI handler must reenable them in same > diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c > index 14cf6ecf6d0d..a8b8a0e13f9a 100644 > --- a/drivers/net/ethernet/toshiba/tc35815.c > +++ b/drivers/net/ethernet/toshiba/tc35815.c > @@ -1436,9 +1436,7 @@ static irqreturn_t tc35815_interrupt(int irq, void *dev_id) > if (!(dmactl & DMA_IntMask)) { > /* disable interrupts */ > tc_writel(dmactl | DMA_IntMask, &tr->DMA_Ctl); > - if (napi_schedule_prep(&lp->napi)) > - __napi_schedule(&lp->napi); > - else { > + if (!napi_schedule(&lp->napi)) { > printk(KERN_ERR "%s: interrupt taken in poll\n", > dev->name); > BUG(); Hmmm... could you also remove this BUG() ? I think this code path can be taken if some applications are using busy polling. Or simply rewrite this with the traditional if (napi_schedule_prep(&lp->napi)) { /* disable interrupts */ tc_writel(dmactl | DMA_IntMask, &tr->DMA_Ctl); __napi_schedule(&lp->napi); } > diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c > index 23b5a0adcbd6..146bc7bd14fb 100644 > --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c > +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c > @@ -1660,9 +1660,7 @@ irqreturn_t iwl_pcie_irq_rx_msix_handler(int irq, void *dev_id) > IWL_DEBUG_ISR(trans, "[%d] Got interrupt\n", entry->entry); > > local_bh_disable(); > - if (napi_schedule_prep(&rxq->napi)) > - __napi_schedule(&rxq->napi); > - else > + if (!napi_schedule(&rxq->napi)) > iwl_pcie_clear_irq(trans, entry->entry); Same remark here about twisted logic. > local_bh_enable(); > > -- > 2.40.1 >