[dpdk-dev] ixgbe: fix link speed detection of ixgbevf

Message ID 1415538088-11249-1-git-send-email-choonho.son@gmail.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Choonho Son Nov. 9, 2014, 1:01 p.m. UTC
  Link speed of virtual function is detected as default speed(100Mbps, half-duplex).
Before checking VF link, get_link_status must be set.

Checking link status
PMD: ixgbe_check_for_rst_vf(): ixgbe_check_for_rst_vf
done
PMD: ixgbe_check_for_rst_vf(): ixgbe_check_for_rst_vf
Port 0 Link Up - speed 100 Mbps - half-duplex

Signed-off-by: Choonho Son <choonho.son@gmail.com>
---
 lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Balazs Nemeth Dec. 19, 2014, 10:07 a.m. UTC | #1
This patch is actually a workaround to the problem. By setting
get_link_status just before calling ixgbe_check_link defeats the whole
purpose of the variable and results in _always_ getting the link
status. I think that this patch should be superseded by the following
patch:

http://dpdk.org/dev/patchwork/patch/2104/
  

Patch

diff --git a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
index 9c73a30..6eab1e8 100644
--- a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
+++ b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
@@ -2002,6 +2002,7 @@  ixgbe_dev_link_update(struct rte_eth_dev *dev, int wait_to_complete)
 	memset(&old, 0, sizeof(old));
 	rte_ixgbe_dev_atomic_read_link_status(dev, &old);
 
+	hw->mac.get_link_status = 1;
 	/* check if it needs to wait to complete, if lsc interrupt is enabled */
 	if (wait_to_complete == 0 || dev->data->dev_conf.intr_conf.lsc != 0)
 		diag = ixgbe_check_link(hw, &link_speed, &link_up, 0);