/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/* Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */

#ifndef __MLX5_EN_FLOW_METER_H__
#define __MLX5_EN_FLOW_METER_H__

struct mlx5e_post_meter_priv;
struct mlx5e_flow_meter_aso_obj;
struct mlx5e_flow_meters;
struct mlx5_flow_attr;

enum mlx5e_flow_meter_mode {
	MLX5_RATE_LIMIT_BPS,
	MLX5_RATE_LIMIT_PPS,
};

struct mlx5e_flow_meter_params {
	enum mlx5e_flow_meter_mode mode;
	 /* police action index */
	u32 index;
	u64 rate;
	u64 burst;
};

struct mlx5e_flow_meter_handle {
	struct mlx5e_flow_meters *flow_meters;
	struct mlx5e_flow_meter_aso_obj *meters_obj;
	u32 obj_id;
	u8 idx;

	int refcnt;
	struct hlist_node hlist;
	struct mlx5e_flow_meter_params params;

	struct mlx5_fc *green_counter;
	struct mlx5_fc *red_counter;
};

struct mlx5e_meter_attr {
	struct mlx5e_flow_meter_params params;
	struct mlx5e_flow_meter_handle *meter;
	struct mlx5e_post_meter_priv *post_meter;
};

int
mlx5e_tc_meter_modify(struct mlx5_core_dev *mdev,
		      struct mlx5e_flow_meter_handle *meter,
		      struct mlx5e_flow_meter_params *meter_params);

struct mlx5e_flow_meter_handle *
mlx5e_tc_meter_get(struct mlx5_core_dev *mdev, struct mlx5e_flow_meter_params *params);
void
mlx5e_tc_meter_put(struct mlx5e_flow_meter_handle *meter);
int
mlx5e_tc_meter_update(struct mlx5e_flow_meter_handle *meter,
		      struct mlx5e_flow_meter_params *params);
struct mlx5e_flow_meter_handle *
mlx5e_tc_meter_replace(struct mlx5_core_dev *mdev, struct mlx5e_flow_meter_params *params);

enum mlx5_flow_namespace_type
mlx5e_tc_meter_get_namespace(struct mlx5e_flow_meters *flow_meters);

struct mlx5e_flow_meters *
mlx5e_flow_meters_init(struct mlx5e_priv *priv,
		       enum mlx5_flow_namespace_type ns_type,
		       struct mlx5e_post_act *post_action);
void
mlx5e_flow_meters_cleanup(struct mlx5e_flow_meters *flow_meters);

void
mlx5e_tc_meter_get_stats(struct mlx5e_flow_meter_handle *meter,
			 u64 *bytes, u64 *packets, u64 *drops, u64 *lastuse);

#endif /* __MLX5_EN_FLOW_METER_H__ */
