bnx2x: return PCI_ERS_RESULT_DISCONNECT on permanent failure
authorDean Nelson <dnelson@redhat.com>
Fri, 31 Jul 2009 09:13:25 +0000 (09:13 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 2 Aug 2009 06:11:53 +0000 (23:11 -0700)
PCI drivers that implement the struct pci_error_handlers' error_detected
callback should return PCI_ERS_RESULT_DISCONNECT if the state passed in is
pci_channel_io_perm_failure. This patch fixes the issue for bnx2x.

Signed-off-by: Dean Nelson <dnelson@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x_main.c

index 2d035d795f02ad860848c7133aee5aefe839b7af..c92d1a49886751254aac73153719163f9647ac2c 100644 (file)
@@ -11690,6 +11690,11 @@ static pci_ers_result_t bnx2x_io_error_detected(struct pci_dev *pdev,
 
        netif_device_detach(dev);
 
+       if (state == pci_channel_io_perm_failure) {
+               rtnl_unlock();
+               return PCI_ERS_RESULT_DISCONNECT;
+       }
+
        if (netif_running(dev))
                bnx2x_eeh_nic_unload(bp);