Re: [PATCH v14 2/8] net: introduce napi_busy_loop_rcu()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 05, 2023 at 02:20:03PM -0700, Stefan Roesch wrote:
> This introduces the napi_busy_loop_rcu() function. If the caller of
> napi_busy_loop() function is also taking the rcu read lock, it is possible
> that napi_busy_loop() is releasing the read lock if it invokes schedule.
> However the caller is expecting that the rcu read lock is not released
> until the function completes. This new function avoids that problem. It
> expects that the caller MUST hold the rcu_read_lock while calling this
> function.
> 
> Signed-off-by: Stefan Roesch <shr@xxxxxxxxxxxx>

Hi Stefan,

some minor nits from my side, which you may
want to consider if you need to spin a v15 for some reason.

...

> diff --git a/net/core/dev.c b/net/core/dev.c
> index f4677aa20f84..fcd4a6a70646 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -6213,6 +6213,37 @@ static inline void __napi_busy_poll(struct napi_busy_poll_ctx *ctx,
>  				LINUX_MIB_BUSYPOLLRXPACKETS, work);
>  	local_bh_enable();
>  }
> +
> +/*
> + * Warning: can exit without calling need_resched().
> + */

For historical reasons, multi-line comments in Networking code are like
this.

/* Something
 * more
 */

Though I notice that dev.c doesn't follow this too closely,
perhaps for other historical reasons.

Anyway, in this case I'd suggest a single like comment.
Unless there is something more to say.

/* Warning: can exit without calling need_resched(). */

> +void napi_busy_loop_rcu(unsigned int napi_id,
> +		    bool (*loop_end)(void *, unsigned long),
> +		    void *loop_end_arg, bool prefer_busy_poll, u16 budget)

The indentation of the above two likes should align with the inside
of the opening parentheses.

void napi_busy_loop_rcu(unsigned int napi_id,
			bool (*loop_end)(void *, unsigned long),
			void *loop_end_arg, bool prefer_busy_poll, u16 budget)

...



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux