net/mlx5: Add IFC bits for general obj create param
authorJianbo Liu <jianbol@nvidia.com>
Wed, 6 Jul 2022 13:06:30 +0000 (13:06 +0000)
committerSaeed Mahameed <saeedm@nvidia.com>
Tue, 31 Jan 2023 03:10:04 +0000 (19:10 -0800)
Before this patch, the log_obj_range was defined inside
general_obj_in_cmd_hdr to support bulk allocation. However, we need to
modify/query one of the object in the bulk in later patch, so change
those fields to param bits for parameters specific for cmd header, and
add general_obj_create_param according to what was updated in spec.
We will also add general_obj_query_param for modify/query later.

Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en/tc/meter.c
include/linux/mlx5/mlx5_ifc.h

index 7758a42..8218c89 100644 (file)
@@ -204,13 +204,15 @@ mlx5e_flow_meter_create_aso_obj(struct mlx5e_flow_meters *flow_meters, int *obj_
        u32 in[MLX5_ST_SZ_DW(create_flow_meter_aso_obj_in)] = {};
        u32 out[MLX5_ST_SZ_DW(general_obj_out_cmd_hdr)];
        struct mlx5_core_dev *mdev = flow_meters->mdev;
-       void *obj;
+       void *obj, *param;
        int err;
 
        MLX5_SET(general_obj_in_cmd_hdr, in, opcode, MLX5_CMD_OP_CREATE_GENERAL_OBJECT);
        MLX5_SET(general_obj_in_cmd_hdr, in, obj_type,
                 MLX5_GENERAL_OBJECT_TYPES_FLOW_METER_ASO);
-       MLX5_SET(general_obj_in_cmd_hdr, in, log_obj_range, flow_meters->log_granularity);
+       param = MLX5_ADDR_OF(general_obj_in_cmd_hdr, in, op_param);
+       MLX5_SET(general_obj_create_param, param, log_obj_range,
+                flow_meters->log_granularity);
 
        obj = MLX5_ADDR_OF(create_flow_meter_aso_obj_in, in, flow_meter_aso_obj);
        MLX5_SET(flow_meter_aso_obj, obj, meter_aso_access_pd, flow_meters->pdn);
index 0b102c6..17e293c 100644 (file)
@@ -6196,6 +6196,13 @@ struct mlx5_ifc_match_definer_bits {
        };
 };
 
+struct mlx5_ifc_general_obj_create_param_bits {
+       u8         alias_object[0x1];
+       u8         reserved_at_1[0x2];
+       u8         log_obj_range[0x5];
+       u8         reserved_at_8[0x18];
+};
+
 struct mlx5_ifc_general_obj_in_cmd_hdr_bits {
        u8         opcode[0x10];
        u8         uid[0x10];
@@ -6205,9 +6212,7 @@ struct mlx5_ifc_general_obj_in_cmd_hdr_bits {
 
        u8         obj_id[0x20];
 
-       u8         reserved_at_60[0x3];
-       u8         log_obj_range[0x5];
-       u8         reserved_at_68[0x18];
+       struct mlx5_ifc_general_obj_create_param_bits op_param;
 };
 
 struct mlx5_ifc_general_obj_out_cmd_hdr_bits {