goto exit;
                }
                /* Add the prefix subflow. */
-               flow_split_info->prefix_mark = 0;
                skip_scale_restore = flow_split_info->skip_scale;
                flow_split_info->skip_scale |=
                        1 << MLX5_SCALE_JUMP_FLOW_GROUP_BIT;
                                 MLX5_FLOW_TABLE_LEVEL_METER;
                flow_split_info->prefix_layers =
                                flow_get_prefix_layer_flags(dev_flow);
-               flow_split_info->prefix_mark = dev_flow->handle->mark;
+               flow_split_info->prefix_mark |= dev_flow->handle->mark;
                flow_split_info->table_id = MLX5_MTR_TABLE_ID_SUFFIX;
        }
        /* Add the prefix subflow. */
                }
                flow_split_info->prefix_layers =
                                flow_get_prefix_layer_flags(dev_flow);
-               flow_split_info->prefix_mark = dev_flow->handle->mark;
+               flow_split_info->prefix_mark |= dev_flow->handle->mark;
                /* Suffix group level already be scaled with factor, set
                 * MLX5_SCALE_FLOW_GROUP_BIT of skip_scale to 1 to avoid scale
                 * again in translation.
 
 };
 
 struct mlx5_flow_split_info {
-       bool external;
+       uint32_t external:1;
        /**< True if flow is created by request external to PMD. */
-       uint8_t skip_scale; /**< Skip the scale the table with factor. */
+       uint32_t prefix_mark:1; /**< Prefix subflow mark flag. */
+       uint32_t skip_scale:8; /**< Skip the scale the table with factor. */
        uint32_t flow_idx; /**< This memory pool index to the flow. */
-       uint32_t prefix_mark; /**< Prefix subflow mark flag. */
-       uint64_t prefix_layers; /**< Prefix subflow layers. */
        uint32_t table_id; /**< Flow table identifier. */
+       uint64_t prefix_layers; /**< Prefix subflow layers. */
 };
 
 typedef int (*mlx5_flow_validate_t)(struct rte_eth_dev *dev,