[PATCH net-next 0/2] eth: bnxt: preserve IRQ affinity across IRQ reallocation
From: Jakub Kicinski <kuba@kernel.org>
Date: 2026-08-13 19:32:50
bnxt currently discards the IRQ affinity when changing ring count:
# ethtool -l ens9np0
[...] Combined: 8 [...]
# ynl --family netdev --dump napi-get --json '{"ifindex": 2}'
[...]
{'defer-hard-irqs': 0,
'gro-flush-timeout': 0,
'id': 70,
'ifindex': 2,
'irq': 170, << IRQ 170 is for NAPI 1 (second to last)
'irq-suspend-timeout': 0,
'threaded': 'disabled'},
{'defer-hard-irqs': 0,
'gro-flush-timeout': 0,
'id': 69,
'ifindex': 2,
'irq': 169,
'irq-suspend-timeout': 0,
'threaded': 'disabled'}]
# cat /proc/irq/170/smp_affinity_list
1 <<< system config script set CPU 1 for this IRQ
# ethtool -L ens9np0 combined 1
# ethtool -L ens9np0 combined 8
# cat /proc/irq/170/smp_affinity_list
0-31 <<< system has 32 CPUs
After this series:
# cat /proc/irq/170/smp_affinity_list
1
# ethtool -L ens9np0 combined 1
# ethtool -L ens9np0 combined 8
# cat /proc/irq/170/smp_affinity_list
1
We recently added the ability to networking core to track the affinity.
bnxt doesn't use it because it needs TPH programming as well.
Let's align its local behavior.
The loss of IRQ config is a real production problem, but it also breaks
some of the NIPA tests.
Jakub Kicinski (2):
eth: bnxt: decrease indent in bnxt_init_int_mode()
eth: bnxt: preserve IRQ affinity across IRQ reallocation
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 11 +-
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 131 +++++++++++++++-------
2 files changed, 98 insertions(+), 44 deletions(-)
--
2.55.0