Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff

From: Eric Dumazet
Date: Fri Sep 13 2024 - 11:22:09 EST


On Fri, Sep 13, 2024 at 5:10 PM Sean Anderson <sean.anderson@xxxxxxxxx> wrote:
>
> The threadirqs kernel parameter can be used to force threaded IRQs even
> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
> skip disabling local interrupts. This defaults to false on regular
> kernels, and is always true on PREEMPT_RT kernels.
>
> Signed-off-by: Sean Anderson <sean.anderson@xxxxxxxxx>
> ---
>
> net/core/dev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 1e740faf9e78..112e871bc2b0 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -6202,7 +6202,7 @@ EXPORT_SYMBOL(napi_schedule_prep);
> */
> void __napi_schedule_irqoff(struct napi_struct *n)
> {
> - if (!IS_ENABLED(CONFIG_PREEMPT_RT))
> + if (!force_irqthreads())
> ____napi_schedule(this_cpu_ptr(&softnet_data), n);
> else
> __napi_schedule(n);
> --
> 2.35.1.1320.gc452695387.dirty
>

Seems reasonable, can you update the comment (kdoc) as well ?

It says :

* On PREEMPT_RT enabled kernels this maps to __napi_schedule()
* because the interrupt disabled assumption might not be true
* due to force-threaded interrupts and spinlock substitution.

Also always specify net or net-next for networking patches.

Thanks.