linux/drivers/net/wireless/ath/ath11k/wmi.h

/* SPDX-License-Identifier: BSD-3-Clause-Clear */
/*
 * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#ifndef ATH11K_WMI_H
#define ATH11K_WMI_H

#include <net/mac80211.h>
#include "htc.h"

struct ath11k_base;
struct ath11k;
struct ath11k_fw_stats;
struct ath11k_fw_dbglog;
struct ath11k_vif;
struct ath11k_reg_tpc_power_info;

#define PSOC_HOST_MAX_NUM_SS

/* defines to set Packet extension values which can be 0 us, 8 usec or 16 usec */
#define MAX_HE_NSS
#define MAX_HE_MODULATION
#define MAX_HE_RU
#define HE_MODULATION_NONE
#define HE_PET_0_USEC
#define HE_PET_8_USEC
#define HE_PET_16_USEC

#define WMI_MAX_CHAINS

#define WMI_MAX_NUM_SS
#define WMI_MAX_NUM_RU

#define WMI_TLV_CMD(grp_id)
#define WMI_TLV_EV(grp_id)
#define WMI_TLV_CMD_UNSUPPORTED
#define WMI_TLV_PDEV_PARAM_UNSUPPORTED
#define WMI_TLV_VDEV_PARAM_UNSUPPORTED

struct wmi_cmd_hdr {} __packed;

struct wmi_tlv {} __packed;

#define WMI_TLV_LEN
#define WMI_TLV_TAG
#define TLV_HDR_SIZE

#define WMI_CMD_HDR_CMD_ID
#define WMI_MAX_MEM_REQS
#define ATH11K_MAX_HW_LISTEN_INTERVAL

#define WLAN_SCAN_MAX_HINT_S_SSID
#define WLAN_SCAN_MAX_HINT_BSSID
#define MAX_RNR_BSS

#define WLAN_SCAN_PARAMS_MAX_SSID
#define WLAN_SCAN_PARAMS_MAX_BSSID
#define WLAN_SCAN_PARAMS_MAX_IE_LEN

#define WMI_APPEND_TO_EXISTING_CHAN_LIST_FLAG

#define MAX_WMI_UTF_LEN
#define WMI_BA_MODE_BUFFER_SIZE_256
/*
 * HW mode config type replicated from FW header
 * @WMI_HOST_HW_MODE_SINGLE: Only one PHY is active.
 * @WMI_HOST_HW_MODE_DBS: Both PHYs are active in different bands,
 *                        one in 2G and another in 5G.
 * @WMI_HOST_HW_MODE_SBS_PASSIVE: Both PHYs are in passive mode (only rx) in
 *                        same band; no tx allowed.
 * @WMI_HOST_HW_MODE_SBS: Both PHYs are active in the same band.
 *                        Support for both PHYs within one band is planned
 *                        for 5G only(as indicated in WMI_MAC_PHY_CAPABILITIES),
 *                        but could be extended to other bands in the future.
 *                        The separation of the band between the two PHYs needs
 *                        to be communicated separately.
 * @WMI_HOST_HW_MODE_DBS_SBS: 3 PHYs, with 2 on the same band doing SBS
 *                           as in WMI_HW_MODE_SBS, and 3rd on the other band
 * @WMI_HOST_HW_MODE_DBS_OR_SBS: Two PHY with one PHY capabale of both 2G and
 *                        5G. It can support SBS (5G + 5G) OR DBS (5G + 2G).
 * @WMI_HOST_HW_MODE_MAX: Max hw_mode_id. Used to indicate invalid mode.
 */
enum wmi_host_hw_mode_config_type {};

/* HW mode priority values used to detect the preferred HW mode
 * on the available modes.
 */
enum wmi_host_hw_mode_priority {};

enum WMI_HOST_WLAN_BAND {};

/* Parameters used for WMI_VDEV_PARAM_AUTORATE_MISC_CFG command.
 * Used only for HE auto rate mode.
 */
enum {};

enum {};

/*
 * wmi command groups.
 */
enum wmi_cmd_group {};

#define WMI_CMD_GRP(grp_id)
#define WMI_EVT_GRP_START_ID(grp_id)

#define WMI_CMD_UNSUPPORTED

enum wmi_tlv_cmd_id {};

enum wmi_tlv_event_id {};

enum wmi_tlv_pdev_param {};

enum wmi_tlv_vdev_param {};

enum wmi_tlv_peer_flags {};

/** Enum list of TLV Tags for each parameter structure type. */
enum wmi_tlv_tag {};

enum wmi_tlv_service {};

enum {};

#define WMI_TPC_CHAINMASK_CONFIG_BAND_2G
#define WMI_TPC_CHAINMASK_CONFIG_BAND_5G
#define WMI_NUM_SUPPORTED_BAND_MAX

#define WMI_PEER_MIMO_PS_STATE
#define WMI_PEER_AMPDU
#define WMI_PEER_AUTHORIZE
#define WMI_PEER_CHWIDTH
#define WMI_PEER_NSS
#define WMI_PEER_USE_4ADDR
#define WMI_PEER_MEMBERSHIP
#define WMI_PEER_USERPOS
#define WMI_PEER_CRIT_PROTO_HINT_ENABLED
#define WMI_PEER_TX_FAIL_CNT_THR
#define WMI_PEER_SET_HW_RETRY_CTS2S
#define WMI_PEER_IBSS_ATIM_WINDOW_LENGTH
#define WMI_PEER_PHYMODE
#define WMI_PEER_USE_FIXED_PWR
#define WMI_PEER_PARAM_FIXED_RATE
#define WMI_PEER_SET_MU_WHITELIST
#define WMI_PEER_SET_MAX_TX_RATE
#define WMI_PEER_SET_MIN_TX_RATE
#define WMI_PEER_SET_DEFAULT_ROUTING

/* slot time long */
#define WMI_VDEV_SLOT_TIME_LONG
/* slot time short */
#define WMI_VDEV_SLOT_TIME_SHORT
/* preablbe long */
#define WMI_VDEV_PREAMBLE_LONG
/* preablbe short */
#define WMI_VDEV_PREAMBLE_SHORT

enum wmi_peer_smps_state {};

enum wmi_peer_chwidth {};

enum wmi_beacon_gen_mode {};

enum wmi_direct_buffer_module {};

/* enum wmi_nss_ratio - NSS ratio received from FW during service ready ext
 *			event
 * WMI_NSS_RATIO_1BY2_NSS -Max nss of 160MHz is equals to half of the max nss
 *			   of 80MHz
 * WMI_NSS_RATIO_3BY4_NSS - Max nss of 160MHz is equals to 3/4 of the max nss
 *			    of 80MHz
 * WMI_NSS_RATIO_1_NSS - Max nss of 160MHz is equals to the max nss of 80MHz
 * WMI_NSS_RATIO_2_NSS - Max nss of 160MHz is equals to two times the max
 *			 nss of 80MHz
 */

enum wmi_nss_ratio {};

enum wmi_dtim_policy {};

struct wmi_host_pdev_band_to_mac {};

struct ath11k_ppe_threshold {};

struct ath11k_service_ext_param {};

struct ath11k_hw_mode_caps {};

#define PSOC_HOST_MAX_PHY_SIZE
#define ATH11K_11B_SUPPORT
#define ATH11K_11G_SUPPORT
#define ATH11K_11A_SUPPORT
#define ATH11K_11N_SUPPORT
#define ATH11K_11AC_SUPPORT
#define ATH11K_11AX_SUPPORT

struct ath11k_hal_reg_capabilities_ext {};

#define WMI_HOST_MAX_PDEV

struct wlan_host_mem_chunk {} __packed;

struct wmi_host_mem_chunk {};

struct wmi_init_cmd_param {};

struct wmi_pdev_band_to_mac {} __packed;

struct wmi_pdev_set_hw_mode_cmd_param {} __packed;

struct wmi_ppe_threshold {} __packed;

#define HW_BD_INFO_SIZE

struct wmi_abi_version {} __packed;

struct wmi_init_cmd {} __packed;

#define WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64
#define WMI_RSRC_CFG_FLAG2_CALC_NEXT_DTIM_COUNT_SET
#define WMI_RSRC_CFG_FLAG1_ACK_RSSI

#define WMI_CFG_HOST_SERVICE_FLAG_REG_CC_EXT

struct wmi_resource_config {} __packed;

struct wmi_service_ready_event {} __packed;

#define WMI_SERVICE_BM_SIZE

#define WMI_SERVICE_SEGMENT_BM_SIZE32
#define WMI_SERVICE_EXT_BM_SIZE
#define WMI_AVAIL_SERVICE_BITS_IN_SIZE32
#define WMI_SERVICE_BITS_IN_SIZE32

struct wmi_service_ready_ext_event {} __packed;

struct wmi_soc_mac_phy_hw_mode_caps {} __packed;

struct wmi_hw_mode_capabilities {} __packed;

#define WMI_MAX_HECAP_PHY_SIZE
#define WMI_NSS_RATIO_ENABLE_DISABLE_BITPOS
#define WMI_NSS_RATIO_ENABLE_DISABLE_GET(_val)
#define WMI_NSS_RATIO_INFO_BITPOS
#define WMI_NSS_RATIO_INFO_GET(_val)

struct wmi_mac_phy_capabilities {} __packed;

struct wmi_hal_reg_capabilities_ext {} __packed;

struct wmi_soc_hal_reg_capabilities {} __packed;

/* 2 word representation of MAC addr */
struct wmi_mac_addr {} __packed;

struct wmi_dma_ring_capabilities {} __packed;

struct wmi_ready_event_min {} __packed;

struct wmi_ready_event {} __packed;

struct wmi_service_available_event {} __packed;

struct ath11k_pdev_wmi {};

struct vdev_create_params {};

struct wmi_vdev_create_cmd {} __packed;

struct wmi_vdev_txrx_streams {} __packed;

struct wmi_vdev_delete_cmd {} __packed;

struct wmi_vdev_up_cmd {} __packed;

struct wmi_vdev_stop_cmd {} __packed;

struct wmi_vdev_down_cmd {} __packed;

#define WMI_VDEV_START_HIDDEN_SSID
#define WMI_VDEV_START_PMF_ENABLED
#define WMI_VDEV_START_LDPC_RX_ENABLED
#define WMI_VDEV_START_HW_ENCRYPTION_DISABLED

struct wmi_ssid {} __packed;

#define ATH11K_VDEV_SETUP_TIMEOUT_HZ

struct wmi_vdev_start_request_cmd {} __packed;

#define MGMT_TX_DL_FRM_LEN
#define WMI_MAC_MAX_SSID_LENGTH
struct mac_ssid {} __packed;

struct wmi_p2p_noa_descriptor {};

struct channel_param {} __packed;

enum wmi_phy_mode {};

static inline const char *ath11k_wmi_phymode_str(enum wmi_phy_mode mode)
{}

struct wmi_channel_arg {};

struct wmi_vdev_start_req_arg {};

struct peer_create_params {};

struct peer_delete_params {};

struct peer_flush_params {};

struct pdev_set_regdomain_params {};

struct rx_reorder_queue_remove_params {};

#define WMI_HOST_PDEV_ID_SOC
#define WMI_HOST_PDEV_ID_0
#define WMI_HOST_PDEV_ID_1
#define WMI_HOST_PDEV_ID_2

#define WMI_PDEV_ID_SOC
#define WMI_PDEV_ID_1ST
#define WMI_PDEV_ID_2ND
#define WMI_PDEV_ID_3RD

/* Freq units in MHz */
#define REG_RULE_START_FREQ
#define REG_RULE_END_FREQ
#define REG_RULE_FLAGS
#define REG_RULE_MAX_BW
#define REG_RULE_REG_PWR
#define REG_RULE_ANT_GAIN
#define REG_RULE_PSD_INFO
#define REG_RULE_PSD_EIRP

#define WMI_VDEV_PARAM_TXBF_SU_TX_BFEE
#define WMI_VDEV_PARAM_TXBF_MU_TX_BFEE
#define WMI_VDEV_PARAM_TXBF_SU_TX_BFER
#define WMI_VDEV_PARAM_TXBF_MU_TX_BFER

#define HE_PHYCAP_BYTE_0
#define HE_PHYCAP_BYTE_1
#define HE_PHYCAP_BYTE_2
#define HE_PHYCAP_BYTE_3
#define HE_PHYCAP_BYTE_4

#define HECAP_PHY_SU_BFER
#define HECAP_PHY_SU_BFEE
#define HECAP_PHY_MU_BFER
#define HECAP_PHY_UL_MUMIMO
#define HECAP_PHY_UL_MUOFDMA

#define HECAP_PHY_SUBFMR_GET(hecap_phy)

#define HECAP_PHY_SUBFME_GET(hecap_phy)

#define HECAP_PHY_MUBFMR_GET(hecap_phy)

#define HECAP_PHY_ULMUMIMO_GET(hecap_phy)

#define HECAP_PHY_ULOFDMA_GET(hecap_phy)

#define HE_MODE_SU_TX_BFEE
#define HE_MODE_SU_TX_BFER
#define HE_MODE_MU_TX_BFEE
#define HE_MODE_MU_TX_BFER
#define HE_MODE_DL_OFDMA
#define HE_MODE_UL_OFDMA
#define HE_MODE_UL_MUMIMO

#define HE_DL_MUOFDMA_ENABLE
#define HE_UL_MUOFDMA_ENABLE
#define HE_DL_MUMIMO_ENABLE
#define HE_UL_MUMIMO_ENABLE
#define HE_MU_BFEE_ENABLE
#define HE_SU_BFEE_ENABLE
#define HE_MU_BFER_ENABLE
#define HE_SU_BFER_ENABLE

#define HE_VHT_SOUNDING_MODE_ENABLE
#define HE_SU_MU_SOUNDING_MODE_ENABLE
#define HE_TRIG_NONTRIG_SOUNDING_MODE_ENABLE

/* HE or VHT Sounding */
#define HE_VHT_SOUNDING_MODE
/* SU or MU Sounding */
#define HE_SU_MU_SOUNDING_MODE
/* Trig or Non-Trig Sounding */
#define HE_TRIG_NONTRIG_SOUNDING_MODE

#define WMI_TXBF_STS_CAP_OFFSET_LSB
#define WMI_TXBF_STS_CAP_OFFSET_MASK
#define WMI_BF_SOUND_DIM_OFFSET_LSB
#define WMI_BF_SOUND_DIM_OFFSET_MASK

struct pdev_params {};

enum wmi_peer_type {};

struct wmi_peer_create_cmd {} __packed;

struct wmi_peer_delete_cmd {} __packed;

struct wmi_peer_reorder_queue_setup_cmd {} __packed;

struct wmi_peer_reorder_queue_remove_cmd {} __packed;

struct gpio_config_params {};

enum wmi_gpio_type {};

enum wmi_gpio_intr_type {};

enum wmi_bss_chan_info_req_type {};

struct wmi_gpio_config_cmd_param {};

struct gpio_output_params {};

struct wmi_gpio_output_cmd_param {};

struct set_fwtest_params {};

struct wmi_fwtest_set_param_cmd_param {};

struct wmi_pdev_set_param_cmd {} __packed;

struct wmi_pdev_set_ps_mode_cmd {} __packed;

struct wmi_pdev_suspend_cmd {} __packed;

struct wmi_pdev_resume_cmd {} __packed;

struct wmi_pdev_bss_chan_info_req_cmd {} __packed;

struct wmi_ap_ps_peer_cmd {} __packed;

struct wmi_sta_powersave_param_cmd {} __packed;

struct wmi_pdev_set_regdomain_cmd {} __packed;

struct wmi_peer_set_param_cmd {} __packed;

struct wmi_peer_flush_tids_cmd {} __packed;

struct wmi_dfs_phyerr_offload_cmd {} __packed;

struct wmi_bcn_offload_ctrl_cmd {} __packed;

enum scan_dwelltime_adaptive_mode {};

#define WLAN_SSID_MAX_LEN

struct element_info {};

struct wlan_ssid {};

struct wmi_vdev_ch_power_info {} __packed;

struct wmi_vdev_set_tpc_power_cmd {} __packed;

#define WMI_IE_BITMAP_SIZE

/* prefix used by scan requestor ids on the host */
#define WMI_HOST_SCAN_REQUESTOR_ID_PREFIX

/* prefix used by scan request ids generated on the host */
/* host cycles through the lower 12 bits to generate ids */
#define WMI_HOST_SCAN_REQ_ID_PREFIX

/* Values lower than this may be refused by some firmware revisions with a scan
 * completion with a timedout reason.
 */
#define WMI_SCAN_CHAN_MIN_TIME_MSEC

/* Scan priority numbers must be sequential, starting with 0 */
enum wmi_scan_priority {};

enum wmi_scan_event_type {};

enum wmi_scan_completion_reason {};

struct  wmi_start_scan_cmd {} __packed;

#define WMI_SCAN_FLAG_PASSIVE
#define WMI_SCAN_ADD_BCAST_PROBE_REQ
#define WMI_SCAN_ADD_CCK_RATES
#define WMI_SCAN_ADD_OFDM_RATES
#define WMI_SCAN_CHAN_STAT_EVENT
#define WMI_SCAN_FILTER_PROBE_REQ
#define WMI_SCAN_BYPASS_DFS_CHN
#define WMI_SCAN_CONTINUE_ON_ERROR
#define WMI_SCAN_FILTER_PROMISCUOS
#define WMI_SCAN_FLAG_FORCE_ACTIVE_ON_DFS
#define WMI_SCAN_ADD_TPC_IE_IN_PROBE_REQ
#define WMI_SCAN_ADD_DS_IE_IN_PROBE_REQ
#define WMI_SCAN_ADD_SPOOF_MAC_IN_PROBE_REQ
#define WMI_SCAN_OFFCHAN_MGMT_TX
#define WMI_SCAN_OFFCHAN_DATA_TX
#define WMI_SCAN_CAPTURE_PHY_ERROR
#define WMI_SCAN_FLAG_STRICT_PASSIVE_ON_PCHN
#define WMI_SCAN_FLAG_HALF_RATE_SUPPORT
#define WMI_SCAN_FLAG_QUARTER_RATE_SUPPORT
#define WMI_SCAN_RANDOM_SEQ_NO_IN_PROBE_REQ
#define WMI_SCAN_ENABLE_IE_WHTELIST_IN_PROBE_REQ

#define WMI_SCAN_DWELL_MODE_MASK
#define WMI_SCAN_DWELL_MODE_SHIFT
#define WMI_SCAN_FLAG_EXT_PASSIVE_SCAN_START_TIME_ENHANCE

#define WMI_SCAN_CONFIG_PER_CHANNEL_MASK
#define WMI_SCAN_CH_FLAG_SCAN_ONLY_IF_RNR_FOUND

enum {};

#define WMI_SCAN_SET_DWELL_MODE(flag, mode)

struct hint_short_ssid {};

struct hint_bssid {};

struct scan_req_params {};

struct wmi_ssid_arg {};

struct wmi_bssid_arg {};

#define WMI_SCAN_STOP_ONE
#define WMI_SCN_STOP_VAP_ALL
#define WMI_SCAN_STOP_ALL

/* Prefix 0xA000 indicates that the scan request
 * is trigger by HOST
 */
#define ATH11K_SCAN_ID

enum scan_cancel_req_type {};

struct scan_cancel_param {};

struct  wmi_bcn_send_from_host_cmd {};

#define WMI_CHAN_INFO_MODE
#define WMI_CHAN_INFO_HT40_PLUS
#define WMI_CHAN_INFO_PASSIVE
#define WMI_CHAN_INFO_ADHOC_ALLOWED
#define WMI_CHAN_INFO_AP_DISABLED
#define WMI_CHAN_INFO_DFS
#define WMI_CHAN_INFO_ALLOW_HT
#define WMI_CHAN_INFO_ALLOW_VHT
#define WMI_CHAN_INFO_CHAN_CHANGE_CAUSE_CSA
#define WMI_CHAN_INFO_HALF_RATE
#define WMI_CHAN_INFO_QUARTER_RATE
#define WMI_CHAN_INFO_DFS_FREQ2
#define WMI_CHAN_INFO_ALLOW_HE
#define WMI_CHAN_INFO_PSC

#define WMI_CHAN_REG_INFO1_MIN_PWR
#define WMI_CHAN_REG_INFO1_MAX_PWR
#define WMI_CHAN_REG_INFO1_MAX_REG_PWR
#define WMI_CHAN_REG_INFO1_REG_CLS

#define WMI_CHAN_REG_INFO2_ANT_MAX
#define WMI_CHAN_REG_INFO2_MAX_TX_PWR

struct wmi_channel {} __packed;

struct wmi_mgmt_params {};

enum wmi_sta_ps_mode {};

#define WMI_SMPS_MASK_LOWER_16BITS
#define WMI_SMPS_MASK_UPPER_3BITS
#define WMI_SMPS_PARAM_VALUE_SHIFT

#define ATH11K_WMI_FW_HANG_ASSERT_TYPE
#define ATH11K_WMI_FW_HANG_DELAY

/* type, 0:unused 1: ASSERT 2: not respond detect command
 * delay_time_ms, the simulate will delay time
 */

struct wmi_force_fw_hang_cmd {};

struct wmi_vdev_set_param_cmd {} __packed;

enum wmi_stats_id {};

struct wmi_request_stats_cmd {} __packed;

struct wmi_get_pdev_temperature_cmd {} __packed;

struct wmi_ftm_seg_hdr {} __packed;

struct wmi_ftm_cmd {} __packed;

struct wmi_ftm_event_msg {} __packed;

#define WMI_P2P_MAX_NOA_DESCRIPTORS

struct wmi_p2p_noa_event {} __packed;

struct ath11k_wmi_p2p_noa_descriptor {} __packed;

#define WMI_P2P_NOA_INFO_CHANGED_FLAG
#define WMI_P2P_NOA_INFO_INDEX
#define WMI_P2P_NOA_INFO_OPP_PS
#define WMI_P2P_NOA_INFO_CTWIN_TU
#define WMI_P2P_NOA_INFO_DESC_NUM

struct ath11k_wmi_p2p_noa_info {} __packed;

#define WMI_BEACON_TX_BUFFER_SIZE

#define WMI_EMA_TMPL_IDX_SHIFT
#define WMI_EMA_FIRST_TMPL_SHIFT
#define WMI_EMA_LAST_TMPL_SHIFT

struct wmi_bcn_tmpl_cmd {} __packed;

struct wmi_p2p_go_set_beacon_ie_cmd {} __packed;

struct wmi_key_seq_counter {} __packed;

struct wmi_vdev_install_key_cmd {} __packed;

struct wmi_vdev_install_key_arg {};

#define WMI_MAX_SUPPORTED_RATES
#define WMI_HOST_MAX_HECAP_PHY_SIZE
#define WMI_HOST_MAX_HE_RATE_SET
#define WMI_HECAP_TXRX_MCS_NSS_IDX_80
#define WMI_HECAP_TXRX_MCS_NSS_IDX_160
#define WMI_HECAP_TXRX_MCS_NSS_IDX_80_80

struct wmi_rate_set_arg {};

struct peer_assoc_params {};

struct  wmi_peer_assoc_complete_cmd {} __packed;

struct wmi_stop_scan_cmd {};

struct scan_chan_list_params {};

struct wmi_scan_chan_list_cmd {} __packed;

struct wmi_scan_prob_req_oui_cmd {}  __packed;

#define WMI_MGMT_SEND_DOWNLD_LEN

#define WMI_TX_PARAMS_DWORD0_POWER
#define WMI_TX_PARAMS_DWORD0_MCS_MASK
#define WMI_TX_PARAMS_DWORD0_NSS_MASK
#define WMI_TX_PARAMS_DWORD0_RETRY_LIMIT

#define WMI_TX_PARAMS_DWORD1_CHAIN_MASK
#define WMI_TX_PARAMS_DWORD1_BW_MASK
#define WMI_TX_PARAMS_DWORD1_PREAMBLE_TYPE
#define WMI_TX_PARAMS_DWORD1_FRAME_TYPE
#define WMI_TX_PARAMS_DWORD1_RSVD

struct wmi_mgmt_send_params {};

struct wmi_mgmt_send_cmd {} __packed;

struct wmi_sta_powersave_mode_cmd {};

struct wmi_sta_smps_force_mode_cmd {};

struct wmi_sta_smps_param_cmd {};

struct wmi_bcn_prb_info {} __packed;

enum {};

struct green_ap_ps_params {};

struct wmi_pdev_green_ap_ps_enable_cmd_param {};

struct ap_ps_params {};

struct vdev_set_params {};

struct stats_request_params {};

struct wmi_set_current_country_params {};

struct wmi_set_current_country_cmd {} __packed;

enum set_init_cc_type {};

enum set_init_cc_flags {};

struct wmi_init_country_params {};

struct wmi_init_country_cmd {} __packed;

struct wmi_11d_scan_start_params {};

struct wmi_11d_scan_start_cmd {} __packed;

struct wmi_11d_scan_stop_cmd {} __packed;

struct wmi_11d_new_cc_ev {} __packed;

#define THERMAL_LEVELS
struct tt_level_config {};

struct thermal_mitigation_params {};

struct wmi_therm_throt_config_request_cmd {} __packed;

struct wmi_therm_throt_level_config_info {} __packed;

struct wmi_delba_send_cmd {} __packed;

struct wmi_addba_setresponse_cmd {} __packed;

struct wmi_addba_send_cmd {} __packed;

struct wmi_addba_clear_resp_cmd {} __packed;

struct wmi_pdev_pktlog_filter_info {} __packed;

struct wmi_pdev_pktlog_filter_cmd {} __packed;

enum ath11k_wmi_pktlog_enable {};

struct wmi_pktlog_enable_cmd {} __packed;

struct wmi_pktlog_disable_cmd {} __packed;

#define DFS_PHYERR_UNIT_TEST_CMD
#define DFS_UNIT_TEST_MODULE
#define DFS_UNIT_TEST_TOKEN

enum dfs_test_args_idx {};

struct wmi_dfs_unit_test_arg {};

struct wmi_unit_test_cmd {} __packed;

#define MAX_SUPPORTED_RATES

struct beacon_tmpl_params {};

struct wmi_rate_set {};

struct wmi_vht_rate_set {} __packed;

struct wmi_he_rate_set {} __packed;

#define MAX_REG_RULES
#define REG_ALPHA2_LEN
#define MAX_6GHZ_REG_RULES

enum wmi_start_event_param {};

struct wmi_vdev_start_resp_event {} __packed;

/* VDEV start response status codes */
enum wmi_vdev_start_resp_status_code {};

/* Regaulatory Rule Flags Passed by FW */
#define REGULATORY_CHAN_DISABLED
#define REGULATORY_CHAN_NO_IR
#define REGULATORY_CHAN_RADAR
#define REGULATORY_CHAN_NO_OFDM
#define REGULATORY_CHAN_INDOOR_ONLY

#define REGULATORY_CHAN_NO_HT40
#define REGULATORY_CHAN_NO_80MHZ
#define REGULATORY_CHAN_NO_160MHZ
#define REGULATORY_CHAN_NO_20MHZ
#define REGULATORY_CHAN_NO_10MHZ

enum wmi_reg_chan_list_cmd_type {};

enum wmi_reg_cc_setting_code {};

enum cc_setting_code {};

static inline enum cc_setting_code
ath11k_wmi_cc_setting_code_to_reg(enum wmi_reg_cc_setting_code status_code)
{}

static inline const char *ath11k_cc_status_to_str(enum cc_setting_code code)
{}

enum wmi_reg_6ghz_ap_type {};

static inline const char *
ath11k_6ghz_ap_type_to_str(enum wmi_reg_6ghz_ap_type type)
{}

enum wmi_reg_6ghz_client_type {};

static inline const char *
ath11k_6ghz_client_type_to_str(enum wmi_reg_6ghz_client_type type)
{}

enum reg_subdomains_6ghz {};

static inline const char *
ath11k_sub_reg_6ghz_to_str(enum reg_subdomains_6ghz sub_id)
{}

enum reg_super_domain_6ghz {};

static inline const char *
ath11k_super_reg_6ghz_to_str(enum reg_super_domain_6ghz domain_id)
{}

struct cur_reg_rule {};

struct cur_regulatory_info {};

struct wmi_reg_chan_list_cc_event {} __packed;

struct wmi_regulatory_rule_struct {};

#define WMI_REG_CLIENT_MAX

struct wmi_reg_chan_list_cc_ext_event {} __packed;

struct wmi_regulatory_ext_rule {} __packed;

struct wmi_vdev_delete_resp_event {} __packed;

struct wmi_peer_delete_resp_event {} __packed;

struct wmi_bcn_tx_status_event {} __packed;

struct wmi_vdev_stopped_event {} __packed;

struct wmi_pdev_bss_chan_info_event {} __packed;

#define WMI_VDEV_INSTALL_KEY_COMPL_STATUS_SUCCESS

struct wmi_vdev_install_key_compl_event {} __packed;

struct wmi_vdev_install_key_complete_arg {};

struct wmi_peer_assoc_conf_event {} __packed;

struct wmi_peer_assoc_conf_arg {};

struct wmi_fils_discovery_event {} __packed;

struct wmi_probe_resp_tx_status_event {} __packed;

/*
 * PDEV statistics
 */
struct wmi_pdev_stats_base {} __packed;

struct wmi_pdev_stats_extra {} __packed;

struct wmi_pdev_stats_tx {} __packed;

struct wmi_pdev_stats_rx {} __packed;

struct wmi_pdev_stats {} __packed;

#define WLAN_MAX_AC
#define MAX_TX_RATE_VALUES
#define MAX_TX_RATE_VALUES

struct wmi_vdev_stats {} __packed;

struct wmi_bcn_stats {} __packed;

struct wmi_stats_event {} __packed;

struct wmi_rssi_stats {} __packed;

struct wmi_per_chain_rssi_stats {} __packed;

struct wmi_pdev_ctl_failsafe_chk_event {} __packed;

struct wmi_pdev_csa_switch_ev {} __packed;

struct wmi_pdev_radar_ev {} __packed;

struct wmi_pdev_temperature_event {} __packed;

#define WMI_RX_STATUS_OK
#define WMI_RX_STATUS_ERR_CRC
#define WMI_RX_STATUS_ERR_DECRYPT
#define WMI_RX_STATUS_ERR_MIC
#define WMI_RX_STATUS_ERR_KEY_CACHE_MISS

#define WLAN_MGMT_TXRX_HOST_MAX_ANTENNA

struct mgmt_rx_event_params {};

#define ATH_MAX_ANTENNA

struct wmi_mgmt_rx_hdr {} __packed;

#define MAX_ANTENNA_EIGHT

struct wmi_rssi_ctl_ext {};

struct wmi_mgmt_tx_compl_event {} __packed;

struct wmi_scan_event {} __packed;

struct wmi_peer_sta_kickout_arg {};

struct wmi_peer_sta_kickout_event {} __packed;

enum wmi_roam_reason {};

struct wmi_roam_event {} __packed;

#define WMI_CHAN_INFO_START_RESP
#define WMI_CHAN_INFO_END_RESP

struct wmi_chan_info_event {} __packed;

struct ath11k_targ_cap {};

enum wmi_vdev_type {};

enum wmi_vdev_subtype {};

enum wmi_sta_powersave_param {};

#define WMI_UAPSD_AC_TYPE_DELI
#define WMI_UAPSD_AC_TYPE_TRIG

#define WMI_UAPSD_AC_BIT_MASK(ac, type)

enum wmi_sta_ps_param_uapsd {};

#define WMI_STA_UAPSD_MAX_INTERVAL_MSEC

struct wmi_sta_uapsd_auto_trig_param {};

struct wmi_sta_uapsd_auto_trig_cmd_fixed_param {};

struct wmi_sta_uapsd_auto_trig_arg {};

enum wmi_sta_ps_param_tx_wake_threshold {};

/* The maximum number of PS-Poll frames the FW will send in response to
 * traffic advertised in TIM before waking up (by sending a null frame with PS
 * = 0). Value 0 has a special meaning: there is no maximum count and the FW
 * will send as many PS-Poll as are necessary to retrieve buffered BU. This
 * parameter is used when the RX wake policy is
 * WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD and ignored when the RX wake
 * policy is WMI_STA_PS_RX_WAKE_POLICY_WAKE.
 */
enum wmi_sta_ps_param_pspoll_count {};

/* U-APSD configuration of peer station from (re)assoc request and TSPECs */
enum wmi_ap_ps_param_uapsd {};

/* U-APSD maximum service period of peer station */
enum wmi_ap_ps_peer_param_max_sp {};

enum wmi_ap_ps_peer_param {};

#define DISABLE_SIFS_RESPONSE_TRIGGER

#define WMI_MAX_KEY_INDEX
#define WMI_MAX_KEY_LEN

#define WMI_KEY_PAIRWISE
#define WMI_KEY_GROUP

#define WMI_CIPHER_NONE
#define WMI_CIPHER_WEP
#define WMI_CIPHER_TKIP
#define WMI_CIPHER_AES_OCB
#define WMI_CIPHER_AES_CCM
#define WMI_CIPHER_WAPI
#define WMI_CIPHER_CKIP
#define WMI_CIPHER_AES_CMAC
#define WMI_CIPHER_ANY
#define WMI_CIPHER_AES_GCM
#define WMI_CIPHER_AES_GMAC

/* Value to disable fixed rate setting */
#define WMI_FIXED_RATE_NONE

#define ATH11K_RC_VERSION_OFFSET
#define ATH11K_RC_PREAMBLE_OFFSET
#define ATH11K_RC_NSS_OFFSET

#define ATH11K_HW_RATE_CODE(rate, nss, preamble)

/* Preamble types to be used with VDEV fixed rate configuration */
enum wmi_rate_preamble {};

/**
 * enum wmi_rtscts_prot_mode - Enable/Disable RTS/CTS and CTS2Self Protection.
 * @WMI_RTS_CTS_DISABLED: RTS/CTS protection is disabled.
 * @WMI_USE_RTS_CTS: RTS/CTS Enabled.
 * @WMI_USE_CTS2SELF: CTS to self protection Enabled.
 */
enum wmi_rtscts_prot_mode {};

/**
 * enum wmi_rtscts_profile - Selection of RTS CTS profile along with enabling
 *                           protection mode.
 * @WMI_RTSCTS_FOR_NO_RATESERIES: Neither of rate-series should use RTS-CTS
 * @WMI_RTSCTS_FOR_SECOND_RATESERIES: Only second rate-series will use RTS-CTS
 * @WMI_RTSCTS_ACROSS_SW_RETRIES: Only the second rate-series will use RTS-CTS,
 *                                but if there's a sw retry, both the rate
 *                                series will use RTS-CTS.
 * @WMI_RTSCTS_ERP: RTS/CTS used for ERP protection for every PPDU.
 * @WMI_RTSCTS_FOR_ALL_RATESERIES: Enable RTS-CTS for all rate series.
 */
enum wmi_rtscts_profile {};

struct ath11k_hal_reg_cap {};

struct ath11k_mem_chunk {};

#define WMI_SKB_HEADROOM

enum wmi_sta_ps_param_rx_wake_policy {};

/* Do not change existing values! Used by ath11k_frame_mode parameter
 * module parameter.
 */
enum ath11k_hw_txrx_mode {};

struct wmi_wmm_params {} __packed;

struct wmi_wmm_params_arg {};

struct wmi_vdev_set_wmm_params_cmd {} __packed;

struct wmi_wmm_params_all_arg {};

#define ATH11K_TWT_DEF_STA_CONG_TIMER_MS
#define ATH11K_TWT_DEF_DEFAULT_SLOT_SIZE
#define ATH11K_TWT_DEF_CONGESTION_THRESH_SETUP
#define ATH11K_TWT_DEF_CONGESTION_THRESH_TEARDOWN
#define ATH11K_TWT_DEF_CONGESTION_THRESH_CRITICAL
#define ATH11K_TWT_DEF_INTERFERENCE_THRESH_TEARDOWN
#define ATH11K_TWT_DEF_INTERFERENCE_THRESH_SETUP
#define ATH11K_TWT_DEF_MIN_NO_STA_SETUP
#define ATH11K_TWT_DEF_MIN_NO_STA_TEARDOWN
#define ATH11K_TWT_DEF_NO_OF_BCAST_MCAST_SLOTS
#define ATH11K_TWT_DEF_MIN_NO_TWT_SLOTS
#define ATH11K_TWT_DEF_MAX_NO_STA_TWT
#define ATH11K_TWT_DEF_MODE_CHECK_INTERVAL
#define ATH11K_TWT_DEF_ADD_STA_SLOT_INTERVAL
#define ATH11K_TWT_DEF_REMOVE_STA_SLOT_INTERVAL

struct wmi_twt_enable_params {};

struct wmi_twt_enable_params_cmd {} __packed;

struct wmi_twt_disable_params_cmd {} __packed;

enum WMI_HOST_TWT_COMMAND {};

#define WMI_TWT_ADD_DIALOG_FLAG_BCAST
#define WMI_TWT_ADD_DIALOG_FLAG_TRIGGER
#define WMI_TWT_ADD_DIALOG_FLAG_FLOW_TYPE
#define WMI_TWT_ADD_DIALOG_FLAG_PROTECTION

struct wmi_twt_add_dialog_params_cmd {} __packed;

struct wmi_twt_add_dialog_params {} __packed;

enum  wmi_twt_add_dialog_status {};

struct wmi_twt_add_dialog_event {} __packed;

struct wmi_twt_del_dialog_params {} __packed;

struct wmi_twt_del_dialog_params_cmd {} __packed;

struct wmi_twt_pause_dialog_params {} __packed;

struct wmi_twt_pause_dialog_params_cmd {} __packed;

struct wmi_twt_resume_dialog_params {} __packed;

struct wmi_twt_resume_dialog_params_cmd {} __packed;

struct wmi_obss_spatial_reuse_params_cmd {} __packed;

struct wmi_pdev_obss_pd_bitmap_cmd {} __packed;

#define ATH11K_BSS_COLOR_COLLISION_SCAN_PERIOD_MS
#define ATH11K_OBSS_COLOR_COLLISION_DETECTION_DISABLE
#define ATH11K_OBSS_COLOR_COLLISION_DETECTION

#define ATH11K_BSS_COLOR_COLLISION_DETECTION_STA_PERIOD_MS
#define ATH11K_BSS_COLOR_COLLISION_DETECTION_AP_PERIOD_MS

enum wmi_bss_color_collision {};

struct wmi_obss_color_collision_cfg_params_cmd {} __packed;

struct wmi_bss_color_change_enable_params_cmd {} __packed;

struct wmi_obss_color_collision_event {} __packed;

#define ATH11K_IPV4_TH_SEED_SIZE
#define ATH11K_IPV6_TH_SEED_SIZE

struct ath11k_wmi_pdev_lro_config_cmd {} __packed;

#define ATH11K_WMI_SPECTRAL_COUNT_DEFAULT
#define ATH11K_WMI_SPECTRAL_PERIOD_DEFAULT
#define ATH11K_WMI_SPECTRAL_PRIORITY_DEFAULT
#define ATH11K_WMI_SPECTRAL_FFT_SIZE_DEFAULT
#define ATH11K_WMI_SPECTRAL_GC_ENA_DEFAULT
#define ATH11K_WMI_SPECTRAL_RESTART_ENA_DEFAULT
#define ATH11K_WMI_SPECTRAL_NOISE_FLOOR_REF_DEFAULT
#define ATH11K_WMI_SPECTRAL_INIT_DELAY_DEFAULT
#define ATH11K_WMI_SPECTRAL_NB_TONE_THR_DEFAULT
#define ATH11K_WMI_SPECTRAL_STR_BIN_THR_DEFAULT
#define ATH11K_WMI_SPECTRAL_WB_RPT_MODE_DEFAULT
#define ATH11K_WMI_SPECTRAL_RSSI_RPT_MODE_DEFAULT
#define ATH11K_WMI_SPECTRAL_RSSI_THR_DEFAULT
#define ATH11K_WMI_SPECTRAL_PWR_FORMAT_DEFAULT
#define ATH11K_WMI_SPECTRAL_RPT_MODE_DEFAULT
#define ATH11K_WMI_SPECTRAL_BIN_SCALE_DEFAULT
#define ATH11K_WMI_SPECTRAL_DBM_ADJ_DEFAULT
#define ATH11K_WMI_SPECTRAL_CHN_MASK_DEFAULT

struct ath11k_wmi_vdev_spectral_conf_param {} __packed;

struct ath11k_wmi_vdev_spectral_conf_cmd {} __packed;

#define ATH11K_WMI_SPECTRAL_TRIGGER_CMD_TRIGGER
#define ATH11K_WMI_SPECTRAL_TRIGGER_CMD_CLEAR
#define ATH11K_WMI_SPECTRAL_ENABLE_CMD_ENABLE
#define ATH11K_WMI_SPECTRAL_ENABLE_CMD_DISABLE

struct ath11k_wmi_vdev_spectral_enable_cmd {} __packed;

struct ath11k_wmi_pdev_dma_ring_cfg_req_cmd {} __packed;

struct ath11k_wmi_dma_buf_release_fixed_param {} __packed;

struct wmi_dma_buf_release_entry {} __packed;

#define WMI_SPECTRAL_META_INFO1_FREQ1
#define WMI_SPECTRAL_META_INFO1_FREQ2

#define WMI_SPECTRAL_META_INFO2_CHN_WIDTH

struct wmi_dma_buf_release_meta_data {} __packed;

enum wmi_fils_discovery_cmd_type {};

struct wmi_fils_discovery_cmd {} __packed;

struct wmi_fils_discovery_tmpl_cmd {} __packed;

struct wmi_probe_tmpl_cmd {} __packed;

struct target_resource_config {};

enum wmi_debug_log_param {};

struct wmi_debug_log_config_cmd_fixed_param {} __packed;

#define MAX_RADIOS

#define WMI_SERVICE_READY_TIMEOUT_HZ
#define WMI_SEND_TIMEOUT_HZ

enum ath11k_wmi_peer_ps_state {};

enum wmi_peer_ps_supported_bitmap {};

struct wmi_peer_sta_ps_state_chg_event {} __packed;

struct ath11k_wmi_base {};

/* Definition of HW data filtering */
enum hw_data_filter_type {};

struct wmi_hw_data_filter_cmd {} __packed;

/* WOW structures */
enum wmi_wow_wakeup_event {};

enum wmi_wow_interface_cfg {};

#define C2S

static inline const char *wow_wakeup_event(enum wmi_wow_wakeup_event ev)
{}

enum wmi_wow_wake_reason {};

static inline const char *wow_reason(enum wmi_wow_wake_reason reason)
{}

#undef C2S

struct wmi_wow_ev_arg {};

enum wmi_tlv_pattern_type {};

#define WOW_DEFAULT_BITMAP_PATTERN_SIZE
#define WOW_DEFAULT_BITMASK_SIZE

#define WOW_MIN_PATTERN_SIZE
#define WOW_MAX_PATTERN_SIZE
#define WOW_MAX_PKT_OFFSET
#define WOW_HDR_LEN
#define WOW_MAX_REDUCE

struct wmi_wow_add_del_event_cmd {} __packed;

struct wmi_wow_enable_cmd {}  __packed;

struct wmi_wow_host_wakeup_ind {} __packed;

struct wmi_tlv_wow_event_info {} __packed;

struct wmi_wow_bitmap_pattern {} __packed;

struct wmi_wow_add_pattern_cmd {} __packed;

struct wmi_wow_del_pattern_cmd {} __packed;

#define WMI_PNO_MAX_SCHED_SCAN_PLANS
#define WMI_PNO_MAX_SCHED_SCAN_PLAN_INT
#define WMI_PNO_MAX_SCHED_SCAN_PLAN_ITRNS
#define WMI_PNO_MAX_NETW_CHANNELS
#define WMI_PNO_MAX_NETW_CHANNELS_EX
#define WMI_PNO_MAX_SUPP_NETWORKS
#define WMI_PNO_MAX_IE_LENGTH

/* size based of dot11 declaration without extra IEs as we will not carry those for PNO */
#define WMI_PNO_MAX_PB_REQ_SIZE

#define WMI_PNO_24G_DEFAULT_CH
#define WMI_PNO_5G_DEFAULT_CH

#define WMI_ACTIVE_MAX_CHANNEL_TIME
#define WMI_PASSIVE_MAX_CHANNEL_TIME

/* SSID broadcast type */
enum wmi_ssid_bcast_type {};

#define WMI_NLO_MAX_SSIDS
#define WMI_NLO_MAX_CHAN

#define WMI_NLO_CONFIG_STOP
#define WMI_NLO_CONFIG_START
#define WMI_NLO_CONFIG_RESET
#define WMI_NLO_CONFIG_SLOW_SCAN
#define WMI_NLO_CONFIG_FAST_SCAN
#define WMI_NLO_CONFIG_SSID_HIDE_EN

/* This bit is used to indicate if EPNO or supplicant PNO is enabled.
 * Only one of them can be enabled at a given time
 */
#define WMI_NLO_CONFIG_ENLO
#define WMI_NLO_CONFIG_SCAN_PASSIVE
#define WMI_NLO_CONFIG_ENLO_RESET
#define WMI_NLO_CONFIG_SPOOFED_MAC_IN_PROBE_REQ
#define WMI_NLO_CONFIG_RANDOM_SEQ_NO_IN_PROBE_REQ
#define WMI_NLO_CONFIG_ENABLE_IE_WHITELIST_IN_PROBE_REQ
#define WMI_NLO_CONFIG_ENABLE_CNLO_RSSI_CONFIG

struct wmi_nlo_ssid_param {} __packed;

struct wmi_nlo_enc_param {} __packed;

struct wmi_nlo_auth_param {} __packed;

struct wmi_nlo_bcast_nw_param {} __packed;

struct wmi_nlo_rssi_param {} __packed;

struct nlo_configured_parameters {} __packed;

struct wmi_network_type {};

struct wmi_pno_scan_req {};

struct wmi_wow_nlo_config_cmd {} __packed;

#define WMI_MAX_NS_OFFLOADS
#define WMI_MAX_ARP_OFFLOADS

#define WMI_ARPOL_FLAGS_VALID
#define WMI_ARPOL_FLAGS_MAC_VALID
#define WMI_ARPOL_FLAGS_REMOTE_IP_VALID

struct wmi_arp_offload_tuple {} __packed;

#define WMI_NSOL_FLAGS_VALID
#define WMI_NSOL_FLAGS_MAC_VALID
#define WMI_NSOL_FLAGS_REMOTE_IP_VALID
#define WMI_NSOL_FLAGS_IS_IPV6_ANYCAST

#define WMI_NSOL_MAX_TARGET_IPS

struct wmi_ns_offload_tuple {} __packed;

struct wmi_set_arp_ns_offload_cmd {} __packed;

#define GTK_OFFLOAD_OPCODE_MASK
#define GTK_OFFLOAD_ENABLE_OPCODE
#define GTK_OFFLOAD_DISABLE_OPCODE
#define GTK_OFFLOAD_REQUEST_STATUS_OPCODE

#define GTK_OFFLOAD_KEK_BYTES
#define GTK_OFFLOAD_KCK_BYTES
#define GTK_REPLAY_COUNTER_BYTES
#define WMI_MAX_KEY_LEN
#define IGTK_PN_SIZE

struct wmi_replayc_cnt {} __packed;

struct wmi_gtk_offload_status_event {} __packed;

struct wmi_gtk_rekey_offload_cmd {} __packed;

#define BIOS_SAR_TABLE_LEN
#define BIOS_SAR_RSVD1_LEN
#define BIOS_SAR_RSVD2_LEN

struct wmi_pdev_set_sar_table_cmd {} __packed;

struct wmi_pdev_set_geo_table_cmd {} __packed;

struct wmi_sta_keepalive_cmd {} __packed;

struct wmi_sta_keepalive_arp_resp {} __packed;

struct wmi_sta_keepalive_arg {};

enum wmi_sta_keepalive_method {};

#define WMI_STA_KEEPALIVE_INTERVAL_DEFAULT
#define WMI_STA_KEEPALIVE_INTERVAL_DISABLE

const void **ath11k_wmi_tlv_parse_alloc(struct ath11k_base *ab,
					struct sk_buff *skb, gfp_t gfp);
int ath11k_wmi_cmd_send(struct ath11k_pdev_wmi *wmi, struct sk_buff *skb,
			u32 cmd_id);
struct sk_buff *ath11k_wmi_alloc_skb(struct ath11k_wmi_base *wmi_sc, u32 len);
int ath11k_wmi_mgmt_send(struct ath11k *ar, u32 vdev_id, u32 buf_id,
			 struct sk_buff *frame);
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_param);
int ath11k_wmi_vdev_down(struct ath11k *ar, u8 vdev_id);
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_vdev_stop(struct ath11k *ar, u8 vdev_id);
int ath11k_wmi_vdev_start(struct ath11k *ar, struct wmi_vdev_start_req_arg *arg,
			  bool restart);
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_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_wait_for_unified_ready(struct ath11k_base *ab);
int ath11k_wmi_cmd_init(struct ath11k_base *ab);
int ath11k_wmi_wait_for_service_ready(struct ath11k_base *ab);
int ath11k_wmi_connect(struct ath11k_base *ab);
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_vdev_create(struct ath11k *ar, u8 *macaddr,
			   struct vdev_create_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_send_peer_create_cmd(struct ath11k *ar,
				    struct peer_create_params *param);
int ath11k_wmi_vdev_set_param_cmd(struct ath11k *ar, u32 vdev_id,
				  u32 param_id, u32 param_value);

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_send_peer_delete_cmd(struct ath11k *ar,
				    const u8 *peer_addr, u8 vdev_id);
int ath11k_wmi_vdev_delete(struct ath11k *ar, u8 vdev_id);
void ath11k_wmi_start_scan_init(struct ath11k *ar, struct scan_req_params *arg);
int ath11k_wmi_send_scan_start_cmd(struct ath11k *ar,
				   struct scan_req_params *params);
int ath11k_wmi_send_scan_stop_cmd(struct ath11k *ar,
				  struct scan_cancel_param *param);
int ath11k_wmi_send_wmm_update_cmd_tlv(struct ath11k *ar, u32 vdev_id,
				       struct wmi_wmm_params_all_arg *param);
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_send_peer_assoc_cmd(struct ath11k *ar,
				   struct peer_assoc_params *param);
int ath11k_wmi_vdev_install_key(struct ath11k *ar,
				struct wmi_vdev_install_key_arg *arg);
int ath11k_wmi_pdev_bss_chan_info_request(struct ath11k *ar,
					  enum wmi_bss_chan_info_req_type type);
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_peer_flush_tids_cmd(struct ath11k *ar,
					u8 peer_addr[ETH_ALEN],
					struct peer_flush_params *param);
int ath11k_wmi_send_set_ap_ps_param_cmd(struct ath11k *ar, u8 *peer_addr,
					struct ap_ps_params *param);
int ath11k_wmi_send_scan_chan_list_cmd(struct ath11k *ar,
				       struct scan_chan_list_params *chan_list);
int ath11k_wmi_send_dfs_phyerr_offload_enable_cmd(struct ath11k *ar,
						  u32 pdev_id);
int ath11k_wmi_addba_clear_resp(struct ath11k *ar, u32 vdev_id, const u8 *mac);
int ath11k_wmi_addba_send(struct ath11k *ar, u32 vdev_id, const u8 *mac,
			  u32 tid, u32 buf_size);
int ath11k_wmi_addba_set_resp(struct ath11k *ar, u32 vdev_id, const u8 *mac,
			      u32 tid, u32 status);
int ath11k_wmi_delba_send(struct ath11k *ar, u32 vdev_id, const u8 *mac,
			  u32 tid, u32 initiator, u32 reason);
int ath11k_wmi_send_bcn_offload_control_cmd(struct ath11k *ar,
					    u32 vdev_id, u32 bcn_ctrl_op);
int ath11k_wmi_send_set_current_country_cmd(struct ath11k *ar,
					    struct wmi_set_current_country_params *param);
int
ath11k_wmi_send_init_country_cmd(struct ath11k *ar,
				 struct wmi_init_country_params init_cc_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_send_thermal_mitigation_param_cmd(struct ath11k *ar,
					     struct thermal_mitigation_params *param);
int ath11k_wmi_pdev_pktlog_enable(struct ath11k *ar, u32 pktlog_filter);
int ath11k_wmi_pdev_pktlog_disable(struct ath11k *ar);
int ath11k_wmi_pdev_peer_pktlog_filter(struct ath11k *ar, u8 *addr, u8 enable);
int
ath11k_wmi_rx_reord_queue_remove(struct ath11k *ar,
				 struct rx_reorder_queue_remove_params *param);
int ath11k_wmi_send_pdev_set_regdomain(struct ath11k *ar,
				       struct pdev_set_regdomain_params *param);
int ath11k_wmi_pull_fw_stats(struct ath11k_base *ab, struct sk_buff *skb,
			     struct ath11k_fw_stats *stats);
void ath11k_wmi_fw_stats_fill(struct ath11k *ar,
			      struct ath11k_fw_stats *fw_stats, u32 stats_id,
			      char *buf);
int ath11k_wmi_simulate_radar(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_pdev_lro_cfg(struct ath11k *ar, int pdev_id);
int ath11k_wmi_pdev_dma_ring_cfg(struct ath11k *ar,
				 struct ath11k_wmi_pdev_dma_ring_cfg_req_cmd *param);
int ath11k_wmi_vdev_spectral_enable(struct ath11k *ar, u32 vdev_id,
				    u32 trigger, u32 enable);
int ath11k_wmi_vdev_spectral_conf(struct ath11k *ar,
				  struct ath11k_wmi_vdev_spectral_conf_param *param);
int ath11k_wmi_fils_discovery_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);
int ath11k_wmi_probe_resp_tmpl(struct ath11k *ar, u32 vdev_id,
			       struct sk_buff *tmpl);
int ath11k_wmi_set_hw_mode(struct ath11k_base *ab,
			   enum wmi_host_hw_mode_config_type mode);
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_fw_dbglog_cfg(struct ath11k *ar, u32 *module_id_bitmap,
			     struct ath11k_fw_dbglog *dbglog);
int ath11k_wmi_wow_config_pno(struct ath11k *ar, u32 vdev_id,
			      struct wmi_pno_scan_req  *pno_scan);
int ath11k_wmi_wow_del_pattern(struct ath11k *ar, u32 vdev_id, u32 pattern_id);
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_add_wakeup_event(struct ath11k *ar, u32 vdev_id,
				    enum wmi_wow_wakeup_event event,
				    u32 enable);
int ath11k_wmi_hw_data_filter_cmd(struct ath11k *ar, u32 vdev_id,
				  u32 filter_bitmap, 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);
int ath11k_wmi_send_vdev_set_tpc_power(struct ath11k *ar,
				       u32 vdev_id,
				       struct ath11k_reg_tpc_power_info *param);

#endif