xref: /openbmc/linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
19948a064SJiri Pirko /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
29948a064SJiri Pirko /* Copyright (c) 2017-2018 Mellanox Technologies. All rights reserved */
3ff7b0d27SArkadi Sharshevsky 
4ff7b0d27SArkadi Sharshevsky #ifndef _MLXSW_SPECTRUM_CNT_H
5ff7b0d27SArkadi Sharshevsky #define _MLXSW_SPECTRUM_CNT_H
6ff7b0d27SArkadi Sharshevsky 
7d53cdbb8SJiri Pirko #include "core.h"
8ff7b0d27SArkadi Sharshevsky #include "spectrum.h"
9ff7b0d27SArkadi Sharshevsky 
10ff7b0d27SArkadi Sharshevsky enum mlxsw_sp_counter_sub_pool_id {
11e0c0afd8SArkadi Sharshevsky 	MLXSW_SP_COUNTER_SUB_POOL_RIF,
12*4b7a632aSPetr Machata 	MLXSW_SP_COUNTER_SUB_POOL_FLOW,
13ff7b0d27SArkadi Sharshevsky };
14ff7b0d27SArkadi Sharshevsky 
15ff7b0d27SArkadi Sharshevsky int mlxsw_sp_counter_alloc(struct mlxsw_sp *mlxsw_sp,
16ff7b0d27SArkadi Sharshevsky 			   enum mlxsw_sp_counter_sub_pool_id sub_pool_id,
17ff7b0d27SArkadi Sharshevsky 			   unsigned int *p_counter_index);
18ff7b0d27SArkadi Sharshevsky void mlxsw_sp_counter_free(struct mlxsw_sp *mlxsw_sp,
19ff7b0d27SArkadi Sharshevsky 			   enum mlxsw_sp_counter_sub_pool_id sub_pool_id,
20ff7b0d27SArkadi Sharshevsky 			   unsigned int counter_index);
21ff7b0d27SArkadi Sharshevsky int mlxsw_sp_counter_pool_init(struct mlxsw_sp *mlxsw_sp);
22ff7b0d27SArkadi Sharshevsky void mlxsw_sp_counter_pool_fini(struct mlxsw_sp *mlxsw_sp);
23d53cdbb8SJiri Pirko int mlxsw_sp_counter_resources_register(struct mlxsw_core *mlxsw_core);
24ff7b0d27SArkadi Sharshevsky 
25ff7b0d27SArkadi Sharshevsky #endif
26