> -----Original Message-----
> From: Zhang, Yuying <yuying.zh...@intel.com>
> Sent: Sunday, April 25, 2021 9:29 PM
> To: dev@dpdk.org; Zhang, Qi Z <qi.z.zh...@intel.com>; Wang, Haiyue
> <haiyue.w...@intel.com>
> Cc: Yan, Zhirun <zhirun....@intel.com>; Guo, Junfeng
> <junfeng....@intel.com>; Zhang, Yuying <yuying.zh...@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.zh...@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

Reply via email to