From: Guo Fengtian <fengtian....@6wind.com> When PF triggers a reset, VF port must acknowledge it by calling ixgbe_reset_hw().
Before this patch, the port link status, speed and duplex are invalid (all set to 0). The patch move the call to ixgbe_reset_hw() from ixgbevf_dev_close() to ixgbevf_dev_stop(), so that after a port restart on the VM, the link status is properly marked down, with correct speed and duplex. Fixes: f0160874c041 ("ixgbe: various updates") CC: sta...@dpdk.org Signed-off-by: Guo Fengtian <fengtian....@6wind.com> Signed-off-by: David Marchand <david.march...@6wind.com> Signed-off-by: Olivier Matz <olivier.m...@6wind.com> --- Hi, The use case for this problem was described some time ago, see: http://dpdk.org/ml/archives/dev/2015-December/030067.html It is also part of 2.2 release note: http://dpdk.org/browse/dpdk/tree/doc/guides/rel_notes/release_2_2.rst#n471 Regards, Olivier drivers/net/ixgbe/ixgbe_ethdev.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index b7ddd4f..2d8641a 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -4268,6 +4268,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); ixgbevf_intr_disable(hw); + ixgbe_reset_hw(hw); hw->adapter_stopped = 1; ixgbe_stop_adapter(hw); @@ -4294,12 +4295,8 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) static void ixgbevf_dev_close(struct rte_eth_dev *dev) { - struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - PMD_INIT_FUNC_TRACE(); - ixgbe_reset_hw(hw); - ixgbevf_dev_stop(dev); ixgbe_dev_free_queues(dev); -- 2.8.1