[dpdk-dev] net/i40e: fix virtchnl message response timeout

Message ID 1500276789-90626-1-git-send-email-beilei.xing@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

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

Commit Message

Xing, Beilei July 17, 2017, 7:33 a.m. UTC
  PF driver and VF driver communicated with each other by virtual
channel message. When VF sends message to PF to enable some
offload capability, PF should response if it is successful or not.
VIRTCHNL_OP_ENABLE_VLAN_STRIPPING is a new added message and the
old PF driver doesn’t support that. So no response is received by
DPDK VF. Then VF is blocked on this message and cannot roll back.
This patch clears pending command on VF side when the waiting duration
expires to avoid blocking following communication.

Fixes: 5f0b95d59a98 ("net/i40e: support VLAN stripping for VF")
Cc: stable@dpdk.org

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 5 +++++
 1 file changed, 5 insertions(+)
  

Comments

Ferruh Yigit July 18, 2017, 11:15 a.m. UTC | #1
On 7/17/2017 8:33 AM, Beilei Xing wrote:
> PF driver and VF driver communicated with each other by virtual
> channel message. When VF sends message to PF to enable some
> offload capability, PF should response if it is successful or not.
> VIRTCHNL_OP_ENABLE_VLAN_STRIPPING is a new added message and the
> old PF driver doesn’t support that. So no response is received by
> DPDK VF. Then VF is blocked on this message and cannot roll back.
> This patch clears pending command on VF side when the waiting duration
> expires to avoid blocking following communication.
> 
> Fixes: 5f0b95d59a98 ("net/i40e: support VLAN stripping for VF")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Beilei Xing <beilei.xing@intel.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index bab09f8..cdeb6ce 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -392,6 +392,11 @@  i40evf_execute_vf_cmd(struct rte_eth_dev *dev, struct vf_cmd_info *args)
 			rte_delay_ms(ASQ_DELAY_MS);
 			/* If don't read msg or read sys event, continue */
 		} while (i++ < MAX_TRY_TIMES);
+		/* If there's no response is received, clear command */
+		if (i >= MAX_TRY_TIMES) {
+			PMD_DRV_LOG(WARNING, "No response for %d", args->ops);
+			_clear_cmd(vf);
+		}
 		break;
 	}