[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250113171042.158123-1-ahmed.zaki@intel.com>
Date: Mon, 13 Jan 2025 10:10:36 -0700
From: Ahmed Zaki <ahmed.zaki@...el.com>
To: netdev@...r.kernel.org
Cc: intel-wired-lan@...ts.osuosl.org,
andrew+netdev@...n.ch,
edumazet@...gle.com,
kuba@...nel.org,
horms@...nel.org,
pabeni@...hat.com,
davem@...emloft.net,
michael.chan@...adcom.com,
tariqt@...dia.com,
anthony.l.nguyen@...el.com,
przemyslaw.kitszel@...el.com,
jdamato@...tly.com,
shayd@...dia.com,
akpm@...ux-foundation.org,
shayagr@...zon.com,
kalesh-anakkur.purayil@...adcom.com,
pavan.chebbi@...adcom.com,
yury.norov@...il.com,
darinzon@...zon.com,
Ahmed Zaki <ahmed.zaki@...el.com>
Subject: [PATCH net-next v5 0/6] net: napi: add CPU affinity to napi->config
Drivers usually need to re-apply the user-set IRQ affinity to their IRQs
after reset. However, since there can be only one IRQ affinity notifier
for each IRQ, registering IRQ notifiers conflicts with the ARFS rmap
management in the core (which also registers separate IRQ affinity
notifiers).
Move the IRQ affinity management to the napi struct. This way we can have
a unified IRQ notifier to re-apply the user-set affinity and also manage
the ARFS rmaps. Patches 1 and 2 move the ARFS rmap management to CORE.
Patch 3 adds the IRQ affinity mask to napi_config and re-applies the mask
after reset. Patches 4-6 use the new API for bnxt, ice and idpf drivers.
Tested on bnxt, ice and idpf.
V5:
- Add kernel doc for new netdev flags (Simon).
- Remove defensive (if !napi) check in napi_irq_cpu_rmap_add()
(patch 2) since caller is already dereferencing the pointer (Simon).
- Fix build error when CONFIG_ARFS_ACCEL is not defined (patch 3).
v4:
- https://lore.kernel.org/netdev/20250109233107.17519-1-ahmed.zaki@intel.com/
- Better introduction in the cover letter.
- Fix Kernel build errors in ena_init_rx_cpu_rmap() (Patch 1)
- Fix kernel test robot warnings reported by Dan Carpenter:
https://lore.kernel.org/all/202501050625.nY1c97EX-lkp@intel.com/
- Remove unrelated empty line in patch 4 (Kalesh Anakkur Purayil)
- Fix a memleak (rmap was not freed) by calling cpu_rmap_put() in
netif_napi_affinity_release() (patch 2).
v3:
- https://lore.kernel.org/netdev/20250104004314.208259-1-ahmed.zaki@intel.com/
- Assign one cpu per mask starting from local NUMA node (Shay Drori).
- Keep the new ARFS and Affinity flags per nedev (Jakub).
v2:
- https://lore.kernel.org/netdev/202412190454.nwvp3hU2-lkp@intel.com/T/
- Also move the ARFS IRQ affinity management from drivers to core. Via
netif_napi_set_irq(), drivers can ask the core to add the IRQ to the
ARFS rmap (already allocated by the driver).
RFC -> v1:
- https://lore.kernel.org/netdev/20241210002626.366878-1-ahmed.zaki@intel.com/
- move static inline affinity functions to net/dev/core.c
- add the new napi->irq_flags (patch 1)
- add code changes to bnxt, mlx4 and ice.
Ahmed Zaki (6):
net: move ARFS rmap management to core
net: napi: add internal ARFS rmap management
net: napi: add CPU affinity to napi_config
bnxt: use napi's irq affinity
ice: use napi's irq affinity
idpf: use napi's irq affinity
drivers/net/ethernet/amazon/ena/ena_netdev.c | 38 +----
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 52 +------
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 2 -
drivers/net/ethernet/intel/ice/ice.h | 3 -
drivers/net/ethernet/intel/ice/ice_arfs.c | 17 +--
drivers/net/ethernet/intel/ice/ice_base.c | 7 +-
drivers/net/ethernet/intel/ice/ice_lib.c | 6 -
drivers/net/ethernet/intel/ice/ice_main.c | 47 +-----
drivers/net/ethernet/intel/idpf/idpf_lib.c | 1 +
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 22 +--
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 6 +-
include/linux/cpu_rmap.h | 1 +
include/linux/netdevice.h | 31 +++-
lib/cpu_rmap.c | 2 +-
net/core/dev.c | 151 ++++++++++++++++++-
15 files changed, 205 insertions(+), 181 deletions(-)
--
2.43.0
Powered by blists - more mailing lists