1*4882a593Smuzhiyun /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2020 Mellanox Technologies. All rights reserved */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef _MLXSW_SPECTRUM_TRAP_H 5*4882a593Smuzhiyun #define _MLXSW_SPECTRUM_TRAP_H 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include <linux/list.h> 8*4882a593Smuzhiyun #include <net/devlink.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun struct mlxsw_sp_trap { 11*4882a593Smuzhiyun struct mlxsw_sp_trap_policer_item *policer_items_arr; 12*4882a593Smuzhiyun size_t policers_count; /* Number of registered policers */ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun struct mlxsw_sp_trap_group_item *group_items_arr; 15*4882a593Smuzhiyun size_t groups_count; /* Number of registered groups */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun struct mlxsw_sp_trap_item *trap_items_arr; 18*4882a593Smuzhiyun size_t traps_count; /* Number of registered traps */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun u16 thin_policer_hw_id; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun u64 max_policers; 23*4882a593Smuzhiyun unsigned long policers_usage[]; /* Usage bitmap */ 24*4882a593Smuzhiyun }; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun struct mlxsw_sp_trap_ops { 27*4882a593Smuzhiyun int (*groups_init)(struct mlxsw_sp *mlxsw_sp, 28*4882a593Smuzhiyun const struct mlxsw_sp_trap_group_item **arr, 29*4882a593Smuzhiyun size_t *p_groups_count); 30*4882a593Smuzhiyun int (*traps_init)(struct mlxsw_sp *mlxsw_sp, 31*4882a593Smuzhiyun const struct mlxsw_sp_trap_item **arr, 32*4882a593Smuzhiyun size_t *p_traps_count); 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun extern const struct mlxsw_sp_trap_ops mlxsw_sp1_trap_ops; 36*4882a593Smuzhiyun extern const struct mlxsw_sp_trap_ops mlxsw_sp2_trap_ops; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #endif 39