| /* |
| * Copyright (c) 2013-2018 The Linux Foundation. All rights reserved. |
| * |
| * Previously licensed under the ISC license by Qualcomm Atheros, Inc. |
| * |
| * |
| * Permission to use, copy, modify, and/or distribute this software for |
| * any purpose with or without fee is hereby granted, provided that the |
| * above copyright notice and this permission notice appear in all |
| * copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| * PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| /* |
| * This file was originally distributed by Qualcomm Atheros, Inc. |
| * under proprietary terms before Copyright ownership was assigned |
| * to the Linux Foundation. |
| */ |
| |
| /** |
| * @addtogroup WMIAPI |
| *@{ |
| */ |
| |
| /** @file |
| * This file specifies the WMI interface for the Software Architecture. |
| * |
| * It includes definitions of all the commands and events. Commands are messages |
| * from the host to the target. Events and Replies are messages from the target |
| * to the host. |
| * |
| * Ownership of correctness in regards to WMI commands |
| * belongs to the host driver and the target is not required to validate |
| * parameters for value, proper range, or any other checking. |
| * |
| * Guidelines for extending this interface are below. |
| * |
| * 1. Add new WMI commands ONLY within the specified range - 0x9000 - 0x9fff |
| * 2. Use ONLY A_UINT32 type for defining member variables within WMI command/event |
| * structures. Do not use A_UINT8, A_UINT16, A_BOOL or enum types within these structures. |
| * 3. DO NOT define bit fields within structures. Implement bit fields using masks |
| * if necessary. Do not use the programming language's bit field definition. |
| * 4. Define macros for encode/decode of A_UINT8, A_UINT16 fields within the A_UINT32 |
| * variables. Use these macros for set/get of these fields. Try to use this to |
| * optimize the structure without bloating it with A_UINT32 variables for every lower |
| * sized field. |
| * 5. Do not use PACK/UNPACK attributes for the structures as each member variable is |
| * already 4-byte aligned by virtue of being a A_UINT32 type. |
| * 6. Comment each parameter part of the WMI command/event structure by using the |
| * 2 stars at the begining of C comment instead of one star to enable HTML document |
| * generation using Doxygen. |
| * |
| */ |
| |
| #ifndef _WMI_UNIFIED_H_ |
| #define _WMI_UNIFIED_H_ |
| |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <wlan_defs.h> |
| #include <wmi_services.h> |
| #include <dbglog.h> |
| |
| #define ATH_MAC_LEN 6 /**< length of MAC in bytes */ |
| #define WMI_EVENT_STATUS_SUCCESS 0 /* Success return status to host */ |
| #define WMI_EVENT_STATUS_FAILURE 1 /* Failure return status to host */ |
| |
| #define MAX_TX_RATE_VALUES 10 /*Max Tx Rates*/ |
| #define MAX_RSSI_VALUES 10 /*Max Rssi values*/ |
| #define WMI_MAX_CHAINS 8 |
| |
| /* The WLAN_MAX_AC macro cannot be changed without breaking |
| WMI compatibility. */ |
| //The maximum value of access category |
| #define WLAN_MAX_AC 4 |
| |
| /* |
| * These don't necessarily belong here; but as the MS/SM macros require |
| * ar6000_internal.h to be included, it may not be defined as yet. |
| */ |
| #define WMI_F_MS(_v, _f) \ |
| ( ((_v) & (_f)) >> (_f##_S) ) |
| |
| /* |
| * This breaks the "good macro practice" of only referencing each |
| * macro field once (to avoid things like field++ from causing issues.) |
| */ |
| #define WMI_F_RMW(_var, _v, _f) \ |
| do { \ |
| (_var) &= ~(_f); \ |
| (_var) |= ( ((_v) << (_f##_S)) & (_f)); \ |
| } while (0) |
| |
| #define WMI_GET_BITS(_val,_index,_num_bits) \ |
| (((_val) >> (_index)) & ((1 << (_num_bits)) - 1)) |
| |
| #define WMI_SET_BITS(_var,_index,_num_bits,_val) do { \ |
| (_var) &= ~(((1 << (_num_bits)) - 1) << (_index)); \ |
| (_var) |= (((_val) & ((1 << (_num_bits)) - 1)) << (_index)); \ |
| } while(0) |
| |
| /** |
| * A packed array is an array where each entry in the array is less than |
| * or equal to 16 bits, and the entries are stuffed into an A_UINT32 array. |
| * For example, if each entry in the array is 11 bits, then you can stuff |
| * an array of 4 11-bit values into an array of 2 A_UINT32 values. |
| * The first 2 11-bit values will be stored in the first A_UINT32, |
| * and the last 2 11-bit values will be stored in the second A_UINT32. |
| */ |
| #define WMI_PACKED_ARR_SIZE(num_entries,bits_per_entry) \ |
| (((num_entries) / (32 / (bits_per_entry))) + \ |
| (((num_entries) % (32 / (bits_per_entry))) ? 1 : 0)) |
| |
| #define WMI_RETURN_STRING(str) case ((str)): return (uint8_t *)(# str); |
| |
| static INLINE A_UINT32 wmi_packed_arr_get_bits(A_UINT32 *arr, |
| A_UINT32 entry_index, A_UINT32 bits_per_entry) |
| { |
| A_UINT32 entries_per_uint = (32 / bits_per_entry); |
| A_UINT32 uint_index = (entry_index / entries_per_uint); |
| A_UINT32 num_entries_in_prev_uints = (uint_index * entries_per_uint); |
| A_UINT32 index_in_uint = (entry_index - num_entries_in_prev_uints); |
| A_UINT32 start_bit_in_uint = (index_in_uint * bits_per_entry); |
| return ((arr[uint_index] >> start_bit_in_uint) & |
| (( 1 << bits_per_entry) - 1)); |
| } |
| |
| static INLINE void wmi_packed_arr_set_bits(A_UINT32 *arr, A_UINT32 entry_index, |
| A_UINT32 bits_per_entry, A_UINT32 val) |
| { |
| A_UINT32 entries_per_uint = (32 / bits_per_entry); |
| A_UINT32 uint_index = (entry_index / entries_per_uint); |
| A_UINT32 num_entries_in_prev_uints = (uint_index * entries_per_uint); |
| A_UINT32 index_in_uint = (entry_index - num_entries_in_prev_uints); |
| A_UINT32 start_bit_in_uint = (index_in_uint * bits_per_entry); |
| |
| arr[uint_index] &= ~(((1 << bits_per_entry) - 1) << start_bit_in_uint); |
| arr[uint_index] |= |
| ((val & ((1 << bits_per_entry) - 1)) << start_bit_in_uint); |
| } |
| |
| /** 2 word representation of MAC addr */ |
| typedef struct { |
| /** upper 4 bytes of MAC address */ |
| A_UINT32 mac_addr31to0; |
| /** lower 2 bytes of MAC address */ |
| A_UINT32 mac_addr47to32; |
| } wmi_mac_addr; |
| |
| /** macro to convert MAC address from WMI word format to char array */ |
| #define WMI_MAC_ADDR_TO_CHAR_ARRAY(pwmi_mac_addr,c_macaddr) do { \ |
| (c_macaddr)[0] = ((pwmi_mac_addr)->mac_addr31to0) & 0xff; \ |
| (c_macaddr)[1] = ( ((pwmi_mac_addr)->mac_addr31to0) >> 8) & 0xff; \ |
| (c_macaddr)[2] = ( ((pwmi_mac_addr)->mac_addr31to0) >> 16) & 0xff; \ |
| (c_macaddr)[3] = ( ((pwmi_mac_addr)->mac_addr31to0) >> 24) & 0xff; \ |
| (c_macaddr)[4] = ((pwmi_mac_addr)->mac_addr47to32) & 0xff; \ |
| (c_macaddr)[5] = ( ((pwmi_mac_addr)->mac_addr47to32) >> 8) & 0xff; \ |
| } while(0) |
| |
| /** macro to convert MAC address from char array to WMI word format */ |
| #define WMI_CHAR_ARRAY_TO_MAC_ADDR(c_macaddr,pwmi_mac_addr) do { \ |
| (pwmi_mac_addr)->mac_addr31to0 = \ |
| ( (c_macaddr)[0] | ((c_macaddr)[1] << 8) \ |
| | ((c_macaddr)[2] << 16) | ((c_macaddr)[3] << 24) ); \ |
| (pwmi_mac_addr)->mac_addr47to32 = \ |
| ( (c_macaddr)[4] | ((c_macaddr)[5] << 8)); \ |
| } while(0) |
| |
| |
| /* |
| * wmi command groups. |
| */ |
| typedef enum { |
| /* 0 to 2 are reserved */ |
| WMI_GRP_START=0x3, |
| WMI_GRP_SCAN=WMI_GRP_START, /* 0x3 */ |
| WMI_GRP_PDEV, /* 0x4 */ |
| WMI_GRP_VDEV, /* 0x5 */ |
| WMI_GRP_PEER, /* 0x6 */ |
| WMI_GRP_MGMT, /* 0x7 */ |
| WMI_GRP_BA_NEG, /* 0x8 */ |
| WMI_GRP_STA_PS, /* 0x9 */ |
| WMI_GRP_DFS, /* 0xa */ |
| WMI_GRP_ROAM, /* 0xb */ |
| WMI_GRP_OFL_SCAN, /* 0xc */ |
| WMI_GRP_P2P, /* 0xd */ |
| WMI_GRP_AP_PS, /* 0xe */ |
| WMI_GRP_RATE_CTRL, /* 0xf */ |
| WMI_GRP_PROFILE, /* 0x10 */ |
| WMI_GRP_SUSPEND, /* 0x11 */ |
| WMI_GRP_BCN_FILTER, /* 0x12 */ |
| WMI_GRP_WOW, /* 0x13 */ |
| WMI_GRP_RTT, /* 0x14 */ |
| WMI_GRP_SPECTRAL, /* 0x15 */ |
| WMI_GRP_STATS, /* 0x16 */ |
| WMI_GRP_ARP_NS_OFL, /* 0x17 */ |
| WMI_GRP_NLO_OFL, /* 0x18 */ |
| WMI_GRP_GTK_OFL, /* 0x19 */ |
| WMI_GRP_CSA_OFL, /* 0x1a */ |
| WMI_GRP_CHATTER, /* 0x1b */ |
| WMI_GRP_TID_ADDBA, /* 0x1c */ |
| WMI_GRP_MISC, /* 0x1d */ |
| WMI_GRP_GPIO, /* 0x1e */ |
| WMI_GRP_FWTEST, /* 0x1f */ |
| WMI_GRP_TDLS, /* 0x20 */ |
| WMI_GRP_RESMGR, /* 0x21 */ |
| WMI_GRP_STA_SMPS, /* 0x22 */ |
| WMI_GRP_WLAN_HB, /* 0x23 */ |
| WMI_GRP_RMC, /* 0x24 */ |
| WMI_GRP_MHF_OFL, /* 0x25 */ |
| WMI_GRP_LOCATION_SCAN, /* 0x26 */ |
| WMI_GRP_OEM, /* 0x27 */ |
| WMI_GRP_NAN, /* 0x28 */ |
| WMI_GRP_COEX, /* 0x29 */ |
| WMI_GRP_OBSS_OFL, /* 0x2a */ |
| WMI_GRP_LPI, /* 0x2b */ |
| WMI_GRP_EXTSCAN, /* 0x2c */ |
| WMI_GRP_DHCP_OFL, /* 0x2d */ |
| WMI_GRP_IPA, /* 0x2e */ |
| WMI_GRP_MDNS_OFL, /* 0x2f */ |
| WMI_GRP_SAP_OFL, /* 0x30 */ |
| WMI_GRP_OCB, /* 0x31 */ |
| WMI_GRP_SOC, /* 0x32 */ |
| WMI_GRP_PKT_FILTER, /* 0x33 */ |
| WMI_GRP_MAWC, /* 0x34 */ |
| WMI_GRP_PMF_OFFLOAD, /* 0x35 */ |
| WMI_GRP_BPF_OFFLOAD, /* 0x36 Berkeley Packet Filter */ |
| WMI_GRP_NAN_DATA, /* 0x37 */ |
| WMI_GRP_PROTOTYPE, /* 0x38 */ |
| WMI_GRP_MONITOR, /* 0x39 */ |
| WMI_GRP_REGULATORY, /* 0x3a */ |
| WMI_GRP_HW_DATA_FILTER, /* 0x3b */ |
| WMI_GRP_WLM, /* 0x3c WLAN Latency Manager */ |
| WMI_GRP_11K_OFFLOAD, /* 0x3d */ |
| } WMI_GRP_ID; |
| |
| #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) |
| #define WMI_EVT_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) |
| |
| /** |
| * Command IDs and commange events |
| */ |
| typedef enum { |
| /** initialize the wlan sub system */ |
| WMI_INIT_CMDID=0x1, |
| |
| /* Scan specific commands */ |
| |
| /** start scan request to FW */ |
| WMI_START_SCAN_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SCAN) , |
| /** stop scan request to FW */ |
| WMI_STOP_SCAN_CMDID, |
| /** full list of channels as defined by the regulatory that will be used by scanner */ |
| WMI_SCAN_CHAN_LIST_CMDID, |
| /** overwrite default priority table in scan scheduler */ |
| WMI_SCAN_SCH_PRIO_TBL_CMDID, |
| /** This command to adjust the priority and min.max_rest_time |
| * of an on ongoing scan request. |
| */ |
| WMI_SCAN_UPDATE_REQUEST_CMDID, |
| |
| /** set OUI to be used in probe request if enabled */ |
| WMI_SCAN_PROB_REQ_OUI_CMDID, |
| /** config adaptive dwell scan */ |
| WMI_SCAN_ADAPTIVE_DWELL_CONFIG_CMDID, |
| /** Only applicable to DBS capable product */ |
| WMI_SET_SCAN_DBS_DUTY_CYCLE_CMDID, |
| |
| /* PDEV(physical device) specific commands */ |
| /** set regulatorty ctl id used by FW to determine the exact ctl power limits */ |
| WMI_PDEV_SET_REGDOMAIN_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_PDEV), |
| /** set channel. mainly used for supporting monitor mode */ |
| WMI_PDEV_SET_CHANNEL_CMDID, |
| /** set pdev specific parameters */ |
| WMI_PDEV_SET_PARAM_CMDID, |
| /** enable packet log */ |
| WMI_PDEV_PKTLOG_ENABLE_CMDID, |
| /** disable packet log*/ |
| WMI_PDEV_PKTLOG_DISABLE_CMDID, |
| /** set wmm parameters */ |
| WMI_PDEV_SET_WMM_PARAMS_CMDID, |
| /** set HT cap ie that needs to be carried probe requests HT/VHT channels */ |
| WMI_PDEV_SET_HT_CAP_IE_CMDID, |
| /** set VHT cap ie that needs to be carried on probe requests on VHT channels */ |
| WMI_PDEV_SET_VHT_CAP_IE_CMDID, |
| |
| /** Command to send the DSCP-to-TID map to the target */ |
| WMI_PDEV_SET_DSCP_TID_MAP_CMDID, |
| /** set quiet ie parameters. primarily used in AP mode */ |
| WMI_PDEV_SET_QUIET_MODE_CMDID, |
| /** Enable/Disable Green AP Power Save */ |
| WMI_PDEV_GREEN_AP_PS_ENABLE_CMDID, |
| /** get TPC config for the current operating channel */ |
| WMI_PDEV_GET_TPC_CONFIG_CMDID, |
| |
| /** set the base MAC address for the physical device before a VDEV is created. |
| * For firmware that doesn't support this feature and this command, the pdev |
| * MAC address will not be changed. */ |
| WMI_PDEV_SET_BASE_MACADDR_CMDID, |
| |
| /* eeprom content dump , the same to bdboard data */ |
| WMI_PDEV_DUMP_CMDID, |
| /* set LED configuration */ |
| WMI_PDEV_SET_LED_CONFIG_CMDID, |
| /* Get Current temprature of chip in Celcius degree*/ |
| WMI_PDEV_GET_TEMPERATURE_CMDID, |
| /* Set LED flashing behavior */ |
| WMI_PDEV_SET_LED_FLASHING_CMDID, |
| /** Enable/Disable Smart Antenna */ |
| WMI_PDEV_SMART_ANT_ENABLE_CMDID, |
| /** Set Smart Antenna RX antenna*/ |
| WMI_PDEV_SMART_ANT_SET_RX_ANTENNA_CMDID, |
| /** Override the antenna switch table */ |
| WMI_PDEV_SET_ANTENNA_SWITCH_TABLE_CMDID, |
| /** Override the CTL table */ |
| WMI_PDEV_SET_CTL_TABLE_CMDID, |
| /** Override the array gain table */ |
| WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID, |
| /** FIPS test mode command */ |
| WMI_PDEV_FIPS_CMDID, |
| /** get CCK ANI level */ |
| WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID, |
| /** get OFDM ANI level */ |
| WMI_PDEV_GET_ANI_OFDM_CONFIG_CMDID, |
| /** NF Cal Power dBr/dBm */ |
| WMI_PDEV_GET_NFCAL_POWER_CMDID, |
| /** TxPPDU TPC */ |
| WMI_PDEV_GET_TPC_CMDID, |
| /* Set to enable MIB stats collection */ |
| WMI_MIB_STATS_ENABLE_CMDID, |
| |
| /** Set preferred channel list for DBS Mgr */ |
| WMI_PDEV_SET_PCL_CMDID, |
| /** Set HW mode. Eg: single MAC, DBS & SBS, see soc_hw_mode_t for values */ |
| WMI_PDEV_SET_HW_MODE_CMDID, |
| /** Set DFS, SCAN modes and other FW configurations */ |
| WMI_PDEV_SET_MAC_CONFIG_CMDID, |
| /** Set per band and per pdev antenna chains */ |
| WMI_PDEV_SET_ANTENNA_MODE_CMDID, |
| /** Periodic channel stats request command */ |
| WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID, |
| /** WMI command for power debug framework */ |
| WMI_PDEV_WAL_POWER_DEBUG_CMDID, |
| /** set per-AC rx reorder timeouts */ |
| WMI_PDEV_SET_REORDER_TIMEOUT_VAL_CMDID, |
| /** WMI command for WOW gpio and type */ |
| WMI_PDEV_SET_WAKEUP_CONFIG_CMDID, |
| /* Get current ANT's per chain's RSSI info */ |
| WMI_PDEV_GET_ANTDIV_STATUS_CMDID, |
| /** WMI command for getting Chip Power Stats */ |
| WMI_PDEV_GET_CHIP_POWER_STATS_CMDID, |
| /** set stats reporting thresholds - see WMI_REPORT_STATS_EVENTID */ |
| WMI_PDEV_SET_STATS_THRESHOLD_CMDID, |
| /** vdev restart request for multiple vdevs */ |
| WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID, |
| /** Pdev update packet routing command */ |
| WMI_PDEV_UPDATE_PKT_ROUTING_CMDID, |
| /** Get Calibration data version details */ |
| WMI_PDEV_CHECK_CAL_VERSION_CMDID, |
| /* Set Diversity Gain */ |
| WMI_PDEV_SET_DIVERSITY_GAIN_CMDID, |
| /** Get chain RSSI and antena index command */ |
| WMI_PDEV_DIV_GET_RSSI_ANTID_CMDID, |
| /** get bss chan info */ |
| WMI_PDEV_BSS_CHAN_INFO_REQUEST_CMDID, |
| /** update pmk cache info */ |
| WMI_PDEV_UPDATE_PMK_CACHE_CMDID, |
| /** update fils HLP */ |
| WMI_PDEV_UPDATE_FILS_HLP_PKT_CMDID, |
| /** update ctltable request **/ |
| WMI_PDEV_UPDATE_CTLTABLE_REQUEST_CMDID, |
| /** Command to set beacon OUI **/ |
| WMI_PDEV_CONFIG_VENDOR_OUI_ACTION_CMDID, |
| /** enable/disable per-AC tx queue optimizations */ |
| WMI_PDEV_SET_AC_TX_QUEUE_OPTIMIZED_CMDID, |
| /** enable/disable rx promiscuous mode */ |
| WMI_PDEV_SET_RX_FILTER_PROMISCUOUS_CMDID, |
| /* set a generic direct DMA ring config */ |
| WMI_PDEV_DMA_RING_CFG_REQ_CMDID, |
| /* VDEV (virtual device) specific commands */ |
| /** vdev create */ |
| WMI_VDEV_CREATE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_VDEV), |
| /** vdev delete */ |
| WMI_VDEV_DELETE_CMDID, |
| /** vdev start request */ |
| WMI_VDEV_START_REQUEST_CMDID, |
| /** vdev restart request (RX only, NO TX, used for CAC period)*/ |
| WMI_VDEV_RESTART_REQUEST_CMDID, |
| /** vdev up request */ |
| WMI_VDEV_UP_CMDID, |
| /** vdev stop request */ |
| WMI_VDEV_STOP_CMDID, |
| /** vdev down request */ |
| WMI_VDEV_DOWN_CMDID, |
| /* set a vdev param */ |
| WMI_VDEV_SET_PARAM_CMDID, |
| /* set a key (used for setting per peer unicast and per vdev multicast) */ |
| WMI_VDEV_INSTALL_KEY_CMDID, |
| |
| /* wnm sleep mode command */ |
| WMI_VDEV_WNM_SLEEPMODE_CMDID, |
| WMI_VDEV_WMM_ADDTS_CMDID, |
| WMI_VDEV_WMM_DELTS_CMDID, |
| WMI_VDEV_SET_WMM_PARAMS_CMDID, |
| WMI_VDEV_SET_GTX_PARAMS_CMDID, |
| WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID, |
| |
| WMI_VDEV_PLMREQ_START_CMDID, |
| WMI_VDEV_PLMREQ_STOP_CMDID, |
| /* TSF timestamp action for specified vdev */ |
| WMI_VDEV_TSF_TSTAMP_ACTION_CMDID, |
| /** set the additional IEs in probe requests for scan or |
| * assoc req etc for frames FW locally generates */ |
| WMI_VDEV_SET_IE_CMDID, |
| |
| WMI_VDEV_RATEMASK_CMDID, |
| /** ATF VDEV REQUEST commands. */ |
| WMI_VDEV_ATF_REQUEST_CMDID, |
| /** Command to send the DSCP-to-TID map to the target for VAP */ |
| WMI_VDEV_SET_DSCP_TID_MAP_CMDID, |
| /* Configure filter for Neighbor Rx Pkt (smart mesh selective listening) */ |
| WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID, |
| /** set quiet ie parameters. primarily used in AP mode */ |
| WMI_VDEV_SET_QUIET_MODE_CMDID, |
| /** To set custom aggregation size for per vdev */ |
| WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID, |
| |
| /* DISA feature: Encrypt-decrypt data request */ |
| WMI_VDEV_ENCRYPT_DECRYPT_DATA_REQ_CMDID, |
| /** Command to enable mac randomizaton **/ |
| WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_CMDID, |
| |
| /** WMI commands related to dbg arp stats */ |
| WMI_VDEV_SET_ARP_STAT_CMDID, |
| WMI_VDEV_GET_ARP_STAT_CMDID, |
| |
| /** get tx power for the current vdev */ |
| WMI_VDEV_GET_TX_POWER_CMDID, |
| /* limit STA offchannel activity */ |
| WMI_VDEV_LIMIT_OFFCHAN_CMDID, |
| |
| /* peer specific commands */ |
| |
| /** create a peer */ |
| WMI_PEER_CREATE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_PEER), |
| /** delete a peer */ |
| WMI_PEER_DELETE_CMDID, |
| /** flush specific tid queues of a peer */ |
| WMI_PEER_FLUSH_TIDS_CMDID, |
| /** set a parameter of a peer */ |
| WMI_PEER_SET_PARAM_CMDID, |
| /** set peer to associated state. will cary all parameters determined during assocication time */ |
| WMI_PEER_ASSOC_CMDID, |
| /**add a wds (4 address ) entry. used only for testing WDS feature on AP products */ |
| WMI_PEER_ADD_WDS_ENTRY_CMDID, |
| /**remove wds (4 address ) entry. used only for testing WDS feature on AP products */ |
| WMI_PEER_REMOVE_WDS_ENTRY_CMDID, |
| /** set up mcast group infor for multicast to unicast conversion */ |
| WMI_PEER_MCAST_GROUP_CMDID, |
| /** request peer info from FW. FW shall respond with PEER_INFO_EVENTID */ |
| WMI_PEER_INFO_REQ_CMDID, |
| |
| /** request the estimated link speed for the peer. FW shall respond with |
| * WMI_PEER_ESTIMATED_LINKSPEED_EVENTID. |
| */ |
| WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID, |
| /** Set the conditions to report peer justified rate to driver |
| * The justified rate means the user-rate is justified by PER. |
| */ |
| WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID, |
| |
| /** update a wds (4 address) entry */ |
| WMI_PEER_UPDATE_WDS_ENTRY_CMDID, |
| /** add a proxy sta entry */ |
| WMI_PEER_ADD_PROXY_STA_ENTRY_CMDID, |
| /** Set Smart Antenna TX antenna */ |
| WMI_PEER_SMART_ANT_SET_TX_ANTENNA_CMDID, |
| /** Set Smart Antenna TX train info */ |
| WMI_PEER_SMART_ANT_SET_TRAIN_INFO_CMDID, |
| /** Set SA node config options */ |
| WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID, |
| /** ATF PEER REQUEST commands */ |
| WMI_PEER_ATF_REQUEST_CMDID, |
| /** bandwidth fairness (BWF) peer configuration request command */ |
| WMI_PEER_BWF_REQUEST_CMDID, |
| /** rx reorder queue setup for peer/tid */ |
| WMI_PEER_REORDER_QUEUE_SETUP_CMDID, |
| /** rx reorder queue remove for peer/tid */ |
| WMI_PEER_REORDER_QUEUE_REMOVE_CMDID, |
| /** specify a limit for rx A-MPDU block size */ |
| WMI_PEER_SET_RX_BLOCKSIZE_CMDID, |
| /** |
| * request peer antdiv info from FW. FW shall respond with |
| * PEER_ANTDIV_INFO_EVENTID |
| */ |
| WMI_PEER_ANTDIV_INFO_REQ_CMDID, |
| |
| /** Peer/Tid/Msduq threshold update */ |
| WMI_PEER_TID_MSDUQ_QDEPTH_THRESH_UPDATE_CMDID, |
| |
| /* beacon/management specific commands */ |
| |
| /** transmit beacon by reference . used for transmitting beacon on low latency interface like pcie */ |
| WMI_BCN_TX_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_MGMT), |
| /** transmit beacon by value */ |
| WMI_PDEV_SEND_BCN_CMDID, |
| /** set the beacon template. used in beacon offload mode to setup the |
| * the common beacon template with the FW to be used by FW to generate beacons */ |
| WMI_BCN_TMPL_CMDID, |
| /** set beacon filter with FW */ |
| WMI_BCN_FILTER_RX_CMDID, |
| /* enable/disable filtering of probe requests in the firmware */ |
| WMI_PRB_REQ_FILTER_RX_CMDID, |
| /** transmit management frame by value. will be deprecated */ |
| WMI_MGMT_TX_CMDID, |
| /** set the probe response template. used in beacon offload mode to setup the |
| * the common probe response template with the FW to be used by FW to generate |
| * probe responses */ |
| WMI_PRB_TMPL_CMDID, |
| |
| /** Transmit Mgmt frame by reference */ |
| WMI_MGMT_TX_SEND_CMDID, |
| /** Transmit data frame by reference */ |
| WMI_OFFCHAN_DATA_TX_SEND_CMDID, |
| /** transmit FILS Discovery frame by value */ |
| WMI_PDEV_SEND_FD_CMDID, |
| /** Cmd to enable/disable offloaded beacons */ |
| WMI_BCN_OFFLOAD_CTRL_CMDID, |
| |
| /** commands to directly control ba negotiation directly from host. only used in test mode */ |
| |
| /** turn off FW Auto addba mode and let host control addba */ |
| WMI_ADDBA_CLEAR_RESP_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_BA_NEG), |
| /** send add ba request */ |
| WMI_ADDBA_SEND_CMDID, |
| WMI_ADDBA_STATUS_CMDID, |
| /** send del ba */ |
| WMI_DELBA_SEND_CMDID, |
| /** set add ba response will be used by FW to generate addba response*/ |
| WMI_ADDBA_SET_RESP_CMDID, |
| /** send single VHT MPDU with AMSDU */ |
| WMI_SEND_SINGLEAMSDU_CMDID, |
| |
| /** Station power save specific config */ |
| /** enable/disable station powersave */ |
| WMI_STA_POWERSAVE_MODE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_STA_PS), |
| /** set station power save specific parameter */ |
| WMI_STA_POWERSAVE_PARAM_CMDID, |
| /** set station mimo powersave mode */ |
| WMI_STA_MIMO_PS_MODE_CMDID, |
| |
| |
| /** DFS-specific commands */ |
| /** enable DFS (radar detection)*/ |
| WMI_PDEV_DFS_ENABLE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_DFS), |
| /** disable DFS (radar detection)*/ |
| WMI_PDEV_DFS_DISABLE_CMDID, |
| /** enable DFS phyerr/parse filter offload */ |
| WMI_DFS_PHYERR_FILTER_ENA_CMDID, |
| /** enable DFS phyerr/parse filter offload */ |
| WMI_DFS_PHYERR_FILTER_DIS_CMDID, |
| /** enable DFS phyerr processing offload */ |
| WMI_PDEV_DFS_PHYERR_OFFLOAD_ENABLE_CMDID, |
| /** disable DFS phyerr processing offload */ |
| WMI_PDEV_DFS_PHYERR_OFFLOAD_DISABLE_CMDID, |
| /** set ADFS channel config */ |
| WMI_VDEV_ADFS_CH_CFG_CMDID, |
| /** abort ADFS off-channel-availability-check currently in progress */ |
| WMI_VDEV_ADFS_OCAC_ABORT_CMDID, |
| |
| /* Roaming specific commands */ |
| /** set roam scan mode */ |
| WMI_ROAM_SCAN_MODE=WMI_CMD_GRP_START_ID(WMI_GRP_ROAM), |
| /** set roam scan rssi threshold below which roam scan is enabled */ |
| WMI_ROAM_SCAN_RSSI_THRESHOLD, |
| /** set roam scan period for periodic roam scan mode */ |
| WMI_ROAM_SCAN_PERIOD, |
| /** set roam scan trigger rssi change threshold */ |
| WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD, |
| /** set roam AP profile */ |
| WMI_ROAM_AP_PROFILE, |
| /** set channel list for roam scans */ |
| WMI_ROAM_CHAN_LIST, |
| /** Stop scan command */ |
| WMI_ROAM_SCAN_CMD, |
| /** roaming sme offload sync complete */ |
| WMI_ROAM_SYNCH_COMPLETE, |
| /** set ric request element for 11r roaming */ |
| WMI_ROAM_SET_RIC_REQUEST_CMDID, |
| /** Invoke roaming forcefully */ |
| WMI_ROAM_INVOKE_CMDID, |
| /** roaming filter cmd to allow further filtering of roaming candidate */ |
| WMI_ROAM_FILTER_CMDID, |
| /** set gateway ip, mac and retries for subnet change detection */ |
| WMI_ROAM_SUBNET_CHANGE_CONFIG_CMDID, |
| /** configure thresholds for MAWC */ |
| WMI_ROAM_CONFIGURE_MAWC_CMDID, |
| /** configure MultiBand Operation(refer WFA MBO spec) parameter */ |
| WMI_ROAM_SET_MBO_PARAM_CMDID, /* DEPRECATED */ |
| /** configure packet error rate threshold for triggering roaming */ |
| WMI_ROAM_PER_CONFIG_CMDID, |
| /** configure BSS Transition Management (BTM) offload for roaming */ |
| WMI_ROAM_BTM_CONFIG_CMDID, |
| /** Enable or Disable Fast Initial Link Setup (FILS) feature */ |
| WMI_ENABLE_FILS_CMDID, |
| |
| /** offload scan specific commands */ |
| /** set offload scan AP profile */ |
| WMI_OFL_SCAN_ADD_AP_PROFILE=WMI_CMD_GRP_START_ID(WMI_GRP_OFL_SCAN), |
| /** remove offload scan AP profile */ |
| WMI_OFL_SCAN_REMOVE_AP_PROFILE, |
| /** set offload scan period */ |
| WMI_OFL_SCAN_PERIOD, |
| |
| /* P2P specific commands */ |
| /**set P2P device info. FW will used by FW to create P2P IE to be carried in probe response |
| * generated during p2p listen and for p2p discoverability */ |
| WMI_P2P_DEV_SET_DEVICE_INFO=WMI_CMD_GRP_START_ID(WMI_GRP_P2P), |
| /** enable/disable p2p discoverability on STA/AP VDEVs */ |
| WMI_P2P_DEV_SET_DISCOVERABILITY, |
| /** set p2p ie to be carried in beacons generated by FW for GO */ |
| WMI_P2P_GO_SET_BEACON_IE, |
| /** set p2p ie to be carried in probe response frames generated by FW for GO */ |
| WMI_P2P_GO_SET_PROBE_RESP_IE, |
| /** set the vendor specific p2p ie data. FW will use this to parse the P2P NoA |
| * attribute in the beacons/probe responses received. |
| */ |
| WMI_P2P_SET_VENDOR_IE_DATA_CMDID, |
| /** set the configure of p2p find offload */ |
| WMI_P2P_DISC_OFFLOAD_CONFIG_CMDID, |
| /** set the vendor specific p2p ie data for p2p find offload using */ |
| WMI_P2P_DISC_OFFLOAD_APPIE_CMDID, |
| /** set the BSSID/device name pattern of p2p find offload */ |
| WMI_P2P_DISC_OFFLOAD_PATTERN_CMDID, |
| /** set OppPS related parameters **/ |
| WMI_P2P_SET_OPPPS_PARAM_CMDID, |
| /** set listen offload start related parameters */ |
| WMI_P2P_LISTEN_OFFLOAD_START_CMDID, |
| /** set listen offload stop related parameters */ |
| WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID, |
| |
| /** AP power save specific config */ |
| /** set AP power save specific param */ |
| WMI_AP_PS_PEER_PARAM_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_AP_PS), |
| /** set AP UAPSD coex pecific param */ |
| WMI_AP_PS_PEER_UAPSD_COEX_CMDID, |
| /** set Enhanced Green AP param */ |
| WMI_AP_PS_EGAP_PARAM_CMDID, |
| |
| |
| /** Rate-control specific commands */ |
| WMI_PEER_RATE_RETRY_SCHED_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_RATE_CTRL), |
| |
| /** WLAN Profiling commands. */ |
| WMI_WLAN_PROFILE_TRIGGER_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_PROFILE), |
| WMI_WLAN_PROFILE_SET_HIST_INTVL_CMDID, |
| WMI_WLAN_PROFILE_GET_PROFILE_DATA_CMDID, |
| WMI_WLAN_PROFILE_ENABLE_PROFILE_ID_CMDID, |
| WMI_WLAN_PROFILE_LIST_PROFILE_ID_CMDID, |
| |
| /** Suspend resume command Ids */ |
| WMI_PDEV_SUSPEND_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_SUSPEND), |
| WMI_PDEV_RESUME_CMDID, |
| |
| /* Beacon filter commands */ |
| /** add a beacon filter */ |
| WMI_ADD_BCN_FILTER_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_BCN_FILTER), |
| /** remove a beacon filter */ |
| WMI_RMV_BCN_FILTER_CMDID, |
| |
| /* WOW Specific WMI commands*/ |
| /** add pattern for awake */ |
| WMI_WOW_ADD_WAKE_PATTERN_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_WOW), |
| /** deleta a wake pattern */ |
| WMI_WOW_DEL_WAKE_PATTERN_CMDID, |
| /** enable/deisable wake event */ |
| WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID, |
| /** enable WOW */ |
| WMI_WOW_ENABLE_CMDID, |
| /** host woke up from sleep event to FW. Generated in response to WOW Hardware event */ |
| WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID, |
| /* IOAC add keep alive cmd. */ |
| WMI_WOW_IOAC_ADD_KEEPALIVE_CMDID, |
| /* IOAC del keep alive cmd. */ |
| WMI_WOW_IOAC_DEL_KEEPALIVE_CMDID, |
| /* IOAC add pattern for awake */ |
| WMI_WOW_IOAC_ADD_WAKE_PATTERN_CMDID, |
| /* IOAC deleta a wake pattern */ |
| WMI_WOW_IOAC_DEL_WAKE_PATTERN_CMDID, |
| /* D0-WOW enable or disable cmd */ |
| WMI_D0_WOW_ENABLE_DISABLE_CMDID, |
| /* enable extend WoW */ |
| WMI_EXTWOW_ENABLE_CMDID, |
| /* Extend WoW command to configure app type1 parameter */ |
| WMI_EXTWOW_SET_APP_TYPE1_PARAMS_CMDID, |
| /* Extend WoW command to configure app type2 parameter */ |
| WMI_EXTWOW_SET_APP_TYPE2_PARAMS_CMDID, |
| /* enable ICMPv6 Network advertisement filtering */ |
| WMI_WOW_ENABLE_ICMPV6_NA_FLT_CMDID, |
| /* |
| * Set a pattern to match UDP packet in WOW mode. |
| * If match, construct a tx frame in a local buffer |
| * to send through the peer AP to the entity in the |
| * IP network that sent the UDP packet to this STA. |
| */ |
| WMI_WOW_UDP_SVC_OFLD_CMDID, |
| |
| /* configure WOW host wakeup PIN pattern */ |
| WMI_WOW_HOSTWAKEUP_GPIO_PIN_PATTERN_CONFIG_CMDID, |
| |
| /* Set which action category should wake the host from suspend */ |
| WMI_WOW_SET_ACTION_WAKE_UP_CMDID, |
| |
| /* RTT measurement related cmd */ |
| /** request to make an RTT measurement */ |
| WMI_RTT_MEASREQ_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_RTT), |
| /** request to report a tsf measurement */ |
| WMI_RTT_TSF_CMDID, |
| |
| /** spectral scan command */ |
| /** configure spectral scan */ |
| WMI_VDEV_SPECTRAL_SCAN_CONFIGURE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_SPECTRAL), |
| /** enable/disable spectral scan and trigger */ |
| WMI_VDEV_SPECTRAL_SCAN_ENABLE_CMDID, |
| |
| /* F/W stats */ |
| /** one time request for stats */ |
| WMI_REQUEST_STATS_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_STATS), |
| /** Push MCC Adaptive Scheduler Stats to Firmware */ |
| WMI_MCC_SCHED_TRAFFIC_STATS_CMDID, |
| /** one time request for txrx stats */ |
| WMI_REQUEST_STATS_EXT_CMDID, |
| |
| /* Link Layer stats */ |
| /** Request for link layer stats */ |
| WMI_REQUEST_LINK_STATS_CMDID, |
| /** Request for setting params to link layer stats */ |
| WMI_START_LINK_STATS_CMDID, |
| /** Request to clear stats*/ |
| WMI_CLEAR_LINK_STATS_CMDID, |
| |
| /** Request for getting the Firmware Memory Dump */ |
| WMI_GET_FW_MEM_DUMP_CMDID, |
| |
| /** Request to flush of the buffered debug messages */ |
| WMI_DEBUG_MESG_FLUSH_CMDID, |
| |
| /** Cmd to configure the verbose level */ |
| WMI_DIAG_EVENT_LOG_CONFIG_CMDID, |
| |
| /** One time request for wlan stats */ |
| WMI_REQUEST_WLAN_STATS_CMDID, |
| |
| /** Request for getting RCPI of peer */ |
| WMI_REQUEST_RCPI_CMDID, |
| |
| /** One time request for peer stats info */ |
| WMI_REQUEST_PEER_STATS_INFO_CMDID, |
| |
| /** One time request for radio channel stats */ |
| WMI_REQUEST_RADIO_CHAN_STATS_CMDID, |
| |
| /** ARP OFFLOAD REQUEST*/ |
| WMI_SET_ARP_NS_OFFLOAD_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_ARP_NS_OFL), |
| |
| /** Proactive ARP Response Add Pattern Command*/ |
| WMI_ADD_PROACTIVE_ARP_RSP_PATTERN_CMDID, |
| |
| /** Proactive ARP Response Del Pattern Command*/ |
| WMI_DEL_PROACTIVE_ARP_RSP_PATTERN_CMDID, |
| |
| /** NS offload confid*/ |
| WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_NLO_OFL), |
| |
| /** APFIND Config */ |
| WMI_APFIND_CMDID, |
| |
| /** Passpoint list config */ |
| WMI_PASSPOINT_LIST_CONFIG_CMDID, |
| /** configure supprssing parameters for MAWC */ |
| WMI_NLO_CONFIGURE_MAWC_CMDID, |
| |
| /* GTK offload Specific WMI commands*/ |
| WMI_GTK_OFFLOAD_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_GTK_OFL), |
| |
| /* CSA offload Specific WMI commands*/ |
| /** csa offload enable */ |
| WMI_CSA_OFFLOAD_ENABLE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_CSA_OFL), |
| /** chan switch command */ |
| WMI_CSA_OFFLOAD_CHANSWITCH_CMDID, |
| |
| /* Chatter commands*/ |
| /* Change chatter mode of operation */ |
| WMI_CHATTER_SET_MODE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_CHATTER), |
| /** chatter add coalescing filter command */ |
| WMI_CHATTER_ADD_COALESCING_FILTER_CMDID, |
| /** chatter delete coalescing filter command */ |
| WMI_CHATTER_DELETE_COALESCING_FILTER_CMDID, |
| /** chatter coalecing query command */ |
| WMI_CHATTER_COALESCING_QUERY_CMDID, |
| |
| /**addba specific commands */ |
| /** start the aggregation on this TID */ |
| WMI_PEER_TID_ADDBA_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_TID_ADDBA), |
| /** stop the aggregation on this TID */ |
| WMI_PEER_TID_DELBA_CMDID, |
| |
| /** set station mimo powersave method */ |
| WMI_STA_DTIM_PS_METHOD_CMDID, |
| /** Configure the Station UAPSD AC Auto Trigger Parameters */ |
| WMI_STA_UAPSD_AUTO_TRIG_CMDID, |
| /** Configure the Keep Alive Parameters */ |
| WMI_STA_KEEPALIVE_CMDID, |
| |
| /* Request ssn from target for a sta/tid pair */ |
| WMI_BA_REQ_SSN_CMDID, |
| /* misc command group */ |
| /** echo command mainly used for testing */ |
| WMI_ECHO_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_MISC), |
| |
| /* !!IMPORTANT!! |
| * If you need to add a new WMI command to the WMI_GRP_MISC sub-group, |
| * please make sure you add it BEHIND WMI_PDEV_UTF_CMDID, |
| * as we MUST have a fixed value here to maintain compatibility between |
| * UTF and the ART2 driver |
| */ |
| /** UTF WMI commands */ |
| WMI_PDEV_UTF_CMDID, |
| |
| /** set debug log config */ |
| WMI_DBGLOG_CFG_CMDID, |
| /* QVIT specific command id */ |
| WMI_PDEV_QVIT_CMDID, |
| /* Factory Testing Mode request command |
| * used for integrated chipsets */ |
| WMI_PDEV_FTM_INTG_CMDID, |
| /* set and get keepalive parameters command */ |
| WMI_VDEV_SET_KEEPALIVE_CMDID, |
| WMI_VDEV_GET_KEEPALIVE_CMDID, |
| /* For fw recovery test command */ |
| WMI_FORCE_FW_HANG_CMDID, |
| /* Set Mcast/Bdcast filter */ |
| WMI_SET_MCASTBCAST_FILTER_CMDID, |
| /** set thermal management params **/ |
| WMI_THERMAL_MGMT_CMDID, |
| /** set host auto shutdown params **/ |
| WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID, |
| /** set tpc chainmask config command */ |
| WMI_TPC_CHAINMASK_CONFIG_CMDID, |
| /** set Antenna diversity command */ |
| WMI_SET_ANTENNA_DIVERSITY_CMDID, |
| /** Set OCB Sched Request, deprecated */ |
| WMI_OCB_SET_SCHED_CMDID, |
| /** Set rssi monitoring config command */ |
| WMI_RSSI_BREACH_MONITOR_CONFIG_CMDID, |
| /** Enable/disable Large Receive Offload processing; provide cfg params */ |
| WMI_LRO_CONFIG_CMDID, |
| /** transfer data from host to firmware to write flash */ |
| WMI_TRANSFER_DATA_TO_FLASH_CMDID, |
| /** Command to enable/disable filtering of multicast IP with unicast mac */ |
| WMI_CONFIG_ENHANCED_MCAST_FILTER_CMDID, |
| /** Command to control WISA mode */ |
| WMI_VDEV_WISA_CMDID, |
| /** set debug log time stamp sync up with host */ |
| WMI_DBGLOG_TIME_STAMP_SYNC_CMDID, |
| /** Command for host to set/delete multiple mcast filters */ |
| WMI_SET_MULTIPLE_MCAST_FILTER_CMDID, |
| /** upload a requested section of data from firmware flash to host */ |
| WMI_READ_DATA_FROM_FLASH_CMDID, |
| /* Thermal Throttling SET CONF commands */ |
| WMI_THERM_THROT_SET_CONF_CMDID, |
| |
| /* Offload 11k related requests */ |
| WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), |
| /* invoke neighbor report from FW */ |
| WMI_11K_INVOKE_NEIGHBOR_REPORT_CMDID, |
| |
| /* GPIO Configuration */ |
| WMI_GPIO_CONFIG_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_GPIO), |
| WMI_GPIO_OUTPUT_CMDID, |
| |
| /* Txbf configuration command */ |
| WMI_TXBF_CMDID, |
| |
| /* FWTEST Commands */ |
| WMI_FWTEST_VDEV_MCC_SET_TBTT_MODE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_FWTEST), |
| /** set NoA descs **/ |
| WMI_FWTEST_P2P_SET_NOA_PARAM_CMDID, |
| /* UNIT Tests */ |
| WMI_UNIT_TEST_CMDID, |
| /* set debug and tuning parameters */ |
| WMI_FWTEST_CMDID, |
| /* Q-Boost configuration test commands */ |
| WMI_QBOOST_CFG_CMDID, |
| |
| /** TDLS Configuration */ |
| /** enable/disable TDLS */ |
| WMI_TDLS_SET_STATE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_TDLS), |
| /** set tdls peer state */ |
| WMI_TDLS_PEER_UPDATE_CMDID, |
| /** TDLS Offchannel control */ |
| WMI_TDLS_SET_OFFCHAN_MODE_CMDID, |
| |
| /** Resmgr Configuration */ |
| /** Adaptive OCS is enabled by default in the FW. This command is used to |
| * disable FW based adaptive OCS. |
| */ |
| WMI_RESMGR_ADAPTIVE_OCS_ENABLE_DISABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_RESMGR), |
| /** set the requested channel time quota for the home channels */ |
| WMI_RESMGR_SET_CHAN_TIME_QUOTA_CMDID, |
| /** set the requested latency for the home channels */ |
| WMI_RESMGR_SET_CHAN_LATENCY_CMDID, |
| |
| /** STA SMPS Configuration */ |
| /** force SMPS mode */ |
| WMI_STA_SMPS_FORCE_MODE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_STA_SMPS), |
| /** set SMPS parameters */ |
| WMI_STA_SMPS_PARAM_CMDID, |
| |
| /* Wlan HB commands*/ |
| /* enalbe/disable wlan HB */ |
| WMI_HB_SET_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_WLAN_HB), |
| /* set tcp parameters for wlan HB */ |
| WMI_HB_SET_TCP_PARAMS_CMDID, |
| /* set tcp pkt filter for wlan HB */ |
| WMI_HB_SET_TCP_PKT_FILTER_CMDID, |
| /* set udp parameters for wlan HB */ |
| WMI_HB_SET_UDP_PARAMS_CMDID, |
| /* set udp pkt filter for wlan HB */ |
| WMI_HB_SET_UDP_PKT_FILTER_CMDID, |
| |
| /* OIC ping keep alive */ |
| WMI_HB_OIC_PING_OFFLOAD_PARAM_CMDID, |
| WMI_HB_OIC_PING_OFFLOAD_SET_ENABLE_CMDID, |
| |
| /* WMI commands related to DHCP Lease Renew Offload **/ |
| WMI_HB_DHCP_LEASE_RENEW_OFFLOAD_CMDID, |
| |
| /** Wlan RMC commands*/ |
| /** enable/disable RMC */ |
| WMI_RMC_SET_MODE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_RMC), |
| /** configure action frame period */ |
| WMI_RMC_SET_ACTION_PERIOD_CMDID, |
| /** For debug/future enhancement purposes only, |
| * configures/finetunes RMC algorithms */ |
| WMI_RMC_CONFIG_CMDID, |
| _place_holder_cmd_1, |
| |
| /** WLAN MHF offload commands */ |
| /** enable/disable MHF offload */ |
| WMI_MHF_OFFLOAD_SET_MODE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MHF_OFL), |
| /** Plumb routing table for MHF offload */ |
| WMI_MHF_OFFLOAD_PLUMB_ROUTING_TBL_CMDID, |
| |
| /*location scan commands*/ |
| /*start batch scan*/ |
| WMI_BATCH_SCAN_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LOCATION_SCAN), |
| /*stop batch scan*/ |
| WMI_BATCH_SCAN_DISABLE_CMDID, |
| /*get batch scan result*/ |
| WMI_BATCH_SCAN_TRIGGER_RESULT_CMDID, |
| /* OEM related cmd */ |
| WMI_OEM_REQ_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_OEM), |
| WMI_OEM_REQUEST_CMDID, /* UNUSED */ |
| /* OEM related cmd used for Low Power ranging */ |
| WMI_LPI_OEM_REQ_CMDID, |
| WMI_OEM_DMA_RING_CFG_REQ_CMDID, |
| |
| /** Nan Request */ |
| WMI_NAN_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_NAN), |
| |
| /** Modem power state command */ |
| WMI_MODEM_POWER_STATE_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_COEX), |
| WMI_CHAN_AVOID_UPDATE_CMDID, |
| WMI_COEX_CONFIG_CMDID, |
| WMI_CHAN_AVOID_RPT_ALLOW_CMDID, |
| WMI_COEX_GET_ANTENNA_ISOLATION_CMDID, |
| WMI_SAR_LIMITS_CMDID, |
| WMI_SAR_GET_LIMITS_CMDID, |
| |
| /** |
| * OBSS scan offload enable/disable commands |
| * OBSS scan enable CMD will send to FW after VDEV UP, if these conditions are true: |
| * 1. WMI_SERVICE_OBSS_SCAN is reported by FW in service ready, |
| * 2. STA connect to a 2.4Ghz ht20/ht40 AP, |
| * 3. AP enable 20/40 coexistence (OBSS_IE-74 can be found in beacon or association response) |
| * If OBSS parameters from beacon changed, also use enable CMD to update parameters. |
| * OBSS scan disable CMD will send to FW if have enabled when tearing down connection. |
| */ |
| WMI_OBSS_SCAN_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_OBSS_OFL), |
| WMI_OBSS_SCAN_DISABLE_CMDID, |
| |
| /**LPI commands*/ |
| /**LPI mgmt snooping config command*/ |
| WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LPI), |
| /**LPI scan start command*/ |
| WMI_LPI_START_SCAN_CMDID, |
| /**LPI scan stop command*/ |
| WMI_LPI_STOP_SCAN_CMDID, |
| |
| /** ExtScan commands */ |
| WMI_EXTSCAN_START_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_EXTSCAN), |
| WMI_EXTSCAN_STOP_CMDID, |
| WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID, |
| WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID, |
| WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID, |
| WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID, |
| WMI_EXTSCAN_SET_CAPABILITIES_CMDID, |
| WMI_EXTSCAN_GET_CAPABILITIES_CMDID, |
| WMI_EXTSCAN_CONFIGURE_HOTLIST_SSID_MONITOR_CMDID, |
| WMI_EXTSCAN_CONFIGURE_MAWC_CMDID, |
| |
| /** DHCP server offload commands */ |
| WMI_SET_DHCP_SERVER_OFFLOAD_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_DHCP_OFL), |
| |
| /** IPA Offload features related commands */ |
| WMI_IPA_OFFLOAD_ENABLE_DISABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_IPA), |
| |
| /** mDNS responder offload commands */ |
| WMI_MDNS_OFFLOAD_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MDNS_OFL), |
| WMI_MDNS_SET_FQDN_CMDID, |
| WMI_MDNS_SET_RESPONSE_CMDID, |
| WMI_MDNS_GET_STATS_CMDID, |
| |
| /* enable/disable AP Authentication offload */ |
| WMI_SAP_OFL_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SAP_OFL), |
| WMI_SAP_SET_BLACKLIST_PARAM_CMDID, |
| WMI_SAP_OBSS_DETECTION_CFG_CMDID, |
| /** Out-of-context-of-BSS (OCB) commands */ |
| WMI_OCB_SET_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_OCB), |
| WMI_OCB_SET_UTC_TIME_CMDID, |
| WMI_OCB_START_TIMING_ADVERT_CMDID, |
| WMI_OCB_STOP_TIMING_ADVERT_CMDID, |
| WMI_OCB_GET_TSF_TIMER_CMDID, |
| WMI_DCC_GET_STATS_CMDID, |
| WMI_DCC_CLEAR_STATS_CMDID, |
| WMI_DCC_UPDATE_NDL_CMDID, |
| /* System-On-Chip commands */ |
| WMI_SOC_SET_PCL_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SOC), |
| WMI_SOC_SET_HW_MODE_CMDID, |
| WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID, |
| WMI_SOC_SET_ANTENNA_MODE_CMDID, |
| |
| /* packet filter commands */ |
| WMI_PACKET_FILTER_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_PKT_FILTER), |
| WMI_PACKET_FILTER_ENABLE_CMDID, |
| |
| /** Motion Aided WiFi Connectivity (MAWC) commands */ |
| WMI_MAWC_SENSOR_REPORT_IND_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MAWC), |
| |
| /** WMI commands related to PMF 11w Offload */ |
| WMI_PMF_OFFLOAD_SET_SA_QUERY_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_PMF_OFFLOAD), |
| |
| /** WMI commands related to pkt filter (BPF) offload */ |
| WMI_BPF_GET_CAPABILITY_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_BPF_OFFLOAD), |
| WMI_BPF_GET_VDEV_STATS_CMDID, |
| WMI_BPF_SET_VDEV_INSTRUCTIONS_CMDID, |
| WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID, |
| WMI_BPF_SET_VDEV_ACTIVE_MODE_CMDID, |
| |
| WMI_BPF_SET_VDEV_ENABLE_CMDID, |
| WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID, |
| WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID, |
| |
| /** WMI commands related to monitor mode. */ |
| WMI_MNT_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MONITOR), |
| |
| /** WMI commands related to regulatory offload */ |
| WMI_SET_CURRENT_COUNTRY_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_REGULATORY), |
| WMI_11D_SCAN_START_CMDID, |
| WMI_11D_SCAN_STOP_CMDID, |
| WMI_SET_INIT_COUNTRY_CMDID, |
| |
| /** |
| * Nan Data commands |
| * NDI - NAN Data Interface |
| * NDP - NAN Data Path |
| */ |
| /* Commands in prototyping phase */ |
| WMI_NDI_GET_CAP_REQ_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_PROTOTYPE), |
| WMI_NDP_INITIATOR_REQ_CMDID, |
| WMI_NDP_RESPONDER_REQ_CMDID, |
| WMI_NDP_END_REQ_CMDID, |
| |
| /** WMI commands related to HW data filtering **/ |
| WMI_HW_DATA_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_HW_DATA_FILTER), |
| |
| /** WMI commands related to WLAN latency module **/ |
| WMI_WLM_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_WLM), |
| |
| } WMI_CMD_ID; |
| |
| typedef enum { |
| /** WMI service is ready; after this event WMI messages can be sent/received */ |
| WMI_SERVICE_READY_EVENTID=0x1, |
| /** WMI is ready; after this event the wlan subsystem is initialized and can process commands. */ |
| WMI_READY_EVENTID, |
| |
| /** |
| * Specify what WMI services the target supports |
| * (for services beyond what fits in the WMI_SERVICE_READY_EVENT |
| * message's wmi_service_bitmap) |
| */ |
| WMI_SERVICE_AVAILABLE_EVENTID, |
| |
| /** Scan specific events */ |
| WMI_SCAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SCAN) , |
| |
| /* PDEV specific events */ |
| /** TPC config for the current operating channel */ |
| WMI_PDEV_TPC_CONFIG_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PDEV) , |
| /** Channel stats event */ |
| WMI_CHAN_INFO_EVENTID, |
| |
| /** PHY Error specific WMI event */ |
| WMI_PHYERR_EVENTID, |
| |
| /** eeprom dump event */ |
| WMI_PDEV_DUMP_EVENTID, |
| |
| /** traffic pause event */ |
| WMI_TX_PAUSE_EVENTID, |
| |
| /** DFS radar event */ |
| WMI_DFS_RADAR_EVENTID, |
| |
| /** track L1SS entry and residency event */ |
| WMI_PDEV_L1SS_TRACK_EVENTID, |
| |
| /** Report current temprature of the chip in Celcius degree */ |
| WMI_PDEV_TEMPERATURE_EVENTID, |
| |
| /** Extension of WMI_SERVICE_READY msg with extra target capability info */ |
| WMI_SERVICE_READY_EXT_EVENTID, |
| |
| /** FIPS test mode event */ |
| WMI_PDEV_FIPS_EVENTID, |
| |
| /** Channel hopping avoidance */ |
| WMI_PDEV_CHANNEL_HOPPING_EVENTID, |
| |
| /** CCK ANI level event */ |
| WMI_PDEV_ANI_CCK_LEVEL_EVENTID, |
| |
| /** OFDM ANI level event */ |
| WMI_PDEV_ANI_OFDM_LEVEL_EVENTID, |
| |
| /** Tx PPDU params */ |
| WMI_PDEV_TPC_EVENTID, |
| |
| /** NF Cal Power in DBR/DBM for all channels */ |
| WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID, |
| |
| /** SOC/PDEV events */ |
| WMI_PDEV_SET_HW_MODE_RESP_EVENTID, |
| WMI_PDEV_HW_MODE_TRANSITION_EVENTID, |
| WMI_PDEV_SET_MAC_CONFIG_RESP_EVENTID, |
| /** Report ANT DIV feature's status */ |
| WMI_PDEV_ANTDIV_STATUS_EVENTID, |
| /** Chip level Power stats */ |
| WMI_PDEV_CHIP_POWER_STATS_EVENTID, |
| /** Power Save Failure Detected */ |
| WMI_PDEV_CHIP_POWER_SAVE_FAILURE_DETECTED_EVENTID, |
| |
| /* Event to report the switch count in csa of one or more VDEVs */ |
| WMI_PDEV_CSA_SWITCH_COUNT_STATUS_EVENTID, |
| |
| /** Report the caldata version to host */ |
| WMI_PDEV_CHECK_CAL_VERSION_EVENTID, |
| |
| /** Report chain RSSI and antenna index to host */ |
| WMI_PDEV_DIV_RSSI_ANTID_EVENTID, |
| |
| /** provide noise floor and cycle counts for a channel */ |
| WMI_PDEV_BSS_CHAN_INFO_EVENTID, |
| |
| /** Response received the ctl table to host */ |
| WMI_PDEV_UPDATE_CTLTABLE_EVENTID, |
| |
| WMI_PDEV_DMA_RING_CFG_RSP_EVENTID, |
| |
| WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID, |
| |
| /* VDEV specific events */ |
| /** VDEV started event in response to VDEV_START request */ |
| WMI_VDEV_START_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VDEV), |
| /** vdev stopped event , generated in response to VDEV_STOP request */ |
| WMI_VDEV_STOPPED_EVENTID, |
| /* Indicate the set key (used for setting per |
| * peer unicast and per vdev multicast) |
| * operation has completed */ |
| WMI_VDEV_INSTALL_KEY_COMPLETE_EVENTID, |
| /* NOTE: WMI_VDEV_MCC_BCN_INTERVAL_CHANGE_REQ_EVENTID would be deprecated. Please |
| don't use this for any new implementations */ |
| /* Firmware requests dynamic change to a specific beacon interval for a specific vdev ID in MCC scenario. |
| This request is valid only for vdevs operating in soft AP or P2P GO mode */ |
| WMI_VDEV_MCC_BCN_INTERVAL_CHANGE_REQ_EVENTID, |
| |
| /* Return the TSF timestamp of specified vdev */ |
| WMI_VDEV_TSF_REPORT_EVENTID, |
| |
| /* FW response to Host for vdev delete cmdid */ |
| WMI_VDEV_DELETE_RESP_EVENTID, |
| |
| /** |
| * DISA feature: FW response to Host with encrypted/decrypted |
| * 802.11 DISA frame |
| */ |
| WMI_VDEV_ENCRYPT_DECRYPT_DATA_RESP_EVENTID, |
| /** event to report mac randomization success **/ |
| WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_STATUS_EVENTID, |
| |
| /* event for ARP stats collection */ |
| WMI_VDEV_GET_ARP_STAT_EVENTID, |
| |
| /** get tx power event in response to VDEV_GET_TX_POWER request */ |
| WMI_VDEV_GET_TX_POWER_EVENTID, |
| |
| /* peer specific events */ |
| /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ |
| WMI_PEER_STA_KICKOUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PEER), |
| |
| /** Peer Info Event with data_rate, rssi, tx_fail_cnt etc */ |
| WMI_PEER_INFO_EVENTID, |
| |
| /** Event indicating that TX fail count reaching threshold */ |
| WMI_PEER_TX_FAIL_CNT_THR_EVENTID, |
| /** Return the estimate link speed for the Peer specified in the |
| * WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID command. |
| */ |
| WMI_PEER_ESTIMATED_LINKSPEED_EVENTID, |
| /* Return the peer state |
| * WMI_PEER_SET_PARAM_CMDID, WMI_PEER_AUTHORIZE |
| */ |
| WMI_PEER_STATE_EVENTID, |
| |
| /* Peer Assoc Conf event to confirm fw had received PEER_ASSOC_CMD. |
| * After that, host will send Mx message. |
| * Otherwise, host will pause any Mx(STA:M2/M4) message |
| */ |
| WMI_PEER_ASSOC_CONF_EVENTID, |
| |
| /* FW response to Host for peer delete cmdid */ |
| WMI_PEER_DELETE_RESP_EVENTID, |
| |
| /** Valid rate code list for peer */ |
| WMI_PEER_RATECODE_LIST_EVENTID, |
| WMI_WDS_PEER_EVENTID, |
| WMI_PEER_STA_PS_STATECHG_EVENTID, |
| /** Peer Ant Div Info Event with rssi per chain, etc */ |
| WMI_PEER_ANTDIV_INFO_EVENTID, |
| /** Peer operating mode change indication sent to host to update stats */ |
| WMI_PEER_OPER_MODE_CHANGE_EVENTID, |
| |
| /* beacon/mgmt specific events */ |
| /** RX management frame. the entire frame is carried along with the event. */ |
| WMI_MGMT_RX_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MGMT), |
| /** software beacon alert event to Host requesting host to Queue a beacon for transmission |
| use only in host beacon mode */ |
| WMI_HOST_SWBA_EVENTID, |
| /** beacon tbtt offset event indicating the tsf offset of the tbtt from the theoretical value. |
| tbtt offset is normally 0 and will be non zero if there are multiple VDEVs operating in |
| staggered beacon transmission mode */ |
| WMI_TBTTOFFSET_UPDATE_EVENTID, |
| |
| /** event after the first beacon is transmitted following |
| a change in the template.*/ |
| WMI_OFFLOAD_BCN_TX_STATUS_EVENTID, |
| /** event after the first probe response is transmitted following |
| a change in the template.*/ |
| WMI_OFFLOAD_PROB_RESP_TX_STATUS_EVENTID, |
| /** Event for Mgmt TX completion event */ |
| WMI_MGMT_TX_COMPLETION_EVENTID, |
| /** Event for Mgmt TX bundle completion event */ |
| WMI_MGMT_TX_BUNDLE_COMPLETION_EVENTID, |
| /** vdev_map used in WMI_TBTTOFFSET_UPDATE_EVENTID supports max 32 vdevs |
| * Use this event if number of vdevs > 32. |
| */ |
| WMI_TBTTOFFSET_EXT_UPDATE_EVENTID, |
| /** Event for offchan data TX completion event */ |
| WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID, |
| |
| /** software FILS Discovery Frame alert event to Host, requesting host to Queue an FD frame for transmission */ |
| WMI_HOST_SWFDA_EVENTID, |
| |
| /* ADDBA Related WMI Events*/ |
| /** Indication the completion of the prior |
| WMI_PEER_TID_DELBA_CMDID(initiator) */ |
| WMI_TX_DELBA_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_BA_NEG), |
| /** Indication the completion of the prior |
| *WMI_PEER_TID_ADDBA_CMDID(initiator) */ |
| WMI_TX_ADDBA_COMPLETE_EVENTID, |
| |
| /* Seq num returned from hw for a sta/tid pair */ |
| WMI_BA_RSP_SSN_EVENTID, |
| |
| /* Aggregation state requested by BTC */ |
| WMI_AGGR_STATE_TRIG_EVENTID, |
| |
| /** Roam event to trigger roaming on host */ |
| WMI_ROAM_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_ROAM), |
| |
| /** matching AP found from list of profiles */ |
| WMI_PROFILE_MATCH, |
| /** roam synch event */ |
| WMI_ROAM_SYNCH_EVENTID, |
| /** roam synch frame event */ |
| WMI_ROAM_SYNCH_FRAME_EVENTID, |
| |
| /** P2P disc found */ |
| WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P), |
| /*send noa info to host when noa is changed for beacon tx offload enable*/ |
| WMI_P2P_NOA_EVENTID, |
| /** send p2p listen offload stopped event with different reason */ |
| WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID, |
| |
| /** Send EGAP Info to host */ |
| WMI_AP_PS_EGAP_INFO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_AP_PS), |
| |
| /* send pdev resume event to host after pdev resume. */ |
| WMI_PDEV_RESUME_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SUSPEND), |
| |
| /** WOW wake up host event.generated in response to WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID. |
| will cary wake reason */ |
| WMI_WOW_WAKEUP_HOST_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_WOW), |
| WMI_D0_WOW_DISABLE_ACK_EVENTID, |
| WMI_WOW_INITIAL_WAKEUP_EVENTID, |
| |
| /*RTT related event ID*/ |
| /** RTT measurement report */ |
| WMI_RTT_MEASUREMENT_REPORT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_RTT), |
| /** TSF measurement report */ |
| WMI_TSF_MEASUREMENT_REPORT_EVENTID, |
| /** RTT error report */ |
| WMI_RTT_ERROR_REPORT_EVENTID, |
| /*STATS specific events*/ |
| /** txrx stats event requested by host */ |
| WMI_STATS_EXT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_STATS), |
| /** FW iface link stats Event */ |
| WMI_IFACE_LINK_STATS_EVENTID, |
| /** FW iface peer link stats Event */ |
| WMI_PEER_LINK_STATS_EVENTID, |
| /** FW Update radio stats Event */ |
| WMI_RADIO_LINK_STATS_EVENTID, |
| |
| /** Firmware memory dump Complete event*/ |
| WMI_UPDATE_FW_MEM_DUMP_EVENTID, |
| |
| /** Event indicating the DIAG logs/events supported by FW */ |
| WMI_DIAG_EVENT_LOG_SUPPORTED_EVENTID, |
| |
| /** Instantaneous RSSI event */ |
| WMI_INST_RSSI_STATS_EVENTID, |
| |
| /** FW update tx power levels event */ |
| WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID, |
| /** This event is used to report wlan stats to host. |
| * It is triggered under 3 conditions: |
| * (a) Periodic timer timed out, based on the period specified |
| * by WMI_PDEV_PARAM_STATS_OBSERVATION_PERIOD |
| * (b) Whenever any of the (enabled) stats thresholds specified |
| * in the WMI_PDEV_SET_STATS_THRESHOLD_CMD message is exceeded |
| * within the current stats period. |
| * (c) In response to the one-time wlan stats request of |
| * WMI_REQUEST_WLAN_STATS_CMDID from host. |
| * |
| * If this event is triggered by condition a or b, |
| * the stats counters are cleared at the start of each period. |
| * But if it is triggered by condition c, stats counters won't be cleared. |
| */ |
| WMI_REPORT_STATS_EVENTID, |
| |
| /** Event indicating RCPI of the peer requested by host in the |
| * WMI_REQUEST_RCPI_CMDID */ |
| WMI_UPDATE_RCPI_EVENTID, |
| |
| /** This event is used to respond to WMI_REQUEST_PEER_STATS_INFO_CMDID |
| * and report peer stats info to host */ |
| WMI_PEER_STATS_INFO_EVENTID, |
| |
| /** This event is used to respond to WMI_REQUEST_RADIO_CHAN_STATS_CMDID |
| * and report radio channel stats to host */ |
| WMI_RADIO_CHAN_STATS_EVENTID, |
| |
| /* NLO specific events */ |
| /** NLO match event after the first match */ |
| WMI_NLO_MATCH_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NLO_OFL), |
| |
| /** NLO scan complete event */ |
| WMI_NLO_SCAN_COMPLETE_EVENTID, |
| |
| /** APFIND specific events */ |
| WMI_APFIND_EVENTID, |
| |
| /** passpoint network match event */ |
| WMI_PASSPOINT_MATCH_EVENTID, |
| |
| /** GTK offload stautus event requested by host */ |
| WMI_GTK_OFFLOAD_STATUS_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GTK_OFL), |
| |
| /** GTK offload failed to rekey event */ |
| WMI_GTK_REKEY_FAIL_EVENTID, |
| /* CSA IE received event */ |
| WMI_CSA_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_CSA_OFL), |
| |
| /*chatter query reply event*/ |
| WMI_CHATTER_PC_QUERY_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_CHATTER), |
| |
| /** DFS related events */ |
| WMI_PDEV_DFS_RADAR_DETECTION_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_DFS), |
| /** Indicate channel-availability-check completion event to host */ |
| WMI_VDEV_DFS_CAC_COMPLETE_EVENTID, |
| /** Indicate off-channel-availability-check completion event to host */ |
| WMI_VDEV_ADFS_OCAC_COMPLETE_EVENTID, |
| /** echo event in response to echo command */ |
| WMI_ECHO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MISC), |
| |
| /* !!IMPORTANT!! |
| * If you need to add a new WMI event ID to the WMI_GRP_MISC sub-group, |
| * please make sure you add it BEHIND WMI_PDEV_UTF_EVENTID, |
| * as we MUST have a fixed value here to maintain compatibility between |
| * UTF and the ART2 driver |
| */ |
| /** UTF specific WMI event */ |
| WMI_PDEV_UTF_EVENTID, |
| |
| /** event carries buffered debug messages */ |
| WMI_DEBUG_MESG_EVENTID, |
| /** FW stats(periodic or on shot) */ |
| WMI_UPDATE_STATS_EVENTID, |
| /** debug print message used for tracing FW code while debugging */ |
| WMI_DEBUG_PRINT_EVENTID, |
| /** DCS wlan or non-wlan interference event |
| */ |
| WMI_DCS_INTERFERENCE_EVENTID, |
| /** VI spoecific event */ |
| WMI_PDEV_QVIT_EVENTID, |
| /** FW code profile data in response to profile request */ |
| WMI_WLAN_PROFILE_DATA_EVENTID, |
| /* Factory Testing Mode request event |
| * used for integrated chipsets */ |
| WMI_PDEV_FTM_INTG_EVENTID, |
| /* avoid list of frequencies . |
| */ |
| WMI_WLAN_FREQ_AVOID_EVENTID, |
| /* Indicate the keepalive parameters */ |
| WMI_VDEV_GET_KEEPALIVE_EVENTID, |
| /* Thermal Management event */ |
| WMI_THERMAL_MGMT_EVENTID, |
| |
| /* Container for QXDM/DIAG events */ |
| WMI_DIAG_DATA_CONTAINER_EVENTID, |
| |
| /* host auto shutdown event */ |
| WMI_HOST_AUTO_SHUTDOWN_EVENTID, |
| |
| /*update mib counters together with WMI_UPDATE_STATS_EVENTID*/ |
| WMI_UPDATE_WHAL_MIB_STATS_EVENTID, |
| |
| /*update ht/vht info based on vdev (rx and tx NSS and preamble)*/ |
| WMI_UPDATE_VDEV_RATE_STATS_EVENTID, |
| |
| WMI_DIAG_EVENTID, |
| |
| /** Set OCB Sched Response, deprecated */ |
| WMI_OCB_SET_SCHED_EVENTID, |
| |
| /** event to indicate the flush of the buffered debug messages is complete*/ |
| WMI_DEBUG_MESG_FLUSH_COMPLETE_EVENTID, |
| |
| /** event to report mix/max RSSI breach events */ |
| WMI_RSSI_BREACH_EVENTID, |
| |
| /** event to report completion of data storage into flash memory */ |
| WMI_TRANSFER_DATA_TO_FLASH_COMPLETE_EVENTID, |
| |
| /** event to report SCPC calibrated data to host */ |
| WMI_PDEV_UTF_SCPC_EVENTID, |
| |
| /** event to provide requested data from the target's flash memory */ |
| WMI_READ_DATA_FROM_FLASH_EVENTID, |
| |
| /** event to report rx aggregation failure frame information */ |
| WMI_REPORT_RX_AGGR_FAILURE_EVENTID, |
| |
| /** event to upload a PKGID to host to identify chip for various products */ |
| WMI_PKGID_EVENTID, |
| |
| /* Thermal Throttling stats event id for every pdev and zones, etc */ |
| WMI_THERM_THROT_STATS_EVENTID, |
| |
| /* WMI UNIT TEST event */ |
| WMI_UNIT_TEST_EVENTID, |
| |
| /** event to report result of host configure SAR2 */ |
| WMI_SAR2_RESULT_EVENTID, |
| |
| /* GPIO Event */ |
| WMI_GPIO_INPUT_EVENTID=WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), |
| /** upload H_CV info WMI event |
| * to indicate uploaded H_CV info to host |
| */ |
| WMI_UPLOADH_EVENTID, |
| |
| /** capture H info WMI event |
| * to indicate captured H info to host |
| */ |
| WMI_CAPTUREH_EVENTID, |
| /* hw RFkill */ |
| WMI_RFKILL_STATE_CHANGE_EVENTID, |
| |
| /* TDLS Event */ |
| WMI_TDLS_PEER_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_TDLS), |
| |
| /** STA SMPS Event */ |
| /** force SMPS mode */ |
| WMI_STA_SMPS_FORCE_MODE_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_STA_SMPS), |
| |
| /*location scan event*/ |
| /*report the firmware's capability of batch scan*/ |
| WMI_BATCH_SCAN_ENABLED_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_LOCATION_SCAN), |
| /*batch scan result*/ |
| WMI_BATCH_SCAN_RESULT_EVENTID, |
| /* OEM Event */ |
| WMI_OEM_CAPABILITY_EVENTID=WMI_EVT_GRP_START_ID(WMI_GRP_OEM), /*DEPRECATED*/ |
| WMI_OEM_MEASUREMENT_REPORT_EVENTID, /* DEPRECATED */ |
| WMI_OEM_ERROR_REPORT_EVENTID, /* DEPRECATED */ |
| WMI_OEM_RESPONSE_EVENTID, |
| WMI_OEM_DMA_RING_CFG_RSP_EVENTID, |
| WMI_OEM_DMA_BUF_RELEASE_EVENTID, |
| |
| /* NAN Event */ |
| WMI_NAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NAN), |
| WMI_NAN_DISC_IFACE_CREATED_EVENTID, |
| WMI_NAN_DISC_IFACE_DELETED_EVENTID, |
| WMI_NAN_STARTED_CLUSTER_EVENTID, |
| WMI_NAN_JOINED_CLUSTER_EVENTID, |
| |
| /* Coex Event */ |
| WMI_COEX_REPORT_ANTENNA_ISOLATION_EVENTID = |
| WMI_EVT_GRP_START_ID(WMI_GRP_COEX), |
| WMI_SAR_GET_LIMITS_EVENTID, |
| |
| /* LPI Event */ |
| WMI_LPI_RESULT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_LPI), |
| WMI_LPI_STATUS_EVENTID, |
| WMI_LPI_HANDOFF_EVENTID, |
| |
| /* ExtScan events */ |
| WMI_EXTSCAN_START_STOP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_EXTSCAN), |
| WMI_EXTSCAN_OPERATION_EVENTID, |
| WMI_EXTSCAN_TABLE_USAGE_EVENTID, |
| WMI_EXTSCAN_CACHED_RESULTS_EVENTID, |
| WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID, |
| WMI_EXTSCAN_HOTLIST_MATCH_EVENTID, |
| WMI_EXTSCAN_CAPABILITIES_EVENTID, |
| WMI_EXTSCAN_HOTLIST_SSID_MATCH_EVENTID, |
| |
| /* mDNS offload events */ |
| WMI_MDNS_STATS_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MDNS_OFL), |
| |
| /* SAP Authentication offload events */ |
| WMI_SAP_OFL_ADD_STA_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SAP_OFL), |
| WMI_SAP_OFL_DEL_STA_EVENTID, |
| WMI_SAP_OBSS_DETECTION_REPORT_EVENTID, |
| |
| /** Out-of-context-of-bss (OCB) events */ |
| WMI_OCB_SET_CONFIG_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_OCB), |
| WMI_OCB_GET_TSF_TIMER_RESP_EVENTID, |
| WMI_DCC_GET_STATS_RESP_EVENTID, |
| WMI_DCC_UPDATE_NDL_RESP_EVENTID, |
| WMI_DCC_STATS_EVENTID, |
| |
| /* System-On-Chip events */ |
| WMI_SOC_SET_HW_MODE_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SOC), |
| WMI_SOC_HW_MODE_TRANSITION_EVENTID, |
| WMI_SOC_SET_DUAL_MAC_CONFIG_RESP_EVENTID, |
| /** Motion Aided WiFi Connectivity (MAWC) events */ |
| WMI_MAWC_ENABLE_SENSOR_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MAWC), |
| |
| /** pkt filter (BPF) offload relevant events */ |
| WMI_BPF_CAPABILIY_INFO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_BPF_OFFLOAD), |
| WMI_BPF_VDEV_STATS_INFO_EVENTID, |
| WMI_BPF_GET_VDEV_WORK_MEMORY_RESP_EVENTID, |
| |
| /** WMI events related to regulatory offload */ |
| WMI_REG_CHAN_LIST_CC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_REGULATORY), |
| WMI_11D_NEW_COUNTRY_EVENTID, |
| |
| _place_holder_evt_1 = WMI_EVT_GRP_START_ID(WMI_GRP_RMC), |
| |
| /** Events in Prototyping phase */ |
| WMI_NDI_CAP_RSP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PROTOTYPE), |
| WMI_NDP_INITIATOR_RSP_EVENTID, |
| WMI_NDP_RESPONDER_RSP_EVENTID, |
| WMI_NDP_END_RSP_EVENTID, |
| WMI_NDP_INDICATION_EVENTID, |
| WMI_NDP_CONFIRM_EVENTID, |
| WMI_NDP_END_INDICATION_EVENTID, |
| WMI_WLAN_COEX_BT_ACTIVITY_EVENTID, |
| WMI_NDL_SCHEDULE_UPDATE_EVENTID, |
| } WMI_EVT_ID; |
| |
| /* defines for OEM message sub-types */ |
| #define WMI_OEM_CAPABILITY_REQ 0x01 |
| #define WMI_OEM_CAPABILITY_RSP 0x02 |
| #define WMI_OEM_MEASUREMENT_REQ 0x03 |
| #define WMI_OEM_MEASUREMENT_RSP 0x04 |
| #define WMI_OEM_ERROR_REPORT_RSP 0x05 |
| #define WMI_OEM_NAN_MEAS_REQ 0x06 |
| #define WMI_OEM_NAN_MEAS_RSP 0x07 |
| #define WMI_OEM_NAN_PEER_INFO 0x08 |
| #define WMI_OEM_CONFIGURE_LCR 0x09 |
| #define WMI_OEM_CONFIGURE_LCI 0x0A |
| |
| |
| /* below message subtype is internal to CLD. Target should |
| * never use internal response type |
| */ |
| #define WMI_OEM_INTERNAL_RSP 0xdeadbeef |
| |
| #define WMI_CHAN_LIST_TAG 0x1 |
| #define WMI_SSID_LIST_TAG 0x2 |
| #define WMI_BSSID_LIST_TAG 0x3 |
| #define WMI_IE_TAG 0x4 |
| #define WMI_SCAN_START_OFFSET_TAG 0x5 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_channel */ |
| /** primary 20 MHz channel frequency in mhz */ |
| A_UINT32 mhz; |
| /** Center frequency 1 in MHz*/ |
| A_UINT32 band_center_freq1; |
| /** Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ |
| A_UINT32 band_center_freq2; |
| /** channel info described below */ |
| A_UINT32 info; |
| /** contains min power, max power, reg power and reg class id. */ |
| A_UINT32 reg_info_1; |
| /** contains antennamax */ |
| A_UINT32 reg_info_2; |
| } wmi_channel; |
| |
| typedef enum{ |
| WMI_CHANNEL_CHANGE_CAUSE_NONE = 0, |
| WMI_CHANNEL_CHANGE_CAUSE_CSA, |
| }wmi_channel_change_cause; |
| |
| /** channel info consists of 6 bits of channel mode */ |
| |
| #define WMI_SET_CHANNEL_MODE(pwmi_channel,val) do { \ |
| (pwmi_channel)->info &= 0xffffffc0; \ |
| (pwmi_channel)->info |= (val); \ |
| } while(0) |
| |
| #define WMI_GET_CHANNEL_MODE(pwmi_channel) ((pwmi_channel)->info & 0x0000003f ) |
| |
| #define WMI_CHAN_FLAG_HT40_PLUS 6 |
| #define WMI_CHAN_FLAG_PASSIVE 7 |
| #define WMI_CHAN_ADHOC_ALLOWED 8 |
| #define WMI_CHAN_AP_DISABLED 9 |
| #define WMI_CHAN_FLAG_DFS 10 |
| #define WMI_CHAN_FLAG_ALLOW_HT 11 /* HT is allowed on this channel */ |
| #define WMI_CHAN_FLAG_ALLOW_VHT 12 /* VHT is allowed on this channel */ |
| #define WMI_CHANNEL_CHANGE_CAUSE_CSA 13 /*Indicate reason for channel switch */ |
| #define WMI_CHAN_FLAG_HALF_RATE 14 /* Indicates half rate channel */ |
| #define WMI_CHAN_FLAG_QUARTER_RATE 15 /* Indicates quarter rate channel */ |
| #define WMI_CHAN_FLAG_DFS_CFREQ2 16 /* Enable radar event reporting for sec80 in VHT80p80 */ |
| #define WMI_CHAN_FLAG_ALLOW_HE 17 /* HE (11ax) is allowed on this channel */ |
| |
| #define WMI_SET_CHANNEL_FLAG(pwmi_channel,flag) do { \ |
| (pwmi_channel)->info |= (1 << flag); \ |
| } while(0) |
| |
| #define WMI_GET_CHANNEL_FLAG(pwmi_channel,flag) \ |
| (((pwmi_channel)->info & (1 << flag)) >> flag) |
| |
| #define WMI_SET_CHANNEL_MIN_POWER(pwmi_channel,val) do { \ |
| (pwmi_channel)->reg_info_1 &= 0xffffff00; \ |
| (pwmi_channel)->reg_info_1 |= (val&0xff); \ |
| } while(0) |
| #define WMI_GET_CHANNEL_MIN_POWER(pwmi_channel) ((pwmi_channel)->reg_info_1 & 0xff ) |
| |
| #define WMI_SET_CHANNEL_MAX_POWER(pwmi_channel,val) do { \ |
| (pwmi_channel)->reg_info_1 &= 0xffff00ff; \ |
| (pwmi_channel)->reg_info_1 |= ((val&0xff) << 8); \ |
| } while(0) |
| #define WMI_GET_CHANNEL_MAX_POWER(pwmi_channel) ( (((pwmi_channel)->reg_info_1) >> 8) & 0xff ) |
| |
| #define WMI_SET_CHANNEL_REG_POWER(pwmi_channel,val) do { \ |
| (pwmi_channel)->reg_info_1 &= 0xff00ffff; \ |
| (pwmi_channel)->reg_info_1 |= ((val&0xff) << 16); \ |
| } while(0) |
| #define WMI_GET_CHANNEL_REG_POWER(pwmi_channel) ( (((pwmi_channel)->reg_info_1) >> 16) & 0xff ) |
| #define WMI_SET_CHANNEL_REG_CLASSID(pwmi_channel,val) do { \ |
| (pwmi_channel)->reg_info_1 &= 0x00ffffff; \ |
| (pwmi_channel)->reg_info_1 |= ((val&0xff) << 24); \ |
| } while(0) |
| #define WMI_GET_CHANNEL_REG_CLASSID(pwmi_channel) ( (((pwmi_channel)->reg_info_1) >> 24) & 0xff ) |
| |
| #define WMI_SET_CHANNEL_ANTENNA_MAX(pwmi_channel,val) do { \ |
| (pwmi_channel)->reg_info_2 &= 0xffffff00; \ |
| (pwmi_channel)->reg_info_2 |= (val&0xff); \ |
| } while(0) |
| #define WMI_GET_CHANNEL_ANTENNA_MAX(pwmi_channel) ((pwmi_channel)->reg_info_2 & 0xff ) |
| |
| /* max tx power is in 1 dBm units */ |
| #define WMI_SET_CHANNEL_MAX_TX_POWER(pwmi_channel,val) do { \ |
| (pwmi_channel)->reg_info_2 &= 0xffff00ff; \ |
| (pwmi_channel)->reg_info_2 |= ((val&0xff)<<8); \ |
| } while(0) |
| #define WMI_GET_CHANNEL_MAX_TX_POWER(pwmi_channel) ( (((pwmi_channel)->reg_info_2)>>8) & 0xff ) |
| |
| |
| /** HT Capabilities*/ |
| #define WMI_HT_CAP_ENABLED 0x0001 /* HT Enabled/ disabled */ |
| #define WMI_HT_CAP_HT20_SGI 0x0002 /* Short Guard Interval with HT20 */ |
| #define WMI_HT_CAP_DYNAMIC_SMPS 0x0004 /* Dynamic MIMO powersave */ |
| #define WMI_HT_CAP_TX_STBC 0x0008 /* B3 TX STBC */ |
| #define WMI_HT_CAP_TX_STBC_MASK_SHIFT 3 |
| #define WMI_HT_CAP_RX_STBC 0x0030 /* B4-B5 RX STBC */ |
| #define WMI_HT_CAP_RX_STBC_MASK_SHIFT 4 |
| #define WMI_HT_CAP_LDPC 0x0040 /* LDPC supported */ |
| #define WMI_HT_CAP_L_SIG_TXOP_PROT 0x0080 /* L-SIG TXOP Protection */ |
| #define WMI_HT_CAP_MPDU_DENSITY 0x0700 /* MPDU Density */ |
| #define WMI_HT_CAP_MPDU_DENSITY_MASK_SHIFT 8 |
| #define WMI_HT_CAP_HT40_SGI 0x0800 |
| #define WMI_HT_CAP_RX_LDPC 0x1000 /* LDPC RX support */ |
| #define WMI_HT_CAP_TX_LDPC 0x2000 /* LDPC TX support */ |
| |
| /* These macros should be used when we wish to advertise STBC support for |
| * only 1SS or 2SS or 3SS. */ |
| #define WMI_HT_CAP_RX_STBC_1SS 0x0010 /* B4-B5 RX STBC */ |
| #define WMI_HT_CAP_RX_STBC_2SS 0x0020 /* B4-B5 RX STBC */ |
| #define WMI_HT_CAP_RX_STBC_3SS 0x0030 /* B4-B5 RX STBC */ |
| |
| |
| #define WMI_HT_CAP_DEFAULT_ALL (WMI_HT_CAP_ENABLED | \ |
| WMI_HT_CAP_HT20_SGI | \ |
| WMI_HT_CAP_HT40_SGI | \ |
| WMI_HT_CAP_TX_STBC | \ |
| WMI_HT_CAP_RX_STBC | \ |
| WMI_HT_CAP_LDPC | \ |
| WMI_HT_CAP_TX_LDPC | \ |
| WMI_HT_CAP_RX_LDPC) |
| |
| /* WMI_VHT_CAP_* these maps to ieee 802.11ac vht capability information |
| field. The fields not defined here are not supported, or reserved. |
| Do not change these masks and if you have to add new one follow the |
| bitmask as specified by 802.11ac draft. |
| */ |
| |
| #define WMI_VHT_CAP_MAX_MPDU_LEN_7935 0x00000001 |
| #define WMI_VHT_CAP_MAX_MPDU_LEN_11454 0x00000002 |
| #define WMI_VHT_CAP_MAX_MPDU_LEN_MASK 0x00000003 |
| #define WMI_VHT_CAP_CH_WIDTH_160MHZ 0x00000004 |
| #define WMI_VHT_CAP_CH_WIDTH_80P80_160MHZ 0x00000008 |
| #define WMI_VHT_CAP_RX_LDPC 0x00000010 |
| #define WMI_VHT_CAP_SGI_80MHZ 0x00000020 |
| #define WMI_VHT_CAP_SGI_160MHZ 0x00000040 |
| #define WMI_VHT_CAP_TX_STBC 0x00000080 |
| #define WMI_VHT_CAP_RX_STBC_MASK 0x00000300 |
| #define WMI_VHT_CAP_RX_STBC_MASK_SHIFT 8 |
| #define WMI_VHT_CAP_SU_BFORMER 0x00000800 |
| #define WMI_VHT_CAP_SU_BFORMEE 0x00001000 |
| #define WMI_VHT_CAP_MAX_CS_ANT_MASK 0x0000E000 |
| #define WMI_VHT_CAP_MAX_CS_ANT_MASK_SHIFT 13 |
| #define WMI_VHT_CAP_MAX_SND_DIM_MASK 0x00070000 |
| #define WMI_VHT_CAP_MAX_SND_DIM_MASK_SHIFT 16 |
| #define WMI_VHT_CAP_MU_BFORMER 0x00080000 |
| #define WMI_VHT_CAP_MU_BFORMEE 0x00100000 |
| #define WMI_VHT_CAP_TXOP_PS 0x00200000 |
| #define WMI_VHT_CAP_MAX_AMPDU_LEN_EXP 0x03800000 |
| #define WMI_VHT_CAP_MAX_AMPDU_LEN_EXP_SHIFT 23 |
| #define WMI_VHT_CAP_RX_FIXED_ANT 0x10000000 |
| #define WMI_VHT_CAP_TX_FIXED_ANT 0x20000000 |
| #define WMI_VHT_CAP_TX_LDPC 0x40000000 |
| |
| /* TEMPORARY: |
| * Preserve the incorrect old name as an alias for the correct new name |
| * until all references to the old name have been removed from all hosts |
| * and targets. |
| */ |
| #define WMI_VHT_CAP_MAX_AMPDU_LEN_EXP_SHIT WMI_VHT_CAP_MAX_AMPDU_LEN_EXP_SHIFT |
| |
| /* These macros should be used when we wish to advertise STBC support for |
| * only 1SS or 2SS or 3SS. */ |
| #define WMI_VHT_CAP_RX_STBC_1SS 0x00000100 |
| #define WMI_VHT_CAP_RX_STBC_2SS 0x00000200 |
| #define WMI_VHT_CAP_RX_STBC_3SS 0x00000300 |
| |
| /* TEMPORARY: |
| * Preserve the incorrect old name as an alias for the correct new name |
| * until all references to the old name have been removed from all hosts |
| * and targets. |
| */ |
| #define WMI_vHT_CAP_RX_STBC_3SS WMI_VHT_CAP_RX_STBC_3SS |
| |
| #define WMI_VHT_CAP_DEFAULT_ALL (WMI_VHT_CAP_MAX_MPDU_LEN_11454 | \ |
| WMI_VHT_CAP_SGI_80MHZ | \ |
| WMI_VHT_CAP_TX_STBC | \ |
| WMI_VHT_CAP_RX_STBC_MASK | \ |
| WMI_VHT_CAP_RX_LDPC | \ |
| WMI_VHT_CAP_TX_LDPC | \ |
| WMI_VHT_CAP_MAX_AMPDU_LEN_EXP | \ |
| WMI_VHT_CAP_RX_FIXED_ANT | \ |
| WMI_VHT_CAP_TX_FIXED_ANT) |
| |
| /* Interested readers refer to Rx/Tx MCS Map definition as defined in |
| 802.11ac |
| */ |
| #define WMI_VHT_MAX_MCS_4_SS_MASK(r,ss) ((3 & (r)) << (((ss) - 1) << 1)) |
| #define WMI_VHT_MAX_SUPP_RATE_MASK 0x1fff0000 |
| #define WMI_VHT_MAX_SUPP_RATE_MASK_SHIFT 16 |
| |
| /** 11ax capabilities */ |
| #define WMI_HE_CAP_PPE_PRESENT 0x00000001 |
| #define WMI_HE_CAP_TWT_RESPONDER_SUPPORT 0x00000002 |
| #define WMI_HE_CAP_TWT_REQUESTER_SUPPORT 0x00000004 |
| #define WMI_HE_FRAG_SUPPORT_MASK 0x00000018 |
| #define WMI_HE_FRAG_SUPPORT_SHIFT 3 |
| |
| /* Interested readers refer to Rx/Tx MCS Map definition as defined in 802.11ax |
| */ |
| #define WMI_HE_MAX_MCS_4_SS_MASK(r,ss) ((3 & (r)) << (((ss) - 1) << 1)) |
| |
| /* fragmentation support field value */ |
| enum { |
| WMI_HE_FRAG_SUPPORT_LEVEL0, /* No Fragmentation support */ |
| WMI_HE_FRAG_SUPPORT_LEVEL1, /* support for fragments within a VHT single MPDU, no support for fragments within AMPDU */ |
| WMI_HE_FRAG_SUPPORT_LEVEL2, /* support for up to 1 fragment per MSDU within a single A-MPDU */ |
| WMI_HE_FRAG_SUPPORT_LEVEL3, /* support for multiple fragments per MSDU within an A-MPDU */ |
| }; |
| |
| /** NOTE: This defs cannot be changed in the future without breaking WMI compatibility */ |
| #define WMI_MAX_NUM_SS MAX_HE_NSS |
| #define WMI_MAX_NUM_RU MAX_HE_RU |
| |
| /* |
| * Figure 8 554ae: -PPE Threshold Info field format |
| * we pack PPET16 and PPT8 for four RU's in one element of array. |
| * |
| * ppet16_ppet8_ru3_ru0 array element 0 holds: |
| * | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | |
| *rsvd |NSS1,RU4|NSS1,RU4|NSS1,RU3|NSS1,RU3|NSS1,RU2|NSS1,RU2|NSS1,RU1|NSS1,RU1| |
| *31:23| 22:20 | 19:17 | 17:15 | 14:12 | 11:9 | 8:6 | 5:3 | 2:0 | |
| * |
| * ppet16_ppet8_ru3_ru0 array element 1 holds: |
| * | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | |
| *rsvd |NSS2,RU4|NSS2,RU4|NSS2,RU3|NSS2,RU3|NSS2,RU2|NSS2,RU2|NSS2,RU1|NSS2,RU1| |
| *31:23| 22:20 | 19:17 | 17:15 | 14:12 | 11:9 | 8:6 | 5:3 | 2:0 | |
| * |
| * etc. |
| */ |
| |
| /* |
| * Note that in these macros, "ru" is one-based, not zero-based, while |
| * nssm1 is zero-based. |
| */ |
| #define WMI_SET_PPET16(ppet16_ppet8_ru3_ru0, ru, nssm1, ppet) \ |
| do { \ |
| ppet16_ppet8_ru3_ru0[nssm1] &= ~(7 << (((ru-1)&3)*6)); \ |
| ppet16_ppet8_ru3_ru0[nssm1] |= ((ppet&7) << (((ru-1)&3)*6)); \ |
| } while (0) |
| |
| #define WMI_GET_PPET16(ppet16_ppet8_ru3_ru0, ru, nssm1) \ |
| ((ppet16_ppet8_ru3_ru0[nssm1] >> (((ru-1)&3)*6))&7) |
| |
| #define WMI_SET_PPET8(ppet16_ppet8_ru3_ru0, ru, nssm1, ppet) \ |
| do { \ |
| ppet16_ppet8_ru3_ru0[nssm1] &= ~(7 << (((ru-1)&3)*6+3)); \ |
| ppet16_ppet8_ru3_ru0[nssm1] |= ((ppet&7) << (((ru-1)&3)*6+3)); \ |
| } while (0) |
| |
| #define WMI_GET_PPET8(ppet16_ppet8_ru3_ru0, ru, nssm1) \ |
| ((ppet16_ppet8_ru3_ru0[nssm1] >> (((ru-1)&3)*6+3))&7) |
| |
| typedef struct _wmi_ppe_threshold { |
| A_UINT32 numss_m1; /** NSS - 1*/ |
| union { |
| A_UINT32 ru_count; /** RU COUNT OBSOLETE to be removed after few versions */ |
| A_UINT32 ru_mask; /** RU index mask */ |
| }; |
| A_UINT32 ppet16_ppet8_ru3_ru0[WMI_MAX_NUM_SS]; /** ppet8 and ppet16 for max num ss */ |
| } wmi_ppe_threshold; |
| |
| /* WMI_SYS_CAPS_* refer to the capabilities that system support |
| */ |
| #define WMI_SYS_CAP_ENABLE 0x00000001 |
| #define WMI_SYS_CAP_TXPOWER 0x00000002 |
| |
| /* |
| * WMI Dual Band Simultaneous (DBS) hardware mode list bit-mask definitions. |
| * Bits 5:0 are reserved |
| */ |
| #define WMI_DBS_HW_MODE_MAC0_TX_STREAMS_BITPOS (28) |
| #define WMI_DBS_HW_MODE_MAC0_RX_STREAMS_BITPOS (24) |
| #define WMI_DBS_HW_MODE_MAC1_TX_STREAMS_BITPOS (20) |
| #define WMI_DBS_HW_MODE_MAC1_RX_STREAMS_BITPOS (16) |
| #define WMI_DBS_HW_MODE_MAC0_BANDWIDTH_BITPOS (12) |
| #define WMI_DBS_HW_MODE_MAC1_BANDWIDTH_BITPOS (8) |
| #define WMI_DBS_HW_MODE_DBS_MODE_BITPOS (7) |
| #define WMI_DBS_HW_MODE_AGILE_DFS_MODE_BITPOS (6) |
| |
| #define WMI_DBS_HW_MODE_MAC0_TX_STREAMS_MASK (0xf << WMI_DBS_HW_MODE_MAC0_TX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC0_RX_STREAMS_MASK (0xf << WMI_DBS_HW_MODE_MAC0_RX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC1_TX_STREAMS_MASK (0xf << WMI_DBS_HW_MODE_MAC1_TX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC1_RX_STREAMS_MASK (0xf << WMI_DBS_HW_MODE_MAC1_RX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC0_BANDWIDTH_MASK (0xf << WMI_DBS_HW_MODE_MAC0_BANDWIDTH_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC1_BANDWIDTH_MASK (0xf << WMI_DBS_HW_MODE_MAC1_BANDWIDTH_BITPOS) |
| #define WMI_DBS_HW_MODE_DBS_MODE_MASK (0x1 << WMI_DBS_HW_MODE_DBS_MODE_BITPOS) |
| #define WMI_DBS_HW_MODE_AGILE_DFS_MODE_MASK (0x1 << WMI_DBS_HW_MODE_AGILE_DFS_MODE_BITPOS) |
| |
| #define WMI_DBS_HW_MODE_MAC0_TX_STREAMS_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_MAC0_TX_STREAMS_BITPOS, 4, value) |
| #define WMI_DBS_HW_MODE_MAC0_RX_STREAMS_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_MAC0_RX_STREAMS_BITPOS, 4, value) |
| #define WMI_DBS_HW_MODE_MAC1_TX_STREAMS_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_MAC1_TX_STREAMS_BITPOS, 4, value) |
| #define WMI_DBS_HW_MODE_MAC1_RX_STREAMS_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_MAC1_RX_STREAMS_BITPOS, 4, value) |
| #define WMI_DBS_HW_MODE_MAC0_BANDWIDTH_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_MAC0_BANDWIDTH_BITPOS, 4, value) |
| #define WMI_DBS_HW_MODE_MAC1_BANDWIDTH_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_MAC1_BANDWIDTH_BITPOS, 4, value) |
| #define WMI_DBS_HW_MODE_DBS_MODE_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_DBS_MODE_BITPOS, 1, value) |
| #define WMI_DBS_HW_MODE_AGILE_DFS_SET(hw_mode, value) \ |
| WMI_SET_BITS(hw_mode, WMI_DBS_HW_MODE_AGILE_DFS_MODE_BITPOS, 1, value) |
| |
| #define WMI_DBS_HW_MODE_MAC0_TX_STREAMS_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_MAC0_TX_STREAMS_MASK) >> WMI_DBS_HW_MODE_MAC0_TX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC0_RX_STREAMS_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_MAC0_RX_STREAMS_MASK) >> WMI_DBS_HW_MODE_MAC0_RX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_MAC1_TX_STREAMS_MASK) >> WMI_DBS_HW_MODE_MAC1_TX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_MAC1_RX_STREAMS_MASK) >> WMI_DBS_HW_MODE_MAC1_RX_STREAMS_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC0_BANDWIDTH_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_MAC0_BANDWIDTH_MASK) >> WMI_DBS_HW_MODE_MAC0_BANDWIDTH_BITPOS) |
| #define WMI_DBS_HW_MODE_MAC1_BANDWIDTH_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_MAC1_BANDWIDTH_MASK) >> WMI_DBS_HW_MODE_MAC1_BANDWIDTH_BITPOS) |
| #define WMI_DBS_HW_MODE_DBS_MODE_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_DBS_MODE_MASK) >> WMI_DBS_HW_MODE_DBS_MODE_BITPOS) |
| #define WMI_DBS_HW_MODE_AGILE_DFS_GET(hw_mode) \ |
| ((hw_mode & WMI_DBS_HW_MODE_AGILE_DFS_MODE_MASK) >> WMI_DBS_HW_MODE_AGILE_DFS_MODE_BITPOS) |
| |
| #define WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_BITPOS (31) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_BITPOS (30) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_BITPOS (29) |
| #define WMI_DBS_CONC_SCAN_CFG_ASYNC_DBS_SCAN_BITPOS (28) |
| #define WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_BITPOS (27) |
| |
| #define WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_MASK (0x1 << WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_MASK (0x1 << WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_MASK (0x1 << WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_ASYC_DBS_SCAN_MASK (0x1 << WMI_DBS_CONC_SCAN_CFG_ASYNC_DBS_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_MASK (0x1 << WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_BITPOS) |
| |
| #define WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_SET(scan_cfg, value) \ |
| WMI_SET_BITS(scan_cfg, WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_BITPOS, 1, value) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_SET(scan_cfg, value) \ |
| WMI_SET_BITS(scan_cfg, WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_BITPOS, 1, value) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_SET(scan_cfg, value) \ |
| WMI_SET_BITS(scan_cfg, WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_BITPOS, 1, value) |
| #define WMI_DBS_CONC_SCAN_CFG_ASYNC_DBS_SCAN_SET(scan_cfg, value) \ |
| WMI_SET_BITS(scan_cfg, WMI_DBS_CONC_SCAN_CFG_ASYNC_DBS_SCAN_BITPOS, 1, value) |
| #define WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_SET(scan_cfg, value) \ |
| WMI_SET_BITS(scan_cfg, WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_BITPOS, 1, value) |
| |
| #define WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_GET(scan_cfg) \ |
| ((scan_cfg & WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_MASK) >> WMI_DBS_CONC_SCAN_CFG_DBS_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_GET(scan_cfg) \ |
| ((scan_cfg & WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_MASK) >> WMI_DBS_CONC_SCAN_CFG_AGILE_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_GET(scan_cfg) \ |
| ((scan_cfg & WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_MASK) >> WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_ASYNC_DBS_SCAN_GET(scan_cfg) \ |
| ((scan_cfg & WMI_DBS_CONC_SCAN_CFG_ASYC_DBS_SCAN_MASK) >> WMI_DBS_CONC_SCAN_CFG_ASYNC_DBS_SCAN_BITPOS) |
| #define WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_GET(scan_cfg) \ |
| ((scan_cfg & WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_MASK) >> WMI_DBS_CONC_SCAN_CFG_SYNC_DBS_SCAN_BITPOS) |
| |
| #define WMI_DBS_FW_MODE_CFG_DBS_BITPOS (31) |
| #define WMI_DBS_FW_MODE_CFG_AGILE_DFS_BITPOS (30) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_BITPOS (29) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_BITPOS (28) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_BITPOS (27) |
| |
| #define WMI_DBS_FW_MODE_CFG_DBS_MASK (0x1 << WMI_DBS_FW_MODE_CFG_DBS_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_AGILE_DFS_MASK (0x1 << WMI_DBS_FW_MODE_CFG_AGILE_DFS_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_DFS_MASK (0x1 << WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_MASK (0x1 << WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_MASK (0x1 << WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_BITPOS) |
| |
| #define WMI_DBS_FW_MODE_CFG_DBS_SET(fw_mode, value) \ |
| WMI_SET_BITS(fw_mode, WMI_DBS_FW_MODE_CFG_DBS_BITPOS, 1, value) |
| #define WMI_DBS_FW_MODE_CFG_AGILE_DFS_SET(fw_mode, value) \ |
| WMI_SET_BITS(fw_mode, WMI_DBS_FW_MODE_CFG_AGILE_DFS_BITPOS, 1, value) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_SET(fw_mode, value) \ |
| WMI_SET_BITS(fw_mode, WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_BITPOS, 1, value) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_SET(fw_mode, value) \ |
| WMI_SET_BITS(fw_mode, WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_BITPOS, 1, value) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_SET(fw_mode, value) \ |
| WMI_SET_BITS(fw_mode, WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_BITPOS, 1, value) |
| |
| #define WMI_DBS_FW_MODE_CFG_DBS_GET(fw_mode) \ |
| ((fw_mode & WMI_DBS_FW_MODE_CFG_DBS_MASK) >> WMI_DBS_FW_MODE_CFG_DBS_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_AGILE_DFS_GET(fw_mode) \ |
| ((fw_mode & WMI_DBS_FW_MODE_CFG_AGILE_DFS_MAS) >> WMI_DBS_FW_MODE_CFG_AGILE_DFS_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_GET(fw_mode) \ |
| ((fw_mode & WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_DFS_MASK) >> WMI_DBS_FW_MODE_CFG_DBS_FOR_CXN_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_GET(fw_mode) \ |
| ((fw_mode & WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_MASK) >> WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_STA_BITPOS) |
| #define WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_GET(fw_mode) \ |
| ((fw_mode & WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_MASK) >> WMI_DBS_FW_MODE_CFG_DBS_FOR_STA_PLUS_P2P_BITPOS) |
| |
| /** NOTE: This structure cannot be extended in the future without breaking WMI compatibility */ |
| typedef struct _wmi_abi_version { |
| A_UINT32 abi_version_0; /** WMI Major and Minor versions */ |
| A_UINT32 abi_version_1; /** WMI change revision */ |
| A_UINT32 abi_version_ns_0; /** ABI version namespace first four dwords */ |
| A_UINT32 abi_version_ns_1; /** ABI version namespace second four dwords */ |
| A_UINT32 abi_version_ns_2; /** ABI version namespace third four dwords */ |
| A_UINT32 abi_version_ns_3; /** ABI version namespace fourth four dwords */ |
| } wmi_abi_version; |
| |
| /* |
| * maximum number of memroy requests allowed from FW. |
| */ |
| #define WMI_MAX_MEM_REQS 16 |
| |
| /* !!NOTE!!: |
| * This HW_BD_INFO_SIZE cannot be changed without breaking compatibility. |
| * Please don't change it. |
| */ |
| #define HW_BD_INFO_SIZE 5 |
| |
| /** |
| * PDEV ID to identify the physical device, |
| * value 0 reserved for SOC level commands/event |
| */ |
| #define WMI_PDEV_ID_SOC 0 /* SOC level, applicable to all PDEVs */ |
| #define WMI_PDEV_ID_1ST 1 /* first pdev (pdev 0) */ |
| #define WMI_PDEV_ID_2ND 2 /* second pdev (pdev 1) */ |
| #define WMI_PDEV_ID_3RD 3 /* third pdev (pdev 2) */ |
| |
| /** |
| * The following struct holds optional payload for |
| * wmi_service_ready_event_fixed_param,e.g., 11ac pass some of the |
| * device capability to the host. |
| */ |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_SERVICE_READY_EVENT */ |
| A_UINT32 fw_build_vers; /* firmware build number */ |
| wmi_abi_version fw_abi_vers; |
| A_UINT32 phy_capability; /* WMI_PHY_CAPABILITY */ |
| A_UINT32 max_frag_entry; /* Maximum number of frag table entries that SW will populate less 1 */ |
| A_UINT32 num_rf_chains; |
| /* The following field is only valid for service type WMI_SERVICE_11AC */ |
| A_UINT32 ht_cap_info; /* WMI HT Capability */ |
| A_UINT32 vht_cap_info; /* VHT capability info field of 802.11ac */ |
| A_UINT32 vht_supp_mcs; /* VHT Supported MCS Set field Rx/Tx same */ |
| A_UINT32 hw_min_tx_power; |
| A_UINT32 hw_max_tx_power; |
| /* sys_cap_info: |
| * bits 1:0 - RXTX LED + RFKILL enable flags (see WMI_LEDRFKILL_FLAGS) |
| * bits 31:2 - reserved (must be set to zero) |
| */ |
| A_UINT32 sys_cap_info; |
| A_UINT32 min_pkt_size_enable; /* Enterprise mode short pkt enable */ |
| /** Max beacon and Probe Response IE offload size (includes |
| * optional P2P IEs) */ |
| A_UINT32 max_bcn_ie_size; |
| /* |
| * request to host to allocate a chuck of memory and pss it down to FW via WM_INIT. |
| * FW uses this as FW extesnsion memory for saving its data structures. Only valid |
| * for low latency interfaces like PCIE where FW can access this memory directly (or) |
| * by DMA. |
| */ |
| A_UINT32 num_mem_reqs; |
| /* Max No. scan channels target can support |
| * If FW is too old and doesn't indicate this number, host side value will default to |
| * 0, and host will take the original compatible value (62) for future scan channel |
| * setup. |
| */ |
| A_UINT32 max_num_scan_channels; |
| |
| /* Hardware board specific ID. Values defined in enum WMI_HWBOARD_ID. |
| * Default 0 means tha hw_bd_info[] is invalid(legacy board). |
| */ |
| A_UINT32 hw_bd_id; |
| A_UINT32 hw_bd_info[HW_BD_INFO_SIZE]; /* Board specific information. Invalid if hw_hd_id is zero. */ |
| |
| /* |
| * Number of MACs supported, i.e. a DBS-capable device will return 2 |
| */ |
| A_UINT32 max_supported_macs; |
| |
| /* |
| * FW sub-feature capabilities to be used in concurrence with wmi_service_bitmap |
| */ |
| A_UINT32 wmi_fw_sub_feat_caps; //values from enum WMI_FW_SUB_FEAT_CAPS |
| |
| /* |
| * Number of Dual Band Simultaneous (DBS) hardware modes |
| */ |
| A_UINT32 num_dbs_hw_modes; |
| |
| /* |
| * txrx_chainmask |
| * [7:0] - 2G band tx chain mask |
| * [15:8] - 2G band rx chain mask |
| * [23:16] - 5G band tx chain mask |
| * [31:24] - 5G band rx chain mask |
| * |
| */ |
| A_UINT32 txrx_chainmask; |
| |
| /* |
| * default Dual Band Simultaneous (DBS) hardware mode |
| */ |
| A_UINT32 default_dbs_hw_mode_index; |
| |
| /* |
| * Number of msdu descriptors target would use |
| */ |
| A_UINT32 num_msdu_desc; |
| |
| /* The TLVs for hal_reg_capabilities, wmi_service_bitmap and mem_reqs[] will follow this TLV. |
| * HAL_REG_CAPABILITIES hal_reg_capabilities; |
| * A_UINT32 wmi_service_bitmap[WMI_SERVICE_BM_SIZE]; |
| * wlan_host_mem_req mem_reqs[]; |
| * wlan_dbs_hw_mode_list[]; |
| */ |
| } wmi_service_ready_event_fixed_param; |
| |
| typedef enum { |
| WMI_RXTX_LED_ENABLE = 0x00000001, |
| WMI_RFKILL_ENABLE = 0x00000002, |
| } WMI_LEDRFKILL_FLAGS; |
| |
| #define WMI_SERVICE_SEGMENT_BM_SIZE32 4 /* 4x A_UINT32 = 128 bits */ |
| typedef struct { |
| /** |
| * TLV tag and len; tag equals |
| * WMITLV_TAG_STRUC_wmi_service_available_event_fixed_param |
| */ |
| A_UINT32 tlv_header; |
| /** |
| * The wmi_service_segment offset field specifies the position within |
| * the logical bitmap of WMI service flags at which the WMI service |
| * flags specified within this message begin. |
| * Since the first 128 WMI service flags are specified within the |
| * wmi_service_bitmap field of the WMI_SERVICE_READY_EVENT message, |
| * the wmi_service_segment_offset value is expected to be 128 or more. |
| */ |
| A_UINT32 wmi_service_segment_offset; |
| A_UINT32 wmi_service_segment_bitmap[WMI_SERVICE_SEGMENT_BM_SIZE32]; |
| } wmi_service_available_event_fixed_param; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_SERVICE_EXT_READY_EVENT */ |
| /* which WMI_DBS_CONC_SCAN_CFG setting the FW is initialized with */ |
| A_UINT32 default_conc_scan_config_bits; |
| /* which WMI_DBS_FW_MODE_CFG setting the FW is initialized with */ |
| A_UINT32 default_fw_config_bits; |
| wmi_ppe_threshold ppet; |
| /* |
| * see section 8.4.2.213 from draft r8 of 802.11ax; |
| * see WMI_HE_FRAG_SUPPORT enum |
| */ |
| A_UINT32 he_cap_info; |
| /* |
| * An HT STA shall not allow transmission of more than one MPDU start |
| * within the time limit described in the MPDU maximum density field. |
| */ |
| A_UINT32 mpdu_density; /* units are microseconds */ |
| /* |
| * Maximum no of BSSID based RX filters host can program |
| * Value 0 means FW hasn't given any limit to host. |
| */ |
| A_UINT32 max_bssid_rx_filters; |
| /* |
| * Extended FW build version information: |
| * bits 27:0 -> reserved |
| * bits 31:28 -> CRM sub ID |
| */ |
| A_UINT32 fw_build_vers_ext; |
| } wmi_service_ready_ext_event_fixed_param; |
| |
| typedef enum { |
| WMI_FW_STA_RTT_INITR = 0x00000001, |
| WMI_FW_STA_RTT_RESPR = 0x00000002, |
| WMI_FW_P2P_CLI_RTT_INITR = 0x00000004, |
| WMI_FW_P2P_CLI_RTT_RESPR = 0x00000008, |
| WMI_FW_P2P_GO_RTT_INITR = 0x00000010, |
| WMI_FW_P2P_GO_RTT_RESPR = 0x00000020, |
| WMI_FW_AP_RTT_INITR = 0x00000040, |
| WMI_FW_AP_RTT_RESPR = 0x00000080, |
| WMI_FW_NAN_RTT_INITR = 0x00000100, |
| WMI_FW_NAN_RTT_RESPR = 0x00000200, |
| WMI_FW_SCAN_DBS_POLICY = 0x00000400, |
| /* |
| * New fw sub feature capabilites before |
| * WMI_FW_MAX_SUB_FEAT_CAP |
| */ |
| WMI_FW_MAX_SUB_FEAT_CAP = 0x80000000, |
| } WMI_FW_SUB_FEAT_CAPS; |
| |
| typedef enum { |
| WMI_HWBD_NONE = 0, /* No hw board information is given */ |
| WMI_HWBD_QCA6174 = 1, /* Rome(AR6320) */ |
| WMI_HWBD_QCA2582 = 2, /* Killer 1525*/ |
| } WMI_HWBD_ID; |
| |
| #define ATH_BD_DATA_REV_MASK 0x000000FF |
| #define ATH_BD_DATA_REV_SHIFT 0 |
| |
| #define ATH_BD_DATA_PROJ_ID_MASK 0x0000FF00 |
| #define ATH_BD_DATA_PROJ_ID_SHIFT 8 |
| |
| #define ATH_BD_DATA_CUST_ID_MASK 0x00FF0000 |
| #define ATH_BD_DATA_CUST_ID_SHIFT 16 |
| |
| #define ATH_BD_DATA_REF_DESIGN_ID_MASK 0xFF000000 |
| #define ATH_BD_DATA_REF_DESIGN_ID_SHIFT 24 |
| |
| #define SET_BD_DATA_REV(bd_data_ver, value) \ |
| ((bd_data_ver) &= ~ATH_BD_DATA_REV_MASK, (bd_data_ver) |= ((value) << ATH_BD_DATA_REV_SHIFT)) |
| |
| #define GET_BD_DATA_REV(bd_data_ver) \ |
| (((bd_data_ver) & ATH_BD_DATA_REV_MASK) >> ATH_BD_DATA_REV_SHIFT) |
| |
| #define SET_BD_DATA_PROJ_ID(bd_data_ver, value) \ |
| ((bd_data_ver) &= ~ATH_BD_DATA_PROJ_ID_MASK, (bd_data_ver) |= ((value) << ATH_BD_DATA_PROJ_ID_SHIFT)) |
| |
| #define GET_BD_DATA_PROJ_ID(bd_data_ver) \ |
| (((bd_data_ver) & ATH_BD_DATA_PROJ_ID_MASK) >> ATH_BD_DATA_PROJ_ID_SHIFT) |
| |
| #define SET_BD_DATA_CUST_ID(bd_data_ver, value) \ |
| ((bd_data_ver) &= ~ATH_BD_DATA_CUST_ID_MASK, (bd_data_ver) |= ((value) << ATH_BD_DATA_CUST_ID_SHIFT)) |
| |
| #define GET_BD_DATA_CUST_ID(bd_data_ver) \ |
| (((bd_data_ver) & ATH_BD_DATA_CUST_ID_MASK) >> ATH_BD_DATA_CUST_ID_SHIFT) |
| |
| #define SET_BD_DATA_REF_DESIGN_ID(bd_data_ver, value) \ |
| ((bd_data_ver) &= ~ATH_BD_DATA_REF_DESIGN_ID_MASK, (bd_data_ver) |= ((value) << ATH_BD_DATA_REF_DESIGN_ID_SHIFT)) |
| |
| #define GET_BD_DATA_REF_DESIGN_ID(bd_data_ver) \ |
| (((bd_data_ver) & ATH_BD_DATA_REF_DESIGN_ID_MASK) >> ATH_BD_DATA_REF_DESIGN_ID_SHIFT) |
| |
| #ifdef ROME_LTE_COEX_FREQ_AVOID |
| typedef struct { |
| A_UINT32 start_freq; //start frequency, not channel center freq |
| A_UINT32 end_freq;//end frequency |
| }avoid_freq_range_desc; |
| |
| typedef struct { |
| //bad channel range count, multi range is allowed, 0 means all channel clear |
| A_UINT32 num_freq_ranges; |
| //multi range with num_freq_ranges, LTE advance multi carrier, CDMA,etc |
| avoid_freq_range_desc avd_freq_range[0]; |
| }wmi_wlan_avoid_freq_ranges_event; |
| #endif |
| |
| /** status consists of upper 16 bits fo A_STATUS status and lower 16 bits of module ID that retuned status */ |
| #define WLAN_INIT_STATUS_SUCCESS 0x0 |
| #define WLAN_INIT_STATUS_GEN_FAILED 0x1 |
| #define WLAN_GET_INIT_STATUS_REASON(status) ((status) & 0xffff) |
| #define WLAN_GET_INIT_STATUS_MODULE_ID(status) (((status) >> 16) & 0xffff) |
| |
| typedef A_UINT32 WLAN_INIT_STATUS; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ready_event_fixed_param */ |
| wmi_abi_version fw_abi_vers; |
| /* |
| * mac_addr is always filled; in addition, there can be a mac_addr_list |
| * TLV following this fixed_param TLV to specify additional MAC addresses, |
| * for cases where the target specifies one MAC address per pdev |
| * (so the host can treat the pdevs within the target as separately |
| * as possible) rather than one MAC address for the whole SOC. |
| */ |
| wmi_mac_addr mac_addr; |
| A_UINT32 status; |
| A_UINT32 num_dscp_table; |
| /* num_extra_mac_addr - |
| * how many additional MAC addresses besides the above mac_addr |
| * are provided in the subsequent mac_addr_list TLV |
| */ |
| A_UINT32 num_extra_mac_addr; |
| /* |
| * Total number of "real" peers (remote peers of an AP vdev, |
| * BSS peer of a STA vdev, TDLS peer of a STA vdev) that FW supports. |
| * If 0, then Host can use param_tlv->resource_config->num_peers as |
| * total number of peers. |
| */ |
| A_UINT32 num_total_peers; |
| /* |
| * Number of extra peers that Firmware adds. |
| * These are self peers and/or other FW only peers that don't represent |
| * a 802.11 transceiver, but instead are used for convenience, e.g. to |
| * provide a pseudo-peer object for an AP vdev's bcast/mcast tx queues, |
| * to allow each tx queue to belong to a peer object. |
| * Peer ID can be up to num_total_peers + num_extra_peers. |
| */ |
| A_UINT32 num_extra_peers; |
| /* |
| * This fixed_param TLV is followed by these additional TLVs: |
| * mac_addr_list[num_extra_mac_addr]; |
| */ |
| } wmi_ready_event_fixed_param; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_resource_config */ |
| /** |
| * @brief num_vdev - number of virtual devices (VAPs) to support |
| */ |
| A_UINT32 num_vdevs; |
| /** |
| * @brief num_peers - number of peer nodes to support |
| */ |
| A_UINT32 num_peers; |
| /* |
| * @brief In offload mode target supports features like WOW, chatter and other |
| * protocol offloads. In order to support them some functionalities like |
| * reorder buffering, PN checking need to be done in target. This determines |
| * maximum number of peers suported by target in offload mode |
| */ |
| A_UINT32 num_offload_peers; |
| /* @brief Number of reorder buffers available for doing target based reorder |
| * Rx reorder buffering |
| */ |
| A_UINT32 num_offload_reorder_buffs; |
| /** |
| * @brief num_peer_keys - number of keys per peer |
| */ |
| A_UINT32 num_peer_keys; |
| /** |
| * @brief num_peer_tids - number of TIDs to provide storage for per peer. |
| */ |
| A_UINT32 num_tids; |
| /** |
| * @brief ast_skid_limit - max skid for resolving hash collisions |
| * @details |
| * The address search table is sparse, so that if two MAC addresses |
| * result in the same hash value, the second of these conflicting |
| * entries can slide to the next index in the address search table, |
| * and use it, if it is unoccupied. This ast_skid_limit parameter |
| * specifies the upper bound on how many subsequent indices to search |
| * over to find an unoccupied space. |
| */ |
| A_UINT32 ast_skid_limit; |
| /** |
| * @brief tx_chain_mask - the nominal chain mask for transmit |
| * @details |
| * The chain mask may be modified dynamically, e.g. to operate AP tx with |
| * a reduced number of chains if no clients are associated. |
| * This configuration parameter specifies the nominal chain-mask that |
| * should be used when not operating with a reduced set of tx chains. |
| */ |
| A_UINT32 tx_chain_mask; |
| /** |
| * @brief rx_chain_mask - the nominal chain mask for receive |
| * @details |
| * The chain mask may be modified dynamically, e.g. for a client to use |
| * a reduced number of chains for receive if the traffic to the client |
| * is low enough that it doesn't require downlink MIMO or antenna |
| * diversity. |
| * This configuration parameter specifies the nominal chain-mask that |
| * should be used when not operating with a reduced set of rx chains. |
| */ |
| A_UINT32 rx_chain_mask; |
| /** |
| * @brief rx_timeout_pri - what rx reorder timeout (ms) to use for the AC |
| * @details |
| * Each WMM access class (voice, video, best-effort, background) will |
| * have its own timeout value to dictate how long to wait for missing |
| * rx MPDUs to arrive before flushing subsequent MPDUs that have already |
| * been received. |
| * This parameter specifies the timeout in milliseconds for each class . |
| * NOTE: the number of class (defined as 4) cannot be |
| * changed in the future without breaking WMI compatibility. |
| */ |
| A_UINT32 rx_timeout_pri[4]; |
| /** |
| * @brief rx_decap mode - what mode the rx should decap packets to |
| * @details |
| * MAC can decap to RAW (no decap), native wifi or Ethernet types |
| * THis setting also determines the default TX behavior, however TX |
| * behavior can be modified on a per VAP basis during VAP init |
| */ |
| A_UINT32 rx_decap_mode; |
| /** |
| * @brief scan_max_pending_req - what is the maximum scan requests than can be queued |
| */ |
| A_UINT32 scan_max_pending_req; |
| |
| /** |
| * @brief maximum VDEV that could use BMISS offload |
| */ |
| A_UINT32 bmiss_offload_max_vdev; |
| |
| /** |
| * @brief maximum VDEV that could use offload roaming |
| */ |
| A_UINT32 roam_offload_max_vdev; |
| |
| /** |
| * @brief maximum AP profiles that would push to offload roaming |
| */ |
| A_UINT32 roam_offload_max_ap_profiles; |
| |
| /** |
| * @brief num_mcast_groups - how many groups to use for mcast->ucast conversion |
| * @details |
| * The target's WAL maintains a table to hold information regarding which |
| * peers belong to a given multicast group, so that if multicast->unicast |
| * conversion is enabled, the target can convert multicast tx frames to a |
| * series of unicast tx frames, to each peer within the multicast group. |
| * This num_mcast_groups configuration parameter tells the target how |
| * many multicast groups to provide storage for within its multicast |
| * group membership table. |
| */ |
| A_UINT32 num_mcast_groups; |
| |
| /** |
| * @brief num_mcast_table_elems - size to alloc for the mcast membership table |
| * @details |
| * This num_mcast_table_elems configuration parameter tells the target |
| * how many peer elements it needs to provide storage for in its |
| * multicast group membership table. |
| * These multicast group membership table elements are shared by the |
| * multicast groups stored within the table. |
| */ |
| A_UINT32 num_mcast_table_elems; |
| |
| /** |
| * @brief mcast2ucast_mode - whether/how to do multicast->unicast conversion |
| * @details |
| * This configuration parameter specifies whether the target should |
| * perform multicast --> unicast conversion on transmit, and if so, |
| * what to do if it finds no entries in its multicast group membership |
| * table for the multicast IP address in the tx frame. |
| * Configuration value: |
| * 0 -> Do not perform multicast to unicast conversion. |
| * 1 -> Convert multicast frames to unicast, if the IP multicast address |
| * from the tx frame is found in the multicast group membership |
| * table. If the IP multicast address is not found, drop the frame. |
| * 2 -> Convert multicast frames to unicast, if the IP multicast address |
| * from the tx frame is found in the multicast group membership |
| * table. If the IP multicast address is not found, transmit the |
| * frame as multicast. |
| */ |
| A_UINT32 mcast2ucast_mode; |
| |
| |
| /** |
| * @brief tx_dbg_log_size - how much memory to allocate for a tx PPDU dbg log |
| * @details |
| * This parameter controls how much memory the target will allocate to |
| * store a log of tx PPDU meta-information (how large the PPDU was, |
| * when it was sent, whether it was successful, etc.) |
| */ |
| A_UINT32 tx_dbg_log_size; |
| |
| /** |
| * @brief num_wds_entries - how many AST entries to be allocated for WDS |
| */ |
| A_UINT32 num_wds_entries; |
| |
| /** |
| * @brief dma_burst_size - MAC DMA burst size, e.g., on Peregrine on PCI |
| * this limit can be 0 -default, 1 256B |
| */ |
| A_UINT32 dma_burst_size; |
| |
| /** |
| * @brief mac_aggr_delim - Fixed delimiters to be inserted after every MPDU |
| * to account for interface latency to avoid underrun. |
| */ |
| A_UINT32 mac_aggr_delim; |
| /** |
| * @brief rx_skip_defrag_timeout_dup_detection_check |
| * @details |
| * determine whether target is responsible for detecting duplicate |
| * non-aggregate MPDU and timing out stale fragments. |
| * |
| * A-MPDU reordering is always performed on the target. |
| * |
| * 0: target responsible for frag timeout and dup checking |
| * 1: host responsible for frag timeout and dup checking |
| */ |
| A_UINT32 rx_skip_defrag_timeout_dup_detection_check; |
| |
| /** |
| * @brief vow_config - Configuration for VoW : No of Video Nodes to be supported |
| * and Max no of descriptors for each Video link (node). |
| */ |
| A_UINT32 vow_config; |
| |
| /** |
| * @brief maximum VDEV that could use GTK offload |
| */ |
| A_UINT32 gtk_offload_max_vdev; |
| |
| /** |
| * @brief num_msdu_desc - Number of msdu descriptors target should use |
| */ |
| A_UINT32 num_msdu_desc; /* Number of msdu desc */ |
| /** |
| * @brief max_frag_entry - Max. number of Tx fragments per MSDU |
| * @details |
| * This parameter controls the max number of Tx fragments per MSDU. |
| * This is sent by the target as part of the WMI_SERVICE_READY event |
| * and is overriden by the OS shim as required. |
| */ |
| A_UINT32 max_frag_entries; |
| |
| /** |
| * @brief num_tdls_vdevs - Max. number of vdevs that can support TDLS |
| * @brief num_msdu_desc - Number of vdev that can support beacon offload |
| */ |
| |
| A_UINT32 num_tdls_vdevs; /* number of vdevs allowed to do tdls */ |
| |
| /** |
| * @brief num_tdls_conn_table_entries - Number of peers tracked by tdls vdev |
| * @details |
| * Each TDLS enabled vdev can track outgoing transmits/rssi/rates to/of |
| * peers in a connection tracking table for possible TDLS link creation |
| * or deletion. This controls the number of tracked peers per vdev. |
| */ |
| A_UINT32 num_tdls_conn_table_entries; /* number of peers to track per TDLS vdev */ |
| A_UINT32 beacon_tx_offload_max_vdev; |
| A_UINT32 num_multicast_filter_entries; |
| A_UINT32 num_wow_filters; /*host can configure the number of wow filters*/ |
| |
| /** |
| * @brief num_keep_alive_pattern - Num of keep alive patterns configured |
| * from host. |
| */ |
| A_UINT32 num_keep_alive_pattern; |
| /** |
| * @brief keep_alive_pattern_size - keep alive pattern size. |
| */ |
| A_UINT32 keep_alive_pattern_size; |
| |
| /** |
| * @brief max_tdls_concurrent_sleep_sta - Number of tdls sleep sta supported |
| * @details |
| * Each TDLS STA can become a sleep STA independently. This parameter |
| * mentions how many such sleep STAs can be supported concurrently. |
| */ |
| A_UINT32 max_tdls_concurrent_sleep_sta; |
| |
| /** |
| * @brief max_tdls_concurrent_buffer_sta - Number of tdls buffer sta supported |
| * @details |
| * Each TDLS STA can become a buffer STA independently. This parameter |
| * mentions how many such buffer STAs can be supported concurrently. |
| */ |
| A_UINT32 max_tdls_concurrent_buffer_sta; |
| |
| /** |
| * @brief wmi_send_separate - host configures fw to send the wmi separately |
| */ |
| A_UINT32 wmi_send_separate; |
| |
| /** |
| * @brief num_ocb_vdevs - Number of vdevs used for OCB support |
| */ |
| A_UINT32 num_ocb_vdevs; |
| |
| /** |
| * @brief num_ocb_channels - The supported number of simultaneous OCB channels |
| */ |
| A_UINT32 num_ocb_channels; |
| |
| /** |
| * @brief num_ocb_schedules - The supported number of OCB schedule segments |
| */ |
| A_UINT32 num_ocb_schedules; |
| |
| /** |
| * @brief specific configuration from host, such as per platform configuration |
| */ |
| #define WMI_RSRC_CFG_FLAG_WOW_IGN_PCIE_RST_S 0 |
| #define WMI_RSRC_CFG_FLAG_WOW_IGN_PCIE_RST_M 0x1 |
| |
| #define WMI_RSRC_CFG_FLAG_LTEU_SUPPORT_S 1 |
| #define WMI_RSRC_CFG_FLAG_LTEU_SUPPORT_M 0x2 |
| |
| #define WMI_RSRC_CFG_FLAG_COEX_GPIO_SUPPORT_S 2 |
| #define WMI_RSRC_CFG_FLAG_COEX_GPIO_SUPPORT_M 0x4 |
| |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_SPECTRAL_INTF_S 3 |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_SPECTRAL_INTF_M 0x8 |
| |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_CHAN_LOAD_INTF_S 4 |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_CHAN_LOAD_INTF_M 0x10 |
| |
| #define WMI_RSRC_CFG_FLAG_BSS_CHANNEL_INFO_64_S 5 |
| #define WMI_RSRC_CFG_FLAG_BSS_CHANNEL_INFO_64_M 0x20 |
| |
| #define WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_S 6 |
| #define WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_M 0x40 |
| |
| #define WMI_RSRC_CFG_FLAG_IPHR_PAD_CONFIG_ENABLE_S 7 |
| #define WMI_RSRC_CFG_FLAG_IPHR_PAD_CONFIG_ENABLE_M 0x80 |
| |
| #define WMI_RSRC_CFG_FLAG_QWRAP_MODE_ENABLE_S 8 |
| #define WMI_RSRC_CFG_FLAG_QWRAP_MODE_ENABLE_M 0x100 |
| |
| #define WMI_RSRC_CFG_FLAG_MGMT_COMP_EVT_BUNDLE_SUPPORT_S 9 |
| #define WMI_RSRC_CFG_FLAG_MGMT_COMP_EVT_BUNDLE_SUPPORT_M 0x200 |
| |
| #define WMI_RSRC_CFG_FLAG_TX_MSDU_ID_NEW_PARTITION_SUPPORT_S 10 |
| #define WMI_RSRC_CFG_FLAG_TX_MSDU_ID_NEW_PARTITION_SUPPORT_M 0x400 |
| |
| #define WMI_RSRC_CFG_FLAG_TX_PPDU_STATS_ENABLE_S 11 |
| #define WMI_RSRC_CFG_FLAG_TX_PPDU_STATS_ENABLE_M 0x800 |
| |
| #define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_S 12 |
| #define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_M 0x1000 |
| |
| A_UINT32 flag1; |
| |
| /** @brief smart_ant_cap - Smart Antenna capabilities information |
| * @details |
| * 1 - Smart antenna is enabled. |
| * 0 - Smart antenna is disabled. |
| * In future this can contain smart antenna specifc capabilities. |
| */ |
| A_UINT32 smart_ant_cap; |
| |
| /** |
| * User can configure the buffers allocated for each AC (BE, BK, VI, VO) |
| * during init |
| */ |
| A_UINT32 BK_Minfree; |
| A_UINT32 BE_Minfree; |
| A_UINT32 VI_Minfree; |
| A_UINT32 VO_Minfree; |
| |
| /** |
| * @brief alloc_frag_desc_for_data_pkt . Controls data packet fragment |
| * descriptor memory allocation. |
| * 1 - Allocate fragment descriptor memory for data packet in firmware. |
| * If host wants to transmit data packet at its desired rate, |
| * this field must be set. |
| * 0 - Don't allocate fragment descriptor for data packet. |
| */ |
| A_UINT32 alloc_frag_desc_for_data_pkt; |
| |
| /** how much space to allocate for NDP NS (neighbor solicitation) specs */ |
| A_UINT32 num_ns_ext_tuples_cfg; |
| /** |
| * size (in bytes) of the buffer the FW shall allocate to store |
| * packet filtering instructions |
| */ |
| A_UINT32 bpf_instruction_size; |
| |
| /** |
| * Maximum no of BSSID based RX filters host would program |
| * Value 0 means host doesn't given any limit to FW. |
| */ |
| A_UINT32 max_bssid_rx_filters; |
| /** |
| * Use PDEV ID instead of MAC ID, added for backward compatibility with older host |
| * which is using MAC ID. 1 means PDEV ID, 0 means MAC ID. |
| */ |
| A_UINT32 use_pdev_id; |
| |
| /** Maximum number of scan clients whose DBS scan duty cycle can be configured */ |
| A_UINT32 max_num_dbs_scan_duty_cycle; |
| |
| /** Maximum number of Multi group key to support */ |
| A_UINT32 max_num_group_keys; |
| |
| /** |
| * HTT peer map/unmap V2 format support |
| * 0 -> host doesn't support HTT peer map/unmap v2 format. |
| * 1 -> host supports HTT peer map/unmap v2 format; the target is |
| * allowed but not required to use peer map/unmap v2 format. |
| */ |
| A_UINT32 peer_map_unmap_v2_support; |
| |
| /** Sched config params for all pdevs |
| * These tx scheduling configuration parameters are currently only |
| * used for internal testing purposes; therefore the non-default |
| * values for this field are not currently documented. |
| * For regular use, this field should be set to 0x0. |
| */ |
| A_UINT32 sched_params; |
| } wmi_resource_config; |
| |
| #define WMI_RSRC_CFG_FLAG_SET(word32, flag, value) \ |
| do { \ |
| (word32) &= ~WMI_RSRC_CFG_FLAG_ ## flag ## _M; \ |
| (word32) |= ((value) << WMI_RSRC_CFG_FLAG_ ## flag ## _S) & \ |
| WMI_RSRC_CFG_FLAG_ ## flag ## _M; \ |
| } while (0) |
| #define WMI_RSRC_CFG_FLAG_GET(word32, flag) \ |
| (((word32) & WMI_RSRC_CFG_FLAG_ ## flag ## _M) >> \ |
| WMI_RSRC_CFG_FLAG_ ## flag ## _S) |
| |
| #define WMI_RSRC_CFG_FLAG_WOW_IGN_PCIE_RST_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), WOW_IGN_PCIE_RST, (value)) |
| #define WMI_RSRC_CFG_FLAG_WOW_IGN_PCIE_RST_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), WOW_IGN_PCIE_RST) |
| |
| #define WMI_RSRC_CFG_FLAG_LTEU_SUPPORT_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), LTEU_SUPPORT, (value)) |
| #define WMI_RSRC_CFG_FLAG_LTEU_SUPPORT_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), LTEU_SUPPORT) |
| |
| #define WMI_RSRC_CFG_FLAG_COEX_GPIO_SUPPORT_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), COEX_GPIO_SUPPORT, (value)) |
| #define WMI_RSRC_CFG_FLAG_COEX_GPIO_SUPPORT_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), COEX_GPIO_SUPPORT) |
| |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_SPECTRAL_INTF_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), AUX_RADIO_SPECTRAL_INTF, (value)) |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_SPECTRAL_INTF_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), AUX_RADIO_SPECTRAL_INTF) |
| |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_CHAN_LOAD_INTF_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), AUX_RADIO_CHAN_LOAD_INTF, (value)) |
| #define WMI_RSRC_CFG_FLAG_AUX_RADIO_CHAN_LOAD_INTF_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), AUX_RADIO_CHAN_LOAD_INTF) |
| |
| #define WMI_RSRC_CFG_FLAG_BSS_CHANNEL_INFO_64_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), BSS_CHANNEL_INFO_64, (value)) |
| #define WMI_RSRC_CFG_FLAG_BSS_CHANNEL_INFO_64_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), BSS_CHANNEL_INFO_64) |
| |
| #define WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), ATF_CONFIG_ENABLE, (value)) |
| #define WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), ATF_CONFIG_ENABLE) |
| |
| #define WMI_RSRC_CFG_FLAG_IPHR_PAD_CONFIG_ENABLE_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), IPHR_PAD_CONFIG_ENABLE, (value)) |
| #define WMI_RSRC_CFG_FLAG_IPHR_PAD_CONFIG_ENABLE_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), IPHR_PAD_CONFIG_ENABLE) |
| |
| #define WMI_RSRC_CFG_FLAG_QWRAP_MODE_ENABLE_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), QWRAP_MODE_ENABLE, (value)) |
| #define WMI_RSRC_CFG_FLAG_QWRAP_MODE_ENABLE_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), QWRAP_MODE_ENABLE) |
| |
| #define WMI_RSRC_CFG_FLAG_MGMT_COMP_EVT_BUNDLE_SUPPORT_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), MGMT_COMP_EVT_BUNDLE_SUPPORT, (value)) |
| #define WMI_RSRC_CFG_FLAG_MGMT_COMP_EVT_BUNDLE_SUPPORT_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), MGMT_COMP_EVT_BUNDLE_SUPPORT) |
| |
| #define WMI_RSRC_CFG_FLAG_TX_MSDU_ID_NEW_PARTITION_SUPPORT_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), TX_MSDU_ID_NEW_PARTITION_SUPPORT, (value)) |
| #define WMI_RSRC_CFG_FLAG_TX_MSDU_ID_NEW_PARTITION_SUPPORT_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), TX_MSDU_ID_NEW_PARTITION_SUPPORT) |
| |
| #define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_SET(word32, value) \ |
| WMI_RSRC_CFG_FLAG_SET((word32), TCL_CCE_DISABLE, (value)) |
| #define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_GET(word32) \ |
| WMI_RSRC_CFG_FLAG_GET((word32), TCL_CCE_DISABLE) |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */ |
| |
| /** The following indicate the WMI versions to be supported by |
| * the host driver. Note that the host driver decide to |
| * "downgrade" its WMI version support and this may not be the |
| * native version of the host driver. */ |
| wmi_abi_version host_abi_vers; |
| |
| A_UINT32 num_host_mem_chunks; /** size of array host_mem_chunks[] */ |
| |
| /* The TLVs for resource_config, host_mem_chunks[], and hw_mode_config |
| * will follow. |
| * wmi_resource_config resource_config; |
| * wlan_host_memory_chunk host_mem_chunks[]; |
| * wmi_pdev_set_hw_mode_cmd_fixed_param hw_mode_config; |
| * Note that the hw_mode_config, in spite of its "pdev" name, |
| * applies to the entire target rather than for a single pdev |
| * within the target. |
| * To avoid specifying a HW mode for the target, the host should |
| * fill hw_mode_config's fields with 0x0. |
| */ |
| |
| } wmi_init_cmd_fixed_param; |
| |
| /** |
| * TLV for channel list |
| */ |
| typedef struct { |
| /** WMI_CHAN_LIST_TAG */ |
| A_UINT32 tag; |
| /** # of channels to scan */ |
| A_UINT32 num_chan; |
| /** channels in Mhz */ |
| A_UINT32 channel_list[1]; |
| } wmi_chan_list; |
| |
| /** |
| * TLV for bssid list |
| */ |
| typedef struct { |
| /** WMI_BSSID_LIST_TAG */ |
| A_UINT32 tag; |
| /** number of bssids */ |
| A_UINT32 num_bssid; |
| /** bssid list */ |
| wmi_mac_addr bssid_list[1]; |
| } wmi_bssid_list; |
| |
| /** |
| * TLV for ie data. |
| */ |
| typedef struct { |
| /** WMI_IE_TAG */ |
| A_UINT32 tag; |
| /** number of bytes in ie data */ |
| A_UINT32 ie_len; |
| /** ie data array (ie_len adjusted to number of words (ie_len + 4)/4 ) */ |
| A_UINT32 ie_data[1]; |
| } wmi_ie_data; |
| |
| /** |
| * TLV used for length/buffer |
| */ |
| typedef struct { |
| /** |
| * TLV tag and len; tag equals |
| * WMITLV_TAG_STRUC_wmi_tlv_buf_len_param |
| */ |
| A_UINT32 tlv_header; |
| A_UINT32 buf_len; /** Length of buf */ |
| /** |
| * Following this structure is the TLV byte stream of buf |
| * of length buf_len: |
| * A_UINT8 buf[]; |
| * |
| */ |
| } wmi_tlv_buf_len_param; |
| |
| typedef struct { |
| /** Len of the SSID */ |
| A_UINT32 ssid_len; |
| /** SSID */ |
| A_UINT32 ssid[8]; |
| } wmi_ssid; |
| |
| typedef struct { |
| /** WMI_SSID_LIST_TAG */ |
| A_UINT32 tag; |
| A_UINT32 num_ssids; |
| wmi_ssid ssids[1]; |
| } wmi_ssid_list; |
| |
| typedef struct { |
| /** WMI_SCAN_START_OFFSET_TAG */ |
| A_UINT32 tag; |
| /** Number of start TSF offsets */ |
| A_UINT32 num_offset; |
| /** Array of start TSF offsets provided in milliseconds */ |
| A_UINT32 start_tsf_offset[1]; |
| } wmi_scan_start_offset; |
| |
| /** |
| * WLAN_SCAN_CHAN_MODE Macros defined for A_UINT8 phymode_list[] |
| */ |
| /** enum WLAN_PHY_MODE _mode starts from 0, but the WMI message requires |
| * 0 to be used to represent unspecified / don't care / default values. |
| * Therefore, WMI phy mode = WLAN phy mode + 1. |
| */ |
| /** If the received WMI phy mode is 0 then it is ignored by the FW, |
| * and the FW will use any mode as long as the frequency matches. |
| */ |
| /** The number of phy_mode's (BW+mode) passed in the TLV phymode_list[] must |
| * be equal to num_chan. (Unless the host does not specify phymode_list values |
| * at all, in which case the number of phymode_list elements will be zero.) |
| * The indexing of the phymode_list[] array corresponds to same index of |
| * the chan_list[] array. |
| */ |
| #define WMI_SCAN_CHAN_SET_MODE(_c) ((_c) + 1) |
| #define WMI_SCAN_CHAN_GET_MODE(_c) ((_c) - 1) |
| #define WMI_SCAN_CHAN_MODE_IS_SET(_c) (_c) |
| |
| /* prefix used by scan requestor ids on the host */ |
| #define WMI_HOST_SCAN_REQUESTOR_ID_PREFIX 0xA000 |
| /* 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 0xA000 |
| |
| #define WLAN_SCAN_PARAMS_MAX_SSID 16 |
| #define WLAN_SCAN_PARAMS_MAX_BSSID 4 |
| #define WLAN_SCAN_PARAMS_MAX_IE_LEN 512 |
| |
| /* NOTE: This constant cannot be changed without breaking WMI compatibility */ |
| #define WMI_IE_BITMAP_SIZE 8 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_start_scan_cmd_fixed_param */ |
| /** Scan ID (lower 16 bits) MSB 4 bits is used to identify scan client based on enum WMI_SCAN_CLIENT_ID */ |
| A_UINT32 scan_id; |
| /** Scan requestor ID (lower 16 bits) is used by scan client to classify the scan source, reason, ...etc */ |
| A_UINT32 scan_req_id; |
| /** VDEV id(interface) that is requesting scan */ |
| A_UINT32 vdev_id; |
| /** Scan Priority, input to scan scheduler */ |
| A_UINT32 scan_priority; |
| /** Scan events subscription */ |
| A_UINT32 notify_scan_events; |
| /** dwell time in msec on active channels */ |
| A_UINT32 dwell_time_active; |
| /** dwell time in msec on passive channels */ |
| A_UINT32 dwell_time_passive; |
| /** min time in msec on the BSS channel,only valid if atleast one VDEV is active*/ |
| A_UINT32 min_rest_time; |
| /** max rest time in msec on the BSS channel,only valid if at least one VDEV is active*/ |
| /** the scanner will rest on the bss channel at least min_rest_time. after min_rest_time the scanner |
| * will start checking for tx/rx activity on all VDEVs. if there is no activity the scanner will |
| * switch to off channel. if there is activity the scanner will let the radio on the bss channel |
| * until max_rest_time expires.at max_rest_time scanner will switch to off channel |
| * irrespective of activity. activity is determined by the idle_time parameter. |
| */ |
| A_UINT32 max_rest_time; |
| /** time before sending next set of probe requests. |
| * The scanner keeps repeating probe requests transmission with period specified by repeat_probe_time. |
| * The number of probe requests specified depends on the ssid_list and bssid_list |
| */ |
| A_UINT32 repeat_probe_time; |
| /** time in msec between 2 consequetive probe requests with in a set. */ |
| A_UINT32 probe_spacing_time; |
| /** data inactivity time in msec on bss channel that will be used by scanner for measuring the inactivity */ |
| A_UINT32 idle_time; |
| /** maximum time in msec allowed for scan */ |
| A_UINT32 max_scan_time; |
| /** delay in msec before sending first probe request after switching to a channel */ |
| A_UINT32 probe_delay; |
| /** Scan control flags */ |
| A_UINT32 scan_ctrl_flags; |
| /** Burst duration time in msec*/ |
| A_UINT32 burst_duration; |
| |
| /** # if channels to scan. In the TLV channel_list[] */ |
| A_UINT32 num_chan; |
| /** number of bssids. In the TLV bssid_list[] */ |
| A_UINT32 num_bssid; |
| /** number of ssid. In the TLV ssid_list[] */ |
| A_UINT32 num_ssids; |
| /** number of bytes in ie data. In the TLV ie_data[]. Max len is defined by WLAN_SCAN_PARAMS_MAX_IE_LEN */ |
| A_UINT32 ie_len; |
| /** Max number of probes to be sent */ |
| A_UINT32 n_probes; |
| /** MAC Address to use in Probe Req as SA **/ |
| wmi_mac_addr mac_addr; |
| /** Mask on which MAC has to be randomized **/ |
| wmi_mac_addr mac_mask; |
| /** ie bitmap to use in probe req **/ |
| A_UINT32 ie_bitmap[WMI_IE_BITMAP_SIZE]; |
| /** Number of vendor OUIs. In the TLV vendor_oui[] **/ |
| A_UINT32 num_vendor_oui; |
| /** Scan control flags extended **/ |
| A_UINT32 scan_ctrl_flags_ext; |
| |
| /** |
| * TLV (tag length value ) parameters follow the scan_cmd |
| * structure. The TLV's are: |
| * A_UINT32 channel_list[num_chan]; |
| * wmi_ssid ssid_list[num_ssids]; |
| * wmi_mac_addr bssid_list[num_bssid]; |
| * A_UINT8 ie_data[ie_len]; |
| * wmi_vendor_oui vendor_oui[num_vendor_oui]; |
| * A_UINT8 phymode_list[0 or num_chan]; // see WMI_SCAN_CHAN_MODE macros |
| */ |
| } wmi_start_scan_cmd_fixed_param; |
| |
| /** |
| * scan control flags. |
| */ |
| |
| /** passively scan all channels including active channels */ |
| #define WMI_SCAN_FLAG_PASSIVE 0x1 |
| /** add wild card ssid probe request even though ssid_list is specified. */ |
| #define WMI_SCAN_ADD_BCAST_PROBE_REQ 0x2 |
| /** add cck rates to rates/xrate ie for the generated probe request */ |
| #define WMI_SCAN_ADD_CCK_RATES 0x4 |
| /** add ofdm rates to rates/xrate ie for the generated probe request */ |
| #define WMI_SCAN_ADD_OFDM_RATES 0x8 |
| /** To enable indication of Chan load and Noise floor to host */ |
| #define WMI_SCAN_CHAN_STAT_EVENT 0x10 |
| /** Filter Probe request frames */ |
| #define WMI_SCAN_FILTER_PROBE_REQ 0x20 |
| /**When set, not to scan DFS channels*/ |
| #define WMI_SCAN_BYPASS_DFS_CHN 0x40 |
| /**When set, certain errors are ignored and scan continues. |
| * Different FW scan engine may use its own logic to decide what errors to ignore*/ |
| #define WMI_SCAN_CONTINUE_ON_ERROR 0x80 |
| /** Enable promiscous mode for ese */ |
| #define WMI_SCAN_FILTER_PROMISCOUS 0x100 |
| /** allow to send probe req on DFS channel */ |
| #define WMI_SCAN_FLAG_FORCE_ACTIVE_ON_DFS 0x200 |
| /** add TPC content in probe req frame */ |
| #define WMI_SCAN_ADD_TPC_IE_IN_PROBE_REQ 0x400 |
| /** add DS content in probe req frame */ |
| #define WMI_SCAN_ADD_DS_IE_IN_PROBE_REQ 0x800 |
| /** use random mac address for TA for probe request frame and add |
| * oui specified by WMI_SCAN_PROB_REQ_OUI_CMDID to the probe req frame. |
| * if oui is not set by WMI_SCAN_PROB_REQ_OUI_CMDID then the flag is ignored*/ |
| #define WMI_SCAN_ADD_SPOOFED_MAC_IN_PROBE_REQ 0x1000 |
| /** allow mgmt transmission during off channel scan */ |
| #define WMI_SCAN_OFFCHAN_MGMT_TX 0x2000 |
| /** allow data transmission during off channel scan */ |
| #define WMI_SCAN_OFFCHAN_DATA_TX 0x4000 |
| /** allow capture ppdu with phy errrors */ |
| #define WMI_SCAN_CAPTURE_PHY_ERROR 0x8000 |
| |
| /** always do passive scan on passive channels */ |
| #define WMI_SCAN_FLAG_STRICT_PASSIVE_ON_PCHN 0x10000 |
| /** set HALF (10MHz) rate support */ |
| #define WMI_SCAN_FLAG_HALF_RATE_SUPPORT 0x20000 |
| /** set Quarter (5MHz) rate support */ |
| #define WMI_SCAN_FLAG_QUARTER_RATE_SUPPORT 0x40000 |
| #define WMI_SCAN_RANDOM_SEQ_NO_IN_PROBE_REQ 0x80000 |
| #define WMI_SCAN_ENABLE_IE_WHTELIST_IN_PROBE_REQ 0x100000 |
| |
| /** for adaptive scan mode using 3 bits (21 - 23 bits) */ |
| #define WMI_SCAN_DWELL_MODE_MASK 0x00E00000 |
| #define WMI_SCAN_DWELL_MODE_SHIFT 21 |
| |
| typedef enum { |
| WMI_SCAN_DWELL_MODE_DEFAULT = 0, |
| WMI_SCAN_DWELL_MODE_CONSERVATIVE = 1, |
| WMI_SCAN_DWELL_MODE_MODERATE = 2, |
| WMI_SCAN_DWELL_MODE_AGGRESSIVE = 3, |
| WMI_SCAN_DWELL_MODE_STATIC = 4, |
| } WMI_SCAN_DWELL_MODE; |
| |
| #define WMI_SCAN_SET_DWELL_MODE(flag, mode) \ |
| do { \ |
| (flag) |= (((mode) << WMI_SCAN_DWELL_MODE_SHIFT) & \ |
| WMI_SCAN_DWELL_MODE_MASK); \ |
| } while(0) |
| |
| #define WMI_SCAN_GET_DWELL_MODE(flag) \ |
| (((flag) & WMI_SCAN_DWELL_MODE_MASK) >> WMI_SCAN_DWELL_MODE_SHIFT) |
| |
| /** WMI_SCAN_CLASS_MASK must be the same value as IEEE80211_SCAN_CLASS_MASK */ |
| #define WMI_SCAN_CLASS_MASK 0xFF000000 |
| |
| /* |
| * Masks identifying types/ID of scans |
| * Scan_Stop macros should be the same value as below defined in UMAC |
| * #define IEEE80211_SPECIFIC_SCAN 0x00000000 |
| * #define IEEE80211_VAP_SCAN 0x01000000 |
| * #define IEEE80211_ALL_SCANS 0x04000000 |
| */ |
| #define WMI_SCAN_STOP_ONE 0x00000000 |
| #define WMI_SCN_STOP_VAP_ALL 0x01000000 |
| #define WMI_SCAN_STOP_ALL 0x04000000 |
| |
| /** extended Scan ctrl flags **/ |
| #define WMI_SCAN_FLAG_EXT_DBS_SCAN_POLICY_MASK 0x00000003 /* Bit 0-1 reserved for DBS scan selection policy.*/ |
| |
| #define WMI_SCAN_DBS_POLICY_DEFAULT 0x0 /** Select duty cycle if configured, else fall back to whatever |
| policy scan manager computes */ |
| #define WMI_SCAN_DBS_POLICY_FORCE_NONDBS 0x1 /** Force to select Non-DBS scan */ |
| #define WMI_SCAN_DBS_POLICY_IGNORE_DUTY 0x2 /** Ignore duty cycle even if configured and fall back to whatever |
| policy scan manager computes*/ |
| #define WMI_SCAN_DBS_POLICY_RESERVED 0x3 |
| #define WMI_SCAN_DBS_POLICY_MAX 0x3 |
| |
| /** Enable Reception of Public Action frame with this flag |
| * (inside scan_ctrl_flags_ext field of wmi_start_scan_cmd_fixed_param) |
| */ |
| #define WMI_SCAN_FLAG_EXT_FILTER_PUBLIC_ACTION_FRAME 0x4 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stop_scan_cmd_fixed_param */ |
| /** requestor requesting cancel */ |
| A_UINT32 requestor; |
| /** Scan ID */ |
| A_UINT32 scan_id; |
| /** |
| * Req Type |
| * req_type should be WMI_SCAN_STOP_ONE, WMI_SCN_STOP_VAP_ALL or WMI_SCAN_STOP_ALL |
| * WMI_SCAN_STOP_ONE indicates to stop a specific scan with scan_id |
| * WMI_SCN_STOP_VAP_ALL indicates to stop all scan requests on a specific |
| * vDev with vdev_id and pdev with pdev_id |
| * WMI_SCAN_STOP_ALL indicates to stop all scan requests in both Scheduler's queue and Scan Engine |
| */ |
| A_UINT32 req_type; |
| /** |
| * vDev ID |
| * used when req_type equals to WMI_SCN_STOP_VAP_ALL, it indexed the vDev on which to stop the scan |
| */ |
| A_UINT32 vdev_id; |
| /** pdev_id for identifying the MAC |
| * See macros starting with WMI_PDEV_ID_ for values. |
| * In non-DBDC case host should set it to 0 |
| */ |
| A_UINT32 pdev_id; |
| } wmi_stop_scan_cmd_fixed_param; |
| |
| #define MAX_NUM_CHAN_PER_WMI_CMD 58 // each WMI cmd can hold 58 channel entries at most |
| #define APPEND_TO_EXISTING_CHAN_LIST 1 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_chan_list_cmd_fixed_param */ |
| A_UINT32 num_scan_chans; /** no of elements in chan_info[] */ |
| A_UINT32 flags; /* Flags used to control the behavior of channel list update on target side */ |
| A_UINT32 pdev_id; /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values */ |
| /** Followed by the variable length TLV chan_info: |
| * wmi_channel chan_info[] */ |
| } wmi_scan_chan_list_cmd_fixed_param; |
| |
| /* |
| * Priority numbers must be sequential, starting with 0. |
| */ |
| /* NOTE: WLAN SCAN_PRIORITY_COUNT can't be changed without breaking the compatibility */ |
| typedef enum { |
| WMI_SCAN_PRIORITY_VERY_LOW = 0, |
| WMI_SCAN_PRIORITY_LOW, |
| WMI_SCAN_PRIORITY_MEDIUM, |
| WMI_SCAN_PRIORITY_HIGH, |
| WMI_SCAN_PRIORITY_VERY_HIGH, |
| |
| WMI_SCAN_PRIORITY_COUNT /* number of priorities supported */ |
| } wmi_scan_priority; |
| |
| /* Five Levels for Requested Priority */ |
| /* VERY_LOW LOW MEDIUM HIGH VERY_HIGH */ |
| typedef A_UINT32 WLAN_PRIORITY_MAPPING[WMI_SCAN_PRIORITY_COUNT]; |
| |
| /** |
| * to keep align with UMAC implementation, we pass only vdev_type but not vdev_subtype when we overwrite an entry for a specific vdev_subtype |
| * ex. if we need overwrite P2P Client prority entry, we will overwrite the whole table for WLAN_M_STA |
| * we will generate the new WLAN_M_STA table with modified P2P Client Entry but keep STA entry intact |
| */ |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_sch_priority_table_cmd_fixed_param */ |
| /** |
| * used as an index to find the proper table for a specific vdev type in default_scan_priority_mapping_table |
| * vdev_type should be one of enum in WLAN_OPMODE which inculdes WLAN_M_IBSS, WLAN_M_STA, WLAN_M_AP and WLAN_M_MONITOR currently |
| */ |
| A_UINT32 vdev_type; |
| /** |
| * number of rows in mapping_table for a specific vdev |
| * for WLAN_M_STA type, there are 3 entries in the table (refer to default_scan_priority_mapping_table definition) |
| */ |
| A_UINT32 number_rows; |
| /** |
| * pdev_id for identifying the MAC. See macros starting with |
| * WMI_PDEV_ID_ for values.In non-DBDC case host should |
| * set it to 0. |
| */ |
| A_UINT32 pdev_id; |
| /** mapping_table for a specific vdev follows this TLV |
| * WLAN_PRIORITY_MAPPING mapping_table[]; */ |
| }wmi_scan_sch_priority_table_cmd_fixed_param; |
| |
| /** update flags */ |
| #define WMI_SCAN_UPDATE_SCAN_PRIORITY 0x1 |
| #define WMI_SCAN_UPDATE_SCAN_MIN_REST_TIME 0x2 |
| #define WMI_SCAN_UPDATE_SCAN_MAX_REST_TIME 0x4 |
| |
| typedef struct { |
| A_UINT32 tlv_header; |
| /** requestor requesting update scan request */ |
| A_UINT32 requestor; |
| /** Scan ID of the scan request that need to be update */ |
| A_UINT32 scan_id; |
| /** update flags, indicating which of the following fields are valid and need to be updated*/ |
| A_UINT32 scan_update_flags; |
| /** scan priority. Only valid if WMI_SCAN_UPDATE_SCAN_PRIORITY flag is set in scan_update_flag */ |
| A_UINT32 scan_priority; |
| /** min rest time. Only valid if WMI_SCAN_UPDATE_MIN_REST_TIME flag is set in scan_update_flag */ |
| A_UINT32 min_rest_time; |
| /** min rest time. Only valid if WMI_SCAN_UPDATE_MAX_REST_TIME flag is set in scan_update_flag */ |
| A_UINT32 max_rest_time; |
| /** |
| * pdev_id for identifying the MAC. See macros starting with |
| * WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 |
| */ |
| A_UINT32 pdev_id; |
| } wmi_scan_update_request_cmd_fixed_param; |
| |
| #define WMI_SCAN_PROBE_OUI_SPOOFED_MAC_IN_PROBE_REQ 0x1 |
| #define WMI_SCAN_PROBE_OUI_RANDOM_SEQ_NO_IN_PROBE_REQ 0x2 |
| #define WMI_SCAN_PROBE_OUI_ENABLE_IE_WHITELIST_IN_PROBE_REQ 0x4 |
| |
| typedef struct _wmi_vendor_oui { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vendor_oui */ |
| A_UINT32 oui_type_subtype; /** Vendor OUI type and subtype, lower 3 bytes is type and highest byte is subtype**/ |
| }wmi_vendor_oui; |
| |
| typedef struct { |
| A_UINT32 tlv_header; |
| /** oui to be used in probe request frame when random mac addresss is |
| * requested part of scan parameters. this is applied to both FW internal scans and |
| * host initated scans. host can request for random mac address with |
| * WMI_SCAN_ADD_SPOOFED_MAC_IN_PROBE_REQ flag. */ |
| A_UINT32 prob_req_oui; |
| A_UINT32 vdev_id; |
| /** Control Flags **/ |
| A_UINT32 flags; |
| /** ie bitmap to use in probe req **/ |
| A_UINT32 ie_bitmap[WMI_IE_BITMAP_SIZE]; |
| /** Number of vendor OUIs. In the TLV vendor_oui[] **/ |
| A_UINT32 num_vendor_oui; |
| /** |
| * pdev_id for identifying the MAC. See macros starting with |
| * WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 |
| */ |
| A_UINT32 pdev_id; |
| /* Following this tlv, there comes an array of structure of type wmi_vendor_ouiwmi_vendor_oui vendor_oui[];*/ |
| |
| } wmi_scan_prob_req_oui_cmd_fixed_param; |
| |
| enum wmi_scan_event_type { |
| WMI_SCAN_EVENT_STARTED=0x1, |
| WMI_SCAN_EVENT_COMPLETED=0x2, |
| WMI_SCAN_EVENT_BSS_CHANNEL=0x4, |
| WMI_SCAN_EVENT_FOREIGN_CHANNEL = 0x8, |
| WMI_SCAN_EVENT_DEQUEUED=0x10, /* scan request got dequeued */ |
| WMI_SCAN_EVENT_PREEMPTED=0x20, /* preempted by other high priority scan */ |
| WMI_SCAN_EVENT_START_FAILED=0x40, /* scan start failed */ |
| WMI_SCAN_EVENT_RESTARTED=0x80, /* Scan restarted */ |
| WMI_SCAN_EVENT_FOREIGN_CHANNEL_EXIT = 0x100, |
| WMI_SCAN_EVENT_SUSPENDED = 0x200, /* scan request is suspended */ |
| WMI_SCAN_EVENT_RESUMED = 0x400, /* scan request is resumed */ |
| WMI_SCAN_EVENT_MAX=0x8000 |
| }; |
| |
| enum wmi_scan_completion_reason { |
| /** scan related events */ |
| WMI_SCAN_REASON_NONE = 0xFF, |
| WMI_SCAN_REASON_COMPLETED = 0, |
| WMI_SCAN_REASON_CANCELLED = 1, |
| WMI_SCAN_REASON_PREEMPTED = 2, |
| WMI_SCAN_REASON_TIMEDOUT = 3, |
| WMI_SCAN_REASON_INTERNAL_FAILURE = 4, /* This reason indication failures when performaing scan */ |
| WMI_SCAN_REASON_SUSPENDED = 5, |
| WMI_SCAN_REASON_MAX, |
| }; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_event_fixed_param */ |
| /** scan event (wmi_scan_event_type) */ |
| A_UINT32 event; |
| /** status of the scan completion event */ |
| A_UINT32 reason; |
| /** channel freq , only valid for FOREIGN channel event*/ |
| A_UINT32 channel_freq; |
| /**id of the requestor whose scan is in progress */ |
| A_UINT32 requestor; |
| /**id of the scan that is in progress */ |
| A_UINT32 scan_id; |
| /**id of VDEV that requested the scan */ |
| A_UINT32 vdev_id; |
| /** TSF Timestamp when the scan event (wmi_scan_event_type) is completed |
| * In case of AP it is TSF of the AP vdev |
| * In case of STA connected state this is the TSF of the AP |
| * In case of STA not connected it will be the free running HW timer |
| */ |
| A_UINT32 tsf_timestamp; |
| } wmi_scan_event_fixed_param; |
| |
| /* WMI Diag event */ |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag is WMITLV_TAG_STRUC_wmi_diag_event_fixed_param */ |
| A_UINT32 time_stamp; /* Reference timestamp. diag frame contains diff value */ |
| A_UINT32 count; /* Number of diag frames added to current event */ |
| A_UINT32 dropped; |
| /* followed by WMITLV_TAG_ARRAY_BYTE */ |
| } wmi_diag_event_fixed_param; |
| |
| #define WMI_11K_OFFLOAD_BITMAP_NEIGHBOR_REPORT_REQ 0x1 |
| |
| typedef struct { |
| A_UINT32 time_offset; /* positive offset in secs from the time 11k offload command has been received, 0xFFFFFFFF if offset is not valid */ |
| A_UINT32 low_rssi_offset; /* positive offset in dB from current low rssi roaming trigger to send neighbor req, 0xFFFFFFFF if offset is not valid */ |
| A_UINT32 bmiss_count_trigger; /* value 1 is to send neighbor report at 1st BMISS, 0xFFFFFFFF if input is not valid */ |
| A_UINT32 per_threshold_offset; /* percentage offset from the current per_threshold, 0xFFFFFFFF if input is not valid */ |
| A_UINT32 neighbor_report_cache_timeout; /* cache timeout in secs after which neighbor cache is not valid in FW, 0xFFFFFFFF if input is not valid */ |
| A_UINT32 max_neighbor_report_req_cap; /* 0xFFFFFFFF if input is not valid, else positive number per every roam, these are the maximum number of |
| * neighbor report requests that will be sent by FW after every roam */ |
| wmi_ssid ssid; /* ssid of current connected AP FW might choose to use this SSID in the neighbor report req frame if it is |
| * interested in candidate of the same SSID */ |
| } wmi_neighbor_report_offload; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_offload_11k_report_fixed_param */ |
| A_UINT32 vdev_id; |
| A_UINT32 offload_11k; /* bitmask to indicate to FW what all 11k features are offloaded */ |
| } wmi_11k_offload_report_fixed_param; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_neighbor_report_offload_tlv_param */ |
| wmi_neighbor_report_offload neighbor_rep_ofld_params; |
| } wmi_neighbor_report_11k_offload_tlv_param; |
| |
| #define WMI_INVOKE_NEIGHBOR_REPORT_FLAGS_SEND_RESP_TO_HOST 0x1 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_invoke_neighbor_report_fixed_param */ |
| A_UINT32 vdev_id; |
| A_UINT32 flags; |
| wmi_ssid ssid; /* if ssid.len == 0, firmware doesn't include ssid sub-element. |
| * In that case AP gives all the candidates in ESS without SSID filter |
| * If host wants to insert ssid subelement in the neighbor report request frame, then it can specify the ssid here */ |
| } wmi_11k_offload_invoke_neighbor_report_fixed_param; |
| |
| #define WMI_MAX_PMKID_LEN 16 |
| #define WMI_MAX_PMK_LEN 64 |
| |
| #define WMI_PMK_CACHE_CAT_FLAG_BSSID 0x1 |
| #define WMI_PMK_CACHE_CAT_FLAG_SSID_CACHE_ID 0x2 |
| |
| #define WMI_PMK_CACHE_ACTION_FLAG_ADD_ENTRY 0x1 |
| #define WMI_PMK_CACHE_ACTION_FLAG_DEL_ENTRY 0x2 |
| |
| typedef struct { |
| A_UINT32 tlv_header; |
| A_UINT32 pmk_len; |
| A_UINT8 pmk[WMI_MAX_PMK_LEN];/* for big-endian hosts, manual endian conversion will be needed to keep the array values in their original order, |
| in spite of the automatic byte-swap applied to WMI messages during download*/ |
| A_UINT32 pmkid_len; |
| A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; |
| wmi_mac_addr bssid; |
| wmi_ssid ssid; |
| A_UINT32 cache_id; |
| A_UINT32 cat_flag; // whether (bssid) or (ssid,cache_id) is valid |
| A_UINT32 action_flag; // add/delete the entry |
| } wmi_pmk_cache; |
| |
| #define WMI_PMK_CACHE_OP_FLAG_FLUSH_ALL 0x1 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_update_pmk_cache_cmd_fixed_param */ |
| A_UINT32 op_flag; //option to flush all the cache at once |
| A_UINT32 vdev_id; |
| A_UINT32 num_cache; |
| /** |
| * TLV (tag length value) parameters follow the update_pmk_cache cmd |
| * structure. The TLV's are: |
| * wmi_pmk_cache cache_list[]; |
| */ |
| } wmi_pdev_update_pmk_cache_cmd_fixed_param; |
| |
| #define WMI_FILS_MAX_USERNAME_LEN 16 |
| #define WMI_FILS_MAX_REALM_LEN 256 |
| #define WMI_FILS_MAX_RRK_LEN 64 |
| #define WMI_FILS_MAX_RIK_LEN 64 |
| |
| /* for big-endian hosts, manual endian conversion will be needed to keep the array values in their original order, |
| in spite of the automatic byte-swap applied to WMI messages during download*/ |
| |
| typedef struct { |
| A_UINT8 username[WMI_FILS_MAX_USERNAME_LEN]; |
| A_UINT32 username_length; |
| A_UINT32 next_erp_seq_num; |
| A_UINT8 rRk[WMI_FILS_MAX_RRK_LEN]; |
| A_UINT32 rRk_length; |
| A_UINT8 rIk[WMI_FILS_MAX_RIK_LEN]; |
| A_UINT32 rIk_length; |
| A_UINT8 realm[WMI_FILS_MAX_REALM_LEN]; |
| A_UINT32 realm_len; |
| } wmi_erp_info; |
| |
| enum wmi_fils_hlp_pkt_type { |
| WMI_FILS_HLP_PKT_TYPE_DHCP_DISCOVER = 1, |
| }; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_fils_offload_tlv_param */ |
| A_UINT32 flags; |
| wmi_erp_info vdev_erp_info; |
| } wmi_roam_fils_offload_tlv_param; |
| |
| typedef struct { |
| A_UINT32 tlv_header; /** tag WMITLV_TAG_STRUC_wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param**/ |
| A_UINT32 flags; |
| A_UINT32 vdev_id; |
| A_UINT32 size; |
| A_UINT32 pkt_type; // filled using enum wmi_fils_hlp_pkt_type |
| // A_UINT8 fils_hlp_pkt[]; |
| } wmi_pdev_update_fils_hlp_pkt_cmd_fixed_param; |
| |
| #define WMI_MAX_KEK_LEN 64 |
| #define GTK_OFFLOAD_KEK_EXTENDED_BYTES WMI_MAX_KEK_LEN /*KEK len has been increased to 64 to support FILS security. |
| To not break backward compatibility, new GTK_OFFLOAD_KEK_EXTENDED_BYTES has been defined without modifying old GTK_OFFLOAD_KEK_BYTES */ |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_fils_synch_tlv_param */ |
| A_UINT32 update_erp_next_seq_num;// Boolean denoting whether next erp_seq_num changed or not. |
| A_UINT32 next_erp_seq_num; |
| A_UINT32 kek_len; |
| A_UINT8 kek[WMI_MAX_KEK_LEN]; |
| A_UINT32 pmk_len; |
| A_UINT8 pmk[WMI_MAX_PMK_LEN]; |
| A_UINT8 pmkid[WMI_MAX_PMKID_LEN]; |
| A_UINT8 realm[WMI_FILS_MAX_REALM_LEN]; |
| A_UINT32 realm_len; |
| } wmi_roam_fils_synch_tlv_param; |
| |
| /* |
| * If FW has multiple active channels due to MCC(multi channel concurrency), |
| * then these stats are combined stats for all the active channels. |
| */ |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_update_whal_mib_stats_event_fixed_param */ |
| /** ack count, it is an incremental number, not accumulated number */ |
| A_UINT32 ackRcvBad; |
| /** bad rts count, it is an incremental number, not accumulated number */ |
| A_UINT32 rtsBad; |
| /** good rts, it is an incremental number, not accumulated number */ |
| A_UINT32 rtsGood; |
| /** fcs count, it is an incremental number, not accumulated number */ |
| A_UINT32 fcsBad; |
| /** beacon count, it is an incremental number, not accumulated number */ |
| A_UINT32 noBeacons; |
| } wmi_update_whal_mib_stats_event_fixed_param; |
| |
| /* |
| * This defines how much headroom is kept in the |
| * receive frame between the descriptor and the |
| * payload, in order for the WMI PHY error and |
| * management handler to insert header contents. |
| * |
| * This is in bytes. |
| */ |
| #define WMI_MGMT_RX_HDR_HEADROOM sizeof(wmi_comb_phyerr_rx_hdr) + WMI_TLV_HDR_SIZE + sizeof(wmi_single_phyerr_rx_hdr) |
| |
| /** This event will be used for sending scan results |
| * as well as rx mgmt frames to the host. The rx buffer |
| * will be sent as part of this WMI event. It would be a |
| * good idea to pass all the fields in the RX status |
| * descriptor up to the host. |
| */ |
| /* ATH_MAX_ANTENNA value (4) can't be changed without breaking the compatibility */ |
| #define ATH_MAX_ANTENNA 4 /* To support beelinear, which is up to 4 chains */ |
| |
| /** flag indicating that the mgmt frame (probe req/beacon) is received in the context of extscan performed by FW */ |
| #define WMI_MGMT_RX_HDR_EXTSCAN 0x01 |
| |
| /** flag indicating that the mgmt frame (probe req/beacon) is received in the context of matched network by FW ENLO */ |
| #define WMI_MGMT_RX_HDR_ENLO 0x02 |
| |
| #define MAX_ANTENNA_EIGHT 8 |
| |
| typedef struct { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr */ |
| /** channel on which this frame is received. */ |
| A_UINT32 channel; |
| /** snr information used to cal rssi */ |
| A_UINT32 snr; |
| /** Rate kbps */ |
| A_UINT32 rate; |
| /** rx phy mode WLAN_PHY_MODE */ |
| A_UINT32 phy_mode; |
| /** length of the frame */ |
| A_UINT32 buf_len; |
| /** rx status */ |
| A_UINT32 status; |
| /** RSSI of PRI 20MHz for each chain. */ |
| A_UINT32 rssi_ctl[ATH_MAX_ANTENNA]; |
| /** information about the management frame e.g. can give a scan source for a scan result mgmt frame */ |
| A_UINT32 flags; |
| /** combined RSSI, i.e. the sum of the snr + noise floor (dBm units) */ |
| A_INT32 rssi; |
| /** delta between local TSF(TSF timestamp when frame was RXd) |
| * and remote TSF(TSF timestamp in the IE for mgmt frame - |
| * beacon,proberesp for e.g). If remote TSF is not available, |
| * delta set to 0. |
| * Although tsf_delta is stored as A_UINT32, it can be negative, |
| * and thus would need to be sign-extended if added to a value |
| * larger than 32 bits. |
| */ |
| A_UINT32 tsf_delta; |
| |
| /* The lower 32 bits of the TSF (rx_tsf_l32) is copied by FW from |
| * TSF timestamp in the RX MAC descriptor provided by HW. |
| */ |
| A_UINT32 rx_tsf_l32; |
| |
| /* The Upper 32 bits (rx_tsf_u32) is filled by reading the TSF register |
| * after the packet is received. |
| */ |
| A_UINT32 rx_tsf_u32; |
| |
| /** pdev_id for identifying the MAC the rx mgmt frame was received by |
| * See macros starting with WMI_PDEV_ID_ for values. |
| */ |
| A_UINT32 pdev_id; |
| |
| /* This TLV is followed by array of bytes: |
| * // management frame buffer |
| * A_UINT8 bufp[]; |
| */ |
| /* This TLV is optionally followed by array of struct: |
| * wmi_rssi_ctl_ext rssi_ctl_ext; |
| */ |
| } wmi_mgmt_rx_hdr; |
| |
| /* |
| * Instead of universally increasing the RX_HDR_HEADROOM size which may cause problems for older targets, |
| * this new ext_hdr can be used for extending the header and will be only applicable for new targets. |
| */ |
| typedef struct |
| { |
| A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_rssi_ctl_ext */ |
| /** RSSI of PRI 20MHz for each chain, in dB w.r.t. noise floor */ |
| A_UINT32 rssi_ctl_ext[MAX_ANTENNA_EIGHT - ATH_MAX_ANTENNA]; |
| } wmi_rssi_ctl_ext; |
| |
| typedef struct { |
| /** TSF timestamp */ |
| A_UINT32 tsf_timestamp; |
| |
| /** |
| * Current freq1, freq2 |
| * |
| * [7:0]: freq1[lo] |
| * [15:8] : freq1[hi] |
| * [23:16]: freq2[lo] |
| * [31:24]: freq2[hi] |
| */ |
| A_UINT32 freq_info_1; |
| |
| /** |
| * Combined RSSI over all chains and channel width for this PHY error |
| * |
| * [7:0]: RSSI combined |
| * [15:8]: Channel width (MHz) |
| * [23:16]: PHY error code |
| * [24:16]: reserved (future use) |
| */ |
| A_UINT32 freq_info_2; |
| |
| /** |
| * RSSI on chain 0 through 3 |
| * |
| * This is formatted the same as the PPDU_START RX descriptor |
| * field: |
| * |
| * [7:0]: pri20 |
| * [15:8]: sec20 |
| * [23:16]: sec40 |
|