|
@@ -368,18 +368,20 @@ static int mlx5_cmd_set_fte(struct mlx5_core_dev *dev,
|
|
int list_size = 0;
|
|
int list_size = 0;
|
|
|
|
|
|
list_for_each_entry(dst, &fte->node.children, node.list) {
|
|
list_for_each_entry(dst, &fte->node.children, node.list) {
|
|
- unsigned int id;
|
|
|
|
|
|
+ unsigned int id, type = dst->dest_attr.type;
|
|
|
|
|
|
- if (dst->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_COUNTER)
|
|
|
|
|
|
+ if (type == MLX5_FLOW_DESTINATION_TYPE_COUNTER)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
- MLX5_SET(dest_format_struct, in_dests, destination_type,
|
|
|
|
- dst->dest_attr.type);
|
|
|
|
- if (dst->dest_attr.type ==
|
|
|
|
- MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE) {
|
|
|
|
|
|
+ switch (type) {
|
|
|
|
+ case MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE_NUM:
|
|
|
|
+ id = dst->dest_attr.ft_num;
|
|
|
|
+ type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
|
|
|
|
+ break;
|
|
|
|
+ case MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE:
|
|
id = dst->dest_attr.ft->id;
|
|
id = dst->dest_attr.ft->id;
|
|
- } else if (dst->dest_attr.type ==
|
|
|
|
- MLX5_FLOW_DESTINATION_TYPE_VPORT) {
|
|
|
|
|
|
+ break;
|
|
|
|
+ case MLX5_FLOW_DESTINATION_TYPE_VPORT:
|
|
id = dst->dest_attr.vport.num;
|
|
id = dst->dest_attr.vport.num;
|
|
MLX5_SET(dest_format_struct, in_dests,
|
|
MLX5_SET(dest_format_struct, in_dests,
|
|
destination_eswitch_owner_vhca_id_valid,
|
|
destination_eswitch_owner_vhca_id_valid,
|
|
@@ -387,9 +389,13 @@ static int mlx5_cmd_set_fte(struct mlx5_core_dev *dev,
|
|
MLX5_SET(dest_format_struct, in_dests,
|
|
MLX5_SET(dest_format_struct, in_dests,
|
|
destination_eswitch_owner_vhca_id,
|
|
destination_eswitch_owner_vhca_id,
|
|
dst->dest_attr.vport.vhca_id);
|
|
dst->dest_attr.vport.vhca_id);
|
|
- } else {
|
|
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
id = dst->dest_attr.tir_num;
|
|
id = dst->dest_attr.tir_num;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ MLX5_SET(dest_format_struct, in_dests, destination_type,
|
|
|
|
+ type);
|
|
MLX5_SET(dest_format_struct, in_dests, destination_id, id);
|
|
MLX5_SET(dest_format_struct, in_dests, destination_id, id);
|
|
in_dests += MLX5_ST_SZ_BYTES(dest_format_struct);
|
|
in_dests += MLX5_ST_SZ_BYTES(dest_format_struct);
|
|
list_size++;
|
|
list_size++;
|