mirror of
https://github.com/torvalds/linux.git
synced 2024-11-05 03:21:32 +00:00
e1000e: Fix for offline diag test failure at first call
Move link test call to later in the offline sequence, move the restore settings block to afterwards and add another reset to ensure the hardware is in a known state afterwards. Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com> Acked-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a7714338aa
commit
c6ce3854f0
@ -1717,13 +1717,6 @@ static void e1000_diag_test(struct net_device *netdev,
|
||||
|
||||
e_info("offline testing starting\n");
|
||||
|
||||
/*
|
||||
* Link test performed before hardware reset so autoneg doesn't
|
||||
* interfere with test result
|
||||
*/
|
||||
if (e1000_link_test(adapter, &data[4]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
if (if_running)
|
||||
/* indicate we're in test mode */
|
||||
dev_close(netdev);
|
||||
@ -1747,16 +1740,20 @@ static void e1000_diag_test(struct net_device *netdev,
|
||||
if (e1000_loopback_test(adapter, &data[3]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
/* restore speed, duplex, autoneg settings */
|
||||
adapter->hw.phy.autoneg_advertised = autoneg_advertised;
|
||||
adapter->hw.mac.forced_speed_duplex = forced_speed_duplex;
|
||||
adapter->hw.mac.autoneg = autoneg;
|
||||
|
||||
/* force this routine to wait until autoneg complete/timeout */
|
||||
adapter->hw.phy.autoneg_wait_to_complete = 1;
|
||||
e1000e_reset(adapter);
|
||||
adapter->hw.phy.autoneg_wait_to_complete = 0;
|
||||
|
||||
if (e1000_link_test(adapter, &data[4]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
/* restore speed, duplex, autoneg settings */
|
||||
adapter->hw.phy.autoneg_advertised = autoneg_advertised;
|
||||
adapter->hw.mac.forced_speed_duplex = forced_speed_duplex;
|
||||
adapter->hw.mac.autoneg = autoneg;
|
||||
e1000e_reset(adapter);
|
||||
|
||||
clear_bit(__E1000_TESTING, &adapter->state);
|
||||
if (if_running)
|
||||
dev_open(netdev);
|
||||
|
Loading…
Reference in New Issue
Block a user