#include <linux/skbuff.h>
#include <linux/ctype.h>
#include <net/mac80211.h>
#include <net/cfg80211.h>
#include <linux/completion.h>
#include <linux/if_ether.h>
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/uuid.h>
#include <linux/time.h>
#include <linux/of.h>
#include "core.h"
#include "debug.h"
#include "mac.h"
#include "hw.h"
#include "peer.h"
#include "testmode.h"
#include "p2p.h"
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 { … };
static const struct wmi_tlv_policy wmi_tlv_policies[] = …;
#define PRIMAP(_hw_mode_) …
static const int ath11k_hw_mode_pri_map[] = …;
static int
ath11k_wmi_tlv_iter(struct ath11k_base *ab, const void *ptr, size_t len,
int (*iter)(struct ath11k_base *ab, u16 tag, u16 len,
const void *ptr, void *data),
void *data)
{ … }
static int ath11k_wmi_tlv_iter_parse(struct ath11k_base *ab, u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_parse(struct ath11k_base *ar, const void **tb,
const void *ptr, size_t len)
{ … }
const void **ath11k_wmi_tlv_parse_alloc(struct ath11k_base *ab,
struct sk_buff *skb, gfp_t gfp)
{ … }
static int ath11k_wmi_cmd_send_nowait(struct ath11k_pdev_wmi *wmi, struct sk_buff *skb,
u32 cmd_id)
{ … }
int ath11k_wmi_cmd_send(struct ath11k_pdev_wmi *wmi, struct sk_buff *skb,
u32 cmd_id)
{ … }
static int ath11k_pull_svc_ready_ext(struct ath11k_pdev_wmi *wmi_handle,
const void *ptr,
struct ath11k_service_ext_param *param)
{ … }
static int
ath11k_pull_mac_phy_cap_svc_ready_ext(struct ath11k_pdev_wmi *wmi_handle,
struct wmi_soc_mac_phy_hw_mode_caps *hw_caps,
struct wmi_hw_mode_capabilities *wmi_hw_mode_caps,
struct wmi_soc_hal_reg_capabilities *hal_reg_caps,
struct wmi_mac_phy_capabilities *wmi_mac_phy_caps,
u8 hw_mode_id, u8 phy_id,
struct ath11k_pdev *pdev)
{ … }
static int
ath11k_pull_reg_cap_svc_rdy_ext(struct ath11k_pdev_wmi *wmi_handle,
struct wmi_soc_hal_reg_capabilities *reg_caps,
struct wmi_hal_reg_capabilities_ext *wmi_ext_reg_cap,
u8 phy_idx,
struct ath11k_hal_reg_capabilities_ext *param)
{ … }
static int ath11k_pull_service_ready_tlv(struct ath11k_base *ab,
const void *evt_buf,
struct ath11k_targ_cap *cap)
{ … }
static void ath11k_wmi_service_bitmap_copy(struct ath11k_pdev_wmi *wmi,
const u32 *wmi_svc_bm)
{ … }
static int ath11k_wmi_tlv_svc_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_service_ready_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
struct sk_buff *ath11k_wmi_alloc_skb(struct ath11k_wmi_base *wmi_ab, u32 len)
{ … }
static u32 ath11k_wmi_mgmt_get_freq(struct ath11k *ar,
struct ieee80211_tx_info *info)
{ … }
int ath11k_wmi_mgmt_send(struct ath11k *ar, u32 vdev_id, u32 buf_id,
struct sk_buff *frame)
{ … }
int ath11k_wmi_vdev_create(struct ath11k *ar, u8 *macaddr,
struct vdev_create_params *param)
{ … }
int ath11k_wmi_vdev_delete(struct ath11k *ar, u8 vdev_id)
{ … }
int ath11k_wmi_vdev_stop(struct ath11k *ar, u8 vdev_id)
{ … }
int ath11k_wmi_vdev_down(struct ath11k *ar, u8 vdev_id)
{ … }
static void ath11k_wmi_put_wmi_channel(struct wmi_channel *chan,
struct wmi_vdev_start_req_arg *arg)
{ … }
int ath11k_wmi_vdev_start(struct ath11k *ar, struct wmi_vdev_start_req_arg *arg,
bool restart)
{ … }
int ath11k_wmi_vdev_up(struct ath11k *ar, u32 vdev_id, u32 aid, const u8 *bssid,
u8 *tx_bssid, u32 nontx_profile_idx, u32 nontx_profile_cnt)
{ … }
int ath11k_wmi_send_peer_create_cmd(struct ath11k *ar,
struct peer_create_params *param)
{ … }
int ath11k_wmi_send_peer_delete_cmd(struct ath11k *ar,
const u8 *peer_addr, u8 vdev_id)
{ … }
int ath11k_wmi_send_pdev_set_regdomain(struct ath11k *ar,
struct pdev_set_regdomain_params *param)
{ … }
int ath11k_wmi_set_peer_param(struct ath11k *ar, const u8 *peer_addr,
u32 vdev_id, u32 param_id, u32 param_val)
{ … }
int ath11k_wmi_send_peer_flush_tids_cmd(struct ath11k *ar,
u8 peer_addr[ETH_ALEN],
struct peer_flush_params *param)
{ … }
int ath11k_wmi_peer_rx_reorder_queue_setup(struct ath11k *ar,
int vdev_id, const u8 *addr,
dma_addr_t paddr, u8 tid,
u8 ba_window_size_valid,
u32 ba_window_size)
{ … }
int
ath11k_wmi_rx_reord_queue_remove(struct ath11k *ar,
struct rx_reorder_queue_remove_params *param)
{ … }
int ath11k_wmi_pdev_set_param(struct ath11k *ar, u32 param_id,
u32 param_value, u8 pdev_id)
{ … }
int ath11k_wmi_pdev_set_ps_mode(struct ath11k *ar, int vdev_id,
enum wmi_sta_ps_mode psmode)
{ … }
int ath11k_wmi_pdev_suspend(struct ath11k *ar, u32 suspend_opt,
u32 pdev_id)
{ … }
int ath11k_wmi_pdev_resume(struct ath11k *ar, u32 pdev_id)
{ … }
int ath11k_wmi_pdev_bss_chan_info_request(struct ath11k *ar,
enum wmi_bss_chan_info_req_type type)
{ … }
int ath11k_wmi_send_set_ap_ps_param_cmd(struct ath11k *ar, u8 *peer_addr,
struct ap_ps_params *param)
{ … }
int ath11k_wmi_set_sta_ps_param(struct ath11k *ar, u32 vdev_id,
u32 param, u32 param_value)
{ … }
int ath11k_wmi_force_fw_hang_cmd(struct ath11k *ar, u32 type, u32 delay_time_ms)
{ … }
int ath11k_wmi_vdev_set_param_cmd(struct ath11k *ar, u32 vdev_id,
u32 param_id, u32 param_value)
{ … }
int ath11k_wmi_send_stats_request_cmd(struct ath11k *ar,
struct stats_request_params *param)
{ … }
int ath11k_wmi_send_pdev_temperature_cmd(struct ath11k *ar)
{ … }
int ath11k_wmi_send_bcn_offload_control_cmd(struct ath11k *ar,
u32 vdev_id, u32 bcn_ctrl_op)
{ … }
int ath11k_wmi_p2p_go_bcn_ie(struct ath11k *ar, u32 vdev_id,
const u8 *p2p_ie)
{ … }
int ath11k_wmi_bcn_tmpl(struct ath11k *ar, u32 vdev_id,
struct ieee80211_mutable_offsets *offs,
struct sk_buff *bcn, u32 ema_params)
{ … }
int ath11k_wmi_vdev_install_key(struct ath11k *ar,
struct wmi_vdev_install_key_arg *arg)
{ … }
static inline void
ath11k_wmi_copy_peer_flags(struct wmi_peer_assoc_complete_cmd *cmd,
struct peer_assoc_params *param,
bool hw_crypto_disabled)
{ … }
int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar,
struct peer_assoc_params *param)
{ … }
void ath11k_wmi_start_scan_init(struct ath11k *ar,
struct scan_req_params *arg)
{ … }
static inline void
ath11k_wmi_copy_scan_event_cntrl_flags(struct wmi_start_scan_cmd *cmd,
struct scan_req_params *param)
{ … }
int ath11k_wmi_send_scan_start_cmd(struct ath11k *ar,
struct scan_req_params *params)
{ … }
int ath11k_wmi_send_vdev_set_tpc_power(struct ath11k *ar,
u32 vdev_id,
struct ath11k_reg_tpc_power_info *param)
{ … }
int ath11k_wmi_send_scan_stop_cmd(struct ath11k *ar,
struct scan_cancel_param *param)
{ … }
int ath11k_wmi_send_scan_chan_list_cmd(struct ath11k *ar,
struct scan_chan_list_params *chan_list)
{ … }
int ath11k_wmi_send_wmm_update_cmd_tlv(struct ath11k *ar, u32 vdev_id,
struct wmi_wmm_params_all_arg *param)
{ … }
int ath11k_wmi_send_dfs_phyerr_offload_enable_cmd(struct ath11k *ar,
u32 pdev_id)
{ … }
int ath11k_wmi_delba_send(struct ath11k *ar, u32 vdev_id, const u8 *mac,
u32 tid, u32 initiator, u32 reason)
{ … }
int ath11k_wmi_addba_set_resp(struct ath11k *ar, u32 vdev_id, const u8 *mac,
u32 tid, u32 status)
{ … }
int ath11k_wmi_addba_send(struct ath11k *ar, u32 vdev_id, const u8 *mac,
u32 tid, u32 buf_size)
{ … }
int ath11k_wmi_addba_clear_resp(struct ath11k *ar, u32 vdev_id, const u8 *mac)
{ … }
int ath11k_wmi_pdev_peer_pktlog_filter(struct ath11k *ar, u8 *addr, u8 enable)
{ … }
int
ath11k_wmi_send_init_country_cmd(struct ath11k *ar,
struct wmi_init_country_params init_cc_params)
{ … }
int ath11k_wmi_send_set_current_country_cmd(struct ath11k *ar,
struct wmi_set_current_country_params *param)
{ … }
int
ath11k_wmi_send_thermal_mitigation_param_cmd(struct ath11k *ar,
struct thermal_mitigation_params *param)
{ … }
int ath11k_wmi_send_11d_scan_start_cmd(struct ath11k *ar,
struct wmi_11d_scan_start_params *param)
{ … }
int ath11k_wmi_send_11d_scan_stop_cmd(struct ath11k *ar, u32 vdev_id)
{ … }
int ath11k_wmi_pdev_pktlog_enable(struct ath11k *ar, u32 pktlog_filter)
{ … }
int ath11k_wmi_pdev_pktlog_disable(struct ath11k *ar)
{ … }
void ath11k_wmi_fill_default_twt_params(struct wmi_twt_enable_params *twt_params)
{ … }
int ath11k_wmi_send_twt_enable_cmd(struct ath11k *ar, u32 pdev_id,
struct wmi_twt_enable_params *params)
{ … }
int
ath11k_wmi_send_twt_disable_cmd(struct ath11k *ar, u32 pdev_id)
{ … }
int ath11k_wmi_send_twt_add_dialog_cmd(struct ath11k *ar,
struct wmi_twt_add_dialog_params *params)
{ … }
int ath11k_wmi_send_twt_del_dialog_cmd(struct ath11k *ar,
struct wmi_twt_del_dialog_params *params)
{ … }
int ath11k_wmi_send_twt_pause_dialog_cmd(struct ath11k *ar,
struct wmi_twt_pause_dialog_params *params)
{ … }
int ath11k_wmi_send_twt_resume_dialog_cmd(struct ath11k *ar,
struct wmi_twt_resume_dialog_params *params)
{ … }
int
ath11k_wmi_send_obss_spr_cmd(struct ath11k *ar, u32 vdev_id,
struct ieee80211_he_obss_pd *he_obss_pd)
{ … }
int
ath11k_wmi_pdev_set_srg_bss_color_bitmap(struct ath11k *ar, u32 *bitmap)
{ … }
int
ath11k_wmi_pdev_set_srg_patial_bssid_bitmap(struct ath11k *ar, u32 *bitmap)
{ … }
int
ath11k_wmi_pdev_srg_obss_color_enable_bitmap(struct ath11k *ar, u32 *bitmap)
{ … }
int
ath11k_wmi_pdev_srg_obss_bssid_enable_bitmap(struct ath11k *ar, u32 *bitmap)
{ … }
int
ath11k_wmi_pdev_non_srg_obss_color_enable_bitmap(struct ath11k *ar, u32 *bitmap)
{ … }
int
ath11k_wmi_pdev_non_srg_obss_bssid_enable_bitmap(struct ath11k *ar, u32 *bitmap)
{ … }
int
ath11k_wmi_send_obss_color_collision_cfg_cmd(struct ath11k *ar, u32 vdev_id,
u8 bss_color, u32 period,
bool enable)
{ … }
int ath11k_wmi_send_bss_color_change_enable_cmd(struct ath11k *ar, u32 vdev_id,
bool enable)
{ … }
int ath11k_wmi_fils_discovery_tmpl(struct ath11k *ar, u32 vdev_id,
struct sk_buff *tmpl)
{ … }
int ath11k_wmi_probe_resp_tmpl(struct ath11k *ar, u32 vdev_id,
struct sk_buff *tmpl)
{ … }
int ath11k_wmi_fils_discovery(struct ath11k *ar, u32 vdev_id, u32 interval,
bool unsol_bcast_probe_resp_enabled)
{ … }
static void
ath11k_wmi_obss_color_collision_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void
ath11k_fill_band_to_mac_param(struct ath11k_base *soc,
struct wmi_host_pdev_band_to_mac *band_to_mac)
{ … }
static void
ath11k_wmi_copy_resource_config(struct wmi_resource_config *wmi_cfg,
struct target_resource_config *tg_cfg)
{ … }
static int ath11k_init_cmd_send(struct ath11k_pdev_wmi *wmi,
struct wmi_init_cmd_param *param)
{ … }
int ath11k_wmi_pdev_lro_cfg(struct ath11k *ar,
int pdev_id)
{ … }
int ath11k_wmi_wait_for_service_ready(struct ath11k_base *ab)
{ … }
int ath11k_wmi_wait_for_unified_ready(struct ath11k_base *ab)
{ … }
int ath11k_wmi_set_hw_mode(struct ath11k_base *ab,
enum wmi_host_hw_mode_config_type mode)
{ … }
int ath11k_wmi_cmd_init(struct ath11k_base *ab)
{ … }
int ath11k_wmi_vdev_spectral_conf(struct ath11k *ar,
struct ath11k_wmi_vdev_spectral_conf_param *param)
{ … }
int ath11k_wmi_vdev_spectral_enable(struct ath11k *ar, u32 vdev_id,
u32 trigger, u32 enable)
{ … }
int ath11k_wmi_pdev_dma_ring_cfg(struct ath11k *ar,
struct ath11k_wmi_pdev_dma_ring_cfg_req_cmd *param)
{ … }
static int ath11k_wmi_tlv_dma_buf_entry_parse(struct ath11k_base *soc,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_dma_buf_meta_parse(struct ath11k_base *soc,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_dma_buf_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static void ath11k_wmi_pdev_dma_ring_buf_release_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static int ath11k_wmi_tlv_hw_mode_caps_parse(struct ath11k_base *soc,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_hw_mode_caps(struct ath11k_base *soc,
u16 len, const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_mac_phy_caps_parse(struct ath11k_base *soc,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_ext_hal_reg_caps_parse(struct ath11k_base *soc,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_ext_hal_reg_caps(struct ath11k_base *soc,
u16 len, const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_ext_soc_hal_reg_caps_parse(struct ath11k_base *soc,
u16 len, const void *ptr,
void *data)
{ … }
static int ath11k_wmi_tlv_dma_ring_caps_parse(struct ath11k_base *soc,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_alloc_dbring_caps(struct ath11k_base *ab,
u32 num_cap)
{ … }
static void ath11k_wmi_free_dbring_caps(struct ath11k_base *ab)
{ … }
static int ath11k_wmi_tlv_dma_ring_caps(struct ath11k_base *ab,
u16 len, const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_svc_rdy_ext_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_service_ready_ext_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static int ath11k_wmi_tlv_svc_rdy_ext2_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_service_ready_ext2_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static int ath11k_pull_vdev_start_resp_tlv(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_vdev_start_resp_event *vdev_rsp)
{ … }
static void ath11k_print_reg_rule(struct ath11k_base *ab, const char *band,
u32 num_reg_rules,
struct cur_reg_rule *reg_rule_ptr)
{ … }
static struct cur_reg_rule
*create_reg_rules_from_wmi(u32 num_reg_rules,
struct wmi_regulatory_rule_struct *wmi_reg_rule)
{ … }
static int ath11k_pull_reg_chan_list_update_ev(struct ath11k_base *ab,
struct sk_buff *skb,
struct cur_regulatory_info *reg_info)
{ … }
static struct cur_reg_rule
*create_ext_reg_rules_from_wmi(u32 num_reg_rules,
struct wmi_regulatory_ext_rule *wmi_reg_rule)
{ … }
static u8
ath11k_invalid_5ghz_reg_ext_rules_from_wmi(u32 num_reg_rules,
const struct wmi_regulatory_ext_rule *rule)
{ … }
static int ath11k_pull_reg_chan_list_ext_update_ev(struct ath11k_base *ab,
struct sk_buff *skb,
struct cur_regulatory_info *reg_info)
{ … }
static int ath11k_pull_peer_del_resp_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_peer_delete_resp_event *peer_del_resp)
{ … }
static int ath11k_pull_vdev_del_resp_ev(struct ath11k_base *ab,
struct sk_buff *skb,
u32 *vdev_id)
{ … }
static int ath11k_pull_bcn_tx_status_ev(struct ath11k_base *ab,
struct sk_buff *skb,
u32 *vdev_id, u32 *tx_status)
{ … }
static int ath11k_pull_vdev_stopped_param_tlv(struct ath11k_base *ab, struct sk_buff *skb,
u32 *vdev_id)
{ … }
static int ath11k_wmi_tlv_mgmt_rx_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_pull_mgmt_rx_params_tlv(struct ath11k_base *ab,
struct sk_buff *skb,
struct mgmt_rx_event_params *hdr)
{ … }
static int wmi_process_mgmt_tx_comp(struct ath11k *ar,
struct wmi_mgmt_tx_compl_event *tx_compl_param)
{ … }
static int ath11k_pull_mgmt_tx_compl_param_tlv(struct ath11k_base *ab,
struct sk_buff *skb,
struct wmi_mgmt_tx_compl_event *param)
{ … }
static void ath11k_wmi_event_scan_started(struct ath11k *ar)
{ … }
static void ath11k_wmi_event_scan_start_failed(struct ath11k *ar)
{ … }
static void ath11k_wmi_event_scan_completed(struct ath11k *ar)
{ … }
static void ath11k_wmi_event_scan_bss_chan(struct ath11k *ar)
{ … }
static void ath11k_wmi_event_scan_foreign_chan(struct ath11k *ar, u32 freq)
{ … }
static const char *
ath11k_wmi_event_scan_type_str(enum wmi_scan_event_type type,
enum wmi_scan_completion_reason reason)
{ … }
static int ath11k_pull_scan_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_scan_event *scan_evt_param)
{ … }
static int ath11k_pull_peer_sta_kickout_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_peer_sta_kickout_arg *arg)
{ … }
static int ath11k_pull_roam_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_roam_event *roam_ev)
{ … }
static int freq_to_idx(struct ath11k *ar, int freq)
{ … }
static int ath11k_pull_chan_info_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_chan_info_event *ch_info_ev)
{ … }
static int
ath11k_pull_pdev_bss_chan_info_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_pdev_bss_chan_info_event *bss_ch_info_ev)
{ … }
static int
ath11k_pull_vdev_install_key_compl_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_vdev_install_key_complete_arg *arg)
{ … }
static int ath11k_pull_peer_assoc_conf_ev(struct ath11k_base *ab, struct sk_buff *skb,
struct wmi_peer_assoc_conf_arg *peer_assoc_conf)
{ … }
static void ath11k_wmi_pull_pdev_stats_base(const struct wmi_pdev_stats_base *src,
struct ath11k_fw_stats_pdev *dst)
{ … }
static void
ath11k_wmi_pull_pdev_stats_tx(const struct wmi_pdev_stats_tx *src,
struct ath11k_fw_stats_pdev *dst)
{ … }
static void ath11k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src,
struct ath11k_fw_stats_pdev *dst)
{ … }
static void
ath11k_wmi_pull_vdev_stats(const struct wmi_vdev_stats *src,
struct ath11k_fw_stats_vdev *dst)
{ … }
static void
ath11k_wmi_pull_bcn_stats(const struct wmi_bcn_stats *src,
struct ath11k_fw_stats_bcn *dst)
{ … }
static int ath11k_wmi_tlv_rssi_chain_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_wmi_tlv_fw_stats_data_parse(struct ath11k_base *ab,
struct wmi_tlv_fw_stats_parse *parse,
const void *ptr,
u16 len)
{ … }
static int ath11k_wmi_tlv_fw_stats_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
int ath11k_wmi_pull_fw_stats(struct ath11k_base *ab, struct sk_buff *skb,
struct ath11k_fw_stats *stats)
{ … }
static void
ath11k_wmi_fw_pdev_base_stats_fill(const struct ath11k_fw_stats_pdev *pdev,
char *buf, u32 *length)
{ … }
static void
ath11k_wmi_fw_pdev_tx_stats_fill(const struct ath11k_fw_stats_pdev *pdev,
char *buf, u32 *length)
{ … }
static void
ath11k_wmi_fw_pdev_rx_stats_fill(const struct ath11k_fw_stats_pdev *pdev,
char *buf, u32 *length)
{ … }
static void
ath11k_wmi_fw_vdev_stats_fill(struct ath11k *ar,
const struct ath11k_fw_stats_vdev *vdev,
char *buf, u32 *length)
{ … }
static void
ath11k_wmi_fw_bcn_stats_fill(struct ath11k *ar,
const struct ath11k_fw_stats_bcn *bcn,
char *buf, u32 *length)
{ … }
void ath11k_wmi_fw_stats_fill(struct ath11k *ar,
struct ath11k_fw_stats *fw_stats,
u32 stats_id, char *buf)
{ … }
static void ath11k_wmi_op_ep_tx_credits(struct ath11k_base *ab)
{ … }
static int ath11k_reg_11d_new_cc_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_wmi_htc_tx_complete(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static int ath11k_reg_chan_list_event(struct ath11k_base *ab, struct sk_buff *skb,
enum wmi_reg_chan_list_cmd_type id)
{ … }
static int ath11k_wmi_tlv_rdy_parse(struct ath11k_base *ab, u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static int ath11k_ready_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_peer_delete_resp_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_vdev_delete_resp_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static inline const char *ath11k_wmi_vdev_resp_print(u32 vdev_resp_status)
{ … }
static void ath11k_vdev_start_resp_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_bcn_tx_status_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_wmi_event_peer_sta_ps_state_chg(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void ath11k_vdev_stopped_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_mgmt_rx_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_mgmt_tx_compl_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static struct ath11k *ath11k_get_ar_on_scan_state(struct ath11k_base *ab,
u32 vdev_id,
enum ath11k_scan_state state)
{ … }
static void ath11k_scan_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_roam_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_chan_info_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void
ath11k_pdev_bss_chan_info_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_vdev_install_key_compl_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static int ath11k_wmi_tlv_services_parser(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static void ath11k_service_available_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_peer_assoc_conf_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_update_stats_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void ath11k_pdev_ctl_failsafe_check_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void
ath11k_wmi_process_csa_switch_count_event(struct ath11k_base *ab,
const struct wmi_pdev_csa_switch_ev *ev,
const u32 *vdev_ids)
{ … }
static void
ath11k_wmi_pdev_csa_switch_count_status_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void
ath11k_wmi_pdev_dfs_radar_detected_event(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void
ath11k_wmi_pdev_temperature_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void ath11k_fils_discovery_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void ath11k_probe_resp_tx_status_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static int ath11k_wmi_tlv_wow_wakeup_host_parse(struct ath11k_base *ab,
u16 tag, u16 len,
const void *ptr, void *data)
{ … }
static void ath11k_wmi_event_wow_wakeup_host(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static void
ath11k_wmi_diag_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static const char *ath11k_wmi_twt_add_dialog_event_status(u32 status)
{ … }
static void ath11k_wmi_twt_add_dialog_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void ath11k_wmi_gtk_offload_status_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void ath11k_wmi_p2p_noa_event(struct ath11k_base *ab,
struct sk_buff *skb)
{ … }
static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb)
{ … }
static int ath11k_connect_pdev_htc_service(struct ath11k_base *ab,
u32 pdev_idx)
{ … }
static int
ath11k_wmi_send_unit_test_cmd(struct ath11k *ar,
struct wmi_unit_test_cmd ut_cmd,
u32 *test_args)
{ … }
int ath11k_wmi_simulate_radar(struct ath11k *ar)
{ … }
int ath11k_wmi_fw_dbglog_cfg(struct ath11k *ar, u32 *module_id_bitmap,
struct ath11k_fw_dbglog *dbglog)
{ … }
int ath11k_wmi_connect(struct ath11k_base *ab)
{ … }
static void ath11k_wmi_pdev_detach(struct ath11k_base *ab, u8 pdev_id)
{ … }
int ath11k_wmi_pdev_attach(struct ath11k_base *ab,
u8 pdev_id)
{ … }
int ath11k_wmi_attach(struct ath11k_base *ab)
{ … }
void ath11k_wmi_detach(struct ath11k_base *ab)
{ … }
int ath11k_wmi_hw_data_filter_cmd(struct ath11k *ar, u32 vdev_id,
u32 filter_bitmap, bool enable)
{ … }
int ath11k_wmi_wow_host_wakeup_ind(struct ath11k *ar)
{ … }
int ath11k_wmi_wow_enable(struct ath11k *ar)
{ … }
int ath11k_wmi_scan_prob_req_oui(struct ath11k *ar,
const u8 mac_addr[ETH_ALEN])
{ … }
int ath11k_wmi_wow_add_wakeup_event(struct ath11k *ar, u32 vdev_id,
enum wmi_wow_wakeup_event event,
u32 enable)
{ … }
int ath11k_wmi_wow_add_pattern(struct ath11k *ar, u32 vdev_id, u32 pattern_id,
const u8 *pattern, const u8 *mask,
int pattern_len, int pattern_offset)
{ … }
int ath11k_wmi_wow_del_pattern(struct ath11k *ar, u32 vdev_id, u32 pattern_id)
{ … }
static struct sk_buff *
ath11k_wmi_op_gen_config_pno_start(struct ath11k *ar,
u32 vdev_id,
struct wmi_pno_scan_req *pno)
{ … }
static struct sk_buff *ath11k_wmi_op_gen_config_pno_stop(struct ath11k *ar,
u32 vdev_id)
{ … }
int ath11k_wmi_wow_config_pno(struct ath11k *ar, u32 vdev_id,
struct wmi_pno_scan_req *pno_scan)
{ … }
static void ath11k_wmi_fill_ns_offload(struct ath11k *ar,
struct ath11k_arp_ns_offload *offload,
u8 **ptr,
bool enable,
bool ext)
{ … }
static void ath11k_wmi_fill_arp_offload(struct ath11k *ar,
struct ath11k_arp_ns_offload *offload,
u8 **ptr,
bool enable)
{ … }
int ath11k_wmi_arp_ns_offload(struct ath11k *ar,
struct ath11k_vif *arvif, bool enable)
{ … }
int ath11k_wmi_gtk_rekey_offload(struct ath11k *ar,
struct ath11k_vif *arvif, bool enable)
{ … }
int ath11k_wmi_gtk_rekey_getinfo(struct ath11k *ar,
struct ath11k_vif *arvif)
{ … }
int ath11k_wmi_pdev_set_bios_sar_table_param(struct ath11k *ar, const u8 *sar_val)
{ … }
int ath11k_wmi_pdev_set_bios_geo_table_param(struct ath11k *ar)
{ … }
int ath11k_wmi_sta_keepalive(struct ath11k *ar,
const struct wmi_sta_keepalive_arg *arg)
{ … }
bool ath11k_wmi_supports_6ghz_cc_ext(struct ath11k *ar)
{ … }