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 DDA6DA0093 for ; Tue, 19 May 2020 09:40:17 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C95EB1D177; Tue, 19 May 2020 09:40:17 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id BADEE1D177; Tue, 19 May 2020 09:40:15 +0200 (CEST) IronPort-SDR: 51DdqEuqprsd3y2OZJGJHZDcuZtypQERaeIPdE6M4gjPpYi7DRuCdYY3nlSbzS8urWXRYcblsJ rTFQ6tsVsyEQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 May 2020 00:40:14 -0700 IronPort-SDR: M84y23kvjXP4IbD/+AhX3C9wvDMFgSB+nyE1fL6yxKIIFk4n2Rx1VRFnRGvYlAWUnTCsQVQsHz p9VEx373pqEw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,409,1583222400"; d="scan'208";a="373647659" Received: from unknown (HELO localhost.localdomain.bj.intel.com) ([172.16.182.123]) by fmsmga001.fm.intel.com with ESMTP; 19 May 2020 00:40:13 -0700 From: Wei Zhao To: dev@dpdk.org Cc: stable@dpdk.org, beilei.xing@intel.com, jia.guo@intel.com, Wei Zhao Date: Tue, 19 May 2020 15:16:52 +0800 Message-Id: <20200519071652.26537-1-wei.zhao1@intel.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] [PATCH] net/i40e: fix flow FDIR enable issue 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: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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 FDRI for all queues. And also, disable FDIR for queues should be done in function i40e_flow_flush_fdir_filter(). Cc: stable@dpdk.org Fixes: 1491f63c7559 ("net/i40e: fix flush of flow director filter") Fixes: 6ae9b2b5e8c2 ("net/i40e: cache flow director enable value in Rx queue") Signed-off-by: Wei Zhao --- drivers/net/i40e/i40e_flow.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index 25c77e7aa..94fc73092 100644 --- a/drivers/net/i40e/i40e_flow.c +++ b/drivers/net/i40e/i40e_flow.c @@ -3462,6 +3462,12 @@ i40e_flow_parse_fdir_filter(struct rte_eth_dev *dev, } } + /* If the flow list is empty, it is the first time to create + * rule after flush fdir filter, so enable fdir. + */ + if (TAILQ_EMPTY(&pf->fdir.fdir_list)) + i40e_fdir_rx_proc_enable(dev, 1); + return 0; err: i40e_fdir_teardown(pf); @@ -5330,9 +5336,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 +5371,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