From: Joe Damato <jdamato@fastly.com>
To: Samiullah Khawaja <skhawaja@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>,
"David S . Miller " <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
almasrymina@google.com, willemb@google.com,
mkarsten@uwaterloo.ca, netdev@vger.kernel.org
Subject: Re: [PATCH net-next v5 2/4] net: define an enum for the napi threaded state
Date: Thu, 24 Apr 2025 16:40:20 -0700 [thread overview]
Message-ID: <aArL5Lac5evBAvz1@LQ3V64L9R2> (raw)
In-Reply-To: <20250424200222.2602990-3-skhawaja@google.com>
On Thu, Apr 24, 2025 at 08:02:20PM +0000, Samiullah Khawaja wrote:
> Instead of using '0' and '1' for napi threaded state, use an enum with
> 'disable' and 'enable' states, preparing for the next patch to add a new
> 'busy-poll-enable' state. Also update the 'threaded' field in struct
> net_device to u8 instead of bool.
[...]
>
> diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml
> index c9d190fe1f05..c8834161e8ec 100644
> --- a/Documentation/netlink/specs/netdev.yaml
> +++ b/Documentation/netlink/specs/netdev.yaml
[...]
> @@ -283,11 +287,10 @@ attribute-sets:
> -
> name: threaded
> doc: Whether the napi is configured to operate in threaded polling
> - mode. If this is set to `1` then the NAPI context operates
> + mode. If this is set to `enable` then the NAPI context operates
> in threaded polling mode.
> - type: uint
> - checks:
> - max: 1
> + type: u32
> + enum: napi-threaded
I think this can still be uint even if associated with an enum? IIUC
(I could be wrong) uint is preferred.
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index 3817720e8b24..2eda563307f9 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -2428,7 +2429,7 @@ struct net_device {
> struct sfp_bus *sfp_bus;
> struct lock_class_key *qdisc_tx_busylock;
> bool proto_down;
> - bool threaded;
> + u8 threaded;
Looks like there's a 1 byte hole in a cacheline further up after
unsigned char lower_level
Not sure if putting the u8 there and filling that cacheline makes you
feel anything in particular.
(I feel nothing.)
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 3ff275bbf6e2..41d809f2a7f7 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
[...]
> @@ -6924,12 +6938,15 @@ int dev_set_threaded(struct net_device *dev, bool threaded)
> if (dev->threaded == threaded)
> return 0;
>
> + val = 0;
> if (threaded) {
> + val |= NAPIF_STATE_THREADED;
> +
> list_for_each_entry(napi, &dev->napi_list, dev_list) {
> if (!napi->thread) {
> err = napi_kthread_create(napi);
> if (err) {
> - threaded = false;
> + threaded = NETDEV_NAPI_THREADED_DISABLE;
> break;
> }
> }
Re the feedback on the per-NAPI threading setting patch, I think if
you used napi_set_threaded in dev_set_threaded (as mentioned in the
feedback to that patch) you might reduce the changes here.
next prev parent reply other threads:[~2025-04-24 23:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-24 20:02 [PATCH net-next v5 0/4] Add support to do threaded napi busy poll Samiullah Khawaja
2025-04-24 20:02 ` [PATCH net-next v5 1/4] net: Create separate gro_flush helper function Samiullah Khawaja
2025-04-24 23:21 ` Joe Damato
2025-04-24 20:02 ` [PATCH net-next v5 2/4] net: define an enum for the napi threaded state Samiullah Khawaja
2025-04-24 23:40 ` Joe Damato [this message]
2025-04-26 1:36 ` Jakub Kicinski
2025-04-26 3:54 ` Samiullah Khawaja
2025-04-24 20:02 ` [PATCH net-next v5 3/4] Extend napi threaded polling to allow kthread based busy polling Samiullah Khawaja
2025-04-24 23:42 ` Joe Damato
2025-04-24 20:02 ` [PATCH net-next v5 4/4] selftests: Add napi threaded busy poll test in `busy_poller` Samiullah Khawaja
2025-04-28 13:50 ` [PATCH net-next v5 0/4] Add support to do threaded napi busy poll Martin Karsten
2025-04-28 16:52 ` Willem de Bruijn
2025-04-28 17:39 ` Joe Damato
2025-04-28 17:59 ` Willem de Bruijn
2025-04-28 18:05 ` Martin Karsten
2025-04-30 12:37 ` David Laight
2025-04-30 16:47 ` Samiullah Khawaja
2025-04-28 18:05 ` Martin Karsten
2025-04-28 18:20 ` Willem de Bruijn
2025-04-30 15:23 ` Martin Karsten
2025-04-30 16:58 ` Samiullah Khawaja
2025-04-30 19:57 ` Martin Karsten
2025-04-30 20:33 ` Samiullah Khawaja
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aArL5Lac5evBAvz1@LQ3V64L9R2 \
--to=jdamato@fastly.com \
--cc=almasrymina@google.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=mkarsten@uwaterloo.ca \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=skhawaja@google.com \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.