From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 2FCEB2FDD for ; Mon, 17 Jul 2017 09:12:26 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP; 17 Jul 2017 00:12:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,373,1496127600"; d="scan'208";a="108808495" Received: from dpdk9.sh.intel.com ([10.67.118.189]) by orsmga004.jf.intel.com with ESMTP; 17 Jul 2017 00:12:25 -0700 From: Beilei Xing To: jingjing.wu@intel.com Cc: stable@dpdk.org Date: Mon, 17 Jul 2017 15:13:07 +0800 Message-Id: <1500275587-76019-1-git-send-email-beilei.xing@intel.com> X-Mailer: git-send-email 2.5.5 Subject: [dpdk-stable] [PATCH] net/i40e: fix no response from kernel PF X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jul 2017 07:12:27 -0000 If using old kernel driver and using kernel PF and DPDK VF mode, VF fails to start due to incomplete command. The root cause is that old kernel driver doesn't support vlan stripping, when DPDK VF sends VIRTCHNL_OP_ENABLE_VLAN_STRIPPING to kernel PF, PF won't response to VF. This patch adds clearing command on VF side if PF won't response to VF, avoids blocking the following commands. Fixes: 5f0b95d59a98 ("net/i40e: support VLAN stripping for VF") Cc: stable@dpdk.org Signed-off-by: Beilei Xing --- drivers/net/i40e/i40e_ethdev_vf.c | 5 +++++ 1 file changed, 5 insertions(+) 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; } -- 2.5.5