forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.h
....@@ -46,6 +46,9 @@
4646 #define TRACER_BLOCK_SIZE_BYTE 256
4747 #define TRACES_PER_BLOCK 32
4848
49
+#define TRACE_STR_MSG 256
50
+#define SAVED_TRACES_NUM 8192
51
+
4952 #define TRACER_MAX_PARAMS 7
5053 #define MESSAGE_HASH_BITS 6
5154 #define MESSAGE_HASH_SIZE BIT(MESSAGE_HASH_BITS)
....@@ -53,8 +56,16 @@
5356 #define MASK_52_7 (0x1FFFFFFFFFFF80)
5457 #define MASK_6_0 (0x7F)
5558
59
+struct mlx5_fw_trace_data {
60
+ u64 timestamp;
61
+ bool lost;
62
+ u8 event_id;
63
+ char msg[TRACE_STR_MSG];
64
+};
65
+
5666 struct mlx5_fw_tracer {
5767 struct mlx5_core_dev *dev;
68
+ struct mlx5_nb nb;
5869 bool owner;
5970 u8 trc_ver;
6071 struct workqueue_struct *work_queue;
....@@ -81,6 +92,13 @@
8192 struct mlx5_core_mkey mkey;
8293 u32 consumer_index;
8394 } buff;
95
+
96
+ /* Saved Traces Array */
97
+ struct {
98
+ struct mlx5_fw_trace_data straces[SAVED_TRACES_NUM];
99
+ u32 saved_traces_index;
100
+ struct mutex lock; /* Protect st_arr access */
101
+ } st_arr;
84102
85103 u64 last_timestamp;
86104 struct work_struct handle_traces_work;
....@@ -170,6 +188,9 @@
170188 int mlx5_fw_tracer_init(struct mlx5_fw_tracer *tracer);
171189 void mlx5_fw_tracer_cleanup(struct mlx5_fw_tracer *tracer);
172190 void mlx5_fw_tracer_destroy(struct mlx5_fw_tracer *tracer);
173
-void mlx5_fw_tracer_event(struct mlx5_core_dev *dev, struct mlx5_eqe *eqe);
191
+int mlx5_fw_tracer_trigger_core_dump_general(struct mlx5_core_dev *dev);
192
+int mlx5_fw_tracer_get_saved_traces_objects(struct mlx5_fw_tracer *tracer,
193
+ struct devlink_fmsg *fmsg);
194
+int mlx5_fw_tracer_reload(struct mlx5_fw_tracer *tracer);
174195
175196 #endif