Subject: [PATCH] e1000: Reset all functions after a PCI error

From: [email-masked] (Linas Vepstas)
Date: Tue, 17 Oct 2006 15:42:06 -0500

Please apply and forward upstream.

--linas

During the handling of the PCI error recovery sequence,
the current e1000 driver erroneously blocks a device reset
for any but the first PCI function. It shouldn't -- this 
is a cut-n-paste error from a different driver (which
tolerated only one hardware reset per hardware card). 

Signed-off-by: Linas Vepstas <[email-masked]>
Cc: Jesse Brandeburg <[email-masked]>
Cc: Auke Kok <[email-masked]>

----
 drivers/net/e1000/e1000_main.c |    4 ----
 1 file changed, 4 deletions(-)

Index: linux-2.6.19-rc1-git11/drivers/net/e1000/e1000_main.c
===================================================================
--- linux-2.6.19-rc1-git11.orig/drivers/net/e1000/e1000_main.c	2006-10-17 15:02:25.000000000 -0500
+++ linux-2.6.19-rc1-git11/drivers/net/e1000/e1000_main.c	2006-10-17 15:03:35.000000000 -0500
@@ -4914,10 +4914,6 @@ static pci_ers_result_t e1000_io_slot_re
 	pci_enable_wake(pdev, PCI_D3hot, 0);
 	pci_enable_wake(pdev, PCI_D3cold, 0);
 
-	/* Perform card reset only on one instance of the card */
-	if (PCI_FUNC (pdev->devfn) != 0)
-		return PCI_ERS_RESULT_RECOVERED;
-
 	e1000_reset(adapter);
 	E1000_WRITE_REG(&adapter->hw, WUS, ~0);