14edc17fdSAya Levin /* SPDX-License-Identifier: GPL-2.0 */
24edc17fdSAya Levin /* Copyright (c) 2019 Mellanox Technologies. */
34edc17fdSAya Levin 
44edc17fdSAya Levin #ifndef __MLX5E_EN_HEALTH_H
54edc17fdSAya Levin #define __MLX5E_EN_HEALTH_H
64edc17fdSAya Levin 
74edc17fdSAya Levin #include "en.h"
84edc17fdSAya Levin 
906293ae4SAya Levin int mlx5e_reporter_tx_create(struct mlx5e_priv *priv);
1006293ae4SAya Levin void mlx5e_reporter_tx_destroy(struct mlx5e_priv *priv);
1106293ae4SAya Levin void mlx5e_reporter_tx_err_cqe(struct mlx5e_txqsq *sq);
1206293ae4SAya Levin int mlx5e_reporter_tx_timeout(struct mlx5e_txqsq *sq);
134edc17fdSAya Levin 
142bf09e60SAya Levin int mlx5e_reporter_cq_diagnose(struct mlx5e_cq *cq, struct devlink_fmsg *fmsg);
152bf09e60SAya Levin int mlx5e_reporter_cq_common_diagnose(struct mlx5e_cq *cq, struct devlink_fmsg *fmsg);
162d708887SAya Levin int mlx5e_reporter_named_obj_nest_start(struct devlink_fmsg *fmsg, char *name);
172d708887SAya Levin int mlx5e_reporter_named_obj_nest_end(struct devlink_fmsg *fmsg);
182d708887SAya Levin 
19c50de4afSAya Levin #define MLX5E_REPORTER_PER_Q_MAX_LEN 256
20c50de4afSAya Levin 
21c50de4afSAya Levin struct mlx5e_err_ctx {
22c50de4afSAya Levin 	int (*recover)(void *ctx);
23c50de4afSAya Levin 	void *ctx;
24c50de4afSAya Levin };
25c50de4afSAya Levin 
26c50de4afSAya Levin int mlx5e_health_sq_to_ready(struct mlx5e_channel *channel, u32 sqn);
27c50de4afSAya Levin int mlx5e_health_channel_eq_recover(struct mlx5_eq_comp *eq, struct mlx5e_channel *channel);
28c50de4afSAya Levin int mlx5e_health_recover_channels(struct mlx5e_priv *priv);
29c50de4afSAya Levin int mlx5e_health_report(struct mlx5e_priv *priv,
30c50de4afSAya Levin 			struct devlink_health_reporter *reporter, char *err_str,
31c50de4afSAya Levin 			struct mlx5e_err_ctx *err_ctx);
3211af6a6dSAya Levin int mlx5e_health_create_reporters(struct mlx5e_priv *priv);
3311af6a6dSAya Levin void mlx5e_health_destroy_reporters(struct mlx5e_priv *priv);
3411af6a6dSAya Levin void mlx5e_health_channels_update(struct mlx5e_priv *priv);
3511af6a6dSAya Levin 
36c50de4afSAya Levin 
374edc17fdSAya Levin #endif
38