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

Jeff Guo jia.guo at intel.com
Wed May 20 05:18:54 CEST 2020


hi, zhaowei

On 5/19/2020 3:16 PM, Wei Zhao wrote:
> 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


typo: FDRI -> FDIR, and could you modify something commit if you agree 
on below inline comment. Thanks.


> 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.
> +	 */


So either flush fdir filter or destroy the last fdir, it will result the 
flow list to be empty, could it simply as "If create the first fdir 
rule, enable fdir" or?


> +	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;


More information about the dev mailing list