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