Re: [PATCH 1/2] net: Assert proper context while calling napi_schedule()

Frederic Weisbecker
2025-02-13T20:38:15Z

Le Thu, Feb 13, 2025 at 11:04:52AM -0800, Jakub Kicinski a écrit :
> On Thu, 13 Feb 2025 10:14:02 -0800 Breno Leitao wrote:
> > > The problem is a bit nasty, on a closer look. We don't know if netcons
> > > is called in IRQ context or not. How about we add an hrtimer to netdevsim,
> > > schedule it to fire 5usec in the future instead of scheduling NAPI
> > > immediately? We can call napi_schedule() from a timer safely.
> > >
> > > Unless there's another driver which schedules NAPI from xmit.
> > > Then we'd need to try harder to fix this in netpoll.
> > > veth does use NAPI on xmit but it sets IFF_DISABLE_NETPOLL already.
> >
> > Just to make sure I follow the netpoll issue. What would you like to fix
> > in netpoll exactly?
>
> Nothing in netpoll, the problem is that netdevsim calls napi_schedule
> from the xmit path. That's incompatible with netpoll. We should fix
> netdevsim instead (unless more real drivers need napi-from-xmit to
> work).

Let me clarify, because I don't know much this area. If the problem is that xmit
can't call napi_schedule() by design, then I defer to you. But if the problem is that
napi_schedule() may or may not be called from an interrupt, please note that
local_bh_enable() won't run softirqs from a hardirq and will instead defer to
IRQ tail. So it's fine to do an unconditional pair of local_bh_disable() / local_bh_enable().

Thanks.