e1000e: Simplify MSI interrupt testing
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>
This commit is contained in:
parent
bc0ed0be10
commit
068e8a3032
1 changed files with 4 additions and 25 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue