static void ixgbe_init_mac_link_ops_82599(struct ixgbe_hw *hw)
 {
        struct ixgbe_mac_info *mac = &hw->mac;
-       if (hw->phy.multispeed_fiber) {
-               /* Set up dual speed SFP+ support */
-               mac->ops.setup_link = &ixgbe_setup_mac_link_multispeed_fiber;
+
+       /* enable the laser control functions for SFP+ fiber */
+       if (mac->ops.get_media_type(hw) == ixgbe_media_type_fiber) {
                mac->ops.disable_tx_laser =
                                       &ixgbe_disable_tx_laser_multispeed_fiber;
                mac->ops.enable_tx_laser =
                mac->ops.disable_tx_laser = NULL;
                mac->ops.enable_tx_laser = NULL;
                mac->ops.flap_tx_laser = NULL;
+       }
+
+       if (hw->phy.multispeed_fiber) {
+               /* Set up dual speed SFP+ support */
+               mac->ops.setup_link = &ixgbe_setup_mac_link_multispeed_fiber;
+       } else {
                if ((mac->ops.get_media_type(hw) ==
                     ixgbe_media_type_backplane) &&
                    (hw->phy.smart_speed == ixgbe_smart_speed_auto ||
 
        else
                ixgbe_configure_msi_and_legacy(adapter);
 
-       /* enable the optics */
-       if (hw->phy.multispeed_fiber && hw->mac.ops.enable_tx_laser)
+       /* enable the optics for both mult-speed fiber and 82599 SFP+ fiber */
+       if (hw->mac.ops.enable_tx_laser &&
+           ((hw->phy.multispeed_fiber) ||
+            ((hw->phy.type == ixgbe_media_type_fiber) &&
+             (hw->mac.type == ixgbe_mac_82599EB))))
                hw->mac.ops.enable_tx_laser(hw);
 
        clear_bit(__IXGBE_DOWN, &adapter->state);
                break;
        }
 
-       /* power down the optics */
-       if (hw->phy.multispeed_fiber && hw->mac.ops.disable_tx_laser)
-               hw->mac.ops.disable_tx_laser(hw);
-
        /* clear n-tuple filters that are cached */
        ethtool_ntuple_flush(netdev);
 
        if (!pci_channel_offline(adapter->pdev))
                ixgbe_reset(adapter);
+
+       /* power down the optics for multispeed fiber and 82599 SFP+ fiber */
+       if (hw->mac.ops.disable_tx_laser &&
+           ((hw->phy.multispeed_fiber) ||
+            ((hw->phy.type == ixgbe_media_type_fiber) &&
+             (hw->mac.type == ixgbe_mac_82599EB))))
+               hw->mac.ops.disable_tx_laser(hw);
+
        ixgbe_clean_all_tx_rings(adapter);
        ixgbe_clean_all_rx_rings(adapter);
 
                goto err_eeprom;
        }
 
-       /* power down the optics */
-       if (hw->phy.multispeed_fiber && hw->mac.ops.disable_tx_laser)
+       /* power down the optics for multispeed fiber and 82599 SFP+ fiber */
+       if (hw->mac.ops.disable_tx_laser &&
+           ((hw->phy.multispeed_fiber) ||
+            ((hw->phy.type == ixgbe_media_type_fiber) &&
+             (hw->mac.type == ixgbe_mac_82599EB))))
                hw->mac.ops.disable_tx_laser(hw);
 
        init_timer(&adapter->watchdog_timer);