ixgbe: fix link issue in loopback mode
authorCunming Liang <cunming.liang@intel.com>
Thu, 5 Feb 2015 08:45:18 +0000 (16:45 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 15 Feb 2015 16:09:31 +0000 (17:09 +0100)
In loopback mode, it's expected force link up even when there's no cable connect.
But in codes, setup_sfp() rewrites the related register.
It causes in the case 'multispeed_fiber', it can't link up without cable connect.

Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: Patrick Lu <patrick.lu@intel.com>
lib/librte_pmd_ixgbe/ixgbe_ethdev.c

index b341dd0..d6d408e 100644 (file)
@@ -1501,6 +1501,11 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
                goto error;
        }
 
+       /* Skip link setup if loopback mode is enabled for 82599. */
+       if (hw->mac.type == ixgbe_mac_82599EB &&
+                       dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX)
+               goto skip_link_setup;
+
        if (ixgbe_is_sfp(hw) && hw->phy.multispeed_fiber) {
                err = hw->mac.ops.setup_sfp(hw);
                if (err)
@@ -1510,11 +1515,6 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
        /* Turn on the laser */
        ixgbe_enable_tx_laser(hw);
 
-       /* Skip link setup if loopback mode is enabled for 82599. */
-       if (hw->mac.type == ixgbe_mac_82599EB &&
-                       dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX)
-               goto skip_link_setup;
-
        err = ixgbe_check_link(hw, &speed, &link_up, 0);
        if (err)
                goto error;