dest[i].vport.num = attr->out_rep[j]->vport;
                                dest[i].vport.vhca_id =
                                        MLX5_CAP_GEN(attr->out_mdev[j], vhca_id);
-                               dest[i].vport.vhca_id_valid =
-                                       !!MLX5_CAP_ESW(esw->dev, merged_eswitch);
+                               if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+                                       dest[i].vport.flags |=
+                                               MLX5_FLOW_DEST_VPORT_VHCA_ID;
                                i++;
                        }
                }
                dest[i].vport.num = attr->out_rep[i]->vport;
                dest[i].vport.vhca_id =
                        MLX5_CAP_GEN(attr->out_mdev[i], vhca_id);
-               dest[i].vport.vhca_id_valid = !!MLX5_CAP_ESW(esw->dev, merged_eswitch);
+               if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+                       dest[i].vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID;
        }
        dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
        dest[i].ft = fwd_fdb,
 
                                id = dst->dest_attr.vport.num;
                                MLX5_SET(dest_format_struct, in_dests,
                                         destination_eswitch_owner_vhca_id_valid,
-                                        dst->dest_attr.vport.vhca_id_valid);
+                                        !!(dst->dest_attr.vport.flags &
+                                           MLX5_FLOW_DEST_VPORT_VHCA_ID));
                                MLX5_SET(dest_format_struct, in_dests,
                                         destination_eswitch_owner_vhca_id,
                                         dst->dest_attr.vport.vhca_id);
 
        u32  match_value[MLX5_ST_SZ_DW(fte_match_param)];
 };
 
+enum {
+       MLX5_FLOW_DEST_VPORT_VHCA_ID      = BIT(0),
+};
+
 struct mlx5_flow_destination {
        enum mlx5_flow_destination_type type;
        union {
                struct {
                        u16             num;
                        u16             vhca_id;
-                       bool            vhca_id_valid;
+                       u8              flags;
                } vport;
        };
 };