drivers/net/wireless/ath/wil6210/fw.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/wil6210/fw.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/ath/wil6210/fw.h
Extension
.h
Size
6617 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 wil_fw_record_head {
	__le16 type; /* enum wil_fw_record_type */
	__le16 flags; /* to be defined */
	__le32 size; /* whole record, bytes after head */
} __packed;

/* data block. write starting from @addr
 * data_size inferred from the @head.size. For this case,
 * data_size = @head.size - offsetof(struct wil_fw_record_data, data)
 */
struct wil_fw_record_data { /* type == wil_fw_type_data */
	__le32 addr;
	__le32 data[]; /* [data_size], see above */
} __packed;

/* fill with constant @value, @size bytes starting from @addr */
struct wil_fw_record_fill { /* type == wil_fw_type_fill */
	__le32 addr;
	__le32 value;
	__le32 size;
} __packed;

/* free-form comment
 * for informational purpose, data_size is @head.size from record header
 */
struct wil_fw_record_comment { /* type == wil_fw_type_comment */
	DECLARE_FLEX_ARRAY(u8, data); /* free-form data [data_size], see above */
} __packed;

/* Comment header - common for all comment record types */
struct wil_fw_record_comment_hdr {
	__le32 magic;
};

/* FW capabilities encoded inside a comment record */
#define WIL_FW_CAPABILITIES_MAGIC (0xabcddcba)
struct wil_fw_record_capabilities { /* type == wil_fw_type_comment */
	/* identifies capabilities record */
	struct wil_fw_record_comment_hdr hdr;
	/* capabilities (variable size), see enum wmi_fw_capability */
	u8 capabilities[];
} __packed;

/* FW VIF concurrency encoded inside a comment record
 * Format is similar to wiphy->iface_combinations
 */
#define WIL_FW_CONCURRENCY_MAGIC (0xfedccdef)
#define WIL_FW_CONCURRENCY_REC_VER	1
struct wil_fw_concurrency_limit {
	__le16 max; /* maximum number of interfaces of these types */
	__le16 types; /* interface types (bit mask of enum nl80211_iftype) */
} __packed;

struct wil_fw_concurrency_combo {
	u8 n_limits; /* number of wil_fw_concurrency_limit entries */
	u8 max_interfaces; /* max number of concurrent interfaces allowed */
	u8 n_diff_channels; /* total number of different channels allowed */
	u8 same_bi; /* for APs, 1 if all APs must have same BI */
	/* keep last - concurrency limits, variable size by n_limits */
	struct wil_fw_concurrency_limit limits[];
} __packed;

struct wil_fw_record_concurrency { /* type == wil_fw_type_comment */
	/* identifies concurrency record */
	__le32 magic;
	/* structure version, currently always 1 */
	u8 version;
	/* maximum number of supported MIDs _in addition_ to MID 0 */
	u8 n_mids;
	/* number of concurrency combinations that follow */
	__le16 n_combos;
	/* keep last - combinations, variable size by n_combos */
} __packed;

/* brd file info encoded inside a comment record */
#define WIL_BRD_FILE_MAGIC (0xabcddcbb)

struct brd_info {
	__le32 base_addr;
	__le32 max_size_bytes;
} __packed;

struct wil_fw_record_brd_file { /* type == wil_fw_type_comment */
	/* identifies brd file record */
	struct wil_fw_record_comment_hdr hdr;
	__le32 version;
	struct brd_info brd_info[];
} __packed;

/* perform action

Annotation

Implementation Notes