1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36#ifndef _WMI_THIN_H_
37#define _WMI_THIN_H_
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43
44typedef enum {
45 WMI_THIN_CONFIG_CMDID = 0x8000,
46 WMI_THIN_SET_MIB_CMDID,
47 WMI_THIN_GET_MIB_CMDID,
48 WMI_THIN_JOIN_CMDID,
49
50 WMI_THIN_RESERVED_END_CMDID = 0x8fff
51} WMI_THIN_COMMAND_ID;
52
53typedef enum{
54 TEMPLATE_FRM_FIRST = 0,
55 TEMPLATE_FRM_PROBE_REQ =TEMPLATE_FRM_FIRST,
56 TEMPLATE_FRM_BEACON,
57 TEMPLATE_FRM_PROBE_RESP,
58 TEMPLATE_FRM_NULL,
59 TEMPLATE_FRM_QOS_NULL,
60 TEMPLATE_FRM_PSPOLL,
61 TEMPLATE_FRM_MAX
62}WMI_TEMPLATE_FRM_TYPE;
63
64
65
66#define TEMPLATE_FRM_LEN_PROBE_REQ (256)
67#define TEMPLATE_FRM_LEN_BEACON (256)
68#define TEMPLATE_FRM_LEN_PROBE_RESP (256)
69#define TEMPLATE_FRM_LEN_NULL (32)
70#define TEMPLATE_FRM_LEN_QOS_NULL (32)
71#define TEMPLATE_FRM_LEN_PSPOLL (32)
72#define TEMPLATE_FRM_LEN_SUM (TEMPLATE_FRM_LEN_PROBE_REQ + TEMPLATE_FRM_LEN_BEACON + TEMPLATE_FRM_LEN_PROBE_RESP + \
73 TEMPLATE_FRM_LEN_NULL + TEMPLATE_FRM_LEN_QOS_NULL + TEMPLATE_FRM_LEN_PSPOLL)
74
75
76
77
78
79
80
81
82
83
84
85#define WMI_WRT_VER_TYPE 0x00000001
86#define WMI_WRT_DURATION 0x00000002
87#define WMI_WRT_DIRECTION 0x00000004
88#define WMI_WRT_POWER 0x00000008
89#define WMI_WRT_WEP 0x00000010
90#define WMI_WRT_MORE 0x00000020
91#define WMI_WRT_BSSID 0x00000040
92#define WMI_WRT_QOS 0x00000080
93#define WMI_WRT_SEQNO 0x00000100
94#define WMI_GUARD_TX 0x00000200
95#define WMI_WRT_DEFAULT_CONFIG (WMI_WRT_VER_TYPE | WMI_WRT_DURATION | WMI_WRT_DIRECTION | \
96 WMI_WRT_POWER | WMI_WRT_MORE | WMI_WRT_WEP | WMI_WRT_BSSID | \
97 WMI_WRT_QOS | WMI_WRT_SEQNO | WMI_GUARD_TX)
98
99
100
101
102
103typedef PREPACK struct {
104 A_UINT8 version;
105 A_UINT8 countThreshold;
106 A_UINT16 timeThreshold;
107} POSTPACK WMI_THIN_CONFIG_TXCOMPLETE;
108
109
110
111
112
113typedef PREPACK struct {
114 A_UINT8 enable;
115 A_UINT8 reserved[3];
116} POSTPACK WMI_THIN_CONFIG_DECRYPT_ERR;
117
118
119
120
121typedef PREPACK struct {
122 A_UINT32 rules;
123} POSTPACK WMI_THIN_CONFIG_TX_MAC_RULES;
124
125
126
127
128typedef PREPACK struct {
129 A_UINT32 rules;
130} POSTPACK WMI_THIN_CONFIG_RX_FILTER_RULES;
131
132
133
134
135
136typedef PREPACK struct {
137#define WMI_THIN_CFG_TXCOMP 0x00000001
138#define WMI_THIN_CFG_DECRYPT 0x00000002
139#define WMI_THIN_CFG_MAC_RULES 0x00000004
140#define WMI_THIN_CFG_FILTER_RULES 0x00000008
141 A_UINT32 cfgField;
142 A_UINT16 length;
143 A_UINT8 reserved[2];
144} POSTPACK WMI_THIN_CONFIG_CMD;
145
146
147enum {
148 MIB_ID_STA_MAC = 1,
149 MIB_ID_RX_LIFE_TIME,
150 MIB_ID_SLOT_TIME,
151 MIB_ID_RTS_THRESHOLD,
152 MIB_ID_CTS_TO_SELF,
153 MIB_ID_TEMPLATE_FRAME,
154 MIB_ID_RXFRAME_FILTER,
155 MIB_ID_BEACON_FILTER_TABLE,
156 MIB_ID_BEACON_FILTER,
157 MIB_ID_BEACON_LOST_COUNT,
158 MIB_ID_RSSI_THRESHOLD,
159 MIB_ID_HT_CAP,
160 MIB_ID_HT_OP,
161 MIB_ID_HT_2ND_BEACON,
162 MIB_ID_HT_BLOCK_ACK,
163 MIB_ID_PREAMBLE,
164
165
166
167
168
169
170
171
172
173
174
175
176};
177
178typedef PREPACK struct {
179 A_UINT8 addr[ATH_MAC_LEN];
180} POSTPACK WMI_THIN_MIB_STA_MAC;
181
182typedef PREPACK struct {
183 A_UINT32 time;
184} POSTPACK WMI_THIN_MIB_RX_LIFE_TIME;
185
186typedef PREPACK struct {
187 A_UINT8 enable;
188} POSTPACK WMI_THIN_MIB_CTS_TO_SELF;
189
190typedef PREPACK struct {
191 A_UINT32 time;
192} POSTPACK WMI_THIN_MIB_SLOT_TIME;
193
194typedef PREPACK struct {
195 A_UINT16 length;
196} POSTPACK WMI_THIN_MIB_RTS_THRESHOLD;
197
198typedef PREPACK struct {
199 A_UINT8 type;
200 A_UINT8 rate;
201 A_UINT16 length;
202} POSTPACK WMI_THIN_MIB_TEMPLATE_FRAME;
203
204typedef PREPACK struct {
205#define FRAME_FILTER_PROMISCUOUS 0x00000001
206#define FRAME_FILTER_BSSID 0x00000002
207 A_UINT32 filterMask;
208} POSTPACK WMI_THIN_MIB_RXFRAME_FILTER;
209
210
211#define IE_FILTER_TREATMENT_CHANGE 1
212#define IE_FILTER_TREATMENT_APPEAR 2
213
214typedef PREPACK struct {
215 A_UINT8 ie;
216 A_UINT8 treatment;
217} POSTPACK WMI_THIN_MIB_BEACON_FILTER_TABLE;
218
219typedef PREPACK struct {
220 A_UINT8 ie;
221 A_UINT8 treatment;
222 A_UINT8 oui[3];
223 A_UINT8 type;
224 A_UINT16 version;
225} POSTPACK WMI_THIN_MIB_BEACON_FILTER_TABLE_OUI;
226
227typedef PREPACK struct {
228 A_UINT16 numElements;
229 A_UINT8 entrySize;
230 A_UINT8 reserved;
231} POSTPACK WMI_THIN_MIB_BEACON_FILTER_TABLE_HEADER;
232
233typedef PREPACK struct {
234 A_UINT32 count;
235 A_UINT8 enable;
236 A_UINT8 reserved[3];
237} POSTPACK WMI_THIN_MIB_BEACON_FILTER;
238
239typedef PREPACK struct {
240 A_UINT32 count;
241} POSTPACK WMI_THIN_MIB_BEACON_LOST_COUNT;
242
243typedef PREPACK struct {
244 A_UINT8 rssi;
245 A_UINT8 tolerance;
246 A_UINT8 count;
247 A_UINT8 reserved[1];
248} POSTPACK WMI_THIN_MIB_RSSI_THRESHOLD;
249
250
251typedef PREPACK struct {
252 A_UINT32 cap;
253 A_UINT32 rxRateField;
254 A_UINT32 beamForming;
255 A_UINT8 addr[ATH_MAC_LEN];
256 A_UINT8 enable;
257 A_UINT8 stbc;
258 A_UINT8 maxAMPDU;
259 A_UINT8 msduSpacing;
260 A_UINT8 mcsFeedback;
261 A_UINT8 antennaSelCap;
262} POSTPACK WMI_THIN_MIB_HT_CAP;
263
264typedef PREPACK struct {
265 A_UINT32 infoField;
266 A_UINT32 basicRateField;
267 A_UINT8 protection;
268 A_UINT8 secondChanneloffset;
269 A_UINT8 channelWidth;
270 A_UINT8 reserved;
271} POSTPACK WMI_THIN_MIB_HT_OP;
272
273typedef PREPACK struct {
274#define SECOND_BEACON_PRIMARY 1
275#define SECOND_BEACON_EITHER 2
276#define SECOND_BEACON_SECONDARY 3
277 A_UINT8 cfg;
278 A_UINT8 reserved[3];
279} POSTPACK WMI_THIN_MIB_HT_2ND_BEACON;
280
281typedef PREPACK struct {
282 A_UINT8 txTIDField;
283 A_UINT8 rxTIDField;
284 A_UINT8 reserved[2];
285} POSTPACK WMI_THIN_MIB_HT_BLOCK_ACK;
286
287typedef PREPACK struct {
288 A_UINT8 enableLong;
289 A_UINT8 reserved[3];
290} POSTPACK WMI_THIN_MIB_PREAMBLE;
291
292typedef PREPACK struct {
293 A_UINT16 length;
294 A_UINT8 mibID;
295 A_UINT8 reserved;
296} POSTPACK WMI_THIN_SET_MIB_CMD;
297
298typedef PREPACK struct {
299 A_UINT8 mibID;
300 A_UINT8 reserved[3];
301} POSTPACK WMI_THIN_GET_MIB_CMD;
302
303typedef PREPACK struct {
304 A_UINT32 basicRateMask;
305 A_UINT32 beaconIntval;
306 A_UINT16 atimWindow;
307 A_UINT16 channel;
308 A_UINT8 networkType;
309 A_UINT8 ssidLength;
310 A_UINT8 probe;
311 A_UINT8 reserved;
312 A_UCHAR ssid[WMI_MAX_SSID_LEN];
313 A_UINT8 bssid[ATH_MAC_LEN];
314} POSTPACK WMI_THIN_JOIN_CMD;
315
316typedef PREPACK struct {
317 A_UINT16 dtim;
318 A_UINT16 aid;
319} POSTPACK WMI_THIN_POST_ASSOC_CMD;
320
321typedef enum {
322 WMI_THIN_EVENTID_RESERVED_START = 0x8000,
323 WMI_THIN_GET_MIB_EVENTID,
324 WMI_THIN_JOIN_EVENTID,
325
326
327 WMI_THIN_EVENTID_RESERVED_END = 0x8fff
328} WMI_THIN_EVENT_ID;
329
330
331typedef enum {
332 WMI_THIN_JOIN_RES_SUCCESS = 0,
333 WMI_THIN_JOIN_RES_FAIL,
334 WMI_THIN_JOIN_RES_TIMEOUT,
335 WMI_THIN_JOIN_RES_BAD_PARAM,
336}WMI_THIN_JOIN_RESULT;
337
338typedef PREPACK struct {
339 A_UINT8 result;
340 A_UINT8 reserved[3];
341} POSTPACK WMI_THIN_JOIN_EVENT;
342
343#ifdef __cplusplus
344}
345#endif
346
347#endif
348