Thomas, I'm seeing an issue with ixgbevf speed/duplex reporting that appears to have been introduced with commit 8ef32003772a14c61c70b540e41c259c482c2fb6 (http://www.dpdk.org/browse/dpdk/commit/lib/librte_pmd_ixgbe/ixgbe/ixgbe_vf.c?id=8ef32003772a14c61c70b540e41c259c482c2fb6)
The issue I'm seeing seems to involve the following code. If I'm reading this correctly, one sets "mac->get_link_status = true" if the port is not OK, where "true" means that one still needs to get the link status. Due to the added test "if (!mac->get_link_status)", one branches to the early exit if mac->get_link_status is false---meaning we have already obtained the link status---instead of continuing with the analysis in the function body. - if (!(hw->mbx.ops.check_for_rst(hw, 0))) { - *link_up = false; - *speed = 0; - return -1; - } + /* If we were hit with a reset drop the link */ + if (!mbx->ops.check_for_rst(hw, 0) || !mbx->timeout) + mac->get_link_status = true; - links_reg = IXGBE_VFREAD_REG(hw, IXGBE_VFLINKS); + if (!mac->get_link_status) + goto out; When I run "testpmd" on ixgbevf ports either in the host OS or passed through to a virtual machine, "testpmd" reports that the ixgbevf ports have "speed 100 Mbps - half-duplex". With the previous code (or with my patch), "testpmd" reports "speed 10000 Mbps - full-duplex". - Lee Roberts