Skip to contentSkip to conversation

cxgb3: Fix EEH final recovery attempt

PATCH Applied Divy Le Ray 2 participants 2 messages Apr 17, 2009 – Apr 20, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 4/4 cxgb3: Fix EEH final recovery attempt

From: Divy Le Ray <[email protected]>

EEH attempts to recover up 6 times.
The last attempt leaves all the ports and adapter down.hen
The driver is then unloaded, bringing the adapter down again unconditionally. The unload will hang.
Check if the adapter is already down before trying to bring it down again.

---

 drivers/net/cxgb3/cxgb3_main.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
drivers/net/cxgb3/cxgb3_main.c +7 -0
index cbd59fe..7ea4841 100644
@@ -1235,6 +1235,10 @@ static int cxgb_close(struct net_device *dev)
 	struct port_info *pi = netdev_priv(dev);
 	struct adapter *adapter = pi->adapter;
 
+	
+	if (!adapter->open_device_map)
+		return 0;
+
 	/* Stop link fault interrupts */
 	t3_xgm_intr_disable(adapter, pi->port_id);
 	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,
 	struct adapter *adapter = pci_get_drvdata(pdev);
 	int ret;
 
+	if (state == pci_channel_io_perm_failure)
+		return PCI_ERS_RESULT_DISCONNECT;
+
 	ret = t3_adapter_error(adapter, 0);
 
 	/* Request a slot reset. */
maintainer Applied
#1 lore raw

From: Divy Le Ray <[email protected]>
Date: Fri, 17 Apr 2009 15:21:27 -0700

Quoted 7 lines

EEH attempts to recover up 6 times.
The last attempt leaves all the ports and adapter down.hen
The driver is then unloaded, bringing the adapter down again unconditionally. The unload will hang.
Check if the adapter is already down before trying to bring it down again.

Applied.