This source file includes following definitions.
- cqe_syndrome_needs_recover
1
2
3
4 #ifndef __MLX5E_EN_HEALTH_H
5 #define __MLX5E_EN_HEALTH_H
6
7 #include "en.h"
8
9 #define MLX5E_RX_ERR_CQE(cqe) (get_cqe_opcode(cqe) != MLX5_CQE_RESP_SEND)
10
11 static inline bool cqe_syndrome_needs_recover(u8 syndrome)
12 {
13 return syndrome == MLX5_CQE_SYNDROME_LOCAL_QP_OP_ERR ||
14 syndrome == MLX5_CQE_SYNDROME_LOCAL_PROT_ERR ||
15 syndrome == MLX5_CQE_SYNDROME_WR_FLUSH_ERR;
16 }
17
18 int mlx5e_reporter_tx_create(struct mlx5e_priv *priv);
19 void mlx5e_reporter_tx_destroy(struct mlx5e_priv *priv);
20 void mlx5e_reporter_tx_err_cqe(struct mlx5e_txqsq *sq);
21 int mlx5e_reporter_tx_timeout(struct mlx5e_txqsq *sq);
22
23 int mlx5e_reporter_cq_diagnose(struct mlx5e_cq *cq, struct devlink_fmsg *fmsg);
24 int mlx5e_reporter_cq_common_diagnose(struct mlx5e_cq *cq, struct devlink_fmsg *fmsg);
25 int mlx5e_reporter_named_obj_nest_start(struct devlink_fmsg *fmsg, char *name);
26 int mlx5e_reporter_named_obj_nest_end(struct devlink_fmsg *fmsg);
27
28 int mlx5e_reporter_rx_create(struct mlx5e_priv *priv);
29 void mlx5e_reporter_rx_destroy(struct mlx5e_priv *priv);
30 void mlx5e_reporter_icosq_cqe_err(struct mlx5e_icosq *icosq);
31 void mlx5e_reporter_rq_cqe_err(struct mlx5e_rq *rq);
32 void mlx5e_reporter_rx_timeout(struct mlx5e_rq *rq);
33
34 #define MLX5E_REPORTER_PER_Q_MAX_LEN 256
35
36 struct mlx5e_err_ctx {
37 int (*recover)(void *ctx);
38 void *ctx;
39 };
40
41 int mlx5e_health_sq_to_ready(struct mlx5e_channel *channel, u32 sqn);
42 int mlx5e_health_channel_eq_recover(struct mlx5_eq_comp *eq, struct mlx5e_channel *channel);
43 int mlx5e_health_recover_channels(struct mlx5e_priv *priv);
44 int mlx5e_health_report(struct mlx5e_priv *priv,
45 struct devlink_health_reporter *reporter, char *err_str,
46 struct mlx5e_err_ctx *err_ctx);
47 int mlx5e_health_create_reporters(struct mlx5e_priv *priv);
48 void mlx5e_health_destroy_reporters(struct mlx5e_priv *priv);
49 void mlx5e_health_channels_update(struct mlx5e_priv *priv);
50
51
52 #endif