After ports reset, tx laser register will be reset. The link status for 82599eb got from link status register was not correct. Set tx laser disable when port resets.
ixgbe_flap_tx_laser_multispeed_fiber() can cause link status change from down to up. This treatment should work after port starts. Fixes: 0408f47ba4d6 ("net/ixgbe: fix busy polling while fiber link update") Cc: sta...@dpdk.org Signed-off-by: Lunyuan Cui <lunyuanx....@intel.com> --- v3: * Correct countermeasure Don't delete ixgbe_dev_setup_link_alarm_handler(). v2: * Change commit log Add a log why I delete ixgbe_dev_setup_link_alarm_handler(). --- drivers/net/ixgbe/ixgbe_ethdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 8c1caac18..260484fbf 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -1188,6 +1188,7 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused) diag = ixgbe_bypass_init_hw(hw); #else diag = ixgbe_init_hw(hw); + hw->mac.autotry_restart = false; #endif /* RTE_LIBRTE_IXGBE_BYPASS */ /* @@ -1298,6 +1299,8 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused) /* enable support intr */ ixgbe_enable_intr(eth_dev); + ixgbe_dev_set_link_down(eth_dev); + /* initialize filter info */ memset(filter_info, 0, sizeof(struct ixgbe_filter_info)); -- 2.17.1