+}
+
+static int
+ice_fdir_input_set_conf(struct ice_pf *pf, enum ice_fltr_ptype flow,
+ uint64_t inner_input_set, uint64_t outer_input_set,
+ enum ice_fdir_tunnel_type ttype)
+{
+ struct ice_flow_seg_info *seg;
+ struct ice_flow_seg_info *seg_tun = NULL;
+ enum ice_flow_field field[ICE_FLOW_FIELD_IDX_MAX];
+ uint64_t input_set;
+ bool is_tunnel;
+ int k, i, ret = 0;
+
+ if (!(inner_input_set | outer_input_set))
+ return -EINVAL;
+
+ seg_tun = (struct ice_flow_seg_info *)
+ ice_malloc(hw, sizeof(*seg_tun) * ICE_FD_HW_SEG_MAX);
+ if (!seg_tun) {
+ PMD_DRV_LOG(ERR, "No memory can be allocated");
+ return -ENOMEM;
+ }
+
+ /* use seg_tun[1] to record tunnel inner part or non-tunnel */
+ for (k = 0; k <= ICE_FD_HW_SEG_TUN; k++) {
+ seg = &seg_tun[k];
+ input_set = (k == ICE_FD_HW_SEG_TUN) ? inner_input_set : outer_input_set;
+ if (input_set == 0)
+ continue;
+
+ for (i = 0; i < ICE_FLOW_FIELD_IDX_MAX; i++)
+ field[i] = ICE_FLOW_FIELD_IDX_MAX;