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

Reply via email to