drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.h
Extension
.h
Size
5413 bytes
Lines
207
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mlx5_fw_trace_data {
	u64 timestamp;
	bool lost;
	u8 event_id;
	char msg[TRACE_STR_MSG];
};

enum mlx5_fw_tracer_state {
	MLX5_TRACER_STATE_UP = BIT(0),
	MLX5_TRACER_RECREATE_DB = BIT(1),
};

struct mlx5_fw_tracer {
	struct mlx5_core_dev *dev;
	struct mlx5_nb        nb;
	bool owner;
	u8   trc_ver;
	struct workqueue_struct *work_queue;
	struct work_struct ownership_change_work;
	struct work_struct read_fw_strings_work;

	/* Strings DB */
	struct {
		u8 first_string_trace;
		u8 num_string_trace;
		u32 num_string_db;
		u32 base_address_out[STRINGS_DB_SECTIONS_NUM];
		u32 size_out[STRINGS_DB_SECTIONS_NUM];
		void *buffer[STRINGS_DB_SECTIONS_NUM];
		bool loaded;
	} str_db;

	/* Log Buffer */
	struct {
		u32 pdn;
		void *log_buf;
		dma_addr_t dma;
		u32 size;
		u32 mkey;
		u32 consumer_index;
	} buff;

	/* Saved Traces Array */
	struct {
		struct mlx5_fw_trace_data straces[SAVED_TRACES_NUM];
		u32 saved_traces_index;
		struct mutex lock; /* Protect st_arr access */
	} st_arr;

	u64 last_timestamp;
	struct work_struct handle_traces_work;
	struct hlist_head hash[MESSAGE_HASH_SIZE];
	struct list_head ready_strings_list;
	struct work_struct update_db_work;
	struct mutex state_lock; /* Synchronize update work with reload flows */
	unsigned long state;
};

struct tracer_string_format {
	char *string;
	int params[TRACER_MAX_PARAMS];
	int num_of_params;
	int last_param_num;
	u8 event_id;
	u32 tmsn;
	struct hlist_node hlist;
	struct list_head list;
	u32 timestamp;
	bool lost;
	bool invalid_string;
};

enum mlx5_fw_tracer_ownership_state {
	MLX5_FW_TRACER_RELEASE_OWNERSHIP,
	MLX5_FW_TRACER_ACQUIRE_OWNERSHIP,
};

enum tracer_ctrl_fields_select {
	TRACE_STATUS = 1 << 0,
};

enum tracer_event_type {
	TRACER_EVENT_TYPE_STRING,
	TRACER_EVENT_TYPE_TIMESTAMP = 0xFF,
	TRACER_EVENT_TYPE_UNRECOGNIZED,
};

enum tracing_mode {
	TRACE_TO_MEMORY = 1 << 0,
};

Annotation

Implementation Notes