[dpdk-dev,v1] ixgbe: fix link issue in loopback mode
Commit Message
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>
---
lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Comments
On Thu, Feb 05, 2015 at 04:45:18PM +0800, Cunming Liang wrote:
> 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>
> ---
> lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
> index b341dd0..d6d408e 100644
> --- a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
> +++ b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
> @@ -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;
> --
> 1.8.1.4
>
Acked-by: Patrick Lu <patrick.lu@intel.com>
> > 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>
Applied, thanks
@@ -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;