[dpdk-dev] [PATCH] net/i40e: fix flow FDIR enable issue

Cui, LunyuanX lunyuanx.cui at intel.com
Tue May 19 11:36:31 CEST 2020


Tested-by: Cui, Lunyuan <lunyuanx.cui at intel.com>

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Wei Zhao
> Sent: Tuesday, May 19, 2020 3:17 PM
> To: dev at dpdk.org
> Cc: stable at dpdk.org; Xing, Beilei <beilei.xing at intel.com>; Guo, Jia
> <jia.guo at intel.com>; Zhao1, Wei <wei.zhao1 at intel.com>
> Subject: [dpdk-dev] [PATCH] net/i40e: fix flow FDIR enable issue
> 
> 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 at 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 <wei.zhao1 at intel.com>
> ---
>  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



More information about the dev mailing list