[dpdk-dev] net/i40e: revert fix of PF notify issue when VF not up

Message ID 1501861806-92194-1-git-send-email-xiaoyun.li@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Li, Xiaoyun Aug. 4, 2017, 3:50 p.m. UTC
  This reverts commit 035a8cf88f010c82de3040c895c801ce0849b065.
Don't send messages to inactive VF will cause DPDK PF failing
to send messages to kernel VF.
With this revert, this issue will be solved.

commit 035a8cf88f01 ("net/i40e: fix PF notify when VF is not up")
Cc: stable@dpdk.org

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
---
 drivers/net/i40e/i40e_pf.c | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)
  

Comments

Xing, Beilei Aug. 4, 2017, 8:40 a.m. UTC | #1
> -----Original Message-----
> From: Li, Xiaoyun
> Sent: Friday, August 4, 2017 11:50 PM
> To: Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>
> Cc: dev@dpdk.org; Li, Xiaoyun <xiaoyun.li@intel.com>; stable@dpdk.org
> Subject: [PATCH] net/i40e: revert fix of PF notify issue when VF not up
> 
> This reverts commit 035a8cf88f010c82de3040c895c801ce0849b065.
> Don't send messages to inactive VF will cause DPDK PF failing to send
> messages to kernel VF.
> With this revert, this issue will be solved.
> 
> commit 035a8cf88f01 ("net/i40e: fix PF notify when VF is not up")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>

Acked-by: Beilei Xing <beilei.xing@intel.com>
  
Thomas Monjalon Aug. 4, 2017, 11:30 p.m. UTC | #2
> > This reverts commit 035a8cf88f010c82de3040c895c801ce0849b065.
> > Don't send messages to inactive VF will cause DPDK PF failing to send
> > messages to kernel VF.
> > With this revert, this issue will be solved.
> > 
> > commit 035a8cf88f01 ("net/i40e: fix PF notify when VF is not up")
> > Cc: stable@dpdk.org
> > 
> > Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
> 
> Acked-by: Beilei Xing <beilei.xing@intel.com>

Applied. Never a good news to revert a fix.
Hope it will be fixed properly in next release.
  

Patch

diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index e64f849..100f8dc 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -152,21 +152,20 @@  i40e_pf_host_vf_reset(struct i40e_pf_vf *vf, bool do_hw_reset)
 		val |= I40E_VPGEN_VFRTRIG_VFSWR_MASK;
 		I40E_WRITE_REG(hw, I40E_VPGEN_VFRTRIG(vf_id), val);
 		I40E_WRITE_FLUSH(hw);
+	}
 
 #define VFRESET_MAX_WAIT_CNT 100
-		/* Wait until VF reset is done */
-		for (i = 0; i < VFRESET_MAX_WAIT_CNT; i++) {
-			rte_delay_us(10);
-			val = I40E_READ_REG(hw, I40E_VPGEN_VFRSTAT(vf_id));
-			if (val & I40E_VPGEN_VFRSTAT_VFRD_MASK)
-				break;
-		}
+	/* Wait until VF reset is done */
+	for (i = 0; i < VFRESET_MAX_WAIT_CNT; i++) {
+		rte_delay_us(10);
+		val = I40E_READ_REG(hw, I40E_VPGEN_VFRSTAT(vf_id));
+		if (val & I40E_VPGEN_VFRSTAT_VFRD_MASK)
+			break;
+	}
 
-		if (i >= VFRESET_MAX_WAIT_CNT) {
-			PMD_DRV_LOG(ERR, "VF reset timeout");
-			return -ETIMEDOUT;
-		}
-		vf->state = I40E_VF_ACTIVE;
+	if (i >= VFRESET_MAX_WAIT_CNT) {
+		PMD_DRV_LOG(ERR, "VF reset timeout");
+		return -ETIMEDOUT;
 	}
 	/* This is not first time to do reset, do cleanup job first */
 	if (vf->vsi) {
@@ -262,10 +261,7 @@  i40e_pf_host_send_msg_to_vf(struct i40e_pf_vf *vf,
 {
 	struct i40e_hw *hw = I40E_PF_TO_HW(vf->pf);
 	uint16_t abs_vf_id = hw->func_caps.vf_base_id + vf->vf_idx;
-	int ret = I40E_ERR_ADMIN_QUEUE_ERROR;
-
-	if (vf->state == I40E_VF_INACTIVE)
-		return ret;
+	int ret;
 
 	ret = i40e_aq_send_msg_to_vf(hw, abs_vf_id, opcode, retval,
 						msg, msglen, NULL);