15543e989SAya Levin /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 25543e989SAya Levin /* Copyright (c) 2020, Mellanox Technologies */ 35543e989SAya Levin 45543e989SAya Levin #ifndef __MLX5E_TRAP_H__ 55543e989SAya Levin #define __MLX5E_TRAP_H__ 65543e989SAya Levin 75543e989SAya Levin #include "../en.h" 85543e989SAya Levin #include "../devlink.h" 95543e989SAya Levin 105543e989SAya Levin struct mlx5e_trap { 115543e989SAya Levin /* data path */ 125543e989SAya Levin struct mlx5e_rq rq; 135543e989SAya Levin struct mlx5e_tir tir; 145543e989SAya Levin struct napi_struct napi; 155543e989SAya Levin struct device *pdev; 165543e989SAya Levin struct net_device *netdev; 175543e989SAya Levin __be32 mkey_be; 185543e989SAya Levin 195543e989SAya Levin /* data path - accessed per napi poll */ 205543e989SAya Levin struct mlx5e_ch_stats *stats; 215543e989SAya Levin 225543e989SAya Levin /* control */ 235543e989SAya Levin struct mlx5e_priv *priv; 245543e989SAya Levin struct mlx5_core_dev *mdev; 255543e989SAya Levin struct hwtstamp_config *tstamp; 265543e989SAya Levin DECLARE_BITMAP(state, MLX5E_CHANNEL_NUM_STATES); 275543e989SAya Levin 285543e989SAya Levin struct mlx5e_params params; 295543e989SAya Levin struct mlx5e_rq_param rq_param; 305543e989SAya Levin }; 315543e989SAya Levin 325543e989SAya Levin void mlx5e_close_trap(struct mlx5e_trap *trap); 335543e989SAya Levin void mlx5e_deactivate_trap(struct mlx5e_priv *priv); 345543e989SAya Levin int mlx5e_handle_trap_event(struct mlx5e_priv *priv, struct mlx5_trap_ctx *trap_ctx); 35*eb3862a0SAya Levin int mlx5e_apply_traps(struct mlx5e_priv *priv, bool enable); 36*eb3862a0SAya Levin 375543e989SAya Levin #endif 38