Skip to content

Commit f12976c

Browse files
etantilovgregkh
authored andcommitted
ixgbe: fix AER error handling
[ Upstream commit 126db13fa0e6d05c9f94e0125f61e773bd5ab079 ] Make sure that we free the IRQs in ixgbe_io_error_detected() when responding to an PCIe AER error and also restore them when the interface recovers from it. Previously it was possible to trigger BUG_ON() check in free_msix_irqs() in the case where we call ixgbe_remove() after a failed recovery from AER error because the interrupts were not freed. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Sasha Levin <alexander.levin@verizon.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 865fe71 commit f12976c

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9221,7 +9221,7 @@ static pci_ers_result_t ixgbe_io_error_detected(struct pci_dev *pdev,
92219221
}
92229222

92239223
if (netif_running(netdev))
9224-
ixgbe_down(adapter);
9224+
ixgbe_close_suspend(adapter);
92259225

92269226
if (!test_and_set_bit(__IXGBE_DISABLED, &adapter->state))
92279227
pci_disable_device(pdev);
@@ -9291,10 +9291,12 @@ static void ixgbe_io_resume(struct pci_dev *pdev)
92919291
}
92929292

92939293
#endif
9294+
rtnl_lock();
92949295
if (netif_running(netdev))
9295-
ixgbe_up(adapter);
9296+
ixgbe_open(netdev);
92969297

92979298
netif_device_attach(netdev);
9299+
rtnl_unlock();
92989300
}
92999301

93009302
static const struct pci_error_handlers ixgbe_err_handler = {

0 commit comments

Comments
 (0)