/* * Copyright (c) 2004-2006 Atheros Communications Inc. * All rights reserved. * * * $ATH_LICENSE_HOSTSDK0_C$ * * This file contains the definitions of the WMI protocol specified in the * Wireless Module Interface (WMI). It includes definitions of all the * commands and events. Commands are messages from the host to the WM. * Events and Replies are messages from the WM to the host. * * Ownership of correctness in regards to WMI commands * belongs to the host driver and the WM is not required to validate * parameters for value, proper range, or any other checking. * */ #ifndef _WMI_H_ #define _WMI_H_ #ifndef ATH_TARGET #include "athstartpack.h" #endif #include "wmix.h" #ifdef __cplusplus extern "C" { #endif #define WMI_PROTOCOL_VERSION 0x0002 #define WMI_PROTOCOL_REVISION 0x0000 #define ATH_MAC_LEN 6 /* length of mac in bytes */ #define WMI_CMD_MAX_LEN 100 #define WMI_CONTROL_MSG_MAX_LEN 256 #define WMI_OPT_CONTROL_MSG_MAX_LEN 1536 #define IS_ETHERTYPE(_typeOrLen) ((_typeOrLen) >= 0x0600) #define RFC1042OUI {0x00, 0x00, 0x00} #define IP_ETHERTYPE 0x0800 #define WMI_IMPLICIT_PSTREAM 0xFF #define WMI_MAX_THINSTREAM 15 struct host_app_area_s { A_UINT32 wmi_protocol_ver; }; /* * Data Path */ typedef PREPACK struct { A_UINT8 dstMac[ATH_MAC_LEN]; A_UINT8 srcMac[ATH_MAC_LEN]; A_UINT16 typeOrLen; } POSTPACK ATH_MAC_HDR; typedef PREPACK struct { A_UINT8 dsap; A_UINT8 ssap; A_UINT8 cntl; A_UINT8 orgCode[3]; A_UINT16 etherType; } POSTPACK ATH_LLC_SNAP_HDR; typedef enum { DATA_MSGTYPE = 0x0, CNTL_MSGTYPE, SYNC_MSGTYPE } WMI_MSG_TYPE; typedef PREPACK struct { A_INT8 rssi; A_UINT8 info; /* WMI_MSG_TYPE in lower 2 bits - b1b0 */ /* UP in next 3 bits - b4b3b2 */ #define WMI_DATA_HDR_MSG_TYPE_MASK 0x03 #define WMI_DATA_HDR_MSG_TYPE_SHIFT 0 #define WMI_DATA_HDR_UP_MASK 0x07 #define WMI_DATA_HDR_UP_SHIFT 2 #define WMI_DATA_HDR_IS_MSG_TYPE(h, t) (((h)->info & (WMI_DATA_HDR_MSG_TYPE_MASK)) == (t)) } POSTPACK WMI_DATA_HDR; #define WMI_DATA_HDR_SET_MSG_TYPE(h, t) (h)->info = (((h)->info & ~(WMI_DATA_HDR_MSG_TYPE_MASK << WMI_DATA_HDR_MSG_TYPE_SHIFT)) | (t << WMI_DATA_HDR_MSG_TYPE_SHIFT)) #define WMI_DATA_HDR_SET_UP(h, p) (h)->info = (((h)->info & ~(WMI_DATA_HDR_UP_MASK << WMI_DATA_HDR_UP_SHIFT)) | (p << WMI_DATA_HDR_UP_SHIFT)) /* * Control Path */ typedef PREPACK struct { A_UINT16 commandId; } POSTPACK WMI_CMD_HDR; /* used for commands and events */ /* * List of Commnands */ typedef enum { WMI_CONNECT_CMDID = 0x0001, WMI_RECONNECT_CMDID, WMI_DISCONNECT_CMDID, WMI_SYNCHRONIZE_CMDID, WMI_CREATE_PSTREAM_CMDID, WMI_DELETE_PSTREAM_CMDID, WMI_START_SCAN_CMDID, WMI_SET_SCAN_PARAMS_CMDID, WMI_SET_BSS_FILTER_CMDID, WMI_SET_PROBED_SSID_CMDID, WMI_SET_LISTEN_INT_CMDID, WMI_SET_BMISS_TIME_CMDID, WMI_SET_DISC_TIMEOUT_CMDID, WMI_GET_CHANNEL_LIST_CMDID, WMI_SET_BEACON_INT_CMDID, WMI_GET_STATISTICS_CMDID, WMI_SET_CHANNEL_PARAMS_CMDID, WMI_SET_POWER_MODE_CMDID, WMI_SET_IBSS_PM_CAPS_CMDID, WMI_SET_POWER_PARAMS_CMDID, WMI_SET_POWERSAVE_TIMERS_POLICY_CMDID, WMI_ADD_CIPHER_KEY_CMDID, WMI_DELETE_CIPHER_KEY_CMDID, WMI_ADD_KRK_CMDID, WMI_DELETE_KRK_CMDID, WMI_SET_PMKID_CMDID, WMI_SET_TX_PWR_CMDID, WMI_GET_TX_PWR_CMDID, WMI_SET_ASSOC_INFO_CMDID, WMI_ADD_BAD_AP_CMDID, WMI_DELETE_BAD_AP_CMDID, WMI_SET_TKIP_COUNTERMEASURES_CMDID, WMI_RSSI_THRESHOLD_PARAMS_CMDID, WMI_TARGET_ERROR_REPORT_BITMASK_CMDID, WMI_SET_ACCESS_PARAMS_CMDID, WMI_SET_RETRY_LIMITS_CMDID, WMI_SET_OPT_MODE_CMDID, WMI_OPT_TX_FRAME_CMDID, WMI_SET_VOICE_PKT_SIZE_CMDID, WMI_SET_MAX_SP_LEN_CMDID, WMI_SET_ROAM_CTRL_CMDID, WMI_GET_ROAM_TBL_CMDID, WMI_GET_ROAM_DATA_CMDID, WMI_ENABLE_RM_CMDID, WMI_SET_MAX_OFFHOME_DURATION_CMDID, WMI_EXTENSION_CMDID, /* Non-wireless extensions */ WMI_SNR_THRESHOLD_PARAMS_CMDID, WMI_LQ_THRESHOLD_PARAMS_CMDID, WMI_SET_LPREAMBLE_CMDID, WMI_SET_RTS_CMDID, WMI_CLR_RSSI_SNR_CMDID, WMI_SET_FIXRATES_CMDID, WMI_GET_FIXRATES_CMDID, WMI_SET_AUTH_MODE_CMDID, WMI_SET_REASSOC_MODE_CMDID, WMI_SET_WMM_CMDID, WMI_SET_WMM_TXOP_CMDID, WMI_TEST_CMDID, WMI_SET_BT_STATUS_CMDID, WMI_SET_BT_PARAMS_CMDID, WMI_SET_KEEPALIVE_CMDID, WMI_GET_KEEPALIVE_CMDID, WMI_SET_APPIE_CMDID, WMI_GET_APPIE_CMDID, WMI_SET_WSC_STATUS_CMDID, /* Wake on Wireless */ WMI_SET_HOST_SLEEP_MODE_CMDID, WMI_SET_WOW_MODE_CMDID, WMI_GET_WOW_LIST_CMDID, WMI_ADD_WOW_PATTERN_CMDID, WMI_DEL_WOW_PATTERN_CMDID, WMI_SET_MAC_ADDRESS_CMDID, WMI_SET_AKMP_PARAMS_CMDID, WMI_SET_PMKID_LIST_CMDID, WMI_GET_PMKID_LIST_CMDID, /* * Developer commands starts at 0xF000 */ WMI_SET_BITRATE_CMDID = 0xF000, WMI_GET_BITRATE_CMDID, WMI_SET_WHALPARAM_CMDID, } WMI_COMMAND_ID; /* * Frame Types */ typedef enum { WMI_FRAME_BEACON = 0, WMI_FRAME_PROBE_REQ, WMI_FRAME_PROBE_RESP, WMI_FRAME_ASSOC_REQ, WMI_FRAME_ASSOC_RESP, WMI_NUM_MGMT_FRAME } WMI_MGMT_FRAME_TYPE; /* * Connect Command */ typedef enum { INFRA_NETWORK = 0x01, ADHOC_NETWORK = 0x02, ADHOC_CREATOR = 0x04, } NETWORK_TYPE; typedef enum { OPEN_AUTH = 0x01, SHARED_AUTH = 0x02, LEAP_AUTH = 0x04, /* different from IEEE_AUTH_MODE definitions */ } DOT11_AUTH_MODE; typedef enum { NONE_AUTH = 0x01, WPA_AUTH = 0x02, WPA_PSK_AUTH = 0x03, WPA2_AUTH = 0x04, WPA2_PSK_AUTH = 0x05, WPA_AUTH_CCKM = 0x06, WPA2_AUTH_CCKM = 0x07, } AUTH_MODE; typedef enum { NONE_CRYPT = 0x01, WEP_CRYPT = 0x02, TKIP_CRYPT = 0x03, AES_CRYPT = 0x04, } CRYPTO_TYPE; #define WMI_MIN_CRYPTO_TYPE NONE_CRYPT #define WMI_MAX_CRYPTO_TYPE (AES_CRYPT + 1) #define WMI_MIN_KEY_INDEX 0 #define WMI_MAX_KEY_INDEX 3 #define WMI_MAX_KEY_LEN 32 #define WMI_MAX_SSID_LEN 32 typedef enum { CONNECT_ASSOC_POLICY_USER = 0x0001, CONNECT_SEND_REASSOC = 0x0002, CONNECT_IGNORE_WPAx_GROUP_CIPHER = 0x0004, CONNECT_PROFILE_MATCH_DONE = 0x0008, CONNECT_IGNORE_AAC_BEACON = 0x0010, CONNECT_CSA_FOLLOW_BSS = 0x0020, } WMI_CONNECT_CTRL_FLAGS_BITS; #define DEFAULT_CONNECT_CTRL_FLAGS (CONNECT_CSA_FOLLOW_BSS) typedef PREPACK struct { A_UINT8 networkType; A_UINT8 dot11AuthMode; A_UINT8 authMode; A_UINT8 pairwiseCryptoType; A_UINT8 pairwiseCryptoLen; A_UINT8 groupCryptoType; A_UINT8 groupCryptoLen; A_UINT8 ssidLength; A_UCHAR ssid[WMI_MAX_SSID_LEN]; A_UINT16 channel; A_UINT8 bssid[ATH_MAC_LEN]; A_UINT32 ctrl_flags; } POSTPACK WMI_CONNECT_CMD; /* * WMI_RECONNECT_CMDID */ typedef PREPACK struct { A_UINT16 channel; /* hint */ A_UINT8 bssid[ATH_MAC_LEN]; /* mandatory if set */ } POSTPACK WMI_RECONNECT_CMD; /* * WMI_ADD_CIPHER_KEY_CMDID */ typedef enum { PAIRWISE_USAGE = 0x00, GROUP_USAGE = 0x01, TX_USAGE = 0x02, /* default Tx Key - Static WEP only */ } KEY_USAGE; /* * Bit Flag * Bit 0 - Initialise TSC - default is Initialize */ #define KEY_OP_INIT_TSC 0x01 #define KEY_OP_INIT_RSC 0x02 #define KEY_OP_INIT_VAL 0x03 /* Default Initialise the TSC & RSC */ #define KEY_OP_VALID_MASK 0x03 typedef PREPACK struct { A_UINT8 keyIndex; A_UINT8 keyType; A_UINT8 keyUsage; /* KEY_USAGE */ A_UINT8 keyLength; A_UINT8 keyRSC[8]; /* key replay sequence counter */ A_UINT8 key[WMI_MAX_KEY_LEN]; A_UINT8 key_op_ctrl; /* Additional Key Control information */ } POSTPACK WMI_ADD_CIPHER_KEY_CMD; /* * WMI_DELETE_CIPHER_KEY_CMDID */ typedef PREPACK struct { A_UINT8 keyIndex; } POSTPACK WMI_DELETE_CIPHER_KEY_CMD; #define WMI_KRK_LEN 16 /* * WMI_ADD_KRK_CMDID */ typedef PREPACK struct { A_UINT8 krk[WMI_KRK_LEN]; } POSTPACK WMI_ADD_KRK_CMD; /* * WMI_SET_TKIP_COUNTERMEASURES_CMDID */ typedef enum { WMI_TKIP_CM_DISABLE = 0x0, WMI_TKIP_CM_ENABLE = 0x1, } WMI_TKIP_CM_CONTROL; typedef PREPACK struct { A_UINT8 cm_en; /* WMI_TKIP_CM_CONTROL */ } POSTPACK WMI_SET_TKIP_COUNTERMEASURES_CMD; /* * WMI_SET_PMKID_CMDID */ #define WMI_PMKID_LEN 16 typedef enum { PMKID_DISABLE = 0, PMKID_ENABLE = 1, } PMKID_ENABLE_FLG; typedef PREPACK struct { A_UINT8 bssid[ATH_MAC_LEN]; A_UINT8 enable; /* PMKID_ENABLE_FLG */ A_UINT8 pmkid[WMI_PMKID_LEN]; } POSTPACK WMI_SET_PMKID_CMD; /* * WMI_START_SCAN_CMD */ typedef enum { WMI_LONG_SCAN = 0, WMI_SHORT_SCAN = 1, } WMI_SCAN_TYPE; typedef PREPACK struct { A_BOOL forceFgScan; A_BOOL isLegacy; /* For Legacy Cisco AP compatibility */ A_UINT32 homeDwellTime; /* Maximum duration in the home channel(milliseconds) */ A_UINT32 forceScanInterval; /* Time interval between scans (milliseconds)*/ A_UINT8 scanType; /* WMI_SCAN_TYPE */ } POSTPACK WMI_START_SCAN_CMD; /* * WMI_SET_SCAN_PARAMS_CMDID */ #define WMI_SHORTSCANRATIO_DEFAULT 3 typedef enum { CONNECT_SCAN_CTRL_FLAGS = 0x01, /* set if can scan in the Connect cmd */ SCAN_CONNECTED_CTRL_FLAGS = 0x02, /* set if scan for the SSID it is */ /* already connected to */ ACTIVE_SCAN_CTRL_FLAGS = 0x04, /* set if enable active scan */ ROAM_SCAN_CTRL_FLAGS = 0x08, /* set if enable roam scan when bmiss and lowrssi */ REPORT_BSSINFO_CTRL_FLAGS = 0x10, /* set if follows customer BSSINFO reporting rule */ ENABLE_AUTO_CTRL_FLAGS = 0x20, /* if disabled, target doesn't scan after a disconnect event */ ENABLE_SCAN_ABORT_EVENT = 0x40 /* Scan complete event with canceled status will be generated when a scan is prempted before it gets completed */ } WMI_SCAN_CTRL_FLAGS_BITS; #define CAN_SCAN_IN_CONNECT(flags) (flags & CONNECT_SCAN_CTRL_FLAGS) #define CAN_SCAN_CONNECTED(flags) (flags & SCAN_CONNECTED_CTRL_FLAGS) #define ENABLE_ACTIVE_SCAN(flags) (flags & ACTIVE_SCAN_CTRL_FLAGS) #define ENABLE_ROAM_SCAN(flags) (flags & ROAM_SCAN_CTRL_FLAGS) #define CONFIG_REPORT_BSSINFO(flags) (flags & REPORT_BSSINFO_CTRL_FLAGS) #define IS_AUTO_SCAN_ENABLED(flags) (flags & ENABLE_AUTO_CTRL_FLAGS) #define SCAN_ABORT_EVENT_ENABLED(flags) (flags & ENABLE_SCAN_ABORT_EVENT) #define DEFAULT_SCAN_CTRL_FLAGS (CONNECT_SCAN_CTRL_FLAGS| SCAN_CONNECTED_CTRL_FLAGS| ACTIVE_SCAN_CTRL_FLAGS| ROAM_SCAN_CTRL_FLAGS | ENABLE_AUTO_CTRL_FLAGS) typedef PREPACK struct { A_UINT16 fg_start_period; /* seconds */ A_UINT16 fg_end_period; /* seconds */ A_UINT16 bg_period; /* seconds */ A_UINT16 maxact_chdwell_time; /* msec */ A_UINT16 pas_chdwell_time; /* msec */ A_UINT8 shortScanRatio; /* how many shorts scan for one long */ A_UINT8 scanCtrlFlags; A_UINT16 minact_chdwell_time; /* msec */ A_UINT32 max_dfsch_act_time; /* msecs */ } POSTPACK WMI_SCAN_PARAMS_CMD; /* * WMI_SET_BSS_FILTER_CMDID */ typedef enum { NONE_BSS_FILTER = 0x0, /* no beacons forwarded */ ALL_BSS_FILTER, /* all beacons forwarded */ PROFILE_FILTER, /* only beacons matching profile */ ALL_BUT_PROFILE_FILTER, /* all but beacons matching profile */ CURRENT_BSS_FILTER, /* only beacons matching current BSS */ ALL_BUT_BSS_FILTER, /* all but beacons matching BSS */ PROBED_SSID_FILTER, /* beacons matching probed ssid */ LAST_BSS_FILTER, /* marker only */ } WMI_BSS_FILTER; typedef PREPACK struct { A_UINT8 bssFilter; /* see WMI_BSS_FILTER */ A_UINT32 ieMask; } POSTPACK WMI_BSS_FILTER_CMD; /* * WMI_SET_PROBED_SSID_CMDID */ #define MAX_PROBED_SSID_INDEX 5 typedef enum { DISABLE_SSID_FLAG = 0, /* disables entry */ SPECIFIC_SSID_FLAG = 0x01, /* probes specified ssid */ ANY_SSID_FLAG = 0x02, /* probes for any ssid */ } WMI_SSID_FLAG; typedef PREPACK struct { A_UINT8 entryIndex; /* 0 to MAX_PROBED_SSID_INDEX */ A_UINT8 flag; /* WMI_SSID_FLG */ A_UINT8 ssidLength; A_UINT8 ssid[32]; } POSTPACK WMI_PROBED_SSID_CMD; /* * WMI_SET_LISTEN_INT_CMDID * The Listen interval is between 15 and 3000 TUs */ #define MIN_LISTEN_INTERVAL 15 #define MAX_LISTEN_INTERVAL 5000 #define MIN_LISTEN_BEACONS 1 #define MAX_LISTEN_BEACONS 50 typedef PREPACK struct { A_UINT16 listenInterval; A_UINT16 numBeacons; } POSTPACK WMI_LISTEN_INT_CMD; /* * WMI_SET_BEACON_INT_CMDID */ typedef PREPACK struct { A_UINT16 beaconInterval; } POSTPACK WMI_BEACON_INT_CMD; /* * WMI_SET_BMISS_TIME_CMDID * valid values are between 1000 and 5000 TUs */ #define MIN_BMISS_TIME 1000 #define MAX_BMISS_TIME 5000 #define MIN_BMISS_BEACONS 1 #define MAX_BMISS_BEACONS 50 typedef PREPACK struct { A_UINT16 bmissTime; A_UINT16 numBeacons; } POSTPACK WMI_BMISS_TIME_CMD; /* * WMI_SET_POWER_MODE_CMDID */ typedef enum { REC_POWER = 0x01, MAX_PERF_POWER, } WMI_POWER_MODE; typedef PREPACK struct { A_UINT8 powerMode; /* WMI_POWER_MODE */ } POSTPACK WMI_POWER_MODE_CMD; /* * WMI_SET_POWER_PARAMS_CMDID */ typedef enum { IGNORE_DTIM = 0x01, NORMAL_DTIM = 0x02, STICK_DTIM = 0x03, } WMI_DTIM_POLICY; typedef PREPACK struct { A_UINT16 idle_period; /* msec */ A_UINT16 pspoll_number; A_UINT16 dtim_policy; } POSTPACK WMI_POWER_PARAMS_CMD; typedef PREPACK struct { A_UINT8 power_saving; A_UINT8 ttl; /* number of beacon periods */ A_UINT16 atim_windows; /* msec */ A_UINT16 timeout_value; /* msec */ } POSTPACK WMI_IBSS_PM_CAPS_CMD; /* * WMI_SET_POWERSAVE_TIMERS_POLICY_CMDID */ typedef enum { IGNORE_TIM_ALL_QUEUES_APSD = 0, PROCESS_TIM_ALL_QUEUES_APSD = 1, IGNORE_TIM_SIMULATED_APSD = 2, PROCESS_TIM_SIMULATED_APSD = 3, } APSD_TIM_POLICY; typedef PREPACK struct { A_UINT16 psPollTimeout; /* msec */ A_UINT16 triggerTimeout; /* msec */ A_UINT32 apsdTimPolicy; /* TIM behavior with ques APSD enabled. Default is IGNORE_TIM_ALL_QUEUES_APSD */ A_UINT32 simulatedAPSDTimPolicy; /* TIM behavior with simulated APSD enabled. Default is PROCESS_TIM_SIMULATED_APSD */ } POSTPACK WMI_POWERSAVE_TIMERS_POLICY_CMD; /* * WMI_SET_VOICE_PKT_SIZE_CMDID */ typedef PREPACK struct { A_UINT16 voicePktSize; } POSTPACK WMI_SET_VOICE_PKT_SIZE_CMD; /* * WMI_SET_MAX_SP_LEN_CMDID */ typedef enum { DELIVER_ALL_PKT = 0x0, DELIVER_2_PKT = 0x1, DELIVER_4_PKT = 0x2, DELIVER_6_PKT = 0x3, } APSD_SP_LEN_TYPE; typedef PREPACK struct { A_UINT8 maxSPLen; } POSTPACK WMI_SET_MAX_SP_LEN_CMD; /* * WMI_SET_DISC_TIMEOUT_CMDID */ typedef PREPACK struct { A_UINT8 disconnectTimeout; /* seconds */ } POSTPACK WMI_DISC_TIMEOUT_CMD; typedef enum { UPLINK_TRAFFIC = 0, DNLINK_TRAFFIC = 1, BIDIR_TRAFFIC = 2, } DIR_TYPE; typedef enum { DISABLE_FOR_THIS_AC = 0, ENABLE_FOR_THIS_AC = 1, ENABLE_FOR_ALL_AC = 2, } VOICEPS_CAP_TYPE; typedef enum { TRAFFIC_TYPE_APERIODIC = 0, TRAFFIC_TYPE_PERIODIC = 1, }TRAFFIC_TYPE; /* * WMI_CREATE_PSTREAM_CMDID */ typedef PREPACK struct { A_UINT32 minServiceInt; /* in milli-sec */ A_UINT32 maxServiceInt; /* in milli-sec */ A_UINT32 inactivityInt; /* in milli-sec */ A_UINT32 suspensionInt; /* in milli-sec */ A_UINT32 serviceStartTime; A_UINT32 minDataRate; /* in bps */ A_UINT32 meanDataRate; /* in bps */ A_UINT32 peakDataRate; /* in bps */ A_UINT32 maxBurstSize; A_UINT32 delayBound; A_UINT32 minPhyRate; /* in bps */ A_UINT32 sba; A_UINT32 mediumTime; A_UINT16 nominalMSDU; /* in octects */ A_UINT16 maxMSDU; /* in octects */ A_UINT8 trafficClass; A_UINT8 trafficType; /* TRAFFIC_TYPE */ A_UINT8 trafficDirection; /* TRAFFIC_DIR */ A_UINT8 voicePSCapability; /* VOICEPS_CAP_TYPE */ A_UINT8 tsid; A_UINT8 userPriority; /* 802.1D user priority */ } POSTPACK WMI_CREATE_PSTREAM_CMD; /* * WMI_DELETE_PSTREAM_CMDID */ typedef PREPACK struct { A_UINT8 trafficClass; A_UINT8 tsid; } POSTPACK WMI_DELETE_PSTREAM_CMD; /* * WMI_SET_CHANNEL_PARAMS_CMDID */ typedef enum { WMI_11A_MODE = 0x1, WMI_11G_MODE = 0x2, WMI_11AG_MODE = 0x3, WMI_11B_MODE = 0x4, WMI_11GONLY_MODE = 0x5, } WMI_PHY_MODE; #define WMI_MAX_CHANNELS 32 typedef PREPACK struct { A_UINT8 reserved1; A_UINT8 scanParam; /* set if enable scan */ A_UINT8 phyMode; /* see WMI_PHY_MODE */ A_UINT8 numChannels; /* how many channels follow */ A_UINT16 channelList[1]; /* channels in Mhz */ } POSTPACK WMI_CHANNEL_PARAMS_CMD; /* * WMI_RSSI_THRESHOLD_PARAMS_CMDID * Setting the polltime to 0 would disable polling. * Threshold values are in the ascending order, and should agree to: * (lowThreshold_lowerVal < lowThreshold_upperVal < highThreshold_lowerVal * < highThreshold_upperVal) */ typedef PREPACK struct WMI_RSSI_THRESHOLD_PARAMS{ A_UINT32 pollTime; /* Polling time as a factor of LI */ A_INT16 thresholdAbove1_Val; /* lowest of upper */ A_INT16 thresholdAbove2_Val; A_INT16 thresholdAbove3_Val; A_INT16 thresholdAbove4_Val; A_INT16 thresholdAbove5_Val; A_INT16 thresholdAbove6_Val; /* highest of upper */ A_INT16 thresholdBelow1_Val; /* lowest of bellow */ A_INT16 thresholdBelow2_Val; A_INT16 thresholdBelow3_Val; A_INT16 thresholdBelow4_Val; A_INT16 thresholdBelow5_Val; A_INT16 thresholdBelow6_Val; /* highest of bellow */ A_UINT8 weight; /* "alpha" */ A_UINT8 reserved[3]; } POSTPACK WMI_RSSI_THRESHOLD_PARAMS_CMD; /* * WMI_SNR_THRESHOLD_PARAMS_CMDID * Setting the polltime to 0 would disable polling. */ typedef PREPACK struct WMI_SNR_THRESHOLD_PARAMS{ A_UINT32 pollTime; /* Polling time as a factor of LI */ A_UINT8 weight; /* "alpha" */ A_UINT8 thresholdAbove1_Val; /* lowest of uppper*/ A_UINT8 thresholdAbove2_Val; A_UINT8 thresholdAbove3_Val; A_UINT8 thresholdAbove4_Val; /* highest of upper */ A_UINT8 thresholdBelow1_Val; /* lowest of bellow */ A_UINT8 thresholdBelow2_Val; A_UINT8 thresholdBelow3_Val; A_UINT8 thresholdBelow4_Val; /* highest of bellow */ A_UINT8 reserved[3]; } POSTPACK WMI_SNR_THRESHOLD_PARAMS_CMD; /* * WMI_LQ_THRESHOLD_PARAMS_CMDID */ typedef PREPACK struct WMI_LQ_THRESHOLD_PARAMS { A_UINT8 enable; A_UINT8 thresholdAbove1_Val; A_UINT8 thresholdAbove2_Val; A_UINT8 thresholdAbove3_Val; A_UINT8 thresholdAbove4_Val; A_UINT8 thresholdBelow1_Val; A_UINT8 thresholdBelow2_Val; A_UINT8 thresholdBelow3_Val; A_UINT8 thresholdBelow4_Val; A_UINT8 reserved[3]; } POSTPACK WMI_LQ_THRESHOLD_PARAMS_CMD; typedef enum { WMI_LPREAMBLE_DISABLED = 0, WMI_LPREAMBLE_ENABLED } WMI_LPREAMBLE_STATUS; typedef PREPACK struct { A_UINT8 status; }POSTPACK WMI_SET_LPREAMBLE_CMD; typedef PREPACK struct { A_UINT16 threshold; }POSTPACK WMI_SET_RTS_CMD; /* * WMI_TARGET_ERROR_REPORT_BITMASK_CMDID * Sets the error reporting event bitmask in target. Target clears it * upon an error. Subsequent errors are counted, but not reported * via event, unless the bitmask is set again. */ typedef PREPACK struct { A_UINT32 bitmask; } POSTPACK WMI_TARGET_ERROR_REPORT_BITMASK; /* * WMI_SET_TX_PWR_CMDID */ typedef PREPACK struct { A_UINT8 dbM; /* in dbM units */ } POSTPACK WMI_SET_TX_PWR_CMD, WMI_TX_PWR_REPLY; /* * WMI_SET_ASSOC_INFO_CMDID * * A maximum of 2 private IEs can be sent in the [Re]Assoc request. * A 3rd one, the CCX version IE can also be set from the host. */ #define WMI_MAX_ASSOC_INFO_TYPE 2 #define WMI_CCX_VER_IE 2 /* ieType to set CCX Version IE */ #define WMI_MAX_ASSOC_INFO_LEN 240 typedef PREPACK struct { A_UINT8 ieType; A_UINT8 bufferSize; A_UINT8 assocInfo[1]; /* up to WMI_MAX_ASSOC_INFO_LEN */ } POSTPACK WMI_SET_ASSOC_INFO_CMD; /* * WMI_GET_TX_PWR_CMDID does not take any parameters */ /* * WMI_ADD_BAD_AP_CMDID */ #define WMI_MAX_BAD_AP_INDEX 1 typedef PREPACK struct { A_UINT8 badApIndex; /* 0 to WMI_MAX_BAD_AP_INDEX */ A_UINT8 bssid[ATH_MAC_LEN]; } POSTPACK WMI_ADD_BAD_AP_CMD; /* * WMI_DELETE_BAD_AP_CMDID */ typedef PREPACK struct { A_UINT8 badApIndex; /* 0 to WMI_MAX_BAD_AP_INDEX */ } POSTPACK WMI_DELETE_BAD_AP_CMD; /* * WMI_SET_ACCESS_PARAMS_CMDID */ #define WMI_DEFAULT_TXOP_ACPARAM 0 /* implies one MSDU */ #define WMI_DEFAULT_ECWMIN_ACPARAM 4 /* corresponds to CWmin of 15 */ #define WMI_DEFAULT_ECWMAX_ACPARAM 10 /* corresponds to CWmax of 1023 */ #define WMI_MAX_CW_ACPARAM 15 /* maximum eCWmin or eCWmax */ #define WMI_DEFAULT_AIFSN_ACPARAM 2 #define WMI_MAX_AIFSN_ACPARAM 15 typedef PREPACK struct { A_UINT16 txop; /* in units of 32 usec */ A_UINT8 eCWmin; A_UINT8 eCWmax; A_UINT8 aifsn; } POSTPACK WMI_SET_ACCESS_PARAMS_CMD; /* * WMI_SET_RETRY_LIMITS_CMDID * * This command is used to customize the number of retries the * wlan device will perform on a given frame. */ #define WMI_MIN_RETRIES 2 #define WMI_MAX_RETRIES 13 typedef enum { MGMT_FRAMETYPE = 0, CONTROL_FRAMETYPE = 1, DATA_FRAMETYPE = 2 } WMI_FRAMETYPE; typedef PREPACK struct { A_UINT8 frameType; /* WMI_FRAMETYPE */ A_UINT8 trafficClass; /* applies only to DATA_FRAMETYPE */ A_UINT8 maxRetries; A_UINT8 enableNotify; } POSTPACK WMI_SET_RETRY_LIMITS_CMD; /* * WMI_SET_ROAM_CTRL_CMDID * * This command is used to influence the Roaming behaviour * Set the host biases of the BSSs before setting the roam mode as bias * based. */ /* * Different types of Roam Control */ typedef enum { WMI_FORCE_ROAM = 1, /* Roam to the specified BSSID */ WMI_SET_ROAM_MODE = 2, /* default ,progd bias, no roam */ WMI_SET_HOST_BIAS = 3, /* Set the Host Bias */ WMI_SET_LOWRSSI_SCAN_PARAMS = 4, /* Set lowrssi Scan parameters */ } WMI_ROAM_CTRL_TYPE; #define WMI_MIN_ROAM_CTRL_TYPE WMI_FORCE_ROAM #define WMI_MAX_ROAM_CTRL_TYPE WMI_SET_LOWRSSI_SCAN_PARAMS /* * ROAM MODES */ typedef enum { WMI_DEFAULT_ROAM_MODE = 1, /* RSSI based ROAM */ WMI_HOST_BIAS_ROAM_MODE = 2, /* HOST BIAS based ROAM */ WMI_LOCK_BSS_MODE = 3 /* Lock to the Current BSS - no Roam */ } WMI_ROAM_MODE; /* * BSS HOST BIAS INFO */ typedef PREPACK struct { A_UINT8 bssid[ATH_MAC_LEN]; A_INT8 bias; } POSTPACK WMI_BSS_BIAS; typedef PREPACK struct { A_UINT8 numBss; WMI_BSS_BIAS bssBias[1]; } POSTPACK WMI_BSS_BIAS_INFO; typedef PREPACK struct WMI_LOWRSSI_SCAN_PARAMS { A_UINT16 lowrssi_scan_period; A_INT16 lowrssi_scan_threshold; A_INT16 lowrssi_roam_threshold; A_UINT8 roam_rssi_floor; A_UINT8 reserved[1]; /* For alignment */ } POSTPACK WMI_LOWRSSI_SCAN_PARAMS; typedef PREPACK struct { PREPACK union { A_UINT8 bssid[ATH_MAC_LEN]; /* WMI_FORCE_ROAM */ A_UINT8 roamMode; /* WMI_SET_ROAM_MODE */ WMI_BSS_BIAS_INFO bssBiasInfo; /* WMI_SET_HOST_BIAS */ WMI_LOWRSSI_SCAN_PARAMS lrScanParams; } POSTPACK info; A_UINT8 roamCtrlType ; } POSTPACK WMI_SET_ROAM_CTRL_CMD; /* * WMI_ENABLE_RM_CMDID */ typedef PREPACK struct { A_BOOL enable_radio_measurements; } POSTPACK WMI_ENABLE_RM_CMD; /* * WMI_SET_MAX_OFFHOME_DURATION_CMDID */ typedef PREPACK struct { A_UINT8 max_offhome_duration; } POSTPACK WMI_SET_MAX_OFFHOME_DURATION_CMD; typedef PREPACK struct { A_UINT32 frequency; A_UINT8 threshold; } POSTPACK WMI_SET_HB_CHALLENGE_RESP_PARAMS_CMD; typedef enum { BT_STREAM_UNDEF = 0, BT_STREAM_SCO, /* SCO stream */ BT_STREAM_A2DP, /* A2DP stream */ BT_STREAM_MAX } BT_STREAM_TYPE; typedef enum { BT_PARAM_SCO = 1, /* SCO stream parameters */ BT_PARAM_A2DP, /* A2DP stream parameters */ BT_PARAM_MISC, /* miscellaneous parameters */ BT_PARAM_REGS, /* co-existence register parameters */ BT_PARAM_MAX } BT_PARAM_TYPE; typedef enum { BT_STATUS_UNDEF = 0, BT_STATUS_START, BT_STATUS_STOP, BT_STATUS_RESUME, BT_STATUS_SUSPEND, BT_STATUS_MAX } BT_STREAM_STATUS; typedef PREPACK struct { A_UINT8 streamType; A_UINT8 status; } POSTPACK WMI_SET_BT_STATUS_CMD; typedef PREPACK struct { A_UINT8 noSCOPkts; A_UINT8 pspollTimeout; A_UINT8 stompbt; } POSTPACK BT_PARAMS_SCO; typedef PREPACK struct { A_UINT32 period; A_UINT32 dutycycle; A_UINT8 stompbt; } POSTPACK BT_PARAMS_A2DP; typedef PREPACK struct { A_UINT32 mode; A_UINT32 scoWghts; A_UINT32 a2dpWghts; A_UINT32 genWghts; A_UINT32 mode2; A_UINT8 setVal; } POSTPACK BT_COEX_REGS; typedef enum { WLAN_PROTECT_POLICY = 1, WLAN_COEX_CTRL_FLAGS } BT_PARAMS_MISC_TYPE; typedef enum { WLAN_PROTECT_PER_STREAM = 0x01, /* default */ WLAN_PROTECT_ANY_TX = 0x02 } WLAN_PROTECT_FLAGS; #define WLAN_DISABLE_COEX_IN_DISCONNECT 0x01 /* default */ #define WLAN_KEEP_COEX_IN_DISCONNECT 0x02 #define WLAN_STOMPBT_IN_DISCONNECT 0x04 #define WLAN_DISABLE_COEX_IN_ROAM 0x10 /* default */ #define WLAN_KEEP_COEX_IN_ROAM 0x20 #define WLAN_STOMPBT_IN_ROAM 0x40 #define WLAN_DISABLE_COEX_IN_SCAN 0x100 /* default */ #define WLAN_KEEP_COEX_IN_SCAN 0x200 #define WLAN_STOMPBT_IN_SCAN 0x400 #define WLAN_DISABLE_COEX_BT_OFF 0x1000 /* default */ #define WLAN_KEEP_COEX_BT_OFF 0x2000 #define WLAN_STOMPBT_BT_OFF 0x4000 typedef PREPACK struct { A_UINT32 period; A_UINT32 dutycycle; A_UINT8 stompbt; A_UINT8 policy; } POSTPACK WLAN_PROTECT_POLICY_TYPE; typedef PREPACK struct { PREPACK union { WLAN_PROTECT_POLICY_TYPE protectParams; A_UINT16 wlanCtrlFlags; } POSTPACK info; A_UINT8 paramType; } POSTPACK BT_PARAMS_MISC; typedef PREPACK struct { PREPACK union { BT_PARAMS_SCO scoParams; BT_PARAMS_A2DP a2dpParams; BT_PARAMS_MISC miscParams; BT_COEX_REGS regs; } POSTPACK info; A_UINT8 paramType; } POSTPACK WMI_SET_BT_PARAMS_CMD; /* * Command Replies */ /* * WMI_GET_CHANNEL_LIST_CMDID reply */ typedef PREPACK struct { A_UINT8 reserved1; A_UINT8 numChannels; /* number of channels in reply */ A_UINT16 channelList[1]; /* channel in Mhz */ } POSTPACK WMI_CHANNEL_LIST_REPLY; typedef enum { A_SUCCEEDED = A_OK, A_FAILED_DELETE_STREAM_DOESNOT_EXIST=250, A_SUCCEEDED_MODIFY_STREAM=251, A_FAILED_INVALID_STREAM = 252, A_FAILED_MAX_THINSTREAMS = 253, A_FAILED_CREATE_REMOVE_PSTREAM_FIRST = 254, } PSTREAM_REPLY_STATUS; /* * List of Events (target to host) */ typedef enum { WMI_READY_EVENTID = 0x1001, WMI_CONNECT_EVENTID, WMI_DISCONNECT_EVENTID, WMI_BSSINFO_EVENTID, WMI_CMDERROR_EVENTID, WMI_REGDOMAIN_EVENTID, WMI_PSTREAM_TIMEOUT_EVENTID, WMI_NEIGHBOR_REPORT_EVENTID, WMI_TKIP_MICERR_EVENTID, WMI_SCAN_COMPLETE_EVENTID, WMI_REPORT_STATISTICS_EVENTID, WMI_RSSI_THRESHOLD_EVENTID, WMI_ERROR_REPORT_EVENTID, WMI_OPT_RX_FRAME_EVENTID, WMI_REPORT_ROAM_TBL_EVENTID, WMI_EXTENSION_EVENTID, WMI_CAC_EVENTID, WMI_SNR_THRESHOLD_EVENTID, WMI_LQ_THRESHOLD_EVENTID, WMI_TX_RETRY_ERR_EVENTID, WMI_REPORT_ROAM_DATA_EVENTID, WMI_TEST_EVENTID, WMI_APLIST_EVENTID, WMI_GET_WOW_LIST_EVENTID, WMI_GET_PMKID_LIST_EVENTID } WMI_EVENT_ID; typedef enum { WMI_11A_CAPABILITY = 1, WMI_11G_CAPABILITY = 2, WMI_11AG_CAPABILITY = 3, } WMI_PHY_CAPABILITY; typedef PREPACK struct { A_UINT8 macaddr[ATH_MAC_LEN]; A_UINT8 phyCapability; /* WMI_PHY_CAPABILITY */ } POSTPACK WMI_READY_EVENT; /* * Connect Event */ typedef PREPACK struct { A_UINT16 channel; A_UINT8 bssid[ATH_MAC_LEN]; A_UINT16 listenInterval; A_UINT16 beaconInterval; A_UINT32 networkType; A_UINT8 beaconIeLen; A_UINT8 assocReqLen; A_UINT8 assocRespLen; A_UINT8 assocInfo[1]; } POSTPACK WMI_CONNECT_EVENT; /* * Disconnect Event */ typedef enum { NO_NETWORK_AVAIL = 0x01, LOST_LINK = 0x02, /* bmiss */ DISCONNECT_CMD = 0x03, BSS_DISCONNECTED = 0x04, AUTH_FAILED = 0x05, ASSOC_FAILED = 0x06, NO_RESOURCES_AVAIL = 0x07, CSERV_DISCONNECT = 0x08, INVALID_PROFILE = 0x0a, DOT11H_CHANNEL_SWITCH = 0x0b, } WMI_DISCONNECT_REASON; typedef PREPACK struct { A_UINT16 protocolReasonStatus; /* reason code, see 802.11 spec. */ A_UINT8 bssid[ATH_MAC_LEN]; /* set if known */ A_UINT8 disconnectReason ; /* see WMI_DISCONNECT_REASON */ A_UINT8 assocRespLen; A_UINT8 assocInfo[1]; } POSTPACK WMI_DISCONNECT_EVENT; /* * BSS Info Event. * Mechanism used to inform host of the presence and characteristic of * wireless networks present. Consists of bss info header followed by * the beacon or probe-response frame body. The 802.11 header is not included. */ typedef enum { BEACON_FTYPE = 0x1, PROBERESP_FTYPE, ACTION_MGMT_FTYPE, } WMI_BI_FTYPE; enum { BSS_ELEMID_CHANSWITCH = 0x01, BSS_ELEMID_ATHEROS = 0x02, }; typedef PREPACK struct { A_UINT16 channel; A_UINT8 frameType; /* see WMI_BI_FTYPE */ A_UINT8 snr; A_INT16 rssi; A_UINT8 bssid[ATH_MAC_LEN]; A_UINT32 ieMask; } POSTPACK WMI_BSS_INFO_HDR; /* * Command Error Event */ typedef enum { INVALID_PARAM = 0x01, ILLEGAL_STATE = 0x02, INTERNAL_ERROR = 0x03, } WMI_ERROR_CODE; typedef PREPACK struct { A_UINT16 commandId; A_UINT8 errorCode; } POSTPACK WMI_CMD_ERROR_EVENT; /* * New Regulatory Domain Event */ typedef PREPACK struct { A_UINT32 regDomain; } POSTPACK WMI_REG_DOMAIN_EVENT; typedef PREPACK struct { A_UINT8 trafficClass; } POSTPACK WMI_PSTREAM_TIMEOUT_EVENT; /* * The WMI_NEIGHBOR_REPORT Event is generated by the target to inform * the host of BSS's it has found that matches the current profile. * It can be used by the host to cache PMKs and/to initiate pre-authentication * if the BSS supports it. The first bssid is always the current associated * BSS. * The bssid and bssFlags information repeats according to the number * or APs reported. */ typedef enum { WMI_DEFAULT_BSS_FLAGS = 0x00, WMI_PREAUTH_CAPABLE_BSS = 0x01, WMI_PMKID_VALID_BSS = 0x02, } WMI_BSS_FLAGS; typedef PREPACK struct { A_UINT8 bssid[ATH_MAC_LEN]; A_UINT8 bssFlags; /* see WMI_BSS_FLAGS */ } POSTPACK WMI_NEIGHBOR_INFO; typedef PREPACK struct { A_INT8 numberOfAps; WMI_NEIGHBOR_INFO neighbor[1]; } POSTPACK WMI_NEIGHBOR_REPORT_EVENT; /* * TKIP MIC Error Event */ typedef PREPACK struct { A_UINT8 keyid; A_UINT8 ismcast; } POSTPACK WMI_TKIP_MICERR_EVENT; /* * WMI_SCAN_COMPLETE_EVENTID - no parameters (old), staus parameter (new) */ typedef PREPACK struct { A_STATUS status; } POSTPACK WMI_SCAN_COMPLETE_EVENT; #define MAX_OPT_DATA_LEN 1400 /* * WMI_SET_ADHOC_BSSID_CMDID */ typedef PREPACK struct { A_UINT8 bssid[ATH_MAC_LEN]; } POSTPACK WMI_SET_ADHOC_BSSID_CMD; /* * WMI_SET_OPT_MODE_CMDID */ typedef enum { SPECIAL_OFF, SPECIAL_ON, } OPT_MODE_TYPE; typedef PREPACK struct { A_UINT8 optMode; } POSTPACK WMI_SET_OPT_MODE_CMD; /* * WMI_TX_OPT_FRAME_CMDID */ typedef enum { OPT_PROBE_REQ = 0x01, OPT_PROBE_RESP = 0x02, OPT_CPPP_START = 0x03, OPT_CPPP_STOP = 0x04, } WMI_OPT_FTYPE; typedef PREPACK struct { A_UINT16 optIEDataLen; A_UINT8 frmType; A_UINT8 dstAddr[ATH_MAC_LEN]; A_UINT8 bssid[ATH_MAC_LEN]; A_UINT8 reserved; /* For alignment */ A_UINT8 optIEData[1]; } POSTPACK WMI_OPT_TX_FRAME_CMD; /* * Special frame receive Event. * Mechanism used to inform host of the receiption of the special frames. * Consists of special frame info header followed by special frame body. * The 802.11 header is not included. */ typedef PREPACK struct { A_UINT16 channel; A_UINT8 frameType; /* see WMI_OPT_FTYPE */ A_INT8 snr; A_UINT8 srcAddr[ATH_MAC_LEN]; A_UINT8 bssid[ATH_MAC_LEN]; } POSTPACK WMI_OPT_RX_INFO_HDR; /* * Reporting statistics. */ typedef PREPACK struct { A_UINT32 tx_packets; A_UINT32 tx_bytes; A_UINT32 tx_unicast_pkts; A_UINT32 tx_unicast_bytes; A_UINT32 tx_multicast_pkts; A_UINT32 tx_multicast_bytes; A_UINT32 tx_broadcast_pkts; A_UINT32 tx_broadcast_bytes; A_UINT32 tx_rts_success_cnt; A_UINT32 tx_packet_per_ac[4]; A_UINT32 tx_errors_per_ac[4]; A_UINT32 tx_errors; A_UINT32 tx_failed_cnt; A_UINT32 tx_retry_cnt; A_UINT32 tx_rts_fail_cnt; A_INT32 tx_unicast_rate; }POSTPACK tx_stats_t; typedef PREPACK struct { A_UINT32 rx_packets; A_UINT32 rx_bytes; A_UINT32 rx_unicast_pkts; A_UINT32 rx_unicast_bytes; A_UINT32 rx_multicast_pkts; A_UINT32 rx_multicast_bytes; A_UINT32 rx_broadcast_pkts; A_UINT32 rx_broadcast_bytes; A_UINT32 rx_fragment_pkt; A_UINT32 rx_errors; A_UINT32 rx_crcerr; A_UINT32 rx_key_cache_miss; A_UINT32 rx_decrypt_err; A_UINT32 rx_duplicate_frames; A_INT32 rx_unicast_rate; }POSTPACK rx_stats_t; typedef PREPACK struct { A_UINT32 tkip_local_mic_failure; A_UINT32 tkip_counter_measures_invoked; A_UINT32 tkip_replays; A_UINT32 tkip_format_errors; A_UINT32 ccmp_format_errors; A_UINT32 ccmp_replays; }POSTPACK tkip_ccmp_stats_t; typedef PREPACK struct { A_UINT32 power_save_failure_cnt; }POSTPACK pm_stats_t; typedef PREPACK struct { A_UINT32 cs_bmiss_cnt; A_UINT32 cs_lowRssi_cnt; A_UINT16 cs_connect_cnt; A_UINT16 cs_disconnect_cnt; A_INT16 cs_aveBeacon_rssi; A_UINT16 cs_roam_count; A_UINT16 cs_rssi; A_UINT8 cs_snr; A_UINT8 cs_aveBeacon_snr; A_UINT8 cs_lastRoam_msec; } POSTPACK cserv_stats_t; typedef PREPACK struct { tx_stats_t tx_stats; rx_stats_t rx_stats; tkip_ccmp_stats_t tkipCcmpStats; }POSTPACK wlan_net_stats_t; typedef PREPACK struct { A_UINT32 wow_num_pkts_dropped; A_UINT16 wow_num_events_discarded; A_UINT8 wow_num_host_pkt_wakeups; A_UINT8 wow_num_host_event_wakeups; } POSTPACK wlan_wow_stats_t; typedef PREPACK struct { A_UINT32 lqVal; A_INT32 noise_floor_calibation; pm_stats_t pmStats; wlan_net_stats_t txrxStats; wlan_wow_stats_t wowStats; cserv_stats_t cservStats; } POSTPACK WMI_TARGET_STATS; /* * WMI_RSSI_THRESHOLD_EVENTID. * Indicate the RSSI events to host. Events are indicated when we breach a * thresold value. */ typedef enum{ WMI_RSSI_THRESHOLD1_ABOVE = 0, WMI_RSSI_THRESHOLD2_ABOVE, WMI_RSSI_THRESHOLD3_ABOVE, WMI_RSSI_THRESHOLD4_ABOVE, WMI_RSSI_THRESHOLD5_ABOVE, WMI_RSSI_THRESHOLD6_ABOVE, WMI_RSSI_THRESHOLD1_BELOW, WMI_RSSI_THRESHOLD2_BELOW, WMI_RSSI_THRESHOLD3_BELOW, WMI_RSSI_THRESHOLD4_BELOW, WMI_RSSI_THRESHOLD5_BELOW, WMI_RSSI_THRESHOLD6_BELOW }WMI_RSSI_THRESHOLD_VAL; typedef PREPACK struct { A_INT16 rssi; A_UINT8 range; }POSTPACK WMI_RSSI_THRESHOLD_EVENT; /* * WMI_ERROR_REPORT_EVENTID */ typedef enum{ WMI_TARGET_PM_ERR_FAIL = 0x00000001, WMI_TARGET_KEY_NOT_FOUND = 0x00000002, WMI_TARGET_DECRYPTION_ERR = 0x00000004, WMI_TARGET_BMISS = 0x00000008, WMI_PSDISABLE_NODE_JOIN = 0x00000010, WMI_TARGET_COM_ERR = 0x00000020, WMI_TARGET_FATAL_ERR = 0x00000040 } WMI_TARGET_ERROR_VAL; typedef PREPACK struct { A_UINT32 errorVal; }POSTPACK WMI_TARGET_ERROR_REPORT_EVENT; typedef PREPACK struct { A_UINT8 retrys; }POSTPACK WMI_TX_RETRY_ERR_EVENT; typedef enum{ WMI_SNR_THRESHOLD1_ABOVE = 1, WMI_SNR_THRESHOLD1_BELOW, WMI_SNR_THRESHOLD2_ABOVE, WMI_SNR_THRESHOLD2_BELOW, WMI_SNR_THRESHOLD3_ABOVE, WMI_SNR_THRESHOLD3_BELOW, WMI_SNR_THRESHOLD4_ABOVE, WMI_SNR_THRESHOLD4_BELOW } WMI_SNR_THRESHOLD_VAL; typedef PREPACK struct { A_UINT8 range; /* WMI_SNR_THRESHOLD_VAL */ A_UINT8 snr; }POSTPACK WMI_SNR_THRESHOLD_EVENT; typedef enum{ WMI_LQ_THRESHOLD1_ABOVE = 1, WMI_LQ_THRESHOLD1_BELOW, WMI_LQ_THRESHOLD2_ABOVE, WMI_LQ_THRESHOLD2_BELOW, WMI_LQ_THRESHOLD3_ABOVE, WMI_LQ_THRESHOLD3_BELOW, WMI_LQ_THRESHOLD4_ABOVE, WMI_LQ_THRESHOLD4_BELOW } WMI_LQ_THRESHOLD_VAL; typedef PREPACK struct { A_INT32 lq; A_UINT8 range; /* WMI_LQ_THRESHOLD_VAL */ }POSTPACK WMI_LQ_THRESHOLD_EVENT; /* * WMI_REPORT_ROAM_TBL_EVENTID */ #define MAX_ROAM_TBL_CAND 5 typedef PREPACK struct { A_INT32 roam_util; A_UINT8 bssid[ATH_MAC_LEN]; A_INT8 rssi; A_INT8 rssidt; A_INT8 last_rssi; A_INT8 util; A_INT8 bias; A_UINT8 reserved; /* For alignment */ } POSTPACK WMI_BSS_ROAM_INFO; typedef PREPACK struct { A_UINT16 roamMode; A_UINT16 numEntries; WMI_BSS_ROAM_INFO bssRoamInfo[1]; } POSTPACK WMI_TARGET_ROAM_TBL; /* * WMI_CAC_EVENTID */ typedef enum { CAC_INDICATION_ADMISSION = 0x00, CAC_INDICATION_ADMISSION_RESP = 0x01, CAC_INDICATION_DELETE = 0x02, CAC_INDICATION_NO_RESP = 0x03, }CAC_INDICATION; #define WMM_TSPEC_IE_LEN 63 typedef PREPACK struct { A_UINT8 ac; A_UINT8 cac_indication; A_UINT8 statusCode; A_UINT8 tspecSuggestion[WMM_TSPEC_IE_LEN]; }POSTPACK WMI_CAC_EVENT; /* * WMI_APLIST_EVENTID */ typedef enum { APLIST_VER1 = 1, } APLIST_VER; typedef PREPACK struct { A_UINT8 bssid[ATH_MAC_LEN]; A_UINT16 channel; } POSTPACK WMI_AP_INFO_V1; typedef PREPACK union { WMI_AP_INFO_V1 apInfoV1; } POSTPACK WMI_AP_INFO; typedef PREPACK struct { A_UINT8 apListVer; A_UINT8 numAP; WMI_AP_INFO apList[1]; } POSTPACK WMI_APLIST_EVENT; /* * developer commands */ /* * WMI_SET_BITRATE_CMDID * * Get bit rate cmd uses same definition as set bit rate cmd */ typedef enum { RATE_AUTO = -1, RATE_1Mb = 0, RATE_2Mb = 1, RATE_5_5Mb = 2, RATE_11Mb = 3, RATE_6Mb = 4, RATE_9Mb = 5, RATE_12Mb = 6, RATE_18Mb = 7, RATE_24Mb = 8, RATE_36Mb = 9, RATE_48Mb = 10, RATE_54Mb = 11, } WMI_BIT_RATE; typedef PREPACK struct { A_INT8 rateIndex; /* see WMI_BIT_RATE */ } POSTPACK WMI_BIT_RATE_CMD, WMI_BIT_RATE_REPLY; /* * WMI_SET_FIXRATES_CMDID * * Get fix rates cmd uses same definition as set fix rates cmd */ typedef enum { FIX_RATE_1Mb = 0x1, FIX_RATE_2Mb = 0x2, FIX_RATE_5_5Mb = 0x4, FIX_RATE_11Mb = 0x8, FIX_RATE_6Mb = 0x10, FIX_RATE_9Mb = 0x20, FIX_RATE_12Mb = 0x40, FIX_RATE_18Mb = 0x80, FIX_RATE_24Mb = 0x100, FIX_RATE_36Mb = 0x200, FIX_RATE_48Mb = 0x400, FIX_RATE_54Mb = 0x800, } WMI_FIX_RATES_MASK; typedef PREPACK struct { A_UINT16 fixRateMask; /* see WMI_BIT_RATE */ } POSTPACK WMI_FIX_RATES_CMD, WMI_FIX_RATES_REPLY; /* * WMI_SET_RECONNECT_AUTH_MODE_CMDID * * Set authentication mode */ typedef enum { RECONN_DO_AUTH = 0x00, RECONN_NOT_AUTH = 0x01 } WMI_AUTH_MODE; typedef PREPACK struct { A_UINT8 mode; } POSTPACK WMI_SET_AUTH_MODE_CMD; /* * WMI_SET_REASSOC_MODE_CMDID * * Set authentication mode */ typedef enum { REASSOC_DO_DISASSOC = 0x00, REASSOC_DONOT_DISASSOC = 0x01 } WMI_REASSOC_MODE; typedef PREPACK struct { A_UINT8 mode; }POSTPACK WMI_SET_REASSOC_MODE_CMD; typedef enum { ROAM_DATA_TIME = 1, /* Get The Roam Time Data */ } ROAM_DATA_TYPE; typedef PREPACK struct { A_UINT32 disassoc_time; A_UINT32 no_txrx_time; A_UINT32 assoc_time; A_UINT32 allow_txrx_time; A_UINT32 last_data_txrx_time; A_UINT32 first_data_txrx_time; A_UINT8 disassoc_bssid[ATH_MAC_LEN]; A_INT8 disassoc_bss_rssi; A_UINT8 assoc_bssid[ATH_MAC_LEN]; A_INT8 assoc_bss_rssi; } POSTPACK WMI_TARGET_ROAM_TIME; typedef PREPACK struct { PREPACK union { WMI_TARGET_ROAM_TIME roamTime; } POSTPACK u; A_UINT8 roamDataType ; } POSTPACK WMI_TARGET_ROAM_DATA; typedef enum { WMI_WMM_DISABLED = 0, WMI_WMM_ENABLED } WMI_WMM_STATUS; typedef PREPACK struct { A_UINT8 status; }POSTPACK WMI_SET_WMM_CMD; typedef enum { WMI_TXOP_DISABLED = 0, WMI_TXOP_ENABLED } WMI_TXOP_CFG; typedef PREPACK struct { A_UINT8 txopEnable; }POSTPACK WMI_SET_WMM_TXOP_CMD; typedef PREPACK struct { A_UINT8 keepaliveInterval; } POSTPACK WMI_SET_KEEPALIVE_CMD; typedef PREPACK struct { A_BOOL configured; A_UINT8 keepaliveInterval; } POSTPACK WMI_GET_KEEPALIVE_CMD; /* * Add Application specified IE to a management frame */ #define WMI_MAX_IE_LEN 78 typedef PREPACK struct { A_UINT8 mgmtFrmType; /* one of WMI_MGMT_FRAME_TYPE */ A_UINT8 ieLen; /* Length of the IE that should be added to the MGMT frame */ A_UINT8 ieInfo[1]; } POSTPACK WMI_SET_APPIE_CMD; /* * Notify the WSC registration status to the target */ #define WSC_REG_ACTIVE 1 #define WSC_REG_INACTIVE 0 /* Generic Hal Interface for setting hal paramters. */ /* Add new Set HAL Param cmdIds here for newer params */ typedef enum { WHAL_SETCABTO_CMDID = 1, }WHAL_CMDID; typedef PREPACK struct { A_UINT8 cabTimeOut; } POSTPACK WHAL_SETCABTO_PARAM; typedef PREPACK struct { A_UINT8 whalCmdId; A_UINT8 data[1]; } POSTPACK WHAL_PARAMCMD; #define WOW_MAX_FILTER_LISTS 1 /*4*/ #define WOW_MAX_FILTERS_PER_LIST 4 #define WOW_PATTERN_SIZE 64 #define WOW_MASK_SIZE 64 typedef PREPACK struct { A_UINT8 wow_valid_filter; A_UINT8 wow_filter_id; A_UINT8 wow_filter_size; A_UINT8 wow_filter_offset; A_UINT8 wow_filter_mask[WOW_MASK_SIZE]; A_UINT8 wow_filter_pattern[WOW_PATTERN_SIZE]; } POSTPACK WOW_FILTER; typedef PREPACK struct { A_UINT8 wow_valid_list; A_UINT8 wow_list_id; A_UINT8 wow_num_filters; A_UINT8 wow_total_list_size; WOW_FILTER list[WOW_MAX_FILTERS_PER_LIST]; } POSTPACK WOW_FILTER_LIST; typedef PREPACK struct { A_BOOL awake; A_BOOL asleep; } POSTPACK WMI_SET_HOST_SLEEP_MODE_CMD; typedef PREPACK struct { A_BOOL enable_wow; } POSTPACK WMI_SET_WOW_MODE_CMD; typedef PREPACK struct { A_UINT8 filter_list_id; } POSTPACK WMI_GET_WOW_LIST_CMD; /* * WMI_GET_WOW_LIST_CMD reply */ typedef PREPACK struct { A_UINT8 num_filters; /* number of patterns in reply */ A_UINT8 this_filter_num; /* this is filter # x of total num_filters */ A_UINT8 wow_mode; A_UINT8 host_mode; WOW_FILTER wow_filters[1]; } POSTPACK WMI_GET_WOW_LIST_REPLY; typedef PREPACK struct { A_UINT8 filter_list_id; A_UINT8 filter_size; A_UINT8 filter_offset; A_UINT8 filter[1]; } POSTPACK WMI_ADD_WOW_PATTERN_CMD; typedef PREPACK struct { A_UINT16 filter_list_id; A_UINT16 filter_id; } POSTPACK WMI_DEL_WOW_PATTERN_CMD; typedef PREPACK struct { A_UINT8 macaddr[ATH_MAC_LEN]; } POSTPACK WMI_SET_MAC_ADDRESS_CMD; /* * WMI_SET_AKMP_PARAMS_CMD */ #define WMI_AKMP_MULTI_PMKID_EN 0x000001 typedef PREPACK struct { A_UINT32 akmpInfo; } POSTPACK WMI_SET_AKMP_PARAMS_CMD; typedef PREPACK struct { A_UINT8 pmkid[WMI_PMKID_LEN]; } POSTPACK WMI_PMKID; /* * WMI_SET_PMKID_LIST_CMD */ #define WMI_MAX_PMKID_CACHE 8 typedef PREPACK struct { A_UINT32 numPMKID; WMI_PMKID pmkidList[WMI_MAX_PMKID_CACHE]; } POSTPACK WMI_SET_PMKID_LIST_CMD; /* * WMI_GET_PMKID_LIST_CMD Reply * Following the Number of PMKIDs is the list of PMKIDs */ typedef PREPACK struct { A_UINT32 numPMKID; WMI_PMKID pmkidList[1]; } POSTPACK WMI_PMKID_LIST_REPLY; /* index used for priority streams */ typedef enum { WMI_NOT_MAPPED = -1, WMI_CONTROL_PRI = 0, WMI_BEST_EFFORT_PRI = 1, WMI_LOW_PRI = 2, WMI_HIGH_PRI = 3, WMI_HIGHEST_PRI, WMI_PRI_MAX_COUNT } WMI_PRI_STREAM_ID; #ifndef ATH_TARGET #include "athendpack.h" #endif #ifdef __cplusplus } #endif #endif /* _WMI_H_ */