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