Hi Yanglong, I think the risk (or bug) is in ixgbevf_check_link(), not how to invoke this function(). Anyone who call ixgbevf_check_link() with "wait = 0", they must can't get right link status when 82599 use DA Cable.
In ixgbevf kernel driver, ixgbe_check_mac_link_vf(), "wait" didn't be referenced. What about reference to ixgbevf kernel driver, don't use "wait" parameter in ixgbevf_check_link()? Regards, Dong -----Original Message----- From: Wu, Yanglong Sent: Thursday, July 26, 2018 10:25 To: dev@dpdk.org Cc: Zhang, Qi Z <qi.z.zh...@intel.com>; Wang, Dong1 <dong1.w...@intel.com>; Wu, Yanglong <yanglong...@intel.com> Subject: [PATCH v3] net/ixgbe: fix ixgbevf link status ixgbevf can't get right link status unless it check PF link status in wait mode. Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") Signed-off-by: Yanglong Wu <yanglong...@intel.com> --- v3: change to wait mode in ixgbevf --- v2: no need to set link status again --- drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 26b192737..b90b352e3 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -4006,7 +4006,8 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, wait = 0; if (vf) - diag = ixgbevf_check_link(hw, &link_speed, &link_up, wait); + /* ixgbevf need to wait to get link status */ + diag = ixgbevf_check_link(hw, &link_speed, &link_up, 1); else diag = ixgbe_check_link(hw, &link_speed, &link_up, wait); -- 2.11.0