From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15542A0093; Thu, 21 May 2020 10:26:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CD3241D66A; Thu, 21 May 2020 10:26:33 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 920C71D66A; Thu, 21 May 2020 10:26:31 +0200 (CEST) IronPort-SDR: +CV6WCya4pzTFp7/pwI+/kpAKUA3zE5y7EDsZiMxhGFo6JAXM2bTdA/1qG2HBpBNwcfLmtO4hF xe/jdwtbqhHg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2020 01:26:30 -0700 IronPort-SDR: hzD1SV46OHIcHHehvzV3AKm6DJLZYasWUNRfhdCETZdVnBauiTI5KfwiKvDSWd+ciJLvBizInc q9qALt2cdmHQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,417,1583222400"; d="scan'208";a="440361215" Received: from unknown (HELO localhost.localdomain.bj.intel.com) ([172.16.182.123]) by orsmga005.jf.intel.com with ESMTP; 21 May 2020 01:26:28 -0700 From: Wei Zhao To: dev@dpdk.org Cc: stable@dpdk.org, beilei.xing@intel.com, jia.guo@intel.com, xiaolong.ye@intel.com, Wei Zhao Date: Thu, 21 May 2020 16:03:06 +0800 Message-Id: <20200521080306.17404-1-wei.zhao1@intel.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20200519071652.26537-1-wei.zhao1@intel.com> References: <20200519071652.26537-1-wei.zhao1@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2] net/i40e: fix flow FDIR enable issue X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When we flush flow FDIR, all queues are disabled for FDIR. If FDIR rule is created again, then the flow list is empty, as it is the first time to create rule after flush fdir filter, so we need to enable FDIR for all queues. And also, disable FDIR for queues should be done in function i40e_flow_flush_fdir_filter(). Fixes: 1491f63c7559 ("net/i40e: fix flush of flow director filter") Fixes: 6ae9b2b5e8c2 ("net/i40e: cache flow director enable value in Rx queue") Cc: stable@dpdk.org Signed-off-by: Wei Zhao --- v2: update log info --- drivers/net/i40e/i40e_flow.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index 25c77e7aa..8f8df6fae 100644 --- a/drivers/net/i40e/i40e_flow.c +++ b/drivers/net/i40e/i40e_flow.c @@ -3462,6 +3462,10 @@ i40e_flow_parse_fdir_filter(struct rte_eth_dev *dev, } } + /* If create the first fdir rule, enable fdir check for rx queues */ + if (TAILQ_EMPTY(&pf->fdir.fdir_list)) + i40e_fdir_rx_proc_enable(dev, 1); + return 0; err: i40e_fdir_teardown(pf); @@ -5330,9 +5334,6 @@ i40e_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error) return -rte_errno; } - /* Disable FDIR processing as all FDIR rules are now flushed */ - i40e_fdir_rx_proc_enable(dev, 0); - return ret; } @@ -5368,6 +5369,9 @@ i40e_flow_flush_fdir_filter(struct i40e_pf *pf) for (pctype = I40E_FILTER_PCTYPE_NONF_IPV4_UDP; pctype <= I40E_FILTER_PCTYPE_L2_PAYLOAD; pctype++) pf->fdir.inset_flag[pctype] = 0; + + /* Disable FDIR processing as all FDIR rules are now flushed */ + i40e_fdir_rx_proc_enable(dev, 0); } return ret; -- 2.19.1