📄 wmi.h
字号:
*/
#define MIN_BMISS_TIME 1000
#define MAX_BMISS_TIME 5000
#define MIN_BMISS_BEACONS 5
#define MAX_BMISS_BEACONS 50
typedef struct {
A_UINT16 bmissTime;
#ifndef AR6K_FIRMWARE_1_0
A_UINT16 numBeacons;
#endif
} 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 */
} 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;
} WMI_POWER_PARAMS_CMD;
typedef struct {
A_UINT8 power_saving;
#ifndef AR6K_FIRMWARE_1_0
A_UINT8 ttl; /* number of beacon periods */
#endif
A_UINT16 atim_windows; /* msec */
#ifndef AR6K_FIRMWARE_1_0
A_UINT16 timeout_value; /* msec */
#endif
} WMI_IBSS_PM_CAPS_CMD;
/*
* WMI_SET_POWERSAVE_TIMERS_CMDID
*/
typedef struct {
A_UINT16 psPollTimeout; /* msec */
A_UINT16 eospTimeout; /* msec */
} WMI_POWERSAVE_TIMERS_CMD;
/*
* WMI_SET_VOICE_PKT_SIZE_CMDID
*/
typedef struct {
A_UINT16 voicePktSize;
} 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;
} WMI_SET_MAX_SP_LEN_CMD;
/*
* WMI_SET_DISC_TIMEOUT_CMDID
*/
typedef struct {
A_UINT8 disconnectTimeout; /* seconds */
} 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;
#ifndef AR6K_FIRMWARE_1_0
A_UINT8 trafficType; /* TRAFFIC_TYPE */
#endif
A_UINT8 voicePSCapability; /* VOICEPS_CAP_TYPE */
#ifndef AR6K_FIRMWARE_1_0
A_UINT8 tsid;
A_UINT8 userPriority; /* 802.1D user priority */
A_UINT16 nominalMSDU; /* in octects */
A_UINT16 maxMSDU; /* in octects */
#endif
A_UINT32 minServiceInt; /* in milli-sec */
A_UINT32 maxServiceInt; /* in milli-sec */
A_UINT32 inactivityInt; /* in milli-sec */
#ifndef AR6K_FIRMWARE_1_0
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;
#endif
} WMI_CREATE_PSTREAM_CMD;
/*
* WMI_DELETE_PSTREAM_CMDID
*/
typedef struct {
A_UINT8 txQueueNumber;
A_UINT8 rxQueueNumber;
A_UINT8 trafficDirection;
A_UINT8 trafficClass;
} WMI_DELETE_PSTREAM_CMD;
/*
* WMI_SET_CHANNEL_PARAMS_CMDID
*/
typedef enum {
WMI_MIN_PHY_MODE = 0,
WMI_11A_MODE = 0x1,
WMI_11G_MODE = 0x2,
WMI_11AG_MODE = 0x3,
WMI_11B_MODE = 0x4,
WMI_11GONLY_MODE = 0x5,
WMI_MAX_PHY_MODE
} WMI_PHY_MODE;
#define WMI_MAX_CHANNELS 32
typedef struct {
A_UINT8 phyMode; /* see WMI_PHY_MODE */
A_UINT8 numChannels; /* how many channels follow */
A_UINT16 channelList[1]; /* channels in Mhz */
} 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 */
} 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;
} WMI_TARGET_ERROR_REPORT_BITMASK;
/*
* WMI_SET_TX_PWR_CMDID
*/
typedef struct {
A_UINT8 dbM; /* in dbM units */
} 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 struct {
A_UINT8 ieType;
A_UINT8 bufferSize;
A_UINT8 assocInfo[1]; /* up to WMI_MAX_ASSOC_INFO_LEN */
} 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 struct {
A_UINT8 badApIndex; /* 0 to WMI_MAX_BAD_AP_INDEX */
A_UINT8 bssid[ATH_MAC_LEN];
} WMI_ADD_BAD_AP_CMD;
/*
* WMI_DELETE_BAD_AP_CMDID
*/
typedef struct {
A_UINT8 badApIndex; /* 0 to WMI_MAX_BAD_AP_INDEX */
} 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 struct {
A_UINT16 txop; /* in units of 32 usec */
A_UINT8 eCWmin;
A_UINT8 eCWmax;
A_UINT8 aifsn;
} 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 struct {
A_UINT8 frameType; /* WMI_FRAMETYPE */
A_UINT8 trafficClass; /* applies only to DATA_FRAMETYPE */
A_UINT8 maxRetries;
} 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_ROAM_CTRL_TYPE;
#define WMI_MIN_ROAM_CTRL_TYPE WMI_FORCE_ROAM
#define WMI_MAX_ROAM_CTRL_TYPE WMI_SET_HOST_BIAS
/*
* 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_DISABLE_ROAM = 4 /* disables all auto-nomous roaming
behaviour */
} WMI_ROAM_MODE;
/*
* BSS HOST BIAS INFO
*/
typedef struct {
A_UINT8 bssid[ATH_MAC_LEN];
A_INT8 bias;
} WMI_BSS_BIAS;
typedef struct {
A_UINT8 numBss;
WMI_BSS_BIAS bssBias[1];
} WMI_BSS_BIAS_INFO;
typedef struct {
A_UINT8 roamCtrlType;
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 */
} info;
} WMI_SET_ROAM_CTRL_CMD;
/*
* WMI_ENABLE_RM_CMDID
*/
typedef struct {
A_BOOL enable_radio_measurements;
} WMI_ENABLE_RM_CMD;
/*
* WMI_SET_MAX_OFFHOME_DURATION_CMDID
*/
typedef struct {
A_UINT8 max_offhome_duration;
} WMI_SET_MAX_OFFHOME_DURATION_CMD;
/*
* Command Replies
*/
/*
* WMI_GET_CHANNEL_LIST_CMDID reply
*/
typedef struct {
A_UINT8 reserved1;
A_UINT8 numChannels; /* number of channels in reply */
A_UINT16 channelList[1]; /* channel in Mhz */
} WMI_CHANNEL_LIST_REPLY;
typedef enum {
A_SUCCEEDED = A_OK,
A_MBOX1_OK = 1,
A_MBOX2_OK = 2,
A_MBOX3_OK = 3,
A_FAILED_DELETE_INVALID_MBOX = 253,
A_FAILED_CREATE_REMOVE_PSTREAM_FIRST = 254,
} PSTREAM_REPLY_STATUS;
typedef struct {
A_UINT8 status; /* PSTREAM_REPLY_STATUS */
A_UINT8 txQueueNumber;
A_UINT8 rxQueueNumber;
A_UINT8 trafficClass;
A_UINT8 trafficDirection; /* DIR_TYPE */
} WMI_CRE_PRIORITY_STREAM_REPLY;
typedef struct {
A_UINT8 status; /* PSTREAM_REPLY_STATUS */
A_UINT8 txQueueNumber;
A_UINT8 rxQueueNumber;
A_UINT8 trafficDirection; /* DIR_TYPE */
A_UINT8 trafficClass;
} WMI_DEL_PRIORITY_STREAM_REPLY;
/*
* 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,
#ifndef AR6K_FIRMWARE_1_0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -