diff options
-rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index cbd59fe618a9..7ea48414c6cb 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c | |||
@@ -1235,6 +1235,10 @@ static int cxgb_close(struct net_device *dev) | |||
1235 | struct port_info *pi = netdev_priv(dev); | 1235 | struct port_info *pi = netdev_priv(dev); |
1236 | struct adapter *adapter = pi->adapter; | 1236 | struct adapter *adapter = pi->adapter; |
1237 | 1237 | ||
1238 | |||
1239 | if (!adapter->open_device_map) | ||
1240 | return 0; | ||
1241 | |||
1238 | /* Stop link fault interrupts */ | 1242 | /* Stop link fault interrupts */ |
1239 | t3_xgm_intr_disable(adapter, pi->port_id); | 1243 | t3_xgm_intr_disable(adapter, pi->port_id); |
1240 | t3_read_reg(adapter, A_XGM_INT_STATUS + pi->mac.offset); | 1244 | t3_read_reg(adapter, A_XGM_INT_STATUS + pi->mac.offset); |
@@ -2823,6 +2827,9 @@ static pci_ers_result_t t3_io_error_detected(struct pci_dev *pdev, | |||
2823 | struct adapter *adapter = pci_get_drvdata(pdev); | 2827 | struct adapter *adapter = pci_get_drvdata(pdev); |
2824 | int ret; | 2828 | int ret; |
2825 | 2829 | ||
2830 | if (state == pci_channel_io_perm_failure) | ||
2831 | return PCI_ERS_RESULT_DISCONNECT; | ||
2832 | |||
2826 | ret = t3_adapter_error(adapter, 0); | 2833 | ret = t3_adapter_error(adapter, 0); |
2827 | 2834 | ||
2828 | /* Request a slot reset. */ | 2835 | /* Request a slot reset. */ |