[dpdk-dev] [PATCH] net/ice: support mark only action for FDIR

Zhang, Qi Z qi.z.zhang at intel.com
Tue Apr 14 09:49:20 CEST 2020



> -----Original Message-----
> From: Su, Simei <simei.su at intel.com>
> Sent: Thursday, April 2, 2020 2:56 PM
> To: Zhang, Qi Z <qi.z.zhang at intel.com>; Ye, Xiaolong <xiaolong.ye at intel.com>
> Cc: dev at dpdk.org; Cao, Yahui <yahui.cao at intel.com>; Su, Simei
> <simei.su at intel.com>; stable at dpdk.org
> Subject: [PATCH] net/ice: support mark only action for FDIR
> 
> This patch fixes issue that doesn't support mark only case.
> Mark only action is equal to mark + passthru action.
> 
> Fixes: f5cafa961fae ("net/ice: add flow director create and destroy")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Simei Su <simei.su at intel.com>
> ---
>  drivers/net/ice/ice_fdir_filter.c | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
> index a082a13..8acdb1a 100644
> --- a/drivers/net/ice/ice_fdir_filter.c
> +++ b/drivers/net/ice/ice_fdir_filter.c
> @@ -1469,6 +1469,10 @@
>  	uint32_t counter_num = 0;
>  	int ret;
> 
> +	/* set default action to PASSTHRU mode, in the case of MARK only. */
> +	filter->input.dest_ctl =
> +		ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;

Should we also consider the case "Count only",
I will suggest move above code to after all the action has been iterated and all criteria check has passed
Then only set destination to PASSTHROUGH for no destination case.

 If (dest_num == 0)
	filter->input.dest_ctl = ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;

> +
>  	for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
>  		switch (actions->type) {
>  		case RTE_FLOW_ACTION_TYPE_VOID:
> @@ -1533,7 +1537,7 @@
>  		}
>  	}
> 
> -	if (dest_num == 0 || dest_num >= 2) {
> +	if (dest_num >= 2) {
>  		rte_flow_error_set(error, EINVAL,
>  			   RTE_FLOW_ERROR_TYPE_ACTION, actions,
>  			   "Unsupported action combination"); @@ -1554,6 +1558,13
> @@
>  		return -rte_errno;
>  	}
> 
> +	if (dest_num + mark_num == 0) {
> +		rte_flow_error_set(error, EINVAL,
> +			RTE_FLOW_ERROR_TYPE_ACTION, actions,
> +			"Emtpy action");
> +		return -rte_errno;
> +	}
> +
>  	return 0;
>  }
> 
> --
> 1.8.3.1



More information about the dev mailing list