struct mlx5dr_action *
 mlx5dr_action_create_mult_dest_tbl(struct mlx5dr_domain *dmn,
                                   struct mlx5dr_action_dest *dests,
-                                  u32 num_of_dests)
+                                  u32 num_of_dests,
+                                  bool ignore_flow_level)
 {
        struct mlx5dr_cmd_flow_destination_hw_info *hw_dests;
        struct mlx5dr_action **ref_actions;
                                      num_of_dests,
                                      reformat_req,
                                      &action->dest_tbl->fw_tbl.id,
-                                     &action->dest_tbl->fw_tbl.group_id);
+                                     &action->dest_tbl->fw_tbl.group_id,
+                                     ignore_flow_level);
        if (ret)
                goto free_action;
 
 
        MLX5_SET(set_fte_in, in, table_type, ft->type);
        MLX5_SET(set_fte_in, in, table_id, ft->id);
        MLX5_SET(set_fte_in, in, flow_index, fte->index);
+       MLX5_SET(set_fte_in, in, ignore_flow_level, fte->ignore_flow_level);
        if (ft->vport) {
                MLX5_SET(set_fte_in, in, vport_number, ft->vport);
                MLX5_SET(set_fte_in, in, other_vport, 1);
 
                            int num_dest,
                            bool reformat_req,
                            u32 *tbl_id,
-                           u32 *group_id)
+                           u32 *group_id,
+                           bool ignore_flow_level)
 {
        struct mlx5dr_cmd_create_flow_table_attr ft_attr = {};
        struct mlx5dr_cmd_fte_info fte_info = {};
        fte_info.dests_size = num_dest;
        fte_info.val = val;
        fte_info.dest_arr = dest;
+       fte_info.ignore_flow_level = ignore_flow_level;
 
        ret = mlx5dr_cmd_set_fte(dmn->mdev, 0, 0, &ft_info, *group_id, &fte_info);
        if (ret) {
 
        u32 *val;
        struct mlx5_flow_act action;
        struct mlx5dr_cmd_flow_destination_hw_info *dest_arr;
+       bool ignore_flow_level;
 };
 
 int mlx5dr_cmd_set_fte(struct mlx5_core_dev *dev,
                            int num_dest,
                            bool reformat_req,
                            u32 *tbl_id,
-                           u32 *group_id);
+                           u32 *group_id,
+                           bool ignore_flow_level);
 void mlx5dr_fw_destroy_md_tbl(struct mlx5dr_domain *dmn, u32 tbl_id,
                              u32 group_id);
 #endif  /* _DR_TYPES_H_ */
 
 
                actions[num_actions++] = term_actions->dest;
        } else if (num_term_actions > 1) {
+               bool ignore_flow_level =
+                       !!(fte->action.flags & FLOW_ACT_IGNORE_FLOW_LEVEL);
+
                tmp_action = mlx5dr_action_create_mult_dest_tbl(domain,
                                                                term_actions,
-                                                               num_term_actions);
+                                                               num_term_actions,
+                                                               ignore_flow_level);
                if (!tmp_action) {
                        err = -EOPNOTSUPP;
                        goto free_actions;
 
 struct mlx5dr_action *
 mlx5dr_action_create_mult_dest_tbl(struct mlx5dr_domain *dmn,
                                   struct mlx5dr_action_dest *dests,
-                                  u32 num_of_dests);
+                                  u32 num_of_dests,
+                                  bool ignore_flow_level);
 
 struct mlx5dr_action *mlx5dr_action_create_drop(void);