mbox series

[net-next,v2,0/9] Introduce NAPI queues support

Message ID 169266003844.10199.10450480941022607696.stgit@anambiarhost.jf.intel.com (mailing list archive)
Headers show
Series Introduce NAPI queues support | expand

Message

Nambiar, Amritha Aug. 21, 2023, 11:25 p.m. UTC
Introduce support for associating NAPI instances with
corresponding RX and TX queue set. Add the capability
to export NAPI information supported by the device.
Extend the netdev_genl generic netlink family for netdev
with NAPI data. The NAPI fields exposed are:
- NAPI id
- NAPI device ifindex
- queue/queue-set (both RX and TX) associated with each
  NAPI instance
- Interrupt number associated with the NAPI instance
- PID for the NAPI thread

This series only supports 'get' ability for retrieving
certain NAPI attributes. The 'set' ability for setting
queue[s] associated with a NAPI instance via netdev-genl
will be submitted as a separate patch series.

Previous discussion at:
https://lore.kernel.org/netdev/c8476530638a5f4381d64db0e024ed49c2db3b02.camel@gmail.com/T/#m00999652a8b4731fbdb7bf698d2e3666c65a60e7

$ ./cli.py --spec netdev.yaml --do napi-get --json='{"napi-id": 385}'
{'ifindex': 12,
 'irq': 291,
 'napi-id': 385,
 'pid': 3614,
 'rx-queues': [0],
 'tx-queues': [0]}

$ ./cli.py --spec netdev.yaml --dump napi-get --json='{"ifindex": 12}'
[{'ifindex': 12,
  'irq': 294,
  'napi-id': 596,
  'pid': 12361,
  'rx-queues': [3],
  'tx-queues': [3]},
 {'ifindex': 12,
  'irq': 293,
  'napi-id': 595,
  'pid': 12360,
  'rx-queues': [2],
  'tx-queues': [2]},
 {'ifindex': 12,
  'irq': 292,
  'napi-id': 594,
  'pid': 12359,
  'rx-queues': [1],
  'tx-queues': [1]},
 {'ifindex': 12,
  'irq': 291,
  'napi-id': 593,
  'pid': 12358,
  'rx-queues': [0],
  'tx-queues': [0]}]

v2 -> v1
* Removed multi-attr nest for NAPI object
* Added support for flat/individual NAPI objects
* Changed 'do' command to take napi-id as argument
* Supported filtered 'dump' (dump with ifindex for a netdev and dump for
  all netdevs)

RFC -> v1
* Changed to separate 'napi_get' command
* Added support to expose interrupt and PID for the NAPI
* Used list of netdev queue structs
* Split patches further and fixed code style and errors

---

Amritha Nambiar (9):
      net: Introduce new fields for napi and queue associations
      ice: Add support in the driver for associating napi with queue[s]
      netdev-genl: spec: Extend netdev netlink spec in YAML for NAPI
      net: Move kernel helpers for queue index outside sysfs
      netdev-genl: Add netlink framework functions for napi
      netdev-genl: spec: Add irq in netdev netlink YAML spec
      net: Add NAPI IRQ support
      netdev-genl: spec: Add PID in netdev netlink YAML spec
      netdev-genl: Add PID for the NAPI thread


 Documentation/netlink/specs/netdev.yaml   |   52 ++++++++
 drivers/net/ethernet/intel/ice/ice_lib.c  |   60 ++++++++++
 drivers/net/ethernet/intel/ice/ice_lib.h  |    4 +
 drivers/net/ethernet/intel/ice/ice_main.c |    4 -
 include/linux/netdevice.h                 |   34 +++++
 include/net/netdev_rx_queue.h             |    7 +
 include/uapi/linux/netdev.h               |   13 ++
 net/core/dev.c                            |   53 ++++++++
 net/core/net-sysfs.c                      |   11 --
 net/core/netdev-genl-gen.c                |   24 ++++
 net/core/netdev-genl-gen.h                |    2 
 net/core/netdev-genl.c                    |  182 +++++++++++++++++++++++++++++
 tools/include/uapi/linux/netdev.h         |   13 ++
 tools/net/ynl/generated/netdev-user.c     |  177 ++++++++++++++++++++++++++++
 tools/net/ynl/generated/netdev-user.h     |   83 +++++++++++++
 tools/net/ynl/ynl-gen-c.py                |    2 
 16 files changed, 704 insertions(+), 17 deletions(-)

--

Comments

David Laight Aug. 23, 2023, 10:24 a.m. UTC | #1
From: Amritha Nambiar
> Sent: Tuesday, August 22, 2023 12:25 AM
> 
> Introduce support for associating NAPI instances with
> corresponding RX and TX queue set. Add the capability
> to export NAPI information supported by the device.
> Extend the netdev_genl generic netlink family for netdev
> with NAPI data. The NAPI fields exposed are:
> - NAPI id
> - NAPI device ifindex
> - queue/queue-set (both RX and TX) associated with each
>   NAPI instance
> - Interrupt number associated with the NAPI instance
> - PID for the NAPI thread
> 
> This series only supports 'get' ability for retrieving
> certain NAPI attributes. The 'set' ability for setting
> queue[s] associated with a NAPI instance via netdev-genl
> will be submitted as a separate patch series.
> 
> Previous discussion at:
> https://lore.kernel.org/netdev/c8476530638a5f4381d64db0e024ed49c2db3b02.camel@gmail.com/T/#m00999652a8
> b4731fbdb7bf698d2e3666c65a60e7

Not of this answers: what is it for?

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Nambiar, Amritha Aug. 23, 2023, 11:49 p.m. UTC | #2
On 8/23/2023 3:24 AM, David Laight wrote:
> From: Amritha Nambiar
>> Sent: Tuesday, August 22, 2023 12:25 AM
>>
>> Introduce support for associating NAPI instances with
>> corresponding RX and TX queue set. Add the capability
>> to export NAPI information supported by the device.
>> Extend the netdev_genl generic netlink family for netdev
>> with NAPI data. The NAPI fields exposed are:
>> - NAPI id
>> - NAPI device ifindex
>> - queue/queue-set (both RX and TX) associated with each
>>    NAPI instance
>> - Interrupt number associated with the NAPI instance
>> - PID for the NAPI thread
>>
>> This series only supports 'get' ability for retrieving
>> certain NAPI attributes. The 'set' ability for setting
>> queue[s] associated with a NAPI instance via netdev-genl
>> will be submitted as a separate patch series.
>>
>> Previous discussion at:
>> https://lore.kernel.org/netdev/c8476530638a5f4381d64db0e024ed49c2db3b02.camel@gmail.com/T/#m00999652a8
>> b4731fbdb7bf698d2e3666c65a60e7
> 
> Not of this answers: what is it for?

The use-case is to limit the number of napi instances for the queues
within a queue-group. Other discussions at 
https://lore.kernel.org/netdev/20230524111259.1323415-2-bigeasy@linutronix.de/ 
also explains the need.

> 
> 	David
> 
> -
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
> Registration No: 1397386 (Wales)