[v2] net/ixgbe: fix vf reset hw error handling

Message ID 20200908031705.14496-1-stevex.yang@intel.com (mailing list archive)
State Changes Requested, archived
Delegated to: Qi Zhang
Headers
Series [v2] net/ixgbe: fix vf reset hw error handling |

Checks

Context Check Description
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-testing success Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/checkpatch success coding style OK

Commit Message

Steve Yang Sept. 8, 2020, 3:17 a.m. UTC
  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.yang@intel.com>
---
v2:
update comment.
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
  

Comments

Guo, Jia Sept. 11, 2020, 6:24 a.m. UTC | #1
Hi, steve

> -----Original Message-----
> From: Yang, SteveX <stevex.yang@intel.com>
> Sent: Tuesday, September 8, 2020 11:17 AM
> To: dev@dpdk.org
> Cc: Zhao1, Wei <wei.zhao1@intel.com>; Guo, Jia <jia.guo@intel.com>; Yang,
> Qiming <qiming.yang@intel.com>; Yang, SteveX <stevex.yang@intel.com>
> Subject: [PATCH v2] net/ixgbe: fix vf reset hw error handling
> 
> 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.
> 

This commit log is not very clear and readable. I think as qiming said before, such as below should be enough, 
"When start a VF with no initial MAC address assigned by the underlying Host PF driver, just reuse the MAC address assigned when VF is initializing."

> Fixes: f69166c9a3c9 ("net/ixgbe: fix reset error handling")
> 
> Signed-off-by: SteveX Yang <stevex.yang@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) {
> +
> +	/*

Please use /** at the first line.

> +	 * 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().
> +	 */

"In this case, reuses the MAC address assigned by VF initialization.", please ref.

> +	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
  

Patch

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. */