ixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able
authorMaciej Fijalkowski <maciej.fijalkowski@intel.com>
Tue, 20 Feb 2024 21:45:51 +0000 (22:45 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 1 Mar 2024 17:35:19 +0000 (09:35 -0800)
commitcbf996f52c4e658b3fb4349a869a62fd2d4c3c1c
tree3ae83dc07348473d0c118789d49023c580b3e8eb
parent1c61728be22c1cb49c1be88693e72d8c06b1c81e
ixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able

Currently routines that are supposed to toggle state of ring pair do not
take care of associated interrupt with queue vector that these rings
belong to. This causes funky issues such as dead interface due to irq
misconfiguration, as per Pavel's report from Closes: tag.

Add a function responsible for disabling single IRQ in EIMC register and
call this as a very first thing when disabling ring pair during xsk_pool
setup. For enable let's reuse ixgbe_irq_enable_queues(). Besides this,
disable/enable NAPI as first/last thing when dealing with closing or
opening ring pair that xsk_pool is being configured on.

Reported-by: Pavel Vazharov <pavel@x3me.net>
Closes: https://lore.kernel.org/netdev/CAJEV1ijxNyPTwASJER1bcZzS9nMoZJqfR86nu_3jFFVXzZQ4NA@mail.gmail.com/
Fixes: 024aa5800f32 ("ixgbe: added Rx/Tx ring disable/enable functions")
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c