netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] documentation: networking: Add NAPI config
@ 2025-02-08  1:28 Joe Damato
  2025-02-08  3:58 ` Bagas Sanjaya
  2025-02-11  2:16 ` Jakub Kicinski
  0 siblings, 2 replies; 6+ messages in thread
From: Joe Damato @ 2025-02-08  1:28 UTC (permalink / raw)
  To: netdev
  Cc: ahmed.zaki, Joe Damato, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Simon Horman, Jonathan Corbet,
	open list:DOCUMENTATION, open list

Document the existence of persistent per-NAPI configuration space and
the API that drivers can opt into.

Update stale documentation which suggested that NAPI IDs cannot be
queried from userspace.

Signed-off-by: Joe Damato <jdamato@fastly.com>
---
 Documentation/networking/napi.rst | 32 ++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/Documentation/networking/napi.rst b/Documentation/networking/napi.rst
index f970a2be271a..de146f63f09b 100644
--- a/Documentation/networking/napi.rst
+++ b/Documentation/networking/napi.rst
@@ -171,12 +171,42 @@ a channel as an IRQ/NAPI which services queues of a given type. For example,
 a configuration of 1 ``rx``, 1 ``tx`` and 1 ``combined`` channel is expected
 to utilize 3 interrupts, 2 Rx and 2 Tx queues.
 
+Persistent NAPI config
+----------------------
+
+Drivers can opt-in to using a persistent NAPI configuration space by calling
+netif_napi_add_config. This API maps a NAPI instance to a configuration
+structure using a driver defined index value, like a queue number. If the
+driver were to destroy and recreate NAPI instances (if a user requested a queue
+count change, for example), the new NAPI instances will inherit the configuration
+settings of the NAPI configuration structure they are mapped to.
+
+Using this API allows for persistent NAPI IDs (among other settings), which can
+be beneficial to userspace programs using ``SO_INCOMING_NAPI_ID``. See the
+sections below for other NAPI configuration settings.
+
 User API
 ========
 
 User interactions with NAPI depend on NAPI instance ID. The instance IDs
 are only visible to the user thru the ``SO_INCOMING_NAPI_ID`` socket option.
-It's not currently possible to query IDs used by a given device.
+
+Users can query NAPI IDs for a device or device queue using netlink. This can
+be done programmatically in a user application or by using a script included in
+the kernel source tree: ``tools/net/ynl/pyynl/cli.py``.
+
+For example, using the script to dump all of the queues for a device (which
+will reveal each queue's NAPI ID):
+
+.. code-block:: bash
+
+   $ kernel-source/tools/net/ynl/pyynl/cli.py \
+             --spec Documentation/netlink/specs/netdev.yaml \
+             --dump queue-get \
+             --json='{"ifindex": 2}'
+
+See ``Documentation/netlink/specs/netdev.yaml`` for more details on
+available operations and attributes.
 
 Software IRQ coalescing
 -----------------------

base-commit: 7bca2b2d5fcc685b81eb32fe564689eca6a59a99
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next] documentation: networking: Add NAPI config
  2025-02-08  1:28 [PATCH net-next] documentation: networking: Add NAPI config Joe Damato
@ 2025-02-08  3:58 ` Bagas Sanjaya
  2025-02-11  2:16 ` Jakub Kicinski
  1 sibling, 0 replies; 6+ messages in thread
From: Bagas Sanjaya @ 2025-02-08  3:58 UTC (permalink / raw)
  To: Joe Damato, netdev
  Cc: ahmed.zaki, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Simon Horman, Jonathan Corbet,
	open list:DOCUMENTATION, open list

[-- Attachment #1: Type: text/plain, Size: 2443 bytes --]

On Sat, Feb 08, 2025 at 01:28:21AM +0000, Joe Damato wrote:
> diff --git a/Documentation/networking/napi.rst b/Documentation/networking/napi.rst
> index f970a2be271a..de146f63f09b 100644
> --- a/Documentation/networking/napi.rst
> +++ b/Documentation/networking/napi.rst
> @@ -171,12 +171,42 @@ a channel as an IRQ/NAPI which services queues of a given type. For example,
>  a configuration of 1 ``rx``, 1 ``tx`` and 1 ``combined`` channel is expected
>  to utilize 3 interrupts, 2 Rx and 2 Tx queues.
>  
> +Persistent NAPI config
> +----------------------
> +
> +Drivers can opt-in to using a persistent NAPI configuration space by calling
> +netif_napi_add_config. This API maps a NAPI instance to a configuration
> +structure using a driver defined index value, like a queue number. If the
> +driver were to destroy and recreate NAPI instances (if a user requested a queue
> +count change, for example), the new NAPI instances will inherit the configuration
> +settings of the NAPI configuration structure they are mapped to.
> +
> +Using this API allows for persistent NAPI IDs (among other settings), which can
> +be beneficial to userspace programs using ``SO_INCOMING_NAPI_ID``. See the
> +sections below for other NAPI configuration settings.
> +
>  User API
>  ========
>  
>  User interactions with NAPI depend on NAPI instance ID. The instance IDs
>  are only visible to the user thru the ``SO_INCOMING_NAPI_ID`` socket option.
> -It's not currently possible to query IDs used by a given device.
> +
> +Users can query NAPI IDs for a device or device queue using netlink. This can
> +be done programmatically in a user application or by using a script included in
> +the kernel source tree: ``tools/net/ynl/pyynl/cli.py``.
> +
> +For example, using the script to dump all of the queues for a device (which
> +will reveal each queue's NAPI ID):
> +
> +.. code-block:: bash
> +
> +   $ kernel-source/tools/net/ynl/pyynl/cli.py \
> +             --spec Documentation/netlink/specs/netdev.yaml \
> +             --dump queue-get \
> +             --json='{"ifindex": 2}'
> +
> +See ``Documentation/netlink/specs/netdev.yaml`` for more details on
> +available operations and attributes.
>  
>  Software IRQ coalescing
>  -----------------------
> 

Looks good, thanks!

Reviewed-by: Bagas Sanjaya <bagasdotme@gmail.com>

-- 
An old man doll... just what I always wanted! - Clara

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next] documentation: networking: Add NAPI config
  2025-02-08  1:28 [PATCH net-next] documentation: networking: Add NAPI config Joe Damato
  2025-02-08  3:58 ` Bagas Sanjaya
@ 2025-02-11  2:16 ` Jakub Kicinski
  2025-02-11  2:38   ` Randy Dunlap
  2025-02-11  2:50   ` Joe Damato
  1 sibling, 2 replies; 6+ messages in thread
From: Jakub Kicinski @ 2025-02-11  2:16 UTC (permalink / raw)
  To: Joe Damato
  Cc: netdev, ahmed.zaki, David S. Miller, Eric Dumazet, Paolo Abeni,
	Simon Horman, Jonathan Corbet, open list:DOCUMENTATION, open list

On Sat,  8 Feb 2025 01:28:21 +0000 Joe Damato wrote:
> +Persistent NAPI config
> +----------------------
> +
> +Drivers can opt-in to using a persistent NAPI configuration space by calling

Should we be more forceful? I think for new drivers the _add_config() 
API should always be preferred given the benefits.

> +netif_napi_add_config. This API maps a NAPI instance to a configuration
> +structure using a driver defined index value, like a queue number. If the
> +driver were to destroy and recreate NAPI instances (if a user requested a queue

"were" is correct here?

> +count change, for example), the new NAPI instances will inherit the configuration
> +settings of the NAPI configuration structure they are mapped to.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next] documentation: networking: Add NAPI config
  2025-02-11  2:16 ` Jakub Kicinski
@ 2025-02-11  2:38   ` Randy Dunlap
  2025-02-11  2:50   ` Joe Damato
  1 sibling, 0 replies; 6+ messages in thread
From: Randy Dunlap @ 2025-02-11  2:38 UTC (permalink / raw)
  To: Jakub Kicinski, Joe Damato
  Cc: netdev, ahmed.zaki, David S. Miller, Eric Dumazet, Paolo Abeni,
	Simon Horman, Jonathan Corbet, linux-doc, linux-kernel

On February 10, 2025 6:16:35 PM PST, Jakub Kicinski <kuba@kernel.org> wrote:
>On Sat,  8 Feb 2025 01:28:21 +0000 Joe Damato wrote:
>> +Persistent NAPI config
>> +----------------------
>> +
>> +Drivers can opt-in to using a persistent NAPI configuration space by calling
>
>Should we be more forceful? I think for new drivers the _add_config() 
>API should always be preferred given the benefits.
>
>> +netif_napi_add_config. This API maps a NAPI instance to a configuration
>> +structure using a driver defined index value, like a queue number. If the
>> +driver were to destroy and recreate NAPI instances (if a user requested a queue
>
>"were" is correct here?

Yes, subjunctive mood.


>> +count change, for example), the new NAPI instances will inherit the configuration
>> +settings of the NAPI configuration structure they are mapped to.
>


~Randy

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next] documentation: networking: Add NAPI config
  2025-02-11  2:16 ` Jakub Kicinski
  2025-02-11  2:38   ` Randy Dunlap
@ 2025-02-11  2:50   ` Joe Damato
  2025-02-11  3:20     ` Jakub Kicinski
  1 sibling, 1 reply; 6+ messages in thread
From: Joe Damato @ 2025-02-11  2:50 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: netdev, ahmed.zaki, David S. Miller, Eric Dumazet, Paolo Abeni,
	Simon Horman, Jonathan Corbet, open list:DOCUMENTATION, open list

On Mon, Feb 10, 2025 at 06:16:35PM -0800, Jakub Kicinski wrote:
> On Sat,  8 Feb 2025 01:28:21 +0000 Joe Damato wrote:
> > +Persistent NAPI config
> > +----------------------
> > +
> > +Drivers can opt-in to using a persistent NAPI configuration space by calling
> 
> Should we be more forceful? I think for new drivers the _add_config() 
> API should always be preferred given the benefits.

How about: "Drivers should opt-in ..." instead? I have no strong
preference.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next] documentation: networking: Add NAPI config
  2025-02-11  2:50   ` Joe Damato
@ 2025-02-11  3:20     ` Jakub Kicinski
  0 siblings, 0 replies; 6+ messages in thread
From: Jakub Kicinski @ 2025-02-11  3:20 UTC (permalink / raw)
  To: Joe Damato
  Cc: netdev, ahmed.zaki, David S. Miller, Eric Dumazet, Paolo Abeni,
	Simon Horman, Jonathan Corbet, open list:DOCUMENTATION, open list

On Mon, 10 Feb 2025 18:50:47 -0800 Joe Damato wrote:
> On Mon, Feb 10, 2025 at 06:16:35PM -0800, Jakub Kicinski wrote:
> > On Sat,  8 Feb 2025 01:28:21 +0000 Joe Damato wrote:  
> > > +Persistent NAPI config
> > > +----------------------
> > > +
> > > +Drivers can opt-in to using a persistent NAPI configuration space by calling  
> > 
> > Should we be more forceful? I think for new drivers the _add_config() 
> > API should always be preferred given the benefits.  
> 
> How about: "Drivers should opt-in ..." instead? I have no strong
> preference.

A bit more editing may be beneficial, lead with the problem:

  Drivers often allocate and free NAPI instances dynamically. This leads
  to loss of NAPI-related user configuration, each time NAPI instances
  are reallocated. The netif_napi_add_config() API prevents this loss of
  configuration by associating each NAPI instance with...

  Drivers should try to use netif_napi_add_config() whenever possible.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-11  3:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-08  1:28 [PATCH net-next] documentation: networking: Add NAPI config Joe Damato
2025-02-08  3:58 ` Bagas Sanjaya
2025-02-11  2:16 ` Jakub Kicinski
2025-02-11  2:38   ` Randy Dunlap
2025-02-11  2:50   ` Joe Damato
2025-02-11  3:20     ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).