[dpdk-dev] [PATCH v3 2/2] net/ice: refactor input set fields for switch filter

Zhang, Qi Z qi.z.zhang at intel.com
Mon Apr 26 03:47:51 CEST 2021



> -----Original Message-----
> From: Zhang, Yuying <yuying.zhang at intel.com>
> Sent: Sunday, April 25, 2021 9:29 PM
> To: dev at dpdk.org; Zhang, Qi Z <qi.z.zhang at intel.com>; Wang, Haiyue
> <haiyue.wang at intel.com>
> Cc: Yan, Zhirun <zhirun.yan at intel.com>; Guo, Junfeng
> <junfeng.guo at intel.com>; Zhang, Yuying <yuying.zhang at intel.com>
> Subject: [PATCH v3 2/2] net/ice: refactor input set fields for switch filter
> 
> Input set has been divided into inner and outer part to distinguish
> different fields. However, the parse method of switch filter doesn't
> match this update. Refactor switch filter to distingush inner and outer
> input set in the same way as other filters.
> 
> Signed-off-by: Yuying Zhang <yuying.zhang at intel.com>
> ---
>  drivers/net/ice/ice_switch_filter.c | 746 ++++++++++++----------------
>  1 file changed, 323 insertions(+), 423 deletions(-)
> 
> 

......
> 
> -static uint64_t
> -ice_switch_inset_get(const struct rte_flow_item pattern[],
> +static bool
> +ice_switch_parse_pattern(const struct rte_flow_item pattern[],
>  		struct rte_flow_error *error,
>  		struct ice_adv_lkup_elem *list,
>  		uint16_t *lkups_num,
> -		enum ice_sw_tunnel_type *tun_type)
> +		enum ice_sw_tunnel_type *tun_type,
> +		const struct ice_pattern_match_item pattern_match_item)

Better to parse const pointer, but not struct value

const struct ice_pattern_match_item *pattern_match_item

>  {
>  	const struct rte_flow_item *item = pattern;
>  	enum rte_flow_item_type item_type;
> @@ -504,7 +456,9 @@ ice_switch_inset_get(const struct rte_flow_item
> pattern[],
>  	const struct rte_flow_item_pfcp *pfcp_spec, *pfcp_mask;
>  	const struct rte_flow_item_gtp *gtp_spec, *gtp_mask;
>  	const struct rte_flow_item_gtp_psc *gtp_psc_spec, *gtp_psc_mask;
> -	uint64_t input_set = ICE_INSET_NONE;
> +	uint64_t outer_input_set = ICE_INSET_NONE;
> +	uint64_t inner_input_set = ICE_INSET_NONE;
> +	uint64_t *input = NULL;

Why we need pointer here?

Can we:

if (tunnel_valid) {
	...
	input_set = inner_input_set;
} else {
	...
	input_set = outer_input_set;
} 

.......
> 
> -	inputset = ice_switch_inset_get
> -		(pattern, error, list, &lkups_num, &tun_type);
> -	if ((!inputset && !ice_is_prof_rule(tun_type)) ||
> -		(inputset & ~pattern_match_item->input_set_mask_o)) {
> +	if (ice_switch_parse_pattern(pattern, error, list, &lkups_num,
> +				   &tun_type, *pattern_match_item) == false) {

No need "==false", use ! for Boolean.

>  		rte_flow_error_set(error, EINVAL,
>  				   RTE_FLOW_ERROR_TYPE_ITEM_SPEC,
>  				   pattern,
> --
> 2.25.1



More information about the dev mailing list