Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jean Delvare and committed by
David S. Miller
068e8a30 bc0ed0be

+4 -25
+4 -25
drivers/net/e1000e/netdev.c
··· 3412 3412 3413 3413 if (adapter->flags & FLAG_MSI_TEST_FAILED) { 3414 3414 adapter->int_mode = E1000E_INT_MODE_LEGACY; 3415 - err = -EIO; 3416 - e_info("MSI interrupt test failed!\n"); 3417 - } 3415 + e_info("MSI interrupt test failed, using legacy interrupt.\n"); 3416 + } else 3417 + e_dbg("MSI interrupt test succeeded!\n"); 3418 3418 3419 3419 free_irq(adapter->pdev->irq, netdev); 3420 3420 pci_disable_msi(adapter->pdev); 3421 3421 3422 - if (err == -EIO) 3423 - goto msi_test_failed; 3424 - 3425 - /* okay so the test worked, restore settings */ 3426 - e_dbg("MSI interrupt test succeeded!\n"); 3427 3422 msi_test_failed: 3428 3423 e1000e_set_interrupt_capability(adapter); 3429 - e1000_request_irq(adapter); 3430 - return err; 3424 + return e1000_request_irq(adapter); 3431 3425 } 3432 3426 3433 3427 /** ··· 3452 3458 pci_cmd |= PCI_COMMAND_SERR; 3453 3459 pci_write_config_word(adapter->pdev, PCI_COMMAND, pci_cmd); 3454 3460 } 3455 - 3456 - /* success ! */ 3457 - if (!err) 3458 - return 0; 3459 - 3460 - /* EIO means MSI test failed */ 3461 - if (err != -EIO) 3462 - return err; 3463 - 3464 - /* back to INTx mode */ 3465 - e_warn("MSI interrupt test failed, using legacy interrupt.\n"); 3466 - 3467 - e1000_free_irq(adapter); 3468 - 3469 - err = e1000_request_irq(adapter); 3470 3461 3471 3462 return err; 3472 3463 }