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 59typedef 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 ) 87typedef 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 ) 95typedef 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 ) 135typedef 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 167typedef 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 179typedef 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 225typedef 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 238typedef 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 250typedef 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 262typedef 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 272typedef 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 281typedef struct 282{ 283 TI_UINT16 fc; 284 TI_UINT16 AID; 285 TMacAddr BSSID; 286 TMacAddr TA; 287} dot11_PsPollFrameHeader_t; 288 289typedef 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 334NOTE: 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 Note: 1500 is the recommended size by the Motorola Standard team. TI recommendation is 700*/ 350#define MAX_BEACON_BODY_LENGTH 1500 351 352/* general mgmt frame structure */ 353typedef struct 354{ 355 dot11_mgmtHeader_t hdr; 356 TI_UINT8 body[MAX_MGMT_BODY_LENGTH]; 357} dot11_mgmtFrame_t; 358 359/* Capabilities Information Field - IN THE AIR */ 360/**/ 361/* bit 15 14 13 12 11 10 9 8 7 - 0*/ 362/* +----------+------+----------+---------+----------+---------+------+-----+---------------+*/ 363/* | Channel | | Short | Privacy | CF Poll | CF | | | RESERVED | */ 364/* | Agility | PBCC | Preamble | | Request | Pollable| IBSS | ESS | |*/ 365/* +----------+------+----------+---------+----------+---------+------+-----+---------------+ */ 366/* 1 1 1 1 1 1 1 1*/ 367 368 369/* Capabilities Information Field - IN THE MGMT SOFTWARE AFTER THE SWAP */ 370/**/ 371/* bit 15 - 8 7 6 5 4 3 2 1 0*/ 372/* +------------+----------+------+----------+---------+----------+---------+------+-----+*/ 373/* | | Channel | | Short | Privacy | CF Poll | CF | | |*/ 374/* | Reserved | Agility | PBCC | Preamble | | Request | Pollable| IBSS | ESS |*/ 375/* +------------+----------+------+----------+---------+----------+---------+------+-----+*/ 376/* 8 1 1 1 1 1 1 1 1*/ 377 378 379 380typedef enum 381{ 382 DOT11_CAPS_ESS = ( 1 << 0 ), 383 DOT11_CAPS_IBSS = ( 1 << 1 ), 384 DOT11_CAPS_CF_POLLABLE = ( 1 << 2 ), 385 DOT11_CAPS_CF_POLL_REQUEST = ( 1 << 3 ), 386 DOT11_CAPS_PRIVACY = ( 1 << 4 ), 387 DOT11_CAPS_SHORT_PREAMBLE = ( 1 << 5 ), 388 DOT11_CAPS_PBCC = ( 1 << 6 ), 389 DOT11_CAPS_CHANNEL_AGILITY = ( 1 << 7 ), 390 DOT11_SPECTRUM_MANAGEMENT = ( 1 << 8 ), 391 DOT11_CAPS_QOS_SUPPORTED = ( 1 << 9 ), 392 DOT11_CAPS_SHORT_SLOT_TIME = (1 << 10), 393 394 DOT11_CAPS_APSD_SUPPORT = ( 1 << 11), 395 396 DOT11_CAPS_DELAYED_BA = ( 1 << 14), 397 DOT11_CAPS_IMMEDIATE_BA = ( 1 << 15) 398 399} dot11_capabilities_e; 400 401typedef enum 402{ 403 /* ESS */ 404 CAP_ESS_MASK = 1, 405 CAP_ESS_SHIFT = 0, 406 407 /* IBSS */ 408 CAP_IBSS_MASK = 1, 409 CAP_IBSS_SHIFT = 1, 410 411 /* CF Pollable */ 412 CAP_CF_POLL_MASK = 1, 413 CAP_CF_POLL_SHIFT = 2, 414 415 /* CF Poll request */ 416 CAP_CF_REQ_MASK = 1, 417 CAP_CF_REQ_SHIFT = 3, 418 419 /* Privacy */ 420 CAP_PRIVACY_MASK = 1, 421 CAP_PRIVACY_SHIFT = 4, 422 423 /* Short Preamble*/ 424 CAP_PREAMBLE_MASK = 1, 425 CAP_PREAMBLE_SHIFT = 5, 426 427 /* PBCC */ 428 CAP_PBCC_MASK = 1, 429 CAP_PBCC_SHIFT = 6, 430 431 /* Agile */ 432 CAP_AGILE_MASK = 1, 433 CAP_AGILE_SHIFT = 7, 434 435 /* Slot time */ 436 CAP_SLOT_TIME_MASK = 1, 437 CAP_SLOT_TIME_SHIFT = 10, 438 439 /* APSD */ 440 CAP_APSD_MASK = 1, 441 CAP_APSD_SHIFT = 11 442 443 444} wdrv_mgmtCapabilities_e; 445 446 447/* 448 * 802.11 Information elements 449 * --------------------------- 450 */ 451 452typedef TI_UINT8 dot11_eleHdr_t[2]; /* Byte-0: IE-ID, Byte-1: IE-Length */ 453 454/* fixed fields lengths, except of currentAP & timestamp*/ 455#define FIX_FIELD_LEN 2 456 457/* SSID Information Element */ 458#define DOT11_SSID_ELE_ID 0 459 460/* Max SSID length */ 461#define MAX_SSID_LEN 32 462 463typedef struct 464{ 465 dot11_eleHdr_t hdr; 466 char serviceSetId[MAX_SSID_LEN]; 467} dot11_SSID_t; 468 469 470/* Supportted rates Information Element */ 471#define DOT11_SUPPORTED_RATES_ELE_ID 1 472#define DOT11_EXT_SUPPORTED_RATES_ELE_ID 50 473typedef struct 474{ 475 dot11_eleHdr_t hdr; 476 TI_UINT8 rates[DOT11_MAX_SUPPORTED_RATES]; 477} dot11_RATES_t; 478 479 480#define ERP_IE_NON_ERP_PRESENT_MASK 0x1 481#define ERP_IE_USE_PROTECTION_MASK 0x2 482#define ERP_IE_BARKER_PREAMBLE_MODE_MASK 0x4 483#define DOT11_ERP_IE_ID 42 484typedef struct 485{ 486 dot11_eleHdr_t hdr; 487 TI_UINT8 ctrl; 488} dot11_ERP_t; 489 490/* RSN Information Element */ 491#define MAX_RSN_IE 3 492#define DOT11_RSN_MAX 255 493typedef struct 494{ 495 dot11_eleHdr_t hdr; 496 TI_UINT8 rsnIeData[DOT11_RSN_MAX]; 497} dot11_RSN_t; 498 499/* General definitions needed by rsn.c */ 500#define IV_FIELD_SIZE 4 501#define ICV_FIELD_SIZE 4 502#define MIC_FIELD_SIZE 8 503#define EIV_FIELD_SIZE 4 504#define WEP_AFTER_HEADER_FIELD_SIZE IV_FIELD_SIZE 505#define TKIP_AFTER_HEADER_FIELD_SIZE (IV_FIELD_SIZE + EIV_FIELD_SIZE) 506#define AES_AFTER_HEADER_FIELD_SIZE 8 507 508/* DS params Information Element */ 509#define DOT11_DS_PARAMS_ELE_ID 3 510#define DOT11_DS_PARAMS_ELE_LEN 1 511typedef struct 512{ 513 dot11_eleHdr_t hdr; 514 TI_UINT8 currChannel; 515} dot11_DS_PARAMS_t; 516 517 518/* DS params Information Element */ 519#define DOT11_IBSS_PARAMS_ELE_ID 6 520#define DOT11_IBSS_PARAMS_ELE_LEN 2 521typedef struct 522{ 523 dot11_eleHdr_t hdr; 524 TI_UINT16 atimWindow; 525} dot11_IBSS_PARAMS_t; 526 527#define DOT11_FH_PARAMS_ELE_ID 2 528#define DOT11_FH_PARAMS_ELE_LEN 5 529typedef struct 530{ 531 dot11_eleHdr_t hdr; 532 TI_UINT16 dwellTime; 533 TI_UINT8 hopSet; 534 TI_UINT8 hopPattern; 535 TI_UINT8 hopIndex; 536} dot11_FH_PARAMS_t; 537 538/* tim Information Element */ 539#define DOT11_TIM_ELE_ID 5 540#define DOT11_PARTIAL_VIRTUAL_BITMAP_MAX 251 541typedef struct 542{ 543 dot11_eleHdr_t hdr; 544 TI_UINT8 dtimCount; 545 TI_UINT8 dtimPeriod; 546 TI_UINT8 bmapControl; 547 TI_UINT8 partialVirtualBmap[DOT11_PARTIAL_VIRTUAL_BITMAP_MAX]; 548} dot11_TIM_t; 549 550/* tim Information Element */ 551#define DOT11_CF_ELE_ID 4 552#define DOT11_CF_PARAMS_ELE_LEN 6 553typedef struct 554{ 555 dot11_eleHdr_t hdr; 556 TI_UINT8 cfpCount; 557 TI_UINT8 cfpPeriod; 558 TI_UINT16 cfpMaxDuration; 559 TI_UINT16 cfpDurRemain; 560} dot11_CF_PARAMS_t; 561 562/* Challenge text Information Element */ 563#define DOT11_CHALLENGE_TEXT_ELE_ID 16 564#define DOT11_CHALLENGE_TEXT_MAX 253 565typedef struct 566{ 567 dot11_eleHdr_t hdr; 568 TI_UINT8 text[ DOT11_CHALLENGE_TEXT_MAX ]; 569} dot11_CHALLENGE_t; 570 571 572#define DOT11_NUM_OF_MAX_TRIPLET_CHANNEL 37 573 574typedef struct 575{ 576 TI_UINT8 firstChannelNumber; 577 TI_UINT8 numberOfChannels; 578 TI_UINT8 maxTxPowerLevel; 579} dot11_TripletChannel_t; 580 581typedef struct 582{ 583 TI_UINT8 CountryString[DOT11_COUNTRY_STRING_LEN]; 584 dot11_TripletChannel_t tripletChannels[DOT11_NUM_OF_MAX_TRIPLET_CHANNEL]; 585} dot11_countryIE_t; 586 587 588/* Country Inforamtion Element */ 589#define DOT11_COUNTRY_ELE_ID 7 590#define DOT11_COUNTRY_ELE_LEN_MAX ( ((DOT11_NUM_OF_MAX_TRIPLET_CHANNEL+1)*3) + !((DOT11_NUM_OF_MAX_TRIPLET_CHANNEL&0x1))) 591typedef struct 592{ 593 dot11_eleHdr_t hdr; 594 dot11_countryIE_t countryIE; 595} dot11_COUNTRY_t; 596 597 598/* Power Constraint Information Element */ 599#define DOT11_POWER_CONSTRAINT_ELE_ID (32) 600#define DOT11_POWER_CONSTRAINT_ELE_LEN (1) 601typedef struct 602{ 603 dot11_eleHdr_t hdr; 604 TI_UINT8 powerConstraint; 605} dot11_POWER_CONSTRAINT_t; 606 607 608 609/* Power Capability Information Element */ 610#define DOT11_CAPABILITY_ELE_ID (33) 611#define DOT11_CAPABILITY_ELE_LEN (2) 612typedef struct 613{ 614 dot11_eleHdr_t hdr; 615 TI_UINT8 minTxPower; 616 TI_UINT8 maxTxPower; 617} dot11_CAPABILITY_t; 618 619/* TPC request Information Element */ 620#define DOT11_TPC_REQUEST_ELE_ID (34) 621#define DOT11_TPC_REQUEST_ELE_LEN (0) 622typedef struct 623{ 624 dot11_eleHdr_t hdr; 625} dot11_TPC_REQUEST_t; 626 627/* TPC report Information Element */ 628#define DOT11_TPC_REPORT_ELE_ID (35) 629#define DOT11_TPC_REPORT_ELE_LEN (2) 630typedef struct 631{ 632 dot11_eleHdr_t hdr; 633 TI_UINT8 transmitPower; 634 TI_UINT8 linkMargin; 635} dot11_TPC_REPORT_t; 636 637 638#ifdef XCC_MODULE_INCLUDED 639 640/* Cell Transmit Power Information Element */ 641#define DOT11_CELL_TP_ELE_ID (150) 642#define DOT11_CELL_TP_ELE_LEN (6) 643 644typedef struct 645{ 646 dot11_eleHdr_t hdr; 647 TI_UINT8 oui[4]; 648 TI_UINT8 power; 649 TI_UINT8 reserved; 650} dot11_CELL_TP_t; 651 652#define DOT11_CELL_TP \ 653 dot11_CELL_TP_t *cellTP; 654 655#else /* XCC_MODULE_INCLUDED */ 656 657#define DOT11_CELL_TP 658 659#endif /* XCC_MODULE_INCLUDED */ 660 661 662/* Channel Supported Information Element */ 663#define DOT11_CHANNEL_SUPPORTED_ELE_ID (36) 664#define DOT11_CHANNEL_SUPPORTED_ELE_LEN (26) 665typedef struct 666{ 667 dot11_eleHdr_t hdr; 668 TI_UINT8 supportedChannel[DOT11_CHANNEL_SUPPORTED_ELE_LEN]; 669 670} dot11_CHANNEL_SUPPORTED_t; 671 672/* Channel Switch Announcement Information Element */ 673#define DOT11_CHANNEL_SWITCH_ELE_ID (37) 674#define DOT11_CHANNEL_SWITCH_ELE_LEN (3) 675typedef struct 676{ 677 dot11_eleHdr_t hdr; 678 TI_UINT8 channelSwitchMode; 679 TI_UINT8 channelNumber; 680 TI_UINT8 channelSwitchCount; 681} dot11_CHANNEL_SWITCH_t; 682 683#define MAX_NUM_REQ (16) 684 685/* Measurement request Information Element */ 686#define DOT11_MEASUREMENT_REQUEST_ELE_ID (38) 687#define DOT11_MEASUREMENT_REQUEST_LEN (2) 688#define DOT11_MEASUREMENT_REQUEST_ELE_LEN (3 + DOT11_MEASUREMENT_REQUEST_LEN*MAX_NUM_REQ) 689typedef struct 690{ 691 dot11_eleHdr_t hdr; 692 TI_UINT8 measurementToken; 693 TI_UINT8 measurementMode; 694 TI_UINT8 measurementType; 695 TI_UINT8 measurementRequests[DOT11_MEASUREMENT_REQUEST_LEN*MAX_NUM_REQ]; 696} dot11_MEASUREMENT_REQUEST_t; 697 698 699/* Quiet Information Element */ 700#define DOT11_QUIET_ELE_ID (40) 701#define DOT11_QUIET_ELE_LEN (6) 702typedef struct 703{ 704 dot11_eleHdr_t hdr; 705 TI_UINT8 quietCount; 706 TI_UINT8 quietPeriod; 707 TI_UINT16 quietDuration; 708 TI_UINT16 quietOffset; 709} dot11_QUIET_t; 710 711 712/* QoS Capability Information Element */ 713#define DOT11_QOS_CAPABILITY_ELE_ID (46) 714#define DOT11_QOS_CAPABILITY_ELE_LEN (1) 715 716#define AC_APSD_FLAGS_MASK (1) 717#define Q_ACK_BITG_MASK (1) 718#define MAX_SP_LENGTH_MASK (3) 719#define MORE_DATA_ACK_MASK (1) 720 721#define AC_VO_APSD_FLAGS_SHIFT (0) 722#define AC_VI_APSD_FLAGS_SHIFT (1) 723#define AC_BK_APSD_FLAGS_SHIFT (2) 724#define AC_BE_APSD_FLAGS_SHIFT (3) 725#define Q_ACK_FLAGS_SHIFT (4) 726#define MAX_SP_LENGTH_SHIFT (5) 727#define MORE_DATA_ACK_SHIFT (7) 728 729#define QOS_CONTROL_UP_SHIFT (0) 730 731#define AP_QOS_INFO_UAPSD_MASK (1) 732#define AP_QOS_INFO_UAPSD_SHIFT (7) 733 734typedef struct 735{ 736 dot11_eleHdr_t hdr; 737 TI_UINT8 QosInfoField; 738} dot11_QOS_CAPABILITY_IE_t; 739 740/* WPS Information Element */ 741#define DOT11_WPS_ELE_ID (221) 742#define DOT11_WPS_OUI {0x00, 0x50, 0xF2, 0x04} 743#define DOT11_WPS_OUI_LEN 4 744 745/* WME Information Element */ 746#define DOT11_WME_ELE_ID (221) 747#define DOT11_WME_ELE_LEN (7) 748typedef struct 749{ 750 dot11_eleHdr_t hdr; 751 TI_UINT8 OUI[3]; 752 TI_UINT8 OUIType; 753 TI_UINT8 OUISubType; 754 TI_UINT8 version; 755 TI_UINT8 ACInfoField; 756} dot11_WME_IE_t; 757 758 759typedef struct 760{ 761 TI_UINT8 ACI_AIFSN; 762 TI_UINT8 ECWmin_ECWmax; 763 TI_UINT16 TXOPLimit; 764} dot11_QOS_AC_IE_ParametersRecord_t; 765 766typedef struct 767{ 768 dot11_QOS_AC_IE_ParametersRecord_t ACBEParametersRecord; 769 dot11_QOS_AC_IE_ParametersRecord_t ACBKParametersRecord; 770 dot11_QOS_AC_IE_ParametersRecord_t ACVIParametersRecord; 771 dot11_QOS_AC_IE_ParametersRecord_t ACVOParametersRecord; 772} dot11_ACParameters_t; 773 774 775/* WME Parameter Information Element */ 776#define DOT11_WME_PARAM_ELE_ID (221) 777#define DOT11_WME_PARAM_ELE_LEN (24) 778typedef struct 779{ 780 dot11_eleHdr_t hdr; 781 TI_UINT8 OUI[3]; 782 TI_UINT8 OUIType; 783 TI_UINT8 OUISubType; 784 TI_UINT8 version; 785 TI_UINT8 ACInfoField; 786 TI_UINT8 reserved; 787 dot11_ACParameters_t WME_ACParameteres; 788} dot11_WME_PARAM_t; 789 790 791/* 802.11n HT Information Element */ 792#define DOT11_HT_CAPABILITIES_ELE_LEN (26) 793#define DOT11_HT_INFORMATION_ELE_LEN (22) 794 795#define DOT11_HT_CAPABILITIES_MCS_RATE_OFFSET (3) 796#define DOT11_HT_INFORMATION_MCS_RATE_OFFSET (6) 797 798typedef struct 799{ 800 dot11_eleHdr_t tHdr; 801 TI_UINT8 aHtCapabilitiesIe[DOT11_HT_CAPABILITIES_ELE_LEN]; /* HT capabilities IE unparsed */ 802} Tdot11HtCapabilitiesUnparse; 803 804typedef struct 805{ 806 dot11_eleHdr_t tHdr; 807 TI_UINT8 aHtInformationIe[DOT11_HT_INFORMATION_ELE_LEN]; /* HT Information IE unparsed */ 808} Tdot11HtInformationUnparse; 809 810/* BA session bits mask */ 811#define DOT11_BAR_CONTROL_FIELD_TID_BITS 0xf000 812#define DOT11_BA_PARAMETER_SET_FIELD_TID_BITS 0x003C 813#define DOT11_BA_PARAMETER_SET_FIELD_WINSIZE_BITS 0xffC0 814#define DOT11_DELBA_PARAMETER_FIELD_TID_BITS 0xf000 815 816/* action field BA frames */ 817typedef enum 818{ 819 DOT11_BA_ACTION_ADDBA = 0, 820 DOT11_BA_ACTION_DELBA = 2 821} Edot11BaAction; 822 823 824/* WiFi Simple Config Information Element */ 825#define DOT11_WSC_PARAM_ELE_ID (221) 826 827#define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS 0x1053 828#define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS_PIN 0xC 829#define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS_PBC 0x80 830 831#define DOT11_WSC_DEVICE_PASSWORD_ID 0x1012 832#define DOT11_WSC_DEVICE_PASSWORD_ID_PIN 0x0000 833#define DOT11_WSC_DEVICE_PASSWORD_ID_PBC 0x0004 834 835/* WiFi Simple Config Parameter Information Element */ 836#define DOT11_WSC_PROBE_REQ_PARAM_ELE_LEN (22) 837#define DOT11_WSC_BEACON_MAX_LENGTH 160 838 839typedef struct 840{ 841 dot11_eleHdr_t hdr; 842 TI_UINT8 OUI[3]; 843 TI_UINT8 OUIType; 844 TI_UINT8 WSCBeaconOrProbIE[DOT11_WSC_BEACON_MAX_LENGTH]; 845} dot11_WSC_t; 846 847#define dot11_WPA_OUI_TYPE (1) 848#define dot11_WME_OUI_TYPE (2) 849#define dot11_WSC_OUI_TYPE (4) 850#define dot11_WME_OUI_SUB_TYPE_IE (0) 851#define dot11_WME_OUI_SUB_TYPE_PARAMS_IE (1) 852#define dot11_WME_VERSION (1) 853#define dot11_WME_ACINFO_MASK 0x0f 854 855/* -------------------- TSPEC ----------------- */ 856 857typedef struct 858{ 859 TI_UINT8 tsInfoArr[3]; 860 861} tsInfo_t; 862 863 864 865/* This structure is part of the TSPEC structure. It was seperated since there are some cases (such as DEL_TS), which we dont need 866to send ALL the TSPEC structure, but only as far as TsInfo. The TSPEC structure contains this smaller structure */ 867typedef struct 868{ 869 dot11_eleHdr_t hdr; 870 871 TI_UINT8 OUI[3]; 872 TI_UINT8 oui_type; 873 TI_UINT8 oui_subtype; 874 TI_UINT8 version; 875 876 tsInfo_t tsInfoField; 877} dot11_WME_TSPEC_IE_hdr_t; 878 879typedef struct 880{ 881 882 dot11_WME_TSPEC_IE_hdr_t tHdr; 883 884 TI_UINT16 nominalMSDUSize; 885 TI_UINT16 maximumMSDUSize; 886 TI_UINT32 minimumServiceInterval; 887 TI_UINT32 maximumServiceInterval; 888 TI_UINT32 inactivityInterval; 889 TI_UINT32 suspensionInterval; 890 TI_UINT32 serviceStartTime; 891 TI_UINT32 minimumDataRate; 892 TI_UINT32 meanDataRate; 893 TI_UINT32 peakDataRate; 894 TI_UINT32 maximumBurstSize; 895 TI_UINT32 delayBound; 896 TI_UINT32 minimumPHYRate; 897 TI_UINT16 surplusBandwidthAllowance; 898 TI_UINT16 mediumTime; 899 900} dot11_WME_TSPEC_IE_t; 901 902 903#define WME_TSPEC_IE_ID 221 904#define WME_TSPEC_IE_LEN 61 905#define WME_TSPEC_IE_TSINFO_LEN 9 906#define WME_TSPEC_IE_OUI_TYPE 0x02 907#define WME_TSPEC_IE_OUI_SUB_TYPE 0x02 908#define WME_TSPEC_IE_VERSION 0x01 909 910/* OUI TYPE values that can be present in management packets inside Cisco vendor specific IE */ 911typedef enum 912{ 913 TS_METRIX_OUI_TYPE = 0x07, 914 TS_RATE_SET_OUI_TYPE = 0x08, 915 EDCA_LIFETIME_OUI_TYPE = 0x09 916} XCC_IE_OUI_TYPE_t; 917 918#define ADDTS_REQUEST_ACTION 0x00 919#define ADDTS_RESPONSE_ACTION 0x01 920#define DELTS_ACTION 0x02 921 922#define ADDTS_STATUS_CODE_SUCCESS 0x00 923#define DELTS_CODE_SUCCESS 0x00 924 925 926#define TS_INFO_0_TRAFFIC_TYPE_MASK 0x01 927#define TS_INFO_0_TSID_MASK 0x1E 928#define TS_INFO_0_DIRECTION_MASK 0x60 929#define TS_INFO_0_ACCESS_POLICY_MASK 0x80 930 931#define TS_INFO_1_ACCESS_POLICY_MASK 0x01 932#define TS_INFO_1_AGGREGATION_MASK 0x02 933#define TS_INFO_1_APSD_MASK 0x04 934#define TS_INFO_1_USER_PRIORITY_MASK 0x38 935#define TS_INFO_1_TSINFO_ACK_POLICY_MASK 0xC0 936 937#define TS_INFO_2_SCHEDULE_MASK 0x01 938#define TS_INFO_2_RESERVED_MASK 0xF7 939 940#define TRAFFIC_TYPE_SHIFT 0 941#define TSID_SHIFT 1 942#define DIRECTION_SHIFT 5 943#define ACCESS_POLICY_SHIFT 7 944#define AGGREGATION_SHIFT 1 945#define APSD_SHIFT 2 946#define USER_PRIORITY_SHIFT 3 947#define TSINFO_ACK_POLICY_SHIFT 6 948#define SCHEDULE_SHIFT 0 949#define RESERVED_SHIFT 1 950#define SURPLUS_BANDWIDTH_ALLOW 13 951 952#define TS_INFO_0_ACCESS_POLICY_EDCA 0x1 953#define NORMAL_ACKNOWLEDGEMENT 0x00 954#define NO_SCHEDULE 0x00 955#define PS_UPSD 0x01 956#define EDCA_MODE 0x08 957#define FIX_MSDU_SIZE 0x8000 958 959#define WPA_IE_OUI {0x00, 0x50, 0xf2} 960#define XCC_OUI {0x00, 0x40, 0x96} 961 962/* Action field structure 963 used for extended management action such as spectrum management */ 964typedef TI_UINT8 dot11_ACTION_FIELD_t[2]; 965 966 967/* Management frames sub types */ 968typedef enum 969{ 970 ASSOC_REQUEST = 0, 971 ASSOC_RESPONSE = 1, 972 RE_ASSOC_REQUEST = 2, 973 RE_ASSOC_RESPONSE = 3, 974 PROBE_REQUEST = 4, 975 PROBE_RESPONSE = 5, 976 BEACON = 8, 977 ATIM = 9, 978 DIS_ASSOC = 10, 979 AUTH = 11, 980 DE_AUTH = 12, 981 ACTION = 13 982} dot11MgmtSubType_e; 983 984/* Management frames element IDs */ 985typedef enum 986{ 987 SSID_IE_ID = 0, 988 SUPPORTED_RATES_IE_ID = 1, 989 FH_PARAMETER_SET_IE_ID = 2, 990 DS_PARAMETER_SET_IE_ID = 3, 991 CF_PARAMETER_SET_IE_ID = 4, 992 TIM_IE_ID = 5, 993 IBSS_PARAMETER_SET_IE_ID = 6, 994 COUNTRY_IE_ID = 7, 995 CHALLANGE_TEXT_IE_ID = 16, 996 POWER_CONSTRAINT_IE_ID = 32, 997 TPC_REPORT_IE_ID = 35, 998 CHANNEL_SWITCH_ANNOUNCEMENT_IE_ID = 37, 999 QUIET_IE_ID = 40, 1000 ERP_IE_ID = 42, 1001 HT_CAPABILITIES_IE_ID = 45, 1002 QOS_CAPABILITY_IE_ID = 46, 1003 RSN_IE_ID = 48, 1004 EXT_SUPPORTED_RATES_IE_ID = 50, 1005 HT_INFORMATION_IE_ID = 61, 1006 XCC_EXT_1_IE_ID = 133, 1007 XCC_EXT_2_IE_ID = 149, 1008 CELL_POWER_IE = 150, /*XCC*/ 1009 WPA_IE_ID = 221 1010 1011} dot11MgmtIeId_e; 1012 1013/* Spectrum Management Action fields */ 1014typedef enum 1015{ 1016 MEASUREMENT_REQUEST = 0, 1017 MEASUREMENT_REPORT = 1, 1018 TPC_REQUEST = 2, 1019 TPC_REPORT = 3, 1020 CHANNEL_SWITCH_ANNOUNCEMENT = 4 1021} dot11ActionFrameTypes_e; 1022 1023/* Category fields (such as apectrum management)*/ 1024typedef enum 1025{ 1026 CATAGORY_SPECTRUM_MANAGEMENT = 0, 1027 CATAGORY_QOS = 1, 1028 WME_CATAGORY_QOS = 17, 1029 CATAGORY_SPECTRUM_MANAGEMENT_ERROR = 128 1030} dot11CategoryTypes_e; 1031 1032 1033/* 1034 * Management templates to set to the HAL: 1035 */ 1036 1037#ifdef XCC_MODULE_INCLUDED 1038 1039 typedef struct 1040 { 1041 dot11_mgmtHeader_t hdr; 1042 char infoElements[sizeof( dot11_SSID_t ) + 1043 sizeof( dot11_RATES_t ) + 1044 sizeof( dot11_RATES_t ) + 1045 sizeof( Tdot11HtCapabilitiesUnparse ) + 1046 DOT11_WSC_PROBE_REQ_MAX_LENGTH + 1047 sizeof( XCC_radioManagmentCapability_IE_t ) 1048 ]; 1049 } probeReqTemplate_t; 1050 1051#else /* XCC_MODULE_INCLUDED */ 1052 1053 typedef struct 1054 { 1055 dot11_mgmtHeader_t hdr; 1056 char infoElements[sizeof( dot11_SSID_t ) + 1057 sizeof( dot11_RATES_t ) + 1058 sizeof( dot11_RATES_t ) + 1059 sizeof( Tdot11HtCapabilitiesUnparse ) + 1060 DOT11_WSC_PROBE_REQ_MAX_LENGTH 1061 ]; 1062 } probeReqTemplate_t; 1063 1064#endif /* XCC_MODULE_INCLUDED */ 1065 1066 1067typedef struct 1068{ 1069 dot11_mgmtHeader_t hdr; 1070 TI_UINT8 timeStamp[TIME_STAMP_LEN]; 1071 TI_UINT16 beaconInterval; 1072 TI_UINT16 capabilities; 1073 char infoElements[ sizeof( dot11_SSID_t ) + 1074 sizeof( dot11_RATES_t ) + 1075 sizeof( dot11_RATES_t ) + 1076 sizeof( dot11_DS_PARAMS_t ) + 1077 sizeof( dot11_COUNTRY_t) ]; 1078} probeRspTemplate_t; 1079 1080typedef struct 1081{ 1082 dot11_mgmtHeader_t hdr; 1083} nullDataTemplate_t; 1084 1085typedef struct 1086{ 1087 dot11_mgmtHeader_t hdr; 1088 TI_UINT16 disconnReason; 1089} disconnTemplate_t; /* Deauth or Disassoc */ 1090 1091typedef struct 1092{ 1093 dot11_header_t hdr; 1094 TI_UINT8 securityOverhead[AES_AFTER_HEADER_FIELD_SIZE]; 1095 Wlan_LlcHeader_T LLC; 1096 TI_UINT16 hardType; 1097 TI_UINT16 protType; 1098 TI_UINT8 hardSize; 1099 TI_UINT8 protSize; 1100 TI_UINT16 op; 1101 TMacAddr StaMac; 1102 TIpAddr StaIp; 1103 TMacAddr TargMac; 1104 TIpAddr TargIp; 1105} ArpRspTemplate_t; /* for auto ArpRsp sending by FW */ 1106 1107typedef struct 1108{ 1109 dot11_PsPollFrameHeader_t hdr; 1110} psPollTemplate_t; 1111 1112typedef struct 1113{ 1114 dot11_header_t hdr; 1115} QosNullDataTemplate_t; 1116 1117/* Traffic Stream Rate Set (TSRS) info-elements */ 1118typedef struct 1119{ 1120 dot11_eleHdr_t hdr; 1121 TI_UINT8 OUI[3]; 1122 TI_UINT8 oui_type; 1123 TI_UINT8 tsid; 1124 TI_UINT8 tsNominalRate; 1125} dot11_TSRS_STA_IE_t; 1126 1127typedef struct 1128{ 1129 dot11_eleHdr_t hdr; 1130 TI_UINT8 OUI[3]; 1131 TI_UINT8 oui_type; 1132 TI_UINT8 tsid; 1133 TI_UINT8 tsRates[8]; 1134} dot11_TSRS_IE_t; 1135 1136/* MSDU lifetime info-element */ 1137typedef struct 1138{ 1139 dot11_eleHdr_t hdr; 1140 TI_UINT8 OUI[3]; 1141 TI_UINT8 oui_type; 1142 TI_UINT8 tsid; 1143 TI_UINT16 msduLifeTime; 1144} dot11_MSDU_LIFE_TIME_IE_t; 1145 1146typedef struct 1147{ 1148 dot11_eleHdr_t hdr; 1149 TI_UINT8 OUI[3]; 1150 TI_UINT8 oui_type; 1151 TI_UINT8 tsid; 1152 TI_UINT8 state; 1153 TI_UINT16 measureInterval; 1154} dot11_TS_METRICS_IE_t; 1155 1156typedef struct 1157{ 1158 dot11_TSRS_IE_t *trafficStreamParameter; 1159 dot11_MSDU_LIFE_TIME_IE_t *edcaLifetimeParameter; 1160 dot11_TS_METRICS_IE_t *tsMetrixParameter; 1161} XCCv4IEs_t; 1162 1163 1164/* Measurement Report message frame structure */ 1165#define DOT11_MEASUREMENT_REPORT_ELE_ID (39) 1166#define DOT11_MAX_MEASUREMENT_REPORT_LEN (4) 1167#define DOT11_MIN_MEASUREMENT_REPORT_IE_LEN (3) 1168#define DOT11_MEASUREMENT_REPORT_ELE_IE_LEN (DOT11_MIN_MEASUREMENT_REPORT_IE_LEN + DOT11_MAX_MEASUREMENT_REPORT_LEN*MAX_NUM_REQ) 1169 1170typedef struct 1171{ 1172 dot11_ACTION_FIELD_t actionField; 1173 TI_UINT8 dialogToken; 1174 1175 dot11_eleHdr_t hdr; 1176 TI_UINT8 measurementToken; 1177 TI_UINT8 measurementMode; 1178 TI_UINT8 measurementType; 1179 TI_UINT8 measurementReports[DOT11_MAX_MEASUREMENT_REPORT_LEN*MAX_NUM_REQ]; 1180} MeasurementReportFrame_t; 1181 1182 1183 1184typedef enum 1185{ 1186 STATUS_SUCCESSFUL = 0, 1187 STATUS_UNSPECIFIED, 1188 STATUS_AUTH_REJECT, 1189 STATUS_ASSOC_REJECT, 1190 STATUS_SECURITY_FAILURE, 1191 STATUS_AP_DEAUTHENTICATE, 1192 STATUS_AP_DISASSOCIATE, 1193 STATUS_ROAMING_TRIGGER, 1194 STATUS_DISCONNECT_DURING_CONNECT, 1195 STATUS_SG_RESELECT, 1196 STATUS_MIC_FAILURE = 14, 1197 MGMT_STATUS_MAX_NUM = 15 1198} mgmtStatus_e; 1199 1200/* Used as a status code in case of STATUS_AUTH_REJECT or STATUS_ASSOC_REJECT that was not received at all */ 1201#define STATUS_PACKET_REJ_TIMEOUT 0xFFFF 1202 1203/* As defined in 802.11 spec section 7.3.1 - status codes for deAuth packet */ 1204#define STATUS_CODE_802_1X_AUTHENTICATION_FAILED 23 1205 1206/* map field included in measurement report IE (only in basic report) */ 1207typedef enum 1208{ 1209 DOT11_BSS_ONLY = (0x01), 1210 DOT11_OFDM_ONLY = (0x02), 1211 DOT11_RADAR_AND_UNIDENTIFIED = (0x0C) 1212} dot11_Map_Sub_Field_e; 1213 1214 1215typedef struct 1216{ 1217 legacy_dot11_header_t dot11Header; 1218 Wlan_LlcHeader_T snapHeader; 1219} legacy_dot11_DataMsduHeader_t; 1220 1221 1222#define WLAN_HEADER_TYPE_CONCATENATION 0x01 1223#define WLAN_CONCAT_HEADER_LEN 2 1224 1225 1226#endif /* _802_11_INFO_DEFS_H */ 1227