drivers/net/wireless/ath/ath11k/wmi.c
Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/ath11k/wmi.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/ath/ath11k/wmi.c- Extension
.c- Size
- 288846 bytes
- Lines
- 10144
- 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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/skbuff.hlinux/ctype.hnet/mac80211.hnet/cfg80211.hlinux/completion.hlinux/if_ether.hlinux/types.hlinux/pci.hlinux/uuid.hlinux/time.hlinux/of.hcore.hdebug.hmac.hhw.hpeer.htestmode.hp2p.h
Detected Declarations
struct wmi_tlv_policystruct wmi_tlv_svc_ready_parsestruct wmi_tlv_dma_ring_caps_parsestruct wmi_tlv_svc_rdy_ext_parsestruct wmi_tlv_svc_rdy_ext2_parsestruct wmi_tlv_rdy_parsestruct wmi_tlv_dma_buf_release_parsestruct wmi_tlv_fw_stats_parsestruct wmi_tlv_mgmt_rx_parsefunction ath11k_wmi_tlv_iterfunction ath11k_wmi_tlv_iter_parsefunction ath11k_wmi_tlv_parsefunction ath11k_wmi_cmd_send_nowaitfunction ath11k_wmi_cmd_sendfunction ath11k_pull_svc_ready_extfunction ath11k_pull_mac_phy_cap_svc_ready_extfunction ath11k_pull_reg_cap_svc_rdy_extfunction ath11k_pull_service_ready_tlvfunction ath11k_wmi_service_bitmap_copyfunction ath11k_wmi_tlv_svc_rdy_parsefunction ath11k_service_ready_eventfunction ath11k_wmi_mgmt_get_freqfunction ath11k_wmi_mgmt_sendfunction ath11k_wmi_vdev_createfunction ath11k_wmi_vdev_deletefunction ath11k_wmi_vdev_stopfunction ath11k_wmi_vdev_downfunction ath11k_wmi_put_wmi_channelfunction ath11k_wmi_vdev_startfunction ath11k_wmi_vdev_upfunction ath11k_wmi_send_peer_create_cmdfunction ath11k_wmi_send_peer_delete_cmdfunction ath11k_wmi_send_pdev_set_regdomainfunction ath11k_wmi_set_peer_paramfunction ath11k_wmi_send_peer_flush_tids_cmdfunction ath11k_wmi_peer_rx_reorder_queue_setupfunction ath11k_wmi_rx_reord_queue_removefunction ath11k_wmi_pdev_set_paramfunction ath11k_wmi_pdev_set_ps_modefunction ath11k_wmi_pdev_suspendfunction ath11k_wmi_pdev_resumefunction ath11k_wmi_pdev_bss_chan_info_requestfunction ath11k_wmi_send_set_ap_ps_param_cmdfunction ath11k_wmi_set_sta_ps_paramfunction ath11k_wmi_force_fw_hang_cmdfunction ath11k_wmi_vdev_set_param_cmdfunction ath11k_wmi_send_stats_request_cmdfunction ath11k_wmi_send_pdev_temperature_cmd
Annotated Snippet
struct wmi_tlv_policy {
size_t min_len;
};
struct wmi_tlv_svc_ready_parse {
bool wmi_svc_bitmap_done;
};
struct wmi_tlv_dma_ring_caps_parse {
struct wmi_dma_ring_capabilities *dma_ring_caps;
u32 n_dma_ring_caps;
};
struct wmi_tlv_svc_rdy_ext_parse {
struct ath11k_service_ext_param param;
struct wmi_soc_mac_phy_hw_mode_caps *hw_caps;
struct wmi_hw_mode_capabilities *hw_mode_caps;
u32 n_hw_mode_caps;
u32 tot_phy_id;
struct wmi_hw_mode_capabilities pref_hw_mode_caps;
struct wmi_mac_phy_capabilities *mac_phy_caps;
u32 n_mac_phy_caps;
struct wmi_soc_hal_reg_capabilities *soc_hal_reg_caps;
struct wmi_hal_reg_capabilities_ext *ext_hal_reg_caps;
u32 n_ext_hal_reg_caps;
struct wmi_tlv_dma_ring_caps_parse dma_caps_parse;
bool hw_mode_done;
bool mac_phy_done;
bool ext_hal_reg_done;
bool mac_phy_chainmask_combo_done;
bool mac_phy_chainmask_cap_done;
bool oem_dma_ring_cap_done;
bool dma_ring_cap_done;
};
struct wmi_tlv_svc_rdy_ext2_parse {
struct wmi_tlv_dma_ring_caps_parse dma_caps_parse;
bool dma_ring_cap_done;
};
struct wmi_tlv_rdy_parse {
u32 num_extra_mac_addr;
};
struct wmi_tlv_dma_buf_release_parse {
struct ath11k_wmi_dma_buf_release_fixed_param fixed;
struct wmi_dma_buf_release_entry *buf_entry;
struct wmi_dma_buf_release_meta_data *meta_data;
u32 num_buf_entry;
u32 num_meta;
bool buf_entry_done;
bool meta_data_done;
};
struct wmi_tlv_fw_stats_parse {
const struct wmi_stats_event *ev;
const struct wmi_per_chain_rssi_stats *rssi;
struct ath11k_fw_stats *stats;
int rssi_num;
bool chain_rssi_done;
};
struct wmi_tlv_mgmt_rx_parse {
const struct wmi_mgmt_rx_hdr *fixed;
const u8 *frame_buf;
bool frame_buf_done;
};
static const struct wmi_tlv_policy wmi_tlv_policies[] = {
[WMI_TAG_ARRAY_BYTE]
= { .min_len = 0 },
[WMI_TAG_ARRAY_UINT32]
= { .min_len = 0 },
[WMI_TAG_SERVICE_READY_EVENT]
= { .min_len = sizeof(struct wmi_service_ready_event) },
[WMI_TAG_SERVICE_READY_EXT_EVENT]
= { .min_len = sizeof(struct wmi_service_ready_ext_event) },
[WMI_TAG_SOC_MAC_PHY_HW_MODE_CAPS]
= { .min_len = sizeof(struct wmi_soc_mac_phy_hw_mode_caps) },
[WMI_TAG_SOC_HAL_REG_CAPABILITIES]
= { .min_len = sizeof(struct wmi_soc_hal_reg_capabilities) },
[WMI_TAG_VDEV_START_RESPONSE_EVENT]
= { .min_len = sizeof(struct wmi_vdev_start_resp_event) },
[WMI_TAG_PEER_DELETE_RESP_EVENT]
= { .min_len = sizeof(struct wmi_peer_delete_resp_event) },
[WMI_TAG_OFFLOAD_BCN_TX_STATUS_EVENT]
= { .min_len = sizeof(struct wmi_bcn_tx_status_event) },
[WMI_TAG_VDEV_STOPPED_EVENT]
= { .min_len = sizeof(struct wmi_vdev_stopped_event) },
[WMI_TAG_REG_CHAN_LIST_CC_EVENT]
Annotation
- Immediate include surface: `linux/skbuff.h`, `linux/ctype.h`, `net/mac80211.h`, `net/cfg80211.h`, `linux/completion.h`, `linux/if_ether.h`, `linux/types.h`, `linux/pci.h`.
- Detected declarations: `struct wmi_tlv_policy`, `struct wmi_tlv_svc_ready_parse`, `struct wmi_tlv_dma_ring_caps_parse`, `struct wmi_tlv_svc_rdy_ext_parse`, `struct wmi_tlv_svc_rdy_ext2_parse`, `struct wmi_tlv_rdy_parse`, `struct wmi_tlv_dma_buf_release_parse`, `struct wmi_tlv_fw_stats_parse`, `struct wmi_tlv_mgmt_rx_parse`, `function ath11k_wmi_tlv_iter`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.