|
1 /* |
|
2 * 802_11Defs.h |
|
3 * |
|
4 * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. |
|
5 * All rights reserved. |
|
6 * |
|
7 * This program and the accompanying materials are made available under the |
|
8 * terms of the Eclipse Public License v1.0 or BSD License which accompanies |
|
9 * this distribution. The Eclipse Public License is available at |
|
10 * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below. |
|
11 * |
|
12 * Redistribution and use in source and binary forms, with or without |
|
13 * modification, are permitted provided that the following conditions |
|
14 * are met: |
|
15 * |
|
16 * * Redistributions of source code must retain the above copyright |
|
17 * notice, this list of conditions and the following disclaimer. |
|
18 * * Redistributions in binary form must reproduce the above copyright |
|
19 * notice, this list of conditions and the following disclaimer in |
|
20 * the documentation and/or other materials provided with the |
|
21 * distribution. |
|
22 * * Neither the name Texas Instruments nor the names of its |
|
23 * contributors may be used to endorse or promote products derived |
|
24 * from this software without specific prior written permission. |
|
25 * |
|
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
29 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
30 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
31 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
32 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
33 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
34 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
35 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
36 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
37 */ |
|
38 |
|
39 |
|
40 /**************************************************************************** |
|
41 * |
|
42 * MODULE: 802_11Defs.h |
|
43 * PURPOSE: Contains 802.11 defines/structures |
|
44 * |
|
45 ****************************************************************************/ |
|
46 |
|
47 #ifndef _802_11_INFO_DEFS_H |
|
48 #define _802_11_INFO_DEFS_H |
|
49 |
|
50 #include "tidef.h" |
|
51 #include "osDot11.h" |
|
52 #ifdef XCC_MODULE_INCLUDED |
|
53 #include "osdot11XCC.h" |
|
54 #endif |
|
55 |
|
56 #define DOT11_OUI_LEN 3 |
|
57 #define DOT11_COUNTRY_STRING_LEN 3 |
|
58 #define DOT11_MAX_SUPPORTED_RATES 32 |
|
59 |
|
60 /* Maximum size of beacon or probe-request information element */ |
|
61 #define DOT11_WSC_PROBE_REQ_MAX_LENGTH 80 |
|
62 |
|
63 |
|
64 typedef enum |
|
65 { |
|
66 DOT11_B_MODE = 1, |
|
67 DOT11_A_MODE = 2, |
|
68 DOT11_G_MODE = 3, |
|
69 DOT11_DUAL_MODE = 4, |
|
70 DOT11_N_MODE = 5, |
|
71 |
|
72 DOT11_MAX_MODE |
|
73 |
|
74 } EDot11Mode; |
|
75 |
|
76 |
|
77 /* FrameControl field of the 802.11 header */ |
|
78 |
|
79 /**/ |
|
80 /* bit 15 14 13 12 11 10 9 8 7-4 3-2 1-0*/ |
|
81 /* +-------+-----+------+-----+-------+------+------+----+---------+------+----------+*/ |
|
82 /* | Order | WEP | More | Pwr | Retry | More | From | To | Subtype | Type | Protocol |*/ |
|
83 /* | | | Data | Mgmt| | Frag | DS | DS | | | Version |*/ |
|
84 /* +-------+-----+------+-----+-------+------+------+----+---------+------+----------+*/ |
|
85 /* 1 1 1 1 1 1 1 1 4 2 2*/ |
|
86 |
|
87 |
|
88 #define DOT11_FC_PROT_VERSION_MASK ( 3 << 0 ) |
|
89 #define DOT11_FC_PROT_VERSION ( 0 << 0 ) |
|
90 |
|
91 #define DOT11_FC_TYPE_MASK ( 3 << 2 ) |
|
92 typedef enum |
|
93 { |
|
94 DOT11_FC_TYPE_MGMT = ( 0 << 2 ), |
|
95 DOT11_FC_TYPE_CTRL = ( 1 << 2 ), |
|
96 DOT11_FC_TYPE_DATA = ( 2 << 2 ) |
|
97 } dot11_Fc_Type_e; |
|
98 |
|
99 #define DOT11_FC_SUB_MASK ( 0x0f << 4 ) |
|
100 typedef enum |
|
101 { |
|
102 /* Management subtypes */ |
|
103 DOT11_FC_SUB_ASSOC_REQ = ( 0 << 4 ), |
|
104 DOT11_FC_SUB_ASSOC_RESP = ( 1 << 4 ), |
|
105 DOT11_FC_SUB_REASSOC_REQ = ( 2 << 4 ), |
|
106 DOT11_FC_SUB_REASSOC_RESP = ( 3 << 4 ), |
|
107 DOT11_FC_SUB_PROBE_REQ = ( 4 << 4 ), |
|
108 DOT11_FC_SUB_PROBE_RESP = ( 5 << 4 ), |
|
109 DOT11_FC_SUB_BEACON = ( 8 << 4 ), |
|
110 DOT11_FC_SUB_ATIM = ( 9 << 4 ), |
|
111 DOT11_FC_SUB_DISASSOC = ( 10 << 4 ), |
|
112 DOT11_FC_SUB_AUTH = ( 11 << 4 ), |
|
113 DOT11_FC_SUB_DEAUTH = ( 12 << 4 ), |
|
114 DOT11_FC_SUB_ACTION = ( 13 << 4 ), |
|
115 |
|
116 /* Control subtypes */ |
|
117 DOT11_FC_SUB_BAR = ( 8 << 4 ), |
|
118 DOT11_FC_SUB_BA = ( 9 << 4 ), |
|
119 DOT11_FC_SUB_PS_POLL = ( 10 << 4 ), |
|
120 DOT11_FC_SUB_RTS = ( 11 << 4 ), |
|
121 DOT11_FC_SUB_CTS = ( 12 << 4 ), |
|
122 DOT11_FC_SUB_ACK = ( 13 << 4 ), |
|
123 DOT11_FC_SUB_CF_END = ( 14 << 4 ), |
|
124 DOT11_FC_SUB_CF_END_CF_ACK = ( 15 << 4 ), |
|
125 |
|
126 /* Data subtypes */ |
|
127 DOT11_FC_SUB_DATA = ( 0 << 4 ), |
|
128 DOT11_FC_SUB_DATA_CF_ACK = ( 1 << 4 ), |
|
129 DOT11_FC_SUB_DATA_CF_POLL = ( 2 << 4 ), |
|
130 DOT11_FC_SUB_DATA_CF_ACK_CF_POLL = ( 3 << 4 ), |
|
131 DOT11_FC_SUB_NULL_FUNCTION = ( 4 << 4 ), |
|
132 DOT11_FC_SUB_CF_ACK = ( 5 << 4 ), |
|
133 DOT11_FC_SUB_CF_POLL = ( 6 << 4 ), |
|
134 DOT11_FC_SUB_CF_ACK_CF_POLL = ( 7 << 4 ), |
|
135 DOT11_FC_SUB_DATA_QOS = ( 8 << 4 ), |
|
136 DOT11_FC_SUB_DATA_NULL_QOS = ( 12 << 4 ) |
|
137 } dot11_Fc_Sub_Type_e; |
|
138 |
|
139 #define DOT11_FC_TYPESUBTYPE_MASK ( DOT11_FC_TYPE_MASK | DOT11_FC_SUB_MASK ) |
|
140 typedef enum |
|
141 { |
|
142 DOT11_FC_ASSOC_REQ = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ASSOC_REQ ), |
|
143 DOT11_FC_ASSOC_RESP = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ASSOC_RESP ), |
|
144 DOT11_FC_REASSOC_REQ = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_REASSOC_REQ ), |
|
145 DOT11_FC_REASSOC_RESP = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_REASSOC_RESP ), |
|
146 DOT11_FC_PROBE_REQ = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_PROBE_REQ ), |
|
147 DOT11_FC_PROBE_RESP = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_PROBE_RESP ), |
|
148 DOT11_FC_BEACON = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_BEACON ), |
|
149 DOT11_FC_ATIM = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ATIM ), |
|
150 DOT11_FC_DISASSOC = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_DISASSOC ), |
|
151 DOT11_FC_AUTH = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_AUTH ), |
|
152 DOT11_FC_DEAUTH = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_DEAUTH ), |
|
153 DOT11_FC_ACTION = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ACTION ), |
|
154 DOT11_FC_PS_POLL = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_PS_POLL ), |
|
155 DOT11_FC_RTS = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_RTS ), |
|
156 DOT11_FC_CTS = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_CTS ), |
|
157 DOT11_FC_ACK = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_ACK ), |
|
158 DOT11_FC_CF_END = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_CF_END ), |
|
159 DOT11_FC_CF_END_CF_ACK = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_CF_END_CF_ACK ), |
|
160 DOT11_FC_DATA = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA ), |
|
161 DOT11_FC_DATA_CF_ACK = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_CF_ACK ), |
|
162 DOT11_FC_DATA_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_CF_POLL ), |
|
163 DOT11_FC_DATA_CF_ACK_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_CF_ACK_CF_POLL ), |
|
164 DOT11_FC_DATA_NULL_FUNCTION = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_NULL_FUNCTION ), |
|
165 DOT11_FC_CF_ACK = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_CF_ACK ), |
|
166 DOT11_FC_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_CF_POLL ), |
|
167 DOT11_FC_CF_ACK_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_CF_ACK_CF_POLL ), |
|
168 DOT11_FC_DATA_QOS = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_QOS ), |
|
169 DOT11_FC_DATA_NULL_QOS = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_NULL_QOS ) |
|
170 } dot11_Fc_Type_Sub_Type_e; |
|
171 |
|
172 typedef enum |
|
173 { |
|
174 DOT11_FC_TO_DS = ( 1 << 8 ), |
|
175 DOT11_FC_FROM_DS = ( 1 << 9 ), |
|
176 DOT11_FC_MORE_FRAG = ( 1 << 10 ), |
|
177 DOT11_FC_RETRY = ( 1 << 11 ), |
|
178 DOT11_FC_PWR_MGMT = ( 1 << 12 ), |
|
179 DOT11_FC_MORE_DATA = ( 1 << 13 ), |
|
180 DOT11_FC_WEP = ( 1 << 14 ), |
|
181 DOT11_FC_ORDER = ( 1 << 15 ) |
|
182 } dot11_Fc_Other_e; |
|
183 |
|
184 typedef enum |
|
185 { |
|
186 DOT11_CAPABILITY_ESS = ( 1 ), |
|
187 DOT11_CAPABILITY_IESS = ( 1 << 1 ), |
|
188 DOT11_CAPABILITY_CF_POLLABE = ( 1 << 2 ), |
|
189 DOT11_CAPABILITY_CF_POLL_REQ = ( 1 << 3 ), |
|
190 DOT11_CAPABILITY_PRIVACY = ( 1 << 4 ), |
|
191 DOT11_CAPABILITY_PREAMBLE = ( 1 << 5 ), |
|
192 DOT11_CAPABILITY_PBCC = ( 1 << 6 ), |
|
193 DOT11_CAPABILITY_AGILE = ( 1 << 7 ) |
|
194 } dot11_Capability_e; |
|
195 |
|
196 #define DOT11_FC_TO_DS_SHIFT 8 |
|
197 #define DOT11_FC_FROM_DS_SHIFT 9 |
|
198 #define DOT11_FC_MORE_FRAG_SHIFT 10 |
|
199 #define DOT11_FC_RETRY_SHIFT 11 |
|
200 #define DOT11_FC_PWR_MGMT_SHIFT 12 |
|
201 #define DOT11_FC_MORE_DATA_SHIFT 13 |
|
202 #define DOT11_FC_WEP_SHIFT 14 |
|
203 #define DOT11_FC_ORDER_SHIFT 15 |
|
204 |
|
205 #define IS_WEP_ON(fc) ((1 << DOT11_FC_WEP_SHIFT) & (fc)) |
|
206 #define IS_DATA(fc) (((DOT11_FC_TYPE_MASK) & (fc)) == DOT11_FC_TYPE_DATA) |
|
207 #define IS_CTRL(fc) (((DOT11_FC_TYPE_MASK) & (fc)) == DOT11_FC_TYPE_CTRL) |
|
208 #define IS_MGMT(fc) (((DOT11_FC_TYPE_MASK) & (fc)) == DOT11_FC_TYPE_MGMT) |
|
209 #define IS_LEGACY_DATA(fc) (((DOT11_FC_TYPESUBTYPE_MASK) & (fc)) == DOT11_FC_DATA) |
|
210 #define IS_AUTH(fc) (((DOT11_FC_AUTH) & (fc)) == DOT11_FC_AUTH) |
|
211 #define IS_QOS_FRAME(fc) ((((fc) & (DOT11_FC_TYPESUBTYPE_MASK)) == DOT11_FC_DATA_QOS) || \ |
|
212 (((fc) & (DOT11_FC_TYPESUBTYPE_MASK)) == DOT11_FC_DATA_NULL_QOS) ) |
|
213 #define IS_HT_FRAME(fc) ((fc) & (DOT11_FC_ORDER)) |
|
214 |
|
215 |
|
216 |
|
217 #define TUs_TO_MSECs(x) (((x) << 10) / 1000) |
|
218 |
|
219 #define TIME_STAMP_LEN 8 |
|
220 |
|
221 /* SequenceControl field of the 802.11 header */ |
|
222 /**/ |
|
223 /* bit 15 - 4 3 - 0*/ |
|
224 /* +-------------------+-----------+*/ |
|
225 /* | Sequence Number | Fragment |*/ |
|
226 /* | | Number |*/ |
|
227 /* +-------------------+-----------+*/ |
|
228 /* 12 4*/ |
|
229 |
|
230 typedef enum |
|
231 { |
|
232 DOT11_SC_FRAG_NUM_MASK = ( 0xf << 0 ), |
|
233 DOT11_SC_SEQ_NUM_MASK = ( 0xfff << 4 ) |
|
234 } dot11_Sc_t; |
|
235 |
|
236 /* QoS Control field of the 802.11 header */ |
|
237 #define DOT11_QOS_CONTROL_FIELD_TID_BITS 0x000f |
|
238 #define DOT11_QOS_CONTROL_FIELD_A_MSDU_BITS 0x0080 |
|
239 |
|
240 #define DOT11_QOS_CONTROL_ACK 0x0000 |
|
241 #define DOT11_QOS_CONTROL_DONT_ACK 0x0020 |
|
242 |
|
243 typedef struct |
|
244 { |
|
245 TI_UINT16 fc; |
|
246 TI_UINT16 duration; |
|
247 TMacAddr address1; |
|
248 TMacAddr address2; |
|
249 TMacAddr address3; |
|
250 TI_UINT16 seqCtrl; |
|
251 TI_UINT16 qosControl; |
|
252 /* TMacAddr address4;*/ |
|
253 } dot11_header_t; |
|
254 |
|
255 typedef struct |
|
256 { |
|
257 TI_UINT16 fc; |
|
258 TI_UINT16 duration; |
|
259 TMacAddr address1; |
|
260 TMacAddr address2; |
|
261 TMacAddr address3; |
|
262 TI_UINT16 seqCtrl; |
|
263 } legacy_dot11_header_t; |
|
264 |
|
265 |
|
266 |
|
267 typedef struct |
|
268 { |
|
269 TI_UINT16 fc; |
|
270 TI_UINT16 duration; |
|
271 TMacAddr DA; |
|
272 TMacAddr SA; |
|
273 TMacAddr BSSID; |
|
274 TI_UINT16 seqCtrl; |
|
275 } dot11_mgmtHeader_t; |
|
276 |
|
277 typedef struct |
|
278 { |
|
279 TI_UINT8 DSAP; |
|
280 TI_UINT8 SSAP; |
|
281 TI_UINT8 Control; |
|
282 TI_UINT8 OUI[3]; |
|
283 TI_UINT16 Type; |
|
284 } Wlan_LlcHeader_T; |
|
285 |
|
286 typedef struct |
|
287 { |
|
288 TI_UINT16 fc; |
|
289 TI_UINT16 AID; |
|
290 TMacAddr BSSID; |
|
291 TMacAddr TA; |
|
292 } dot11_PsPollFrameHeader_t; |
|
293 |
|
294 typedef struct |
|
295 { |
|
296 TI_UINT16 fc; |
|
297 TI_UINT16 duration; |
|
298 TMacAddr RA; |
|
299 TMacAddr TA; |
|
300 } dot11_BarFrameHeader_t; |
|
301 |
|
302 |
|
303 #define FCS_SIZE 4 |
|
304 |
|
305 #define WLAN_HDR_LEN 24 |
|
306 #define WLAN_HT_HDR_LEN 28 |
|
307 #define WLAN_QOS_HDR_LEN 26 |
|
308 #define WLAN_QOS_HT_HDR_LEN 30 |
|
309 #define WLAN_QOS_HT_CONTROL_FIELD_LEN 4 |
|
310 #define WLAN_SNAP_HDR_LEN 8 |
|
311 #define WLAN_WITH_SNAP_HEADER_MAX_SIZE (WLAN_HDR_LEN + WLAN_SNAP_HDR_LEN) |
|
312 #define WLAN_WITH_SNAP_QOS_HEADER_MAX_SIZE (WLAN_QOS_HDR_LEN + WLAN_SNAP_HDR_LEN) |
|
313 #define HT_CONTROL_SIZE 4 |
|
314 |
|
315 #define GET_MAX_HEADER_SIZE(macHeaderPointer,headerSize) \ |
|
316 if (IS_QOS_FRAME(*(TI_UINT16*)(macHeaderPointer))) \ |
|
317 {\ |
|
318 if (IS_HT_FRAME(*(TI_UINT16*)(macHeaderPointer))) \ |
|
319 *headerSize = WLAN_QOS_HT_HDR_LEN; \ |
|
320 else \ |
|
321 *headerSize = WLAN_QOS_HDR_LEN; \ |
|
322 }\ |
|
323 else \ |
|
324 {\ |
|
325 if (IS_HT_FRAME(*(TI_UINT16*)(macHeaderPointer))) \ |
|
326 *headerSize = WLAN_HT_HDR_LEN; \ |
|
327 else \ |
|
328 *headerSize = WLAN_HDR_LEN; \ |
|
329 } |
|
330 |
|
331 /**************************************************************************************** |
|
332 The next table is defined in 802.11 spec section 7.2.2 for the address field contents : |
|
333 To DS From DS Address 1 Address 2 Address 3 Address 4 |
|
334 ------------------------------------------------------------------- |
|
335 0 0 DA SA BSSID N/A |
|
336 0 1 DA BSSID SA N/A |
|
337 1 0 BSSID SA DA N/A |
|
338 1 1 RA TA DA SA |
|
339 |
|
340 NOTE: We only support packets coming from within the DS (i.e. From DS = 0) |
|
341 *****************************************************************************************/ |
|
342 /* return the destination address used in *dot11_header_t */ |
|
343 #define GET_DA_FROM_DOT11_HEADER_T(pDot11Hdr) ((pDot11Hdr->fc & DOT11_FC_TO_DS) ? (pDot11Hdr->address3) : (pDot11Hdr->address1)) |
|
344 |
|
345 |
|
346 /* |
|
347 * MANAGEMENT |
|
348 * ----------------- |
|
349 */ |
|
350 |
|
351 /* mgmt body max length */ |
|
352 #define MAX_MGMT_BODY_LENGTH 2312 |
|
353 /* maximal length of beacon body - note that actual beacons may actually be longer |
|
354 than this size, at least according to the spec, but so far no larger beacon was seen */ |
|
355 #define MAX_BEACON_BODY_LENGTH 350 |
|
356 |
|
357 /* general mgmt frame structure */ |
|
358 typedef struct |
|
359 { |
|
360 dot11_mgmtHeader_t hdr; |
|
361 TI_UINT8 body[MAX_MGMT_BODY_LENGTH]; |
|
362 } dot11_mgmtFrame_t; |
|
363 |
|
364 /* Capabilities Information Field - IN THE AIR */ |
|
365 /**/ |
|
366 /* bit 15 14 13 12 11 10 9 8 7 - 0*/ |
|
367 /* +----------+------+----------+---------+----------+---------+------+-----+---------------+*/ |
|
368 /* | Channel | | Short | Privacy | CF Poll | CF | | | RESERVED | */ |
|
369 /* | Agility | PBCC | Preamble | | Request | Pollable| IBSS | ESS | |*/ |
|
370 /* +----------+------+----------+---------+----------+---------+------+-----+---------------+ */ |
|
371 /* 1 1 1 1 1 1 1 1*/ |
|
372 |
|
373 |
|
374 /* Capabilities Information Field - IN THE MGMT SOFTWARE AFTER THE SWAP */ |
|
375 /**/ |
|
376 /* bit 15 - 8 7 6 5 4 3 2 1 0*/ |
|
377 /* +------------+----------+------+----------+---------+----------+---------+------+-----+*/ |
|
378 /* | | Channel | | Short | Privacy | CF Poll | CF | | |*/ |
|
379 /* | Reserved | Agility | PBCC | Preamble | | Request | Pollable| IBSS | ESS |*/ |
|
380 /* +------------+----------+------+----------+---------+----------+---------+------+-----+*/ |
|
381 /* 8 1 1 1 1 1 1 1 1*/ |
|
382 |
|
383 |
|
384 |
|
385 typedef enum |
|
386 { |
|
387 DOT11_CAPS_ESS = ( 1 << 0 ), |
|
388 DOT11_CAPS_IBSS = ( 1 << 1 ), |
|
389 DOT11_CAPS_CF_POLLABLE = ( 1 << 2 ), |
|
390 DOT11_CAPS_CF_POLL_REQUEST = ( 1 << 3 ), |
|
391 DOT11_CAPS_PRIVACY = ( 1 << 4 ), |
|
392 DOT11_CAPS_SHORT_PREAMBLE = ( 1 << 5 ), |
|
393 DOT11_CAPS_PBCC = ( 1 << 6 ), |
|
394 DOT11_CAPS_CHANNEL_AGILITY = ( 1 << 7 ), |
|
395 DOT11_SPECTRUM_MANAGEMENT = ( 1 << 8 ), |
|
396 DOT11_CAPS_QOS_SUPPORTED = ( 1 << 9 ), |
|
397 DOT11_CAPS_SHORT_SLOT_TIME = (1 << 10), |
|
398 |
|
399 DOT11_CAPS_APSD_SUPPORT = ( 1 << 11), |
|
400 |
|
401 DOT11_CAPS_DELAYED_BA = ( 1 << 14), |
|
402 DOT11_CAPS_IMMEDIATE_BA = ( 1 << 15) |
|
403 |
|
404 } dot11_capabilities_e; |
|
405 |
|
406 typedef enum |
|
407 { |
|
408 /* ESS */ |
|
409 CAP_ESS_MASK = 1, |
|
410 CAP_ESS_SHIFT = 0, |
|
411 |
|
412 /* IBSS */ |
|
413 CAP_IBSS_MASK = 1, |
|
414 CAP_IBSS_SHIFT = 1, |
|
415 |
|
416 /* CF Pollable */ |
|
417 CAP_CF_POLL_MASK = 1, |
|
418 CAP_CF_POLL_SHIFT = 2, |
|
419 |
|
420 /* CF Poll request */ |
|
421 CAP_CF_REQ_MASK = 1, |
|
422 CAP_CF_REQ_SHIFT = 3, |
|
423 |
|
424 /* Privacy */ |
|
425 CAP_PRIVACY_MASK = 1, |
|
426 CAP_PRIVACY_SHIFT = 4, |
|
427 |
|
428 /* Short Preamble*/ |
|
429 CAP_PREAMBLE_MASK = 1, |
|
430 CAP_PREAMBLE_SHIFT = 5, |
|
431 |
|
432 /* PBCC */ |
|
433 CAP_PBCC_MASK = 1, |
|
434 CAP_PBCC_SHIFT = 6, |
|
435 |
|
436 /* Agile */ |
|
437 CAP_AGILE_MASK = 1, |
|
438 CAP_AGILE_SHIFT = 7, |
|
439 |
|
440 /* Slot time */ |
|
441 CAP_SLOT_TIME_MASK = 1, |
|
442 CAP_SLOT_TIME_SHIFT = 10, |
|
443 |
|
444 /* APSD */ |
|
445 CAP_APSD_MASK = 1, |
|
446 CAP_APSD_SHIFT = 11 |
|
447 |
|
448 |
|
449 } wdrv_mgmtCapabilities_e; |
|
450 |
|
451 |
|
452 /* |
|
453 * 802.11 Information elements |
|
454 * --------------------------- |
|
455 */ |
|
456 |
|
457 typedef TI_UINT8 dot11_eleHdr_t[2]; /* Byte-0: IE-ID, Byte-1: IE-Length */ |
|
458 |
|
459 /* fixed fields lengths, except of currentAP & timestamp*/ |
|
460 #define FIX_FIELD_LEN 2 |
|
461 |
|
462 /* SSID Information Element */ |
|
463 #define DOT11_SSID_ELE_ID 0 |
|
464 |
|
465 /* Max SSID length */ |
|
466 #define DOT11_SSID_MAX_LEN 32 |
|
467 |
|
468 typedef struct |
|
469 { |
|
470 dot11_eleHdr_t hdr; |
|
471 char serviceSetId[DOT11_SSID_MAX_LEN]; |
|
472 } dot11_SSID_t; |
|
473 |
|
474 |
|
475 /* Supportted rates Information Element */ |
|
476 #define DOT11_SUPPORTED_RATES_ELE_ID 1 |
|
477 #define DOT11_EXT_SUPPORTED_RATES_ELE_ID 50 |
|
478 typedef struct |
|
479 { |
|
480 dot11_eleHdr_t hdr; |
|
481 TI_UINT8 rates[DOT11_MAX_SUPPORTED_RATES]; |
|
482 } dot11_RATES_t; |
|
483 |
|
484 |
|
485 #define ERP_IE_NON_ERP_PRESENT_MASK 0x1 |
|
486 #define ERP_IE_USE_PROTECTION_MASK 0x2 |
|
487 #define ERP_IE_BARKER_PREAMBLE_MODE_MASK 0x4 |
|
488 #define DOT11_ERP_IE_ID 42 |
|
489 typedef struct |
|
490 { |
|
491 dot11_eleHdr_t hdr; |
|
492 TI_UINT8 ctrl; |
|
493 } dot11_ERP_t; |
|
494 |
|
495 /* RSN Information Element */ |
|
496 #define MAX_RSN_IE 3 |
|
497 #define DOT11_RSN_MAX 255 |
|
498 typedef struct |
|
499 { |
|
500 dot11_eleHdr_t hdr; |
|
501 TI_UINT8 rsnIeData[DOT11_RSN_MAX]; |
|
502 } dot11_RSN_t; |
|
503 |
|
504 /* General definitions needed by rsn.c */ |
|
505 #define IV_FIELD_SIZE 4 |
|
506 #define ICV_FIELD_SIZE 4 |
|
507 #define MIC_FIELD_SIZE 8 |
|
508 #define EIV_FIELD_SIZE 4 |
|
509 #ifdef GEM_SUPPORT |
|
510 #define GEM_KEY_IDX_FIELD_SIZE 1 |
|
511 #define GEM_RESERVED_FIELD_SIZE 1 |
|
512 #define GEM_PN_FIELD_SIZE 16 |
|
513 #define GEM_MIC_FIELD_SIZE 16 |
|
514 #endif |
|
515 #define WEP_AFTER_HEADER_FIELD_SIZE IV_FIELD_SIZE |
|
516 #define TKIP_AFTER_HEADER_FIELD_SIZE (IV_FIELD_SIZE + EIV_FIELD_SIZE) |
|
517 #define AES_AFTER_HEADER_FIELD_SIZE 8 |
|
518 #ifdef GEM_SUPPORT |
|
519 #define GEM_AFTER_HEADER_FIELD_SIZE (GEM_KEY_IDX_FIELD_SIZE + GEM_RESERVED_FIELD_SIZE + GEM_PN_FIELD_SIZE) |
|
520 #define GEM_AFTER_HEADER_PAD 2 |
|
521 #define GEM_BUFFER_ALIGNMENT 2 |
|
522 |
|
523 #endif |
|
524 |
|
525 |
|
526 /* DS params Information Element */ |
|
527 #define DOT11_DS_PARAMS_ELE_ID 3 |
|
528 #define DOT11_DS_PARAMS_ELE_LEN 1 |
|
529 typedef struct |
|
530 { |
|
531 dot11_eleHdr_t hdr; |
|
532 TI_UINT8 currChannel; |
|
533 } dot11_DS_PARAMS_t; |
|
534 |
|
535 |
|
536 /* DS params Information Element */ |
|
537 #define DOT11_IBSS_PARAMS_ELE_ID 6 |
|
538 #define DOT11_IBSS_PARAMS_ELE_LEN 2 |
|
539 typedef struct |
|
540 { |
|
541 dot11_eleHdr_t hdr; |
|
542 TI_UINT16 atimWindow; |
|
543 } dot11_IBSS_PARAMS_t; |
|
544 |
|
545 #define DOT11_FH_PARAMS_ELE_ID 2 |
|
546 #define DOT11_FH_PARAMS_ELE_LEN 5 |
|
547 typedef struct |
|
548 { |
|
549 dot11_eleHdr_t hdr; |
|
550 TI_UINT16 dwellTime; |
|
551 TI_UINT8 hopSet; |
|
552 TI_UINT8 hopPattern; |
|
553 TI_UINT8 hopIndex; |
|
554 } dot11_FH_PARAMS_t; |
|
555 |
|
556 /* tim Information Element */ |
|
557 #define DOT11_TIM_ELE_ID 5 |
|
558 #define DOT11_PARTIAL_VIRTUAL_BITMAP_MAX 251 |
|
559 typedef struct |
|
560 { |
|
561 dot11_eleHdr_t hdr; |
|
562 TI_UINT8 dtimCount; |
|
563 TI_UINT8 dtimPeriod; |
|
564 TI_UINT8 bmapControl; |
|
565 TI_UINT8 partialVirtualBmap[DOT11_PARTIAL_VIRTUAL_BITMAP_MAX]; |
|
566 } dot11_TIM_t; |
|
567 |
|
568 /* tim Information Element */ |
|
569 #define DOT11_CF_ELE_ID 4 |
|
570 #define DOT11_CF_PARAMS_ELE_LEN 6 |
|
571 typedef struct |
|
572 { |
|
573 dot11_eleHdr_t hdr; |
|
574 TI_UINT8 cfpCount; |
|
575 TI_UINT8 cfpPeriod; |
|
576 TI_UINT16 cfpMaxDuration; |
|
577 TI_UINT16 cfpDurRemain; |
|
578 } dot11_CF_PARAMS_t; |
|
579 |
|
580 /* Challenge text Information Element */ |
|
581 #define DOT11_CHALLENGE_TEXT_ELE_ID 16 |
|
582 #define DOT11_CHALLENGE_TEXT_MAX 253 |
|
583 typedef struct |
|
584 { |
|
585 dot11_eleHdr_t hdr; |
|
586 TI_UINT8 text[ DOT11_CHALLENGE_TEXT_MAX ]; |
|
587 } dot11_CHALLENGE_t; |
|
588 |
|
589 |
|
590 #define DOT11_NUM_OF_MAX_TRIPLET_CHANNEL 32 |
|
591 |
|
592 typedef struct |
|
593 { |
|
594 TI_UINT8 firstChannelNumber; |
|
595 TI_UINT8 numberOfChannels; |
|
596 TI_UINT8 maxTxPowerLevel; |
|
597 } dot11_TripletChannel_t; |
|
598 |
|
599 typedef struct |
|
600 { |
|
601 TI_UINT8 CountryString[DOT11_COUNTRY_STRING_LEN]; |
|
602 dot11_TripletChannel_t tripletChannels[DOT11_NUM_OF_MAX_TRIPLET_CHANNEL]; |
|
603 } dot11_countryIE_t; |
|
604 |
|
605 |
|
606 /* Country Inforamtion Element */ |
|
607 #define DOT11_COUNTRY_ELE_ID 7 |
|
608 #define DOT11_COUNTRY_ELE_LEN_MAX ( ((DOT11_NUM_OF_MAX_TRIPLET_CHANNEL+1)*3) + !((DOT11_NUM_OF_MAX_TRIPLET_CHANNEL&0x1))) |
|
609 typedef struct |
|
610 { |
|
611 dot11_eleHdr_t hdr; |
|
612 dot11_countryIE_t countryIE; |
|
613 } dot11_COUNTRY_t; |
|
614 |
|
615 |
|
616 /* Power Constraint Information Element */ |
|
617 #define DOT11_POWER_CONSTRAINT_ELE_ID (32) |
|
618 #define DOT11_POWER_CONSTRAINT_ELE_LEN (1) |
|
619 typedef struct |
|
620 { |
|
621 dot11_eleHdr_t hdr; |
|
622 TI_UINT8 powerConstraint; |
|
623 } dot11_POWER_CONSTRAINT_t; |
|
624 |
|
625 |
|
626 |
|
627 /* Power Capability Information Element */ |
|
628 #define DOT11_CAPABILITY_ELE_ID (33) |
|
629 #define DOT11_CAPABILITY_ELE_LEN (2) |
|
630 typedef struct |
|
631 { |
|
632 dot11_eleHdr_t hdr; |
|
633 TI_UINT8 minTxPower; |
|
634 TI_UINT8 maxTxPower; |
|
635 } dot11_CAPABILITY_t; |
|
636 |
|
637 /* TPC request Information Element */ |
|
638 #define DOT11_TPC_REQUEST_ELE_ID (34) |
|
639 #define DOT11_TPC_REQUEST_ELE_LEN (0) |
|
640 typedef struct |
|
641 { |
|
642 dot11_eleHdr_t hdr; |
|
643 } dot11_TPC_REQUEST_t; |
|
644 |
|
645 /* TPC report Information Element */ |
|
646 #define DOT11_TPC_REPORT_ELE_ID (35) |
|
647 #define DOT11_TPC_REPORT_ELE_LEN (2) |
|
648 typedef struct |
|
649 { |
|
650 dot11_eleHdr_t hdr; |
|
651 TI_UINT8 transmitPower; |
|
652 TI_UINT8 linkMargin; |
|
653 } dot11_TPC_REPORT_t; |
|
654 |
|
655 |
|
656 #ifdef XCC_MODULE_INCLUDED |
|
657 |
|
658 /* Cell Transmit Power Information Element */ |
|
659 #define DOT11_CELL_TP_ELE_ID (150) |
|
660 #define DOT11_CELL_TP_ELE_LEN (6) |
|
661 |
|
662 typedef struct |
|
663 { |
|
664 dot11_eleHdr_t hdr; |
|
665 TI_UINT8 oui[4]; |
|
666 TI_UINT8 power; |
|
667 TI_UINT8 reserved; |
|
668 } dot11_CELL_TP_t; |
|
669 |
|
670 #define DOT11_CELL_TP \ |
|
671 dot11_CELL_TP_t *cellTP; |
|
672 |
|
673 #else /* XCC_MODULE_INCLUDED */ |
|
674 |
|
675 #define DOT11_CELL_TP |
|
676 |
|
677 #endif /* XCC_MODULE_INCLUDED */ |
|
678 |
|
679 |
|
680 /* Channel Supported Information Element */ |
|
681 #define DOT11_CHANNEL_SUPPORTED_ELE_ID (36) |
|
682 #define DOT11_CHANNEL_SUPPORTED_ELE_LEN (26) |
|
683 typedef struct |
|
684 { |
|
685 dot11_eleHdr_t hdr; |
|
686 TI_UINT8 supportedChannel[DOT11_CHANNEL_SUPPORTED_ELE_LEN]; |
|
687 |
|
688 } dot11_CHANNEL_SUPPORTED_t; |
|
689 |
|
690 /* Channel Switch Announcement Information Element */ |
|
691 #define DOT11_CHANNEL_SWITCH_ELE_ID (37) |
|
692 #define DOT11_CHANNEL_SWITCH_ELE_LEN (3) |
|
693 typedef struct |
|
694 { |
|
695 dot11_eleHdr_t hdr; |
|
696 TI_UINT8 channelSwitchMode; |
|
697 TI_UINT8 channelNumber; |
|
698 TI_UINT8 channelSwitchCount; |
|
699 } dot11_CHANNEL_SWITCH_t; |
|
700 |
|
701 #define MAX_NUM_REQ (16) |
|
702 |
|
703 /* Measurement request Information Element */ |
|
704 #define DOT11_MEASUREMENT_REQUEST_ELE_ID (38) |
|
705 #define DOT11_MEASUREMENT_REQUEST_LEN (2) |
|
706 #define DOT11_MEASUREMENT_REQUEST_ELE_LEN (3 + DOT11_MEASUREMENT_REQUEST_LEN*MAX_NUM_REQ) |
|
707 typedef struct |
|
708 { |
|
709 dot11_eleHdr_t hdr; |
|
710 TI_UINT8 measurementToken; |
|
711 TI_UINT8 measurementMode; |
|
712 TI_UINT8 measurementType; |
|
713 TI_UINT8 measurementRequests[DOT11_MEASUREMENT_REQUEST_LEN*MAX_NUM_REQ]; |
|
714 } dot11_MEASUREMENT_REQUEST_t; |
|
715 |
|
716 |
|
717 /* Quiet Information Element */ |
|
718 #define DOT11_QUIET_ELE_ID (40) |
|
719 #define DOT11_QUIET_ELE_LEN (6) |
|
720 typedef struct |
|
721 { |
|
722 dot11_eleHdr_t hdr; |
|
723 TI_UINT8 quietCount; |
|
724 TI_UINT8 quietPeriod; |
|
725 TI_UINT16 quietDuration; |
|
726 TI_UINT16 quietOffset; |
|
727 } dot11_QUIET_t; |
|
728 |
|
729 |
|
730 /* QoS Capability Information Element */ |
|
731 #define DOT11_QOS_CAPABILITY_ELE_ID (46) |
|
732 #define DOT11_QOS_CAPABILITY_ELE_LEN (1) |
|
733 |
|
734 #define AC_APSD_FLAGS_MASK (1) |
|
735 #define Q_ACK_BITG_MASK (1) |
|
736 #define MAX_SP_LENGTH_MASK (3) |
|
737 #define MORE_DATA_ACK_MASK (1) |
|
738 |
|
739 #define AC_VO_APSD_FLAGS_SHIFT (0) |
|
740 #define AC_VI_APSD_FLAGS_SHIFT (1) |
|
741 #define AC_BK_APSD_FLAGS_SHIFT (2) |
|
742 #define AC_BE_APSD_FLAGS_SHIFT (3) |
|
743 #define Q_ACK_FLAGS_SHIFT (4) |
|
744 #define MAX_SP_LENGTH_SHIFT (5) |
|
745 #define MORE_DATA_ACK_SHIFT (7) |
|
746 |
|
747 #define QOS_CONTROL_UP_SHIFT (0) |
|
748 |
|
749 #define AP_QOS_INFO_UAPSD_MASK (1) |
|
750 #define AP_QOS_INFO_UAPSD_SHIFT (7) |
|
751 |
|
752 typedef struct |
|
753 { |
|
754 dot11_eleHdr_t hdr; |
|
755 TI_UINT8 QosInfoField; |
|
756 } dot11_QOS_CAPABILITY_IE_t; |
|
757 |
|
758 /* WPS Information Element */ |
|
759 #define DOT11_WPS_ELE_ID (221) |
|
760 #define DOT11_WPS_OUI {0x00, 0x50, 0xF2, 0x04} |
|
761 #define DOT11_WPS_OUI_LEN 4 |
|
762 |
|
763 /* WME Information Element */ |
|
764 #define DOT11_WME_ELE_ID (221) |
|
765 #define DOT11_WME_ELE_LEN (7) |
|
766 typedef struct |
|
767 { |
|
768 dot11_eleHdr_t hdr; |
|
769 TI_UINT8 OUI[3]; |
|
770 TI_UINT8 OUIType; |
|
771 TI_UINT8 OUISubType; |
|
772 TI_UINT8 version; |
|
773 TI_UINT8 ACInfoField; |
|
774 } dot11_WME_IE_t; |
|
775 |
|
776 |
|
777 typedef struct |
|
778 { |
|
779 TI_UINT8 ACI_AIFSN; |
|
780 TI_UINT8 ECWmin_ECWmax; |
|
781 TI_UINT16 TXOPLimit; |
|
782 } dot11_QOS_AC_IE_ParametersRecord_t; |
|
783 |
|
784 typedef struct |
|
785 { |
|
786 dot11_QOS_AC_IE_ParametersRecord_t ACBEParametersRecord; |
|
787 dot11_QOS_AC_IE_ParametersRecord_t ACBKParametersRecord; |
|
788 dot11_QOS_AC_IE_ParametersRecord_t ACVIParametersRecord; |
|
789 dot11_QOS_AC_IE_ParametersRecord_t ACVOParametersRecord; |
|
790 } dot11_ACParameters_t; |
|
791 |
|
792 |
|
793 /* WME Parameter Information Element */ |
|
794 #define DOT11_WME_PARAM_ELE_ID (221) |
|
795 #define DOT11_WME_PARAM_ELE_LEN (24) |
|
796 typedef struct |
|
797 { |
|
798 dot11_eleHdr_t hdr; |
|
799 TI_UINT8 OUI[3]; |
|
800 TI_UINT8 OUIType; |
|
801 TI_UINT8 OUISubType; |
|
802 TI_UINT8 version; |
|
803 TI_UINT8 ACInfoField; |
|
804 TI_UINT8 reserved; |
|
805 dot11_ACParameters_t WME_ACParameteres; |
|
806 } dot11_WME_PARAM_t; |
|
807 |
|
808 |
|
809 /* 802.11n HT Information Element */ |
|
810 #define DOT11_HT_CAPABILITIES_ELE_LEN (26) |
|
811 #define DOT11_HT_INFORMATION_ELE_LEN (22) |
|
812 |
|
813 #define DOT11_HT_CAPABILITIES_MCS_RATE_OFFSET (3) |
|
814 #define DOT11_HT_INFORMATION_MCS_RATE_OFFSET (6) |
|
815 |
|
816 typedef struct |
|
817 { |
|
818 dot11_eleHdr_t tHdr; |
|
819 TI_UINT8 aHtCapabilitiesIe[DOT11_HT_CAPABILITIES_ELE_LEN]; /* HT capabilities IE unparsed */ |
|
820 } Tdot11HtCapabilitiesUnparse; |
|
821 |
|
822 typedef struct |
|
823 { |
|
824 dot11_eleHdr_t tHdr; |
|
825 TI_UINT8 aHtInformationIe[DOT11_HT_INFORMATION_ELE_LEN]; /* HT Information IE unparsed */ |
|
826 } Tdot11HtInformationUnparse; |
|
827 |
|
828 /* BA session bits mask */ |
|
829 #define DOT11_BAR_CONTROL_FIELD_TID_BITS 0xf000 |
|
830 #define DOT11_BA_PARAMETER_SET_FIELD_TID_BITS 0x003C |
|
831 #define DOT11_BA_PARAMETER_SET_FIELD_WINSIZE_BITS 0xffC0 |
|
832 #define DOT11_DELBA_PARAMETER_FIELD_TID_BITS 0xf000 |
|
833 |
|
834 /* action field BA frames */ |
|
835 typedef enum |
|
836 { |
|
837 DOT11_BA_ACTION_ADDBA = 0, |
|
838 DOT11_BA_ACTION_DELBA = 2 |
|
839 } Edot11BaAction; |
|
840 |
|
841 |
|
842 /* WiFi Simple Config Information Element */ |
|
843 #define DOT11_WSC_PARAM_ELE_ID (221) |
|
844 |
|
845 #define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS 0x1053 |
|
846 #define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS_PIN 0xC |
|
847 #define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS_PBC 0x80 |
|
848 |
|
849 #define DOT11_WSC_DEVICE_PASSWORD_ID 0x1012 |
|
850 #define DOT11_WSC_DEVICE_PASSWORD_ID_PIN 0x0000 |
|
851 #define DOT11_WSC_DEVICE_PASSWORD_ID_PBC 0x0004 |
|
852 |
|
853 /* WiFi Simple Config Parameter Information Element */ |
|
854 #define DOT11_WSC_PROBE_REQ_PARAM_ELE_LEN (22) |
|
855 #define DOT11_WSC_BEACON_MAX_LENGTH 160 |
|
856 |
|
857 typedef struct |
|
858 { |
|
859 dot11_eleHdr_t hdr; |
|
860 TI_UINT8 OUI[3]; |
|
861 TI_UINT8 OUIType; |
|
862 TI_UINT8 WSCBeaconOrProbIE[DOT11_WSC_BEACON_MAX_LENGTH]; |
|
863 } dot11_WSC_t; |
|
864 |
|
865 #define dot11_WPA_OUI_TYPE (1) |
|
866 #define dot11_WME_OUI_TYPE (2) |
|
867 #define dot11_WSC_OUI_TYPE (4) |
|
868 #define dot11_WME_OUI_SUB_TYPE_IE (0) |
|
869 #define dot11_WME_OUI_SUB_TYPE_PARAMS_IE (1) |
|
870 #define dot11_WME_VERSION (1) |
|
871 #define dot11_WME_ACINFO_MASK 0x0f |
|
872 |
|
873 /* -------------------- TSPEC ----------------- */ |
|
874 |
|
875 typedef struct |
|
876 { |
|
877 TI_UINT8 tsInfoArr[3]; |
|
878 |
|
879 } tsInfo_t; |
|
880 |
|
881 |
|
882 |
|
883 /* This structure is part of the TSPEC structure. It was seperated since there are some cases (such as DEL_TS), which we dont need |
|
884 to send ALL the TSPEC structure, but only as far as TsInfo. The TSPEC structure contains this smaller structure */ |
|
885 typedef struct |
|
886 { |
|
887 dot11_eleHdr_t hdr; |
|
888 |
|
889 TI_UINT8 OUI[3]; |
|
890 TI_UINT8 oui_type; |
|
891 TI_UINT8 oui_subtype; |
|
892 TI_UINT8 version; |
|
893 |
|
894 tsInfo_t tsInfoField; |
|
895 } dot11_WME_TSPEC_IE_hdr_t; |
|
896 |
|
897 typedef struct |
|
898 { |
|
899 |
|
900 dot11_WME_TSPEC_IE_hdr_t tHdr; |
|
901 |
|
902 TI_UINT16 nominalMSDUSize; |
|
903 TI_UINT16 maximumMSDUSize; |
|
904 TI_UINT32 minimumServiceInterval; |
|
905 TI_UINT32 maximumServiceInterval; |
|
906 TI_UINT32 inactivityInterval; |
|
907 TI_UINT32 suspensionInterval; |
|
908 TI_UINT32 serviceStartTime; |
|
909 TI_UINT32 minimumDataRate; |
|
910 TI_UINT32 meanDataRate; |
|
911 TI_UINT32 peakDataRate; |
|
912 TI_UINT32 maximumBurstSize; |
|
913 TI_UINT32 delayBound; |
|
914 TI_UINT32 minimumPHYRate; |
|
915 TI_UINT16 surplusBandwidthAllowance; |
|
916 TI_UINT16 mediumTime; |
|
917 |
|
918 } dot11_WME_TSPEC_IE_t; |
|
919 |
|
920 |
|
921 #define WME_TSPEC_IE_ID 221 |
|
922 #define WME_TSPEC_IE_LEN 61 |
|
923 #define WME_TSPEC_IE_TSINFO_LEN 9 |
|
924 #define WME_TSPEC_IE_OUI_TYPE 0x02 |
|
925 #define WME_TSPEC_IE_OUI_SUB_TYPE 0x02 |
|
926 #define WME_TSPEC_IE_VERSION 0x01 |
|
927 |
|
928 /* OUI TYPE values that can be present in management packets inside Cisco vendor specific IE */ |
|
929 typedef enum |
|
930 { |
|
931 TS_METRIX_OUI_TYPE = 0x07, |
|
932 TS_RATE_SET_OUI_TYPE = 0x08, |
|
933 EDCA_LIFETIME_OUI_TYPE = 0x09 |
|
934 } XCC_IE_OUI_TYPE_t; |
|
935 |
|
936 #define ADDTS_REQUEST_ACTION 0x00 |
|
937 #define ADDTS_RESPONSE_ACTION 0x01 |
|
938 #define DELTS_ACTION 0x02 |
|
939 |
|
940 #define ADDTS_STATUS_CODE_SUCCESS 0x00 |
|
941 #define DELTS_CODE_SUCCESS 0x00 |
|
942 |
|
943 |
|
944 #define TS_INFO_0_TRAFFIC_TYPE_MASK 0x01 |
|
945 #define TS_INFO_0_TSID_MASK 0x1E |
|
946 #define TS_INFO_0_DIRECTION_MASK 0x60 |
|
947 #define TS_INFO_0_ACCESS_POLICY_MASK 0x80 |
|
948 |
|
949 #define TS_INFO_1_ACCESS_POLICY_MASK 0x01 |
|
950 #define TS_INFO_1_AGGREGATION_MASK 0x02 |
|
951 #define TS_INFO_1_APSD_MASK 0x04 |
|
952 #define TS_INFO_1_USER_PRIORITY_MASK 0x38 |
|
953 #define TS_INFO_1_TSINFO_ACK_POLICY_MASK 0xC0 |
|
954 |
|
955 #define TS_INFO_2_SCHEDULE_MASK 0x01 |
|
956 #define TS_INFO_2_RESERVED_MASK 0xF7 |
|
957 |
|
958 #define TRAFFIC_TYPE_SHIFT 0 |
|
959 #define TSID_SHIFT 1 |
|
960 #define DIRECTION_SHIFT 5 |
|
961 #define ACCESS_POLICY_SHIFT 7 |
|
962 #define AGGREGATION_SHIFT 1 |
|
963 #define APSD_SHIFT 2 |
|
964 #define USER_PRIORITY_SHIFT 3 |
|
965 #define TSINFO_ACK_POLICY_SHIFT 6 |
|
966 #define SCHEDULE_SHIFT 0 |
|
967 #define RESERVED_SHIFT 1 |
|
968 #define SURPLUS_BANDWIDTH_ALLOW 13 |
|
969 |
|
970 #define TS_INFO_0_ACCESS_POLICY_EDCA 0x1 |
|
971 #define NORMAL_ACKNOWLEDGEMENT 0x00 |
|
972 #define NO_SCHEDULE 0x00 |
|
973 #define PS_UPSD 0x01 |
|
974 #define EDCA_MODE 0x08 |
|
975 #define FIX_MSDU_SIZE 0x8000 |
|
976 |
|
977 #define WPA_IE_OUI {0x00, 0x50, 0xf2} |
|
978 #define XCC_OUI {0x00, 0x40, 0x96} |
|
979 |
|
980 /* Action field structure |
|
981 used for extended management action such as spectrum management */ |
|
982 typedef TI_UINT8 dot11_ACTION_FIELD_t[2]; |
|
983 |
|
984 |
|
985 /* Management frames sub types */ |
|
986 typedef enum |
|
987 { |
|
988 ASSOC_REQUEST = 0, |
|
989 ASSOC_RESPONSE = 1, |
|
990 RE_ASSOC_REQUEST = 2, |
|
991 RE_ASSOC_RESPONSE = 3, |
|
992 PROBE_REQUEST = 4, |
|
993 PROBE_RESPONSE = 5, |
|
994 BEACON = 8, |
|
995 ATIM = 9, |
|
996 DIS_ASSOC = 10, |
|
997 AUTH = 11, |
|
998 DE_AUTH = 12, |
|
999 ACTION = 13 |
|
1000 } dot11MgmtSubType_e; |
|
1001 |
|
1002 /* Management frames element IDs */ |
|
1003 typedef enum |
|
1004 { |
|
1005 SSID_IE_ID = 0, |
|
1006 SUPPORTED_RATES_IE_ID = 1, |
|
1007 FH_PARAMETER_SET_IE_ID = 2, |
|
1008 DS_PARAMETER_SET_IE_ID = 3, |
|
1009 CF_PARAMETER_SET_IE_ID = 4, |
|
1010 TIM_IE_ID = 5, |
|
1011 IBSS_PARAMETER_SET_IE_ID = 6, |
|
1012 COUNTRY_IE_ID = 7, |
|
1013 CHALLANGE_TEXT_IE_ID = 16, |
|
1014 POWER_CONSTRAINT_IE_ID = 32, |
|
1015 TPC_REPORT_IE_ID = 35, |
|
1016 CHANNEL_SWITCH_ANNOUNCEMENT_IE_ID = 37, |
|
1017 QUIET_IE_ID = 40, |
|
1018 ERP_IE_ID = 42, |
|
1019 HT_CAPABILITIES_IE_ID = 45, |
|
1020 QOS_CAPABILITY_IE_ID = 46, |
|
1021 RSN_IE_ID = 48, |
|
1022 EXT_SUPPORTED_RATES_IE_ID = 50, |
|
1023 HT_INFORMATION_IE_ID = 61, |
|
1024 XCC_EXT_1_IE_ID = 133, |
|
1025 XCC_EXT_2_IE_ID = 149, |
|
1026 CELL_POWER_IE = 150, /*XCC*/ |
|
1027 WPA_IE_ID = 221 |
|
1028 |
|
1029 } dot11MgmtIeId_e; |
|
1030 |
|
1031 /* Spectrum Management Action fields */ |
|
1032 typedef enum |
|
1033 { |
|
1034 MEASUREMENT_REQUEST = 0, |
|
1035 MEASUREMENT_REPORT = 1, |
|
1036 TPC_REQUEST = 2, |
|
1037 TPC_REPORT = 3, |
|
1038 CHANNEL_SWITCH_ANNOUNCEMENT = 4 |
|
1039 } dot11ActionFrameTypes_e; |
|
1040 |
|
1041 /* Category fields (such as apectrum management)*/ |
|
1042 typedef enum |
|
1043 { |
|
1044 CATAGORY_SPECTRUM_MANAGEMENT = 0, |
|
1045 CATAGORY_QOS = 1, |
|
1046 WME_CATAGORY_QOS = 17, |
|
1047 CATAGORY_SPECTRUM_MANAGEMENT_ERROR = 128 |
|
1048 } dot11CategoryTypes_e; |
|
1049 |
|
1050 |
|
1051 /* |
|
1052 * Management templates to set to the HAL: |
|
1053 */ |
|
1054 |
|
1055 #ifdef XCC_MODULE_INCLUDED |
|
1056 |
|
1057 typedef struct |
|
1058 { |
|
1059 dot11_mgmtHeader_t hdr; |
|
1060 char infoElements[sizeof( dot11_SSID_t ) + |
|
1061 sizeof( dot11_RATES_t ) + |
|
1062 sizeof( dot11_RATES_t ) + |
|
1063 sizeof( Tdot11HtCapabilitiesUnparse ) + |
|
1064 sizeof( DOT11_WSC_PROBE_REQ_MAX_LENGTH ) + |
|
1065 sizeof( XCC_radioManagmentCapability_IE_t ) |
|
1066 ]; |
|
1067 } probeReqTemplate_t; |
|
1068 |
|
1069 #else /* XCC_MODULE_INCLUDED */ |
|
1070 |
|
1071 typedef struct |
|
1072 { |
|
1073 dot11_mgmtHeader_t hdr; |
|
1074 char infoElements[sizeof( dot11_SSID_t ) + |
|
1075 sizeof( dot11_RATES_t ) + |
|
1076 sizeof( dot11_RATES_t ) + |
|
1077 sizeof( Tdot11HtCapabilitiesUnparse ) + |
|
1078 sizeof( DOT11_WSC_PROBE_REQ_MAX_LENGTH ) |
|
1079 ]; |
|
1080 } probeReqTemplate_t; |
|
1081 |
|
1082 #endif /* XCC_MODULE_INCLUDED */ |
|
1083 |
|
1084 |
|
1085 typedef struct |
|
1086 { |
|
1087 dot11_mgmtHeader_t hdr; |
|
1088 TI_UINT8 timeStamp[TIME_STAMP_LEN]; |
|
1089 TI_UINT16 beaconInterval; |
|
1090 TI_UINT16 capabilities; |
|
1091 char infoElements[ sizeof( dot11_SSID_t ) + |
|
1092 sizeof( dot11_RATES_t ) + |
|
1093 sizeof( dot11_RATES_t ) + |
|
1094 sizeof( dot11_DS_PARAMS_t ) + |
|
1095 sizeof( dot11_COUNTRY_t) ]; |
|
1096 } probeRspTemplate_t; |
|
1097 |
|
1098 typedef struct |
|
1099 { |
|
1100 dot11_mgmtHeader_t hdr; |
|
1101 } nullDataTemplate_t; |
|
1102 |
|
1103 typedef struct |
|
1104 { |
|
1105 dot11_mgmtHeader_t hdr; |
|
1106 TI_UINT16 disconnReason; |
|
1107 } disconnTemplate_t; /* Deauth or Disassoc */ |
|
1108 |
|
1109 typedef struct |
|
1110 { |
|
1111 dot11_PsPollFrameHeader_t hdr; |
|
1112 } psPollTemplate_t; |
|
1113 |
|
1114 typedef struct |
|
1115 { |
|
1116 dot11_header_t hdr; |
|
1117 } QosNullDataTemplate_t; |
|
1118 |
|
1119 /* Traffic Stream Rate Set (TSRS) info-elements */ |
|
1120 typedef struct |
|
1121 { |
|
1122 dot11_eleHdr_t hdr; |
|
1123 TI_UINT8 OUI[3]; |
|
1124 TI_UINT8 oui_type; |
|
1125 TI_UINT8 tsid; |
|
1126 TI_UINT8 tsNominalRate; |
|
1127 } dot11_TSRS_STA_IE_t; |
|
1128 |
|
1129 typedef struct |
|
1130 { |
|
1131 dot11_eleHdr_t hdr; |
|
1132 TI_UINT8 OUI[3]; |
|
1133 TI_UINT8 oui_type; |
|
1134 TI_UINT8 tsid; |
|
1135 TI_UINT8 tsRates[8]; |
|
1136 } dot11_TSRS_IE_t; |
|
1137 |
|
1138 /* MSDU lifetime info-element */ |
|
1139 typedef struct |
|
1140 { |
|
1141 dot11_eleHdr_t hdr; |
|
1142 TI_UINT8 OUI[3]; |
|
1143 TI_UINT8 oui_type; |
|
1144 TI_UINT8 tsid; |
|
1145 TI_UINT16 msduLifeTime; |
|
1146 } dot11_MSDU_LIFE_TIME_IE_t; |
|
1147 |
|
1148 typedef struct |
|
1149 { |
|
1150 dot11_eleHdr_t hdr; |
|
1151 TI_UINT8 OUI[3]; |
|
1152 TI_UINT8 oui_type; |
|
1153 TI_UINT8 tsid; |
|
1154 TI_UINT8 state; |
|
1155 TI_UINT16 measureInterval; |
|
1156 } dot11_TS_METRICS_IE_t; |
|
1157 |
|
1158 typedef struct |
|
1159 { |
|
1160 dot11_TSRS_IE_t *trafficStreamParameter; |
|
1161 dot11_MSDU_LIFE_TIME_IE_t *edcaLifetimeParameter; |
|
1162 dot11_TS_METRICS_IE_t *tsMetrixParameter; |
|
1163 } XCCv4IEs_t; |
|
1164 |
|
1165 |
|
1166 /* Measurement Report message frame structure */ |
|
1167 #define DOT11_MEASUREMENT_REPORT_ELE_ID (39) |
|
1168 #define DOT11_MAX_MEASUREMENT_REPORT_LEN (4) |
|
1169 #define DOT11_MIN_MEASUREMENT_REPORT_IE_LEN (3) |
|
1170 #define DOT11_MEASUREMENT_REPORT_ELE_IE_LEN (DOT11_MIN_MEASUREMENT_REPORT_IE_LEN + DOT11_MAX_MEASUREMENT_REPORT_LEN*MAX_NUM_REQ) |
|
1171 |
|
1172 typedef struct |
|
1173 { |
|
1174 dot11_ACTION_FIELD_t actionField; |
|
1175 TI_UINT8 dialogToken; |
|
1176 |
|
1177 dot11_eleHdr_t hdr; |
|
1178 TI_UINT8 measurementToken; |
|
1179 TI_UINT8 measurementMode; |
|
1180 TI_UINT8 measurementType; |
|
1181 TI_UINT8 measurementReports[DOT11_MAX_MEASUREMENT_REPORT_LEN*MAX_NUM_REQ]; |
|
1182 } MeasurementReportFrame_t; |
|
1183 |
|
1184 |
|
1185 |
|
1186 typedef enum |
|
1187 { |
|
1188 STATUS_SUCCESSFUL = 0, |
|
1189 STATUS_UNSPECIFIED, |
|
1190 STATUS_AUTH_REJECT, |
|
1191 STATUS_ASSOC_REJECT, |
|
1192 STATUS_SECURITY_FAILURE, |
|
1193 STATUS_AP_DEAUTHENTICATE, |
|
1194 STATUS_AP_DISASSOCIATE, |
|
1195 STATUS_ROAMING_TRIGGER, |
|
1196 STATUS_DISCONNECT_DURING_CONNECT, |
|
1197 STATUS_SG_RESELECT, |
|
1198 MGMT_STATUS_MAX_NUM |
|
1199 } mgmtStatus_e; |
|
1200 |
|
1201 /* Used as a status code in case of STATUS_AUTH_REJECT or STATUS_ASSOC_REJECT that was not received at all */ |
|
1202 #define STATUS_PACKET_REJ_TIMEOUT 0xFFFF |
|
1203 |
|
1204 /* As defined in 802.11 spec section 7.3.1 - status codes for deAuth packet */ |
|
1205 #define STATUS_CODE_802_1X_AUTHENTICATION_FAILED 23 |
|
1206 |
|
1207 /* map field included in measurement report IE (only in basic report) */ |
|
1208 typedef enum |
|
1209 { |
|
1210 DOT11_BSS_ONLY = (0x01), |
|
1211 DOT11_OFDM_ONLY = (0x02), |
|
1212 DOT11_RADAR_AND_UNIDENTIFIED = (0x0C) |
|
1213 } dot11_Map_Sub_Field_e; |
|
1214 |
|
1215 |
|
1216 typedef struct |
|
1217 { |
|
1218 legacy_dot11_header_t dot11Header; |
|
1219 Wlan_LlcHeader_T snapHeader; |
|
1220 } legacy_dot11_DataMsduHeader_t; |
|
1221 |
|
1222 |
|
1223 #define WLAN_HEADER_TYPE_CONCATENATION 0x01 |
|
1224 #define WLAN_CONCAT_HEADER_LEN 2 |
|
1225 |
|
1226 |
|
1227 #endif /* _802_11_INFO_DEFS_H */ |