The PF control message will interrupt the assigning MAC address for VF when PF physical link down, and the VF reset operation returns the IXGBE_ERR_INVALID_MAC_ADDR. In this case, reuse the MAC address when device initialization insteads of waiting PF reassign.
Fixes: f69166c9a3c9 ("net/ixgbe: fix reset error handling") Signed-off-by: SteveX Yang <stevex.y...@intel.com> --- v2: update comment. --- drivers/net/ixgbe/ixgbe_ethdev.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index fd0cb9b0e..c2fa59c73 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -5326,10 +5326,17 @@ ixgbevf_dev_start(struct rte_eth_dev *dev) ixgbe_dev_wait_setup_link_complete(dev, 0); err = hw->mac.ops.reset_hw(hw); - if (err) { + + /* + * The VF reset operation returns the IXGBE_ERR_INVALID_MAC_ADDR when + * the underlying PF driver has not assigned a MAC address to the VF. + * In this case, reuses the MAC address from eth_ixgbevf_dev_init(). + */ + if (err != IXGBE_SUCCESS && err != IXGBE_ERR_INVALID_MAC_ADDR) { PMD_INIT_LOG(ERR, "Unable to reset vf hardware (%d)", err); return err; } + hw->mac.get_link_status = true; /* negotiate mailbox API version to use with the PF. */ -- 2.17.1