xref: /openbmc/linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.h (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
103484e49SIdo Schimmel /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
203484e49SIdo Schimmel /* Copyright (c) 2020 Mellanox Technologies. All rights reserved */
303484e49SIdo Schimmel 
403484e49SIdo Schimmel #ifndef _MLXSW_SPECTRUM_TRAP_H
503484e49SIdo Schimmel #define _MLXSW_SPECTRUM_TRAP_H
603484e49SIdo Schimmel 
713f2e64bSIdo Schimmel #include <linux/list.h>
84561705bSIdo Schimmel #include <net/devlink.h>
94561705bSIdo Schimmel 
1003484e49SIdo Schimmel struct mlxsw_sp_trap {
11cc678f4dSIdo Schimmel 	struct mlxsw_sp_trap_policer_item *policer_items_arr;
1276ba292cSIdo Schimmel 	size_t policers_count; /* Number of registered policers */
13b14a40dbSIdo Schimmel 
14b14a40dbSIdo Schimmel 	struct mlxsw_sp_trap_group_item *group_items_arr;
1576ba292cSIdo Schimmel 	size_t groups_count; /* Number of registered groups */
16b14a40dbSIdo Schimmel 
17200b7ccaSIdo Schimmel 	struct mlxsw_sp_trap_item *trap_items_arr;
1876ba292cSIdo Schimmel 	size_t traps_count; /* Number of registered traps */
19200b7ccaSIdo Schimmel 
20b87bde80SIdo Schimmel 	u16 thin_policer_hw_id;
21b87bde80SIdo Schimmel 
2203484e49SIdo Schimmel 	u64 max_policers;
2303484e49SIdo Schimmel 	unsigned long policers_usage[]; /* Usage bitmap */
2403484e49SIdo Schimmel };
2503484e49SIdo Schimmel 
2636d1fd68SIdo Schimmel struct mlxsw_sp_trap_ops {
2736d1fd68SIdo Schimmel 	int (*groups_init)(struct mlxsw_sp *mlxsw_sp,
2836d1fd68SIdo Schimmel 			   const struct mlxsw_sp_trap_group_item **arr,
2936d1fd68SIdo Schimmel 			   size_t *p_groups_count);
30*869c7be9SIdo Schimmel 	int (*traps_init)(struct mlxsw_sp *mlxsw_sp,
31*869c7be9SIdo Schimmel 			  const struct mlxsw_sp_trap_item **arr,
32*869c7be9SIdo Schimmel 			  size_t *p_traps_count);
3336d1fd68SIdo Schimmel };
3436d1fd68SIdo Schimmel 
3536d1fd68SIdo Schimmel extern const struct mlxsw_sp_trap_ops mlxsw_sp1_trap_ops;
3636d1fd68SIdo Schimmel extern const struct mlxsw_sp_trap_ops mlxsw_sp2_trap_ops;
3736d1fd68SIdo Schimmel 
3803484e49SIdo Schimmel #endif
39