Skip to content

Commit

Permalink
e1000e: Simplify MSI interrupt testing
Browse files Browse the repository at this point in the history
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 <jdelvare@suse.de>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jean Delvare authored and David S. Miller committed Sep 14, 2010
1 parent bc0ed0b commit 068e8a3
Showing 1 changed file with 4 additions and 25 deletions.
29 changes: 4 additions & 25 deletions drivers/net/e1000e/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -3412,22 +3412,16 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)

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);
}

/**
Expand Down Expand Up @@ -3459,21 +3453,6 @@ static int e1000_test_msi(struct e1000_adapter *adapter)
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;
}

Expand Down

0 comments on commit 068e8a3

Please sign in to comment.