drivers/net/wireless/realtek/rtw89/debug.c

Source file repositories/reference/linux-study-clean/drivers/net/wireless/realtek/rtw89/debug.c

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/realtek/rtw89/debug.c
Extension
.c
Size
170125 bytes
Lines
5614
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: exported/initcall integration point
Status
integration 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 rtw89_debugfs_priv_opt {
	bool rlock:1;
	bool wlock:1;
	size_t rsize;
};

struct rtw89_debugfs_priv {
	struct rtw89_dev *rtwdev;
	ssize_t (*cb_read)(struct rtw89_dev *rtwdev,
			   struct rtw89_debugfs_priv *debugfs_priv,
			   char *buf, size_t bufsz);
	ssize_t (*cb_write)(struct rtw89_dev *rtwdev,
			    struct rtw89_debugfs_priv *debugfs_priv,
			    const char *buf, size_t count);
	struct rtw89_debugfs_priv_opt opt;
	union {
		u32 cb_data;
		struct {
			u32 addr;
			u32 len;
		} read_reg;
		struct {
			u32 addr;
			u32 mask;
			u8 path;
		} read_rf;
		struct {
			u8 ss_dbg:1;
			u8 dle_dbg:1;
			u8 dmac_dbg:1;
			u8 cmac_dbg:1;
			u8 dbg_port:1;
		} dbgpkg_en;
		struct {
			u32 start;
			u32 len;
			u8 sel;
		} mac_mem;
	};
	ssize_t rused;
	char *rbuf;
};

struct rtw89_debugfs {
	struct rtw89_debugfs_priv read_reg;
	struct rtw89_debugfs_priv write_reg;
	struct rtw89_debugfs_priv read_rf;
	struct rtw89_debugfs_priv write_rf;
	struct rtw89_debugfs_priv rf_reg_dump;
	struct rtw89_debugfs_priv txpwr_table;
	struct rtw89_debugfs_priv mac_reg_dump;
	struct rtw89_debugfs_priv mac_mem_dump;
	struct rtw89_debugfs_priv mac_dbg_port_dump;
	struct rtw89_debugfs_priv send_h2c;
	struct rtw89_debugfs_priv early_h2c;
	struct rtw89_debugfs_priv fw_crash;
	struct rtw89_debugfs_priv ser_counters;
	struct rtw89_debugfs_priv btc_info;
	struct rtw89_debugfs_priv btc_manual;
	struct rtw89_debugfs_priv fw_log_manual;
	struct rtw89_debugfs_priv phy_info;
	struct rtw89_debugfs_priv bb_info;
	struct rtw89_debugfs_priv stations;
	struct rtw89_debugfs_priv disable_dm;
	struct rtw89_debugfs_priv static_pd_th;
	struct rtw89_debugfs_priv mlo_mode;
	struct rtw89_debugfs_priv beacon_info;
	struct rtw89_debugfs_priv diag_mac;
	struct rtw89_debugfs_priv diag_bb;
	struct rtw89_debugfs_priv monitor_opts;
};

struct rtw89_debugfs_iter_data {
	char *buf;
	size_t bufsz;
	int written_sz;
};

static void rtw89_debugfs_iter_data_setup(struct rtw89_debugfs_iter_data *iter_data,
					  char *buf, size_t bufsz)
{
	iter_data->buf = buf;
	iter_data->bufsz = bufsz;
	iter_data->written_sz = 0;
}

static void rtw89_debugfs_iter_data_next(struct rtw89_debugfs_iter_data *iter_data,
					 char *buf, size_t bufsz, int written_sz)
{
	iter_data->buf = buf;

Annotation

Implementation Notes