[dpdk-dev,v1] ixgbe: fix link issue in loopback mode

Message ID 1423125918-31757-1-git-send-email-cunming.liang@intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Cunming Liang Feb. 5, 2015, 8:45 a.m. UTC
  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

Patrick Lu Feb. 9, 2015, 3:52 p.m. UTC | #1
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>
  
Thomas Monjalon Feb. 15, 2015, 4:10 p.m. UTC | #2
> > 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
  

Patch

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;