The code is quite convoluted, simplify it. This also avoids calling
e1000_request_irq() without testing the value it returned, which was
bad.

Signed-off-by: Jean Delvare <[email protected]>
Cc: Bruce Allan <[email protected]>
---
I understand that we need to request the IRQ again after testing, but
why doing it twice?

 drivers/net/e1000e/netdev.c |   29 ++++-------------------------
 1 file changed, 4 insertions(+), 25 deletions(-)

--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -3385,22 +3385,16 @@ static int e1000_test_msi_interrupt(stru
 
        if (adapter->flags & FLAG_MSI_TEST_FAILED) {
                adapter->int_mode = E1000E_INT_MODE_LEGACY;
-               err = -EIO;
-               e_info("MSI interrupt test failed!\n");
-       }
+               e_info("MSI interrupt test failed, using legacy interrupt.\n");
+       } else
+               e_dbg("MSI interrupt test succeeded!\n");
 
        free_irq(adapter->pdev->irq, netdev);
        pci_disable_msi(adapter->pdev);
 
-       if (err == -EIO)
-               goto msi_test_failed;
-
-       /* okay so the test worked, restore settings */
-       e_dbg("MSI interrupt test succeeded!\n");
 msi_test_failed:
        e1000e_set_interrupt_capability(adapter);
-       e1000_request_irq(adapter);
-       return err;
+       return e1000_request_irq(adapter);
 }
 
 /**
@@ -3432,21 +3426,6 @@ static int e1000_test_msi(struct e1000_a
                pci_write_config_word(adapter->pdev, PCI_COMMAND, pci_cmd);
        }
 
-       /* success ! */
-       if (!err)
-               return 0;
-
-       /* EIO means MSI test failed */
-       if (err != -EIO)
-               return err;
-
-       /* back to INTx mode */
-       e_warn("MSI interrupt test failed, using legacy interrupt.\n");
-
-       e1000_free_irq(adapter);
-
-       err = e1000_request_irq(adapter);
-
        return err;
 }
 

-- 
Jean Delvare
Suse L3

------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to