On Tue, 27 Oct 2020 23:54:53 +0100 Sebastian Andrzej Siewior wrote: > The driver uses in_irq() + in_serving_softirq() magic to decide if NAPI > scheduling is required or packet processing. > > The usage of in_*() in drivers is phased out and Linus clearly requested > that code which changes behaviour depending on context should either be > seperated or the context be conveyed in an argument passed by the caller, > which usually knows the context. > > Use the `napi' argument passed by the callback. It is set true if > called from the interrupt handler and NAPI should be scheduled. > > Signed-off-by: Sebastian Andrzej Siewior <[email protected]> > Cc: "Horia Geantă" <[email protected]> > Cc: Aymen Sghaier <[email protected]> > Cc: Herbert Xu <[email protected]> > Cc: "David S. Miller" <[email protected]> > Cc: Madalin Bucur <[email protected]> > Cc: Jakub Kicinski <[email protected]> > Cc: Li Yang <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > --- > drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > index 27835310b718e..2c949acd74c67 100644 > --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c > @@ -2300,9 +2300,9 @@ static void dpaa_tx_conf(struct net_device *net_dev, > } > > static inline int dpaa_eth_napi_schedule(struct dpaa_percpu_priv > *percpu_priv, > - struct qman_portal *portal) > + struct qman_portal *portal, bool napi) > { > - if (unlikely(in_irq() || !in_serving_softirq())) { > + if (napi) { > /* Disable QMan IRQ and invoke NAPI */ > qman_p_irqsource_remove(portal, QM_PIRQ_DQRI); >
Nit: some networking drivers have a bool napi which means "are we running in napi context", the semantics here feel a little backwards, at least to me. But if I'm the only one thinking this, so be it.
