diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 684af371462d..b858a1a79d0e 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -5018,6 +5018,7 @@ static void ixgbe_multispeed_fiber_task(struct work_struct *work) | |||
5018 | autoneg = hw->phy.autoneg_advertised; | 5018 | autoneg = hw->phy.autoneg_advertised; |
5019 | if ((!autoneg) && (hw->mac.ops.get_link_capabilities)) | 5019 | if ((!autoneg) && (hw->mac.ops.get_link_capabilities)) |
5020 | hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation); | 5020 | hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation); |
5021 | hw->mac.autotry_restart = false; | ||
5021 | if (hw->mac.ops.setup_link) | 5022 | if (hw->mac.ops.setup_link) |
5022 | hw->mac.ops.setup_link(hw, autoneg, negotiation, true); | 5023 | hw->mac.ops.setup_link(hw, autoneg, negotiation, true); |
5023 | adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE; | 5024 | adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE; |
@@ -6380,6 +6381,16 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev) | |||
6380 | del_timer_sync(&adapter->sfp_timer); | 6381 | del_timer_sync(&adapter->sfp_timer); |
6381 | cancel_work_sync(&adapter->watchdog_task); | 6382 | cancel_work_sync(&adapter->watchdog_task); |
6382 | cancel_work_sync(&adapter->sfp_task); | 6383 | cancel_work_sync(&adapter->sfp_task); |
6384 | if (adapter->hw.phy.multispeed_fiber) { | ||
6385 | struct ixgbe_hw *hw = &adapter->hw; | ||
6386 | /* | ||
6387 | * Restart clause 37 autoneg, disable and re-enable | ||
6388 | * the tx laser, to clear & alert the link partner | ||
6389 | * that it needs to restart autotry | ||
6390 | */ | ||
6391 | hw->mac.autotry_restart = true; | ||
6392 | hw->mac.ops.flap_tx_laser(hw); | ||
6393 | } | ||
6383 | cancel_work_sync(&adapter->multispeed_fiber_task); | 6394 | cancel_work_sync(&adapter->multispeed_fiber_task); |
6384 | cancel_work_sync(&adapter->sfp_config_module_task); | 6395 | cancel_work_sync(&adapter->sfp_config_module_task); |
6385 | if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE || | 6396 | if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE || |