📄 wmi.h
字号:
/* * Copyright (c) 2004-2006 Atheros Communications Inc. * All rights reserved. * * 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. * * $Id: //depot/sw/releases/etnaGPL1.1/include/wmi.h#1 $ * */#ifndef _WMI_H_#define _WMI_H_#include "wmix.h"#ifdef __cplusplusextern "C" {#endif#define WMI_PROTOCOL_VERSION 0x0001#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/* * Data Path */typedef struct { A_UINT8 dstMac[ATH_MAC_LEN]; A_UINT8 srcMac[ATH_MAC_LEN]; A_UINT16 typeOrLen;} __ATTRIB_PACK ATH_MAC_HDR;typedef struct { A_UINT8 dsap; A_UINT8 ssap; A_UINT8 cntl; A_UINT8 orgCode[3]; A_UINT16 etherType;} __ATTRIB_PACK ATH_LLC_SNAP_HDR;typedef enum { DATA_MSGTYPE = 0x0, CNTL_MSGTYPE, SYNC_MSGTYPE} WMI_MSG_TYPE;typedef 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))} __ATTRIB_PACK WMI_DATA_HDR;/* * Control Path */typedef struct { A_UINT16 commandId;} __ATTRIB_PACK 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_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, /* * Developer commands starts at 0xF000 */ WMI_SET_BITRATE_CMDID = 0xF000, WMI_GET_BITRATE_CMDID,} WMI_COMMAND_ID;/* * Connect Command */typedef enum { INFRA_NETWORK = 0x01, ADHOC_NETWORK = 0x02,} NETWORK_TYPE;typedef enum { OPEN_AUTH = 0x01, SHARED_AUTH = 0x02, LEAP_AUTH = 0x04,} 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 32typedef 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];} __ATTRIB_PACK WMI_CONNECT_CMD;/* * WMI_RECONNECT_CMDID */typedef struct { A_UINT16 channel; /* hint */ A_UINT8 bssid[ATH_MAC_LEN]; /* mandatory if set */} __ATTRIB_PACK 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;typedef 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];} __ATTRIB_PACK WMI_ADD_CIPHER_KEY_CMD;/* * WMI_DELETE_CIPHER_KEY_CMDID */typedef struct { A_UINT8 keyIndex;} __ATTRIB_PACK WMI_DELETE_CIPHER_KEY_CMD;#define WMI_KRK_LEN 16/* * WMI_ADD_KRK_CMDID */typedef struct { A_UINT8 krk[WMI_KRK_LEN];} __ATTRIB_PACK 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 struct { A_UINT8 cm_en; /* WMI_TKIP_CM_CONTROL */} __ATTRIB_PACK WMI_SET_TKIP_COUNTERMEASURES_CMD;/* * WMI_SET_PMKID_CMDID */typedef enum { PMKID_DISABLE = 0, PMKID_ENABLE = 1,} PMKID_ENABLE_FLG;typedef struct { A_UINT8 bssid[ATH_MAC_LEN]; A_UINT8 enable; /* PMKID_ENABLE_FLG */ A_UINT8 pmkid[16];} __ATTRIB_PACK WMI_SET_PMKID_CMD;/* * WMI_START_SCAN_CMD */typedef enum { WMI_LONG_SCAN = 0, WMI_SHORT_SCAN = 1,} WMI_SCAN_TYPE;typedef struct { A_UINT8 scanType; /* WMI_SCAN_TYPE */} __ATTRIB_PACK WMI_START_SCAN_CMD;/* * WMI_SET_SCAN_PARAMS_CMDID */#define WMI_SHORTSCANRATIO_DEFAULT 3typedef struct { A_UINT16 fg_start_period; /* seconds */ A_UINT16 fg_end_period; /* seconds */ A_UINT16 bg_period; /* seconds */ A_UINT16 act_chdwell_time; /* msec */ A_UINT16 pas_chdwell_time; /* msec */ A_UINT8 shortScanRatio; /* how many shorts scan for one long */} __ATTRIB_PACK 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 struct { A_UINT8 bssFilter; /* see WMI_BSS_FILTER */} __ATTRIB_PACK WMI_BSS_FILTER_CMD;/* * WMI_SET_PROBED_SSID_CMDID */#define MAX_PROBED_SSID_INDEX 5typedef 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 struct { A_UINT8 entryIndex; /* 0 to MAX_PROBED_SSID_INDEX */ A_UINT8 flag; /* WMI_SSID_FLG */ A_UINT8 ssidLength; A_UINT8 ssid[32];} __ATTRIB_PACK WMI_PROBED_SSID_CMD;/* * WMI_SET_LISTEN_INT_CMDID * The Listen interval is between 100 and 1000 TUs */#define MIN_LISTEN_INTERVAL 100#define MAX_LISTEN_INTERVAL 1000#define MIN_LISTEN_BEACONS 1#define MAX_LISTEN_BEACONS 50typedef struct { A_UINT16 listenInterval; A_UINT16 numBeacons;} __ATTRIB_PACK WMI_LISTEN_INT_CMD;/* * WMI_SET_BEACON_INT_CMDID */typedef struct { A_UINT16 beaconInterval;} __ATTRIB_PACK 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 5#define MAX_BMISS_BEACONS 50typedef struct { A_UINT16 bmissTime; A_UINT16 numBeacons;} __ATTRIB_PACK WMI_BMISS_TIME_CMD;/* * WMI_SET_POWER_MODE_CMDID */typedef enum { REC_POWER = 0x01, MAX_PERF_POWER,} WMI_POWER_MODE;typedef struct { A_UINT8 powerMode; /* WMI_POWER_MODE */} __ATTRIB_PACK WMI_POWER_MODE_CMD;/* * WMI_SET_POWER_PARAMS_CMDID */typedef enum { IGNORE_DTIM = 0x01, NORMAL_DTIM = 0x02, STICK_DTIM = 0x03,} WMI_DTIM_POLICY;typedef struct { A_UINT16 idle_period; /* msec */ A_UINT16 pspoll_number; A_UINT16 dtim_policy;} __ATTRIB_PACK WMI_POWER_PARAMS_CMD;typedef struct { A_UINT8 power_saving; A_UINT8 ttl; /* number of beacon periods */ A_UINT16 atim_windows; /* msec */ A_UINT16 timeout_value; /* msec */} __ATTRIB_PACK WMI_IBSS_PM_CAPS_CMD;/* * WMI_SET_POWERSAVE_TIMERS_CMDID */typedef struct { A_UINT16 psPollTimeout; /* msec */ A_UINT16 eospTimeout; /* msec */} __ATTRIB_PACK WMI_POWERSAVE_TIMERS_CMD;/* * WMI_SET_VOICE_PKT_SIZE_CMDID */typedef struct { A_UINT16 voicePktSize;} __ATTRIB_PACK 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 struct { A_UINT8 maxSPLen;} __ATTRIB_PACK WMI_SET_MAX_SP_LEN_CMD;/* * WMI_SET_DISC_TIMEOUT_CMDID */typedef struct { A_UINT8 disconnectTimeout; /* seconds */} __ATTRIB_PACK WMI_DISC_TIMEOUT_CMD;typedef enum { UPLINK_TRAFFIC = 0, DNLINK_TRAFFIC = 1, BIDIR_TRAFFIC = 2,} DIR_TYPE;/* * WMI_CREATE_PSTREAM_CMDID */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;typedef struct { A_UINT8 trafficClass; A_UINT8 trafficDirection; /* DIR_TYPE */ A_UINT8 rxQueueNum; A_UINT8 trafficType; /* TRAFFIC_TYPE */ A_UINT8 voicePSCapability; /* VOICEPS_CAP_TYPE */ A_UINT8 tsid; A_UINT8 userPriority; /* 802.1D user priority */ A_UINT16 nominalMSDU; /* in octects */ A_UINT16 maxMSDU; /* in octects */ 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;} __ATTRIB_PACK WMI_CREATE_PSTREAM_CMD;/* * WMI_DELETE_PSTREAM_CMDID */typedef struct { A_UINT8 txQueueNumber; A_UINT8 rxQueueNumber; A_UINT8 trafficDirection; A_UINT8 trafficClass;} __ATTRIB_PACK 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 32typedef struct { A_UINT8 phyMode; /* see WMI_PHY_MODE */ A_UINT8 numChannels; /* how many channels follow */ A_UINT16 channelList[1]; /* channels in Mhz */} __ATTRIB_PACK 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 struct WMI_RSSI_THRESHOLD_PARAMS{ A_UINT8 highThreshold_upperVal; A_UINT8 highThreshold_lowerVal; A_UINT8 lowThreshold_upperVal; A_UINT8 lowThreshold_lowerVal; A_UINT32 pollTime; /* Polling time in seconds */} __ATTRIB_PACK WMI_RSSI_THRESHOLD_PARAMS_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 struct { A_UINT32 bitmask;} __ATTRIB_PACK WMI_TARGET_ERROR_REPORT_BITMASK;/* * WMI_SET_TX_PWR_CMDID */typedef struct { A_UINT8 dbM; /* in dbM units */} __ATTRIB_PACK 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 240typedef struct { A_UINT8 ieType; A_UINT8 bufferSize; A_UINT8 assocInfo[1]; /* up to WMI_MAX_ASSOC_INFO_LEN */} __ATTRIB_PACK 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 1typedef struct { A_UINT8 badApIndex; /* 0 to WMI_MAX_BAD_AP_INDEX */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -