diff -r 000000000000 -r 10c42ec6c05f utils/802_11Defs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utils/802_11Defs.h Tue Jun 29 12:34:26 2010 +0100 @@ -0,0 +1,1227 @@ +/* + * 802_11Defs.h + * + * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 or BSD License which accompanies + * this distribution. The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Texas Instruments nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/**************************************************************************** + * + * MODULE: 802_11Defs.h + * PURPOSE: Contains 802.11 defines/structures + * + ****************************************************************************/ + +#ifndef _802_11_INFO_DEFS_H +#define _802_11_INFO_DEFS_H + +#include "tidef.h" +#include "osDot11.h" +#ifdef XCC_MODULE_INCLUDED +#include "osdot11XCC.h" +#endif + +#define DOT11_OUI_LEN 3 +#define DOT11_COUNTRY_STRING_LEN 3 +#define DOT11_MAX_SUPPORTED_RATES 32 + +/* Maximum size of beacon or probe-request information element */ +#define DOT11_WSC_PROBE_REQ_MAX_LENGTH 80 + + +typedef enum +{ + DOT11_B_MODE = 1, + DOT11_A_MODE = 2, + DOT11_G_MODE = 3, + DOT11_DUAL_MODE = 4, + DOT11_N_MODE = 5, + + DOT11_MAX_MODE + +} EDot11Mode; + + +/* FrameControl field of the 802.11 header */ + +/**/ +/* bit 15 14 13 12 11 10 9 8 7-4 3-2 1-0*/ +/* +-------+-----+------+-----+-------+------+------+----+---------+------+----------+*/ +/* | Order | WEP | More | Pwr | Retry | More | From | To | Subtype | Type | Protocol |*/ +/* | | | Data | Mgmt| | Frag | DS | DS | | | Version |*/ +/* +-------+-----+------+-----+-------+------+------+----+---------+------+----------+*/ +/* 1 1 1 1 1 1 1 1 4 2 2*/ + + +#define DOT11_FC_PROT_VERSION_MASK ( 3 << 0 ) +#define DOT11_FC_PROT_VERSION ( 0 << 0 ) + +#define DOT11_FC_TYPE_MASK ( 3 << 2 ) +typedef enum +{ + DOT11_FC_TYPE_MGMT = ( 0 << 2 ), + DOT11_FC_TYPE_CTRL = ( 1 << 2 ), + DOT11_FC_TYPE_DATA = ( 2 << 2 ) +} dot11_Fc_Type_e; + +#define DOT11_FC_SUB_MASK ( 0x0f << 4 ) +typedef enum +{ + /* Management subtypes */ + DOT11_FC_SUB_ASSOC_REQ = ( 0 << 4 ), + DOT11_FC_SUB_ASSOC_RESP = ( 1 << 4 ), + DOT11_FC_SUB_REASSOC_REQ = ( 2 << 4 ), + DOT11_FC_SUB_REASSOC_RESP = ( 3 << 4 ), + DOT11_FC_SUB_PROBE_REQ = ( 4 << 4 ), + DOT11_FC_SUB_PROBE_RESP = ( 5 << 4 ), + DOT11_FC_SUB_BEACON = ( 8 << 4 ), + DOT11_FC_SUB_ATIM = ( 9 << 4 ), + DOT11_FC_SUB_DISASSOC = ( 10 << 4 ), + DOT11_FC_SUB_AUTH = ( 11 << 4 ), + DOT11_FC_SUB_DEAUTH = ( 12 << 4 ), + DOT11_FC_SUB_ACTION = ( 13 << 4 ), + + /* Control subtypes */ + DOT11_FC_SUB_BAR = ( 8 << 4 ), + DOT11_FC_SUB_BA = ( 9 << 4 ), + DOT11_FC_SUB_PS_POLL = ( 10 << 4 ), + DOT11_FC_SUB_RTS = ( 11 << 4 ), + DOT11_FC_SUB_CTS = ( 12 << 4 ), + DOT11_FC_SUB_ACK = ( 13 << 4 ), + DOT11_FC_SUB_CF_END = ( 14 << 4 ), + DOT11_FC_SUB_CF_END_CF_ACK = ( 15 << 4 ), + + /* Data subtypes */ + DOT11_FC_SUB_DATA = ( 0 << 4 ), + DOT11_FC_SUB_DATA_CF_ACK = ( 1 << 4 ), + DOT11_FC_SUB_DATA_CF_POLL = ( 2 << 4 ), + DOT11_FC_SUB_DATA_CF_ACK_CF_POLL = ( 3 << 4 ), + DOT11_FC_SUB_NULL_FUNCTION = ( 4 << 4 ), + DOT11_FC_SUB_CF_ACK = ( 5 << 4 ), + DOT11_FC_SUB_CF_POLL = ( 6 << 4 ), + DOT11_FC_SUB_CF_ACK_CF_POLL = ( 7 << 4 ), + DOT11_FC_SUB_DATA_QOS = ( 8 << 4 ), + DOT11_FC_SUB_DATA_NULL_QOS = ( 12 << 4 ) +} dot11_Fc_Sub_Type_e; + +#define DOT11_FC_TYPESUBTYPE_MASK ( DOT11_FC_TYPE_MASK | DOT11_FC_SUB_MASK ) +typedef enum +{ + DOT11_FC_ASSOC_REQ = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ASSOC_REQ ), + DOT11_FC_ASSOC_RESP = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ASSOC_RESP ), + DOT11_FC_REASSOC_REQ = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_REASSOC_REQ ), + DOT11_FC_REASSOC_RESP = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_REASSOC_RESP ), + DOT11_FC_PROBE_REQ = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_PROBE_REQ ), + DOT11_FC_PROBE_RESP = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_PROBE_RESP ), + DOT11_FC_BEACON = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_BEACON ), + DOT11_FC_ATIM = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ATIM ), + DOT11_FC_DISASSOC = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_DISASSOC ), + DOT11_FC_AUTH = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_AUTH ), + DOT11_FC_DEAUTH = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_DEAUTH ), + DOT11_FC_ACTION = ( DOT11_FC_TYPE_MGMT | DOT11_FC_SUB_ACTION ), + DOT11_FC_PS_POLL = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_PS_POLL ), + DOT11_FC_RTS = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_RTS ), + DOT11_FC_CTS = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_CTS ), + DOT11_FC_ACK = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_ACK ), + DOT11_FC_CF_END = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_CF_END ), + DOT11_FC_CF_END_CF_ACK = ( DOT11_FC_TYPE_CTRL | DOT11_FC_SUB_CF_END_CF_ACK ), + DOT11_FC_DATA = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA ), + DOT11_FC_DATA_CF_ACK = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_CF_ACK ), + DOT11_FC_DATA_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_CF_POLL ), + DOT11_FC_DATA_CF_ACK_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_CF_ACK_CF_POLL ), + DOT11_FC_DATA_NULL_FUNCTION = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_NULL_FUNCTION ), + DOT11_FC_CF_ACK = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_CF_ACK ), + DOT11_FC_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_CF_POLL ), + DOT11_FC_CF_ACK_CF_POLL = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_CF_ACK_CF_POLL ), + DOT11_FC_DATA_QOS = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_QOS ), + DOT11_FC_DATA_NULL_QOS = ( DOT11_FC_TYPE_DATA | DOT11_FC_SUB_DATA_NULL_QOS ) +} dot11_Fc_Type_Sub_Type_e; + +typedef enum +{ + DOT11_FC_TO_DS = ( 1 << 8 ), + DOT11_FC_FROM_DS = ( 1 << 9 ), + DOT11_FC_MORE_FRAG = ( 1 << 10 ), + DOT11_FC_RETRY = ( 1 << 11 ), + DOT11_FC_PWR_MGMT = ( 1 << 12 ), + DOT11_FC_MORE_DATA = ( 1 << 13 ), + DOT11_FC_WEP = ( 1 << 14 ), + DOT11_FC_ORDER = ( 1 << 15 ) +} dot11_Fc_Other_e; + +typedef enum +{ + DOT11_CAPABILITY_ESS = ( 1 ), + DOT11_CAPABILITY_IESS = ( 1 << 1 ), + DOT11_CAPABILITY_CF_POLLABE = ( 1 << 2 ), + DOT11_CAPABILITY_CF_POLL_REQ = ( 1 << 3 ), + DOT11_CAPABILITY_PRIVACY = ( 1 << 4 ), + DOT11_CAPABILITY_PREAMBLE = ( 1 << 5 ), + DOT11_CAPABILITY_PBCC = ( 1 << 6 ), + DOT11_CAPABILITY_AGILE = ( 1 << 7 ) +} dot11_Capability_e; + +#define DOT11_FC_TO_DS_SHIFT 8 +#define DOT11_FC_FROM_DS_SHIFT 9 +#define DOT11_FC_MORE_FRAG_SHIFT 10 +#define DOT11_FC_RETRY_SHIFT 11 +#define DOT11_FC_PWR_MGMT_SHIFT 12 +#define DOT11_FC_MORE_DATA_SHIFT 13 +#define DOT11_FC_WEP_SHIFT 14 +#define DOT11_FC_ORDER_SHIFT 15 + +#define IS_WEP_ON(fc) ((1 << DOT11_FC_WEP_SHIFT) & (fc)) +#define IS_DATA(fc) (((DOT11_FC_TYPE_MASK) & (fc)) == DOT11_FC_TYPE_DATA) +#define IS_CTRL(fc) (((DOT11_FC_TYPE_MASK) & (fc)) == DOT11_FC_TYPE_CTRL) +#define IS_MGMT(fc) (((DOT11_FC_TYPE_MASK) & (fc)) == DOT11_FC_TYPE_MGMT) +#define IS_LEGACY_DATA(fc) (((DOT11_FC_TYPESUBTYPE_MASK) & (fc)) == DOT11_FC_DATA) +#define IS_AUTH(fc) (((DOT11_FC_AUTH) & (fc)) == DOT11_FC_AUTH) +#define IS_QOS_FRAME(fc) ((((fc) & (DOT11_FC_TYPESUBTYPE_MASK)) == DOT11_FC_DATA_QOS) || \ + (((fc) & (DOT11_FC_TYPESUBTYPE_MASK)) == DOT11_FC_DATA_NULL_QOS) ) +#define IS_HT_FRAME(fc) ((fc) & (DOT11_FC_ORDER)) + + + +#define TUs_TO_MSECs(x) (((x) << 10) / 1000) + +#define TIME_STAMP_LEN 8 + +/* SequenceControl field of the 802.11 header */ +/**/ +/* bit 15 - 4 3 - 0*/ +/* +-------------------+-----------+*/ +/* | Sequence Number | Fragment |*/ +/* | | Number |*/ +/* +-------------------+-----------+*/ +/* 12 4*/ + +typedef enum +{ + DOT11_SC_FRAG_NUM_MASK = ( 0xf << 0 ), + DOT11_SC_SEQ_NUM_MASK = ( 0xfff << 4 ) +} dot11_Sc_t; + +/* QoS Control field of the 802.11 header */ +#define DOT11_QOS_CONTROL_FIELD_TID_BITS 0x000f +#define DOT11_QOS_CONTROL_FIELD_A_MSDU_BITS 0x0080 + +#define DOT11_QOS_CONTROL_ACK 0x0000 +#define DOT11_QOS_CONTROL_DONT_ACK 0x0020 + +typedef struct +{ + TI_UINT16 fc; + TI_UINT16 duration; + TMacAddr address1; + TMacAddr address2; + TMacAddr address3; + TI_UINT16 seqCtrl; + TI_UINT16 qosControl; +/* TMacAddr address4;*/ +} dot11_header_t; + +typedef struct +{ + TI_UINT16 fc; + TI_UINT16 duration; + TMacAddr address1; + TMacAddr address2; + TMacAddr address3; + TI_UINT16 seqCtrl; +} legacy_dot11_header_t; + + + +typedef struct +{ + TI_UINT16 fc; + TI_UINT16 duration; + TMacAddr DA; + TMacAddr SA; + TMacAddr BSSID; + TI_UINT16 seqCtrl; +} dot11_mgmtHeader_t; + +typedef struct +{ + TI_UINT8 DSAP; + TI_UINT8 SSAP; + TI_UINT8 Control; + TI_UINT8 OUI[3]; + TI_UINT16 Type; +} Wlan_LlcHeader_T; + +typedef struct +{ + TI_UINT16 fc; + TI_UINT16 AID; + TMacAddr BSSID; + TMacAddr TA; +} dot11_PsPollFrameHeader_t; + +typedef struct +{ + TI_UINT16 fc; + TI_UINT16 duration; + TMacAddr RA; + TMacAddr TA; +} dot11_BarFrameHeader_t; + + +#define FCS_SIZE 4 + +#define WLAN_HDR_LEN 24 +#define WLAN_HT_HDR_LEN 28 +#define WLAN_QOS_HDR_LEN 26 +#define WLAN_QOS_HT_HDR_LEN 30 +#define WLAN_QOS_HT_CONTROL_FIELD_LEN 4 +#define WLAN_SNAP_HDR_LEN 8 +#define WLAN_WITH_SNAP_HEADER_MAX_SIZE (WLAN_HDR_LEN + WLAN_SNAP_HDR_LEN) +#define WLAN_WITH_SNAP_QOS_HEADER_MAX_SIZE (WLAN_QOS_HDR_LEN + WLAN_SNAP_HDR_LEN) +#define HT_CONTROL_SIZE 4 + +#define GET_MAX_HEADER_SIZE(macHeaderPointer,headerSize) \ + if (IS_QOS_FRAME(*(TI_UINT16*)(macHeaderPointer))) \ + {\ + if (IS_HT_FRAME(*(TI_UINT16*)(macHeaderPointer))) \ + *headerSize = WLAN_QOS_HT_HDR_LEN; \ + else \ + *headerSize = WLAN_QOS_HDR_LEN; \ + }\ + else \ + {\ + if (IS_HT_FRAME(*(TI_UINT16*)(macHeaderPointer))) \ + *headerSize = WLAN_HT_HDR_LEN; \ + else \ + *headerSize = WLAN_HDR_LEN; \ + } + +/**************************************************************************************** + The next table is defined in 802.11 spec section 7.2.2 for the address field contents : + To DS From DS Address 1 Address 2 Address 3 Address 4 + ------------------------------------------------------------------- + 0 0 DA SA BSSID N/A + 0 1 DA BSSID SA N/A + 1 0 BSSID SA DA N/A + 1 1 RA TA DA SA + +NOTE: We only support packets coming from within the DS (i.e. From DS = 0) +*****************************************************************************************/ +/* return the destination address used in *dot11_header_t */ +#define GET_DA_FROM_DOT11_HEADER_T(pDot11Hdr) ((pDot11Hdr->fc & DOT11_FC_TO_DS) ? (pDot11Hdr->address3) : (pDot11Hdr->address1)) + + +/* + * MANAGEMENT + * ----------------- + */ + +/* mgmt body max length */ +#define MAX_MGMT_BODY_LENGTH 2312 +/* maximal length of beacon body - note that actual beacons may actually be longer + than this size, at least according to the spec, but so far no larger beacon was seen */ +#define MAX_BEACON_BODY_LENGTH 350 + +/* general mgmt frame structure */ +typedef struct +{ + dot11_mgmtHeader_t hdr; + TI_UINT8 body[MAX_MGMT_BODY_LENGTH]; +} dot11_mgmtFrame_t; + +/* Capabilities Information Field - IN THE AIR */ +/**/ +/* bit 15 14 13 12 11 10 9 8 7 - 0*/ +/* +----------+------+----------+---------+----------+---------+------+-----+---------------+*/ +/* | Channel | | Short | Privacy | CF Poll | CF | | | RESERVED | */ +/* | Agility | PBCC | Preamble | | Request | Pollable| IBSS | ESS | |*/ +/* +----------+------+----------+---------+----------+---------+------+-----+---------------+ */ +/* 1 1 1 1 1 1 1 1*/ + + +/* Capabilities Information Field - IN THE MGMT SOFTWARE AFTER THE SWAP */ +/**/ +/* bit 15 - 8 7 6 5 4 3 2 1 0*/ +/* +------------+----------+------+----------+---------+----------+---------+------+-----+*/ +/* | | Channel | | Short | Privacy | CF Poll | CF | | |*/ +/* | Reserved | Agility | PBCC | Preamble | | Request | Pollable| IBSS | ESS |*/ +/* +------------+----------+------+----------+---------+----------+---------+------+-----+*/ +/* 8 1 1 1 1 1 1 1 1*/ + + + +typedef enum +{ + DOT11_CAPS_ESS = ( 1 << 0 ), + DOT11_CAPS_IBSS = ( 1 << 1 ), + DOT11_CAPS_CF_POLLABLE = ( 1 << 2 ), + DOT11_CAPS_CF_POLL_REQUEST = ( 1 << 3 ), + DOT11_CAPS_PRIVACY = ( 1 << 4 ), + DOT11_CAPS_SHORT_PREAMBLE = ( 1 << 5 ), + DOT11_CAPS_PBCC = ( 1 << 6 ), + DOT11_CAPS_CHANNEL_AGILITY = ( 1 << 7 ), + DOT11_SPECTRUM_MANAGEMENT = ( 1 << 8 ), + DOT11_CAPS_QOS_SUPPORTED = ( 1 << 9 ), + DOT11_CAPS_SHORT_SLOT_TIME = (1 << 10), + + DOT11_CAPS_APSD_SUPPORT = ( 1 << 11), + + DOT11_CAPS_DELAYED_BA = ( 1 << 14), + DOT11_CAPS_IMMEDIATE_BA = ( 1 << 15) + +} dot11_capabilities_e; + +typedef enum +{ + /* ESS */ + CAP_ESS_MASK = 1, + CAP_ESS_SHIFT = 0, + + /* IBSS */ + CAP_IBSS_MASK = 1, + CAP_IBSS_SHIFT = 1, + + /* CF Pollable */ + CAP_CF_POLL_MASK = 1, + CAP_CF_POLL_SHIFT = 2, + + /* CF Poll request */ + CAP_CF_REQ_MASK = 1, + CAP_CF_REQ_SHIFT = 3, + + /* Privacy */ + CAP_PRIVACY_MASK = 1, + CAP_PRIVACY_SHIFT = 4, + + /* Short Preamble*/ + CAP_PREAMBLE_MASK = 1, + CAP_PREAMBLE_SHIFT = 5, + + /* PBCC */ + CAP_PBCC_MASK = 1, + CAP_PBCC_SHIFT = 6, + + /* Agile */ + CAP_AGILE_MASK = 1, + CAP_AGILE_SHIFT = 7, + + /* Slot time */ + CAP_SLOT_TIME_MASK = 1, + CAP_SLOT_TIME_SHIFT = 10, + + /* APSD */ + CAP_APSD_MASK = 1, + CAP_APSD_SHIFT = 11 + + +} wdrv_mgmtCapabilities_e; + + +/* + * 802.11 Information elements + * --------------------------- + */ + +typedef TI_UINT8 dot11_eleHdr_t[2]; /* Byte-0: IE-ID, Byte-1: IE-Length */ + +/* fixed fields lengths, except of currentAP & timestamp*/ +#define FIX_FIELD_LEN 2 + +/* SSID Information Element */ +#define DOT11_SSID_ELE_ID 0 + +/* Max SSID length */ +#define DOT11_SSID_MAX_LEN 32 + +typedef struct +{ + dot11_eleHdr_t hdr; + char serviceSetId[DOT11_SSID_MAX_LEN]; +} dot11_SSID_t; + + +/* Supportted rates Information Element */ +#define DOT11_SUPPORTED_RATES_ELE_ID 1 +#define DOT11_EXT_SUPPORTED_RATES_ELE_ID 50 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 rates[DOT11_MAX_SUPPORTED_RATES]; +} dot11_RATES_t; + + +#define ERP_IE_NON_ERP_PRESENT_MASK 0x1 +#define ERP_IE_USE_PROTECTION_MASK 0x2 +#define ERP_IE_BARKER_PREAMBLE_MODE_MASK 0x4 +#define DOT11_ERP_IE_ID 42 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 ctrl; +} dot11_ERP_t; + +/* RSN Information Element */ +#define MAX_RSN_IE 3 +#define DOT11_RSN_MAX 255 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 rsnIeData[DOT11_RSN_MAX]; +} dot11_RSN_t; + +/* General definitions needed by rsn.c */ +#define IV_FIELD_SIZE 4 +#define ICV_FIELD_SIZE 4 +#define MIC_FIELD_SIZE 8 +#define EIV_FIELD_SIZE 4 +#ifdef GEM_SUPPORT + #define GEM_KEY_IDX_FIELD_SIZE 1 + #define GEM_RESERVED_FIELD_SIZE 1 + #define GEM_PN_FIELD_SIZE 16 + #define GEM_MIC_FIELD_SIZE 16 +#endif +#define WEP_AFTER_HEADER_FIELD_SIZE IV_FIELD_SIZE +#define TKIP_AFTER_HEADER_FIELD_SIZE (IV_FIELD_SIZE + EIV_FIELD_SIZE) +#define AES_AFTER_HEADER_FIELD_SIZE 8 +#ifdef GEM_SUPPORT + #define GEM_AFTER_HEADER_FIELD_SIZE (GEM_KEY_IDX_FIELD_SIZE + GEM_RESERVED_FIELD_SIZE + GEM_PN_FIELD_SIZE) + #define GEM_AFTER_HEADER_PAD 2 + #define GEM_BUFFER_ALIGNMENT 2 + +#endif + + +/* DS params Information Element */ +#define DOT11_DS_PARAMS_ELE_ID 3 +#define DOT11_DS_PARAMS_ELE_LEN 1 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 currChannel; +} dot11_DS_PARAMS_t; + + +/* DS params Information Element */ +#define DOT11_IBSS_PARAMS_ELE_ID 6 +#define DOT11_IBSS_PARAMS_ELE_LEN 2 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT16 atimWindow; +} dot11_IBSS_PARAMS_t; + +#define DOT11_FH_PARAMS_ELE_ID 2 +#define DOT11_FH_PARAMS_ELE_LEN 5 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT16 dwellTime; + TI_UINT8 hopSet; + TI_UINT8 hopPattern; + TI_UINT8 hopIndex; +} dot11_FH_PARAMS_t; + +/* tim Information Element */ +#define DOT11_TIM_ELE_ID 5 +#define DOT11_PARTIAL_VIRTUAL_BITMAP_MAX 251 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 dtimCount; + TI_UINT8 dtimPeriod; + TI_UINT8 bmapControl; + TI_UINT8 partialVirtualBmap[DOT11_PARTIAL_VIRTUAL_BITMAP_MAX]; +} dot11_TIM_t; + +/* tim Information Element */ +#define DOT11_CF_ELE_ID 4 +#define DOT11_CF_PARAMS_ELE_LEN 6 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 cfpCount; + TI_UINT8 cfpPeriod; + TI_UINT16 cfpMaxDuration; + TI_UINT16 cfpDurRemain; +} dot11_CF_PARAMS_t; + +/* Challenge text Information Element */ +#define DOT11_CHALLENGE_TEXT_ELE_ID 16 +#define DOT11_CHALLENGE_TEXT_MAX 253 +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 text[ DOT11_CHALLENGE_TEXT_MAX ]; +} dot11_CHALLENGE_t; + + +#define DOT11_NUM_OF_MAX_TRIPLET_CHANNEL 32 + +typedef struct +{ + TI_UINT8 firstChannelNumber; + TI_UINT8 numberOfChannels; + TI_UINT8 maxTxPowerLevel; +} dot11_TripletChannel_t; + +typedef struct +{ + TI_UINT8 CountryString[DOT11_COUNTRY_STRING_LEN]; + dot11_TripletChannel_t tripletChannels[DOT11_NUM_OF_MAX_TRIPLET_CHANNEL]; +} dot11_countryIE_t; + + +/* Country Inforamtion Element */ +#define DOT11_COUNTRY_ELE_ID 7 +#define DOT11_COUNTRY_ELE_LEN_MAX ( ((DOT11_NUM_OF_MAX_TRIPLET_CHANNEL+1)*3) + !((DOT11_NUM_OF_MAX_TRIPLET_CHANNEL&0x1))) +typedef struct +{ + dot11_eleHdr_t hdr; + dot11_countryIE_t countryIE; +} dot11_COUNTRY_t; + + +/* Power Constraint Information Element */ +#define DOT11_POWER_CONSTRAINT_ELE_ID (32) +#define DOT11_POWER_CONSTRAINT_ELE_LEN (1) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 powerConstraint; +} dot11_POWER_CONSTRAINT_t; + + + +/* Power Capability Information Element */ +#define DOT11_CAPABILITY_ELE_ID (33) +#define DOT11_CAPABILITY_ELE_LEN (2) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 minTxPower; + TI_UINT8 maxTxPower; +} dot11_CAPABILITY_t; + +/* TPC request Information Element */ +#define DOT11_TPC_REQUEST_ELE_ID (34) +#define DOT11_TPC_REQUEST_ELE_LEN (0) +typedef struct +{ + dot11_eleHdr_t hdr; +} dot11_TPC_REQUEST_t; + +/* TPC report Information Element */ +#define DOT11_TPC_REPORT_ELE_ID (35) +#define DOT11_TPC_REPORT_ELE_LEN (2) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 transmitPower; + TI_UINT8 linkMargin; +} dot11_TPC_REPORT_t; + + +#ifdef XCC_MODULE_INCLUDED + +/* Cell Transmit Power Information Element */ +#define DOT11_CELL_TP_ELE_ID (150) +#define DOT11_CELL_TP_ELE_LEN (6) + +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 oui[4]; + TI_UINT8 power; + TI_UINT8 reserved; +} dot11_CELL_TP_t; + +#define DOT11_CELL_TP \ + dot11_CELL_TP_t *cellTP; + +#else /* XCC_MODULE_INCLUDED */ + +#define DOT11_CELL_TP + +#endif /* XCC_MODULE_INCLUDED */ + + +/* Channel Supported Information Element */ +#define DOT11_CHANNEL_SUPPORTED_ELE_ID (36) +#define DOT11_CHANNEL_SUPPORTED_ELE_LEN (26) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 supportedChannel[DOT11_CHANNEL_SUPPORTED_ELE_LEN]; + +} dot11_CHANNEL_SUPPORTED_t; + +/* Channel Switch Announcement Information Element */ +#define DOT11_CHANNEL_SWITCH_ELE_ID (37) +#define DOT11_CHANNEL_SWITCH_ELE_LEN (3) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 channelSwitchMode; + TI_UINT8 channelNumber; + TI_UINT8 channelSwitchCount; +} dot11_CHANNEL_SWITCH_t; + +#define MAX_NUM_REQ (16) + +/* Measurement request Information Element */ +#define DOT11_MEASUREMENT_REQUEST_ELE_ID (38) +#define DOT11_MEASUREMENT_REQUEST_LEN (2) +#define DOT11_MEASUREMENT_REQUEST_ELE_LEN (3 + DOT11_MEASUREMENT_REQUEST_LEN*MAX_NUM_REQ) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 measurementToken; + TI_UINT8 measurementMode; + TI_UINT8 measurementType; + TI_UINT8 measurementRequests[DOT11_MEASUREMENT_REQUEST_LEN*MAX_NUM_REQ]; +} dot11_MEASUREMENT_REQUEST_t; + + +/* Quiet Information Element */ +#define DOT11_QUIET_ELE_ID (40) +#define DOT11_QUIET_ELE_LEN (6) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 quietCount; + TI_UINT8 quietPeriod; + TI_UINT16 quietDuration; + TI_UINT16 quietOffset; +} dot11_QUIET_t; + + +/* QoS Capability Information Element */ +#define DOT11_QOS_CAPABILITY_ELE_ID (46) +#define DOT11_QOS_CAPABILITY_ELE_LEN (1) + +#define AC_APSD_FLAGS_MASK (1) +#define Q_ACK_BITG_MASK (1) +#define MAX_SP_LENGTH_MASK (3) +#define MORE_DATA_ACK_MASK (1) + +#define AC_VO_APSD_FLAGS_SHIFT (0) +#define AC_VI_APSD_FLAGS_SHIFT (1) +#define AC_BK_APSD_FLAGS_SHIFT (2) +#define AC_BE_APSD_FLAGS_SHIFT (3) +#define Q_ACK_FLAGS_SHIFT (4) +#define MAX_SP_LENGTH_SHIFT (5) +#define MORE_DATA_ACK_SHIFT (7) + +#define QOS_CONTROL_UP_SHIFT (0) + +#define AP_QOS_INFO_UAPSD_MASK (1) +#define AP_QOS_INFO_UAPSD_SHIFT (7) + +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 QosInfoField; +} dot11_QOS_CAPABILITY_IE_t; + +/* WPS Information Element */ +#define DOT11_WPS_ELE_ID (221) +#define DOT11_WPS_OUI {0x00, 0x50, 0xF2, 0x04} +#define DOT11_WPS_OUI_LEN 4 + +/* WME Information Element */ +#define DOT11_WME_ELE_ID (221) +#define DOT11_WME_ELE_LEN (7) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 OUIType; + TI_UINT8 OUISubType; + TI_UINT8 version; + TI_UINT8 ACInfoField; +} dot11_WME_IE_t; + + +typedef struct +{ + TI_UINT8 ACI_AIFSN; + TI_UINT8 ECWmin_ECWmax; + TI_UINT16 TXOPLimit; +} dot11_QOS_AC_IE_ParametersRecord_t; + +typedef struct +{ + dot11_QOS_AC_IE_ParametersRecord_t ACBEParametersRecord; + dot11_QOS_AC_IE_ParametersRecord_t ACBKParametersRecord; + dot11_QOS_AC_IE_ParametersRecord_t ACVIParametersRecord; + dot11_QOS_AC_IE_ParametersRecord_t ACVOParametersRecord; +} dot11_ACParameters_t; + + +/* WME Parameter Information Element */ +#define DOT11_WME_PARAM_ELE_ID (221) +#define DOT11_WME_PARAM_ELE_LEN (24) +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 OUIType; + TI_UINT8 OUISubType; + TI_UINT8 version; + TI_UINT8 ACInfoField; + TI_UINT8 reserved; + dot11_ACParameters_t WME_ACParameteres; +} dot11_WME_PARAM_t; + + +/* 802.11n HT Information Element */ +#define DOT11_HT_CAPABILITIES_ELE_LEN (26) +#define DOT11_HT_INFORMATION_ELE_LEN (22) + +#define DOT11_HT_CAPABILITIES_MCS_RATE_OFFSET (3) +#define DOT11_HT_INFORMATION_MCS_RATE_OFFSET (6) + +typedef struct +{ + dot11_eleHdr_t tHdr; + TI_UINT8 aHtCapabilitiesIe[DOT11_HT_CAPABILITIES_ELE_LEN]; /* HT capabilities IE unparsed */ +} Tdot11HtCapabilitiesUnparse; + +typedef struct +{ + dot11_eleHdr_t tHdr; + TI_UINT8 aHtInformationIe[DOT11_HT_INFORMATION_ELE_LEN]; /* HT Information IE unparsed */ +} Tdot11HtInformationUnparse; + +/* BA session bits mask */ +#define DOT11_BAR_CONTROL_FIELD_TID_BITS 0xf000 +#define DOT11_BA_PARAMETER_SET_FIELD_TID_BITS 0x003C +#define DOT11_BA_PARAMETER_SET_FIELD_WINSIZE_BITS 0xffC0 +#define DOT11_DELBA_PARAMETER_FIELD_TID_BITS 0xf000 + +/* action field BA frames */ +typedef enum +{ + DOT11_BA_ACTION_ADDBA = 0, + DOT11_BA_ACTION_DELBA = 2 +} Edot11BaAction; + + +/* WiFi Simple Config Information Element */ +#define DOT11_WSC_PARAM_ELE_ID (221) + +#define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS 0x1053 +#define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS_PIN 0xC +#define DOT11_WSC_SELECTED_REGISTRAR_CONFIG_METHODS_PBC 0x80 + +#define DOT11_WSC_DEVICE_PASSWORD_ID 0x1012 +#define DOT11_WSC_DEVICE_PASSWORD_ID_PIN 0x0000 +#define DOT11_WSC_DEVICE_PASSWORD_ID_PBC 0x0004 + +/* WiFi Simple Config Parameter Information Element */ +#define DOT11_WSC_PROBE_REQ_PARAM_ELE_LEN (22) +#define DOT11_WSC_BEACON_MAX_LENGTH 160 + +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 OUIType; + TI_UINT8 WSCBeaconOrProbIE[DOT11_WSC_BEACON_MAX_LENGTH]; +} dot11_WSC_t; + +#define dot11_WPA_OUI_TYPE (1) +#define dot11_WME_OUI_TYPE (2) +#define dot11_WSC_OUI_TYPE (4) +#define dot11_WME_OUI_SUB_TYPE_IE (0) +#define dot11_WME_OUI_SUB_TYPE_PARAMS_IE (1) +#define dot11_WME_VERSION (1) +#define dot11_WME_ACINFO_MASK 0x0f + +/* -------------------- TSPEC ----------------- */ + +typedef struct +{ + TI_UINT8 tsInfoArr[3]; + +} tsInfo_t; + + + +/* This structure is part of the TSPEC structure. It was seperated since there are some cases (such as DEL_TS), which we dont need +to send ALL the TSPEC structure, but only as far as TsInfo. The TSPEC structure contains this smaller structure */ +typedef struct +{ + dot11_eleHdr_t hdr; + + TI_UINT8 OUI[3]; + TI_UINT8 oui_type; + TI_UINT8 oui_subtype; + TI_UINT8 version; + + tsInfo_t tsInfoField; +} dot11_WME_TSPEC_IE_hdr_t; + +typedef struct +{ + + dot11_WME_TSPEC_IE_hdr_t tHdr; + + TI_UINT16 nominalMSDUSize; + TI_UINT16 maximumMSDUSize; + TI_UINT32 minimumServiceInterval; + TI_UINT32 maximumServiceInterval; + TI_UINT32 inactivityInterval; + TI_UINT32 suspensionInterval; + TI_UINT32 serviceStartTime; + TI_UINT32 minimumDataRate; + TI_UINT32 meanDataRate; + TI_UINT32 peakDataRate; + TI_UINT32 maximumBurstSize; + TI_UINT32 delayBound; + TI_UINT32 minimumPHYRate; + TI_UINT16 surplusBandwidthAllowance; + TI_UINT16 mediumTime; + +} dot11_WME_TSPEC_IE_t; + + +#define WME_TSPEC_IE_ID 221 +#define WME_TSPEC_IE_LEN 61 +#define WME_TSPEC_IE_TSINFO_LEN 9 +#define WME_TSPEC_IE_OUI_TYPE 0x02 +#define WME_TSPEC_IE_OUI_SUB_TYPE 0x02 +#define WME_TSPEC_IE_VERSION 0x01 + +/* OUI TYPE values that can be present in management packets inside Cisco vendor specific IE */ +typedef enum +{ + TS_METRIX_OUI_TYPE = 0x07, + TS_RATE_SET_OUI_TYPE = 0x08, + EDCA_LIFETIME_OUI_TYPE = 0x09 +} XCC_IE_OUI_TYPE_t; + +#define ADDTS_REQUEST_ACTION 0x00 +#define ADDTS_RESPONSE_ACTION 0x01 +#define DELTS_ACTION 0x02 + +#define ADDTS_STATUS_CODE_SUCCESS 0x00 +#define DELTS_CODE_SUCCESS 0x00 + + +#define TS_INFO_0_TRAFFIC_TYPE_MASK 0x01 +#define TS_INFO_0_TSID_MASK 0x1E +#define TS_INFO_0_DIRECTION_MASK 0x60 +#define TS_INFO_0_ACCESS_POLICY_MASK 0x80 + +#define TS_INFO_1_ACCESS_POLICY_MASK 0x01 +#define TS_INFO_1_AGGREGATION_MASK 0x02 +#define TS_INFO_1_APSD_MASK 0x04 +#define TS_INFO_1_USER_PRIORITY_MASK 0x38 +#define TS_INFO_1_TSINFO_ACK_POLICY_MASK 0xC0 + +#define TS_INFO_2_SCHEDULE_MASK 0x01 +#define TS_INFO_2_RESERVED_MASK 0xF7 + +#define TRAFFIC_TYPE_SHIFT 0 +#define TSID_SHIFT 1 +#define DIRECTION_SHIFT 5 +#define ACCESS_POLICY_SHIFT 7 +#define AGGREGATION_SHIFT 1 +#define APSD_SHIFT 2 +#define USER_PRIORITY_SHIFT 3 +#define TSINFO_ACK_POLICY_SHIFT 6 +#define SCHEDULE_SHIFT 0 +#define RESERVED_SHIFT 1 +#define SURPLUS_BANDWIDTH_ALLOW 13 + +#define TS_INFO_0_ACCESS_POLICY_EDCA 0x1 +#define NORMAL_ACKNOWLEDGEMENT 0x00 +#define NO_SCHEDULE 0x00 +#define PS_UPSD 0x01 +#define EDCA_MODE 0x08 +#define FIX_MSDU_SIZE 0x8000 + +#define WPA_IE_OUI {0x00, 0x50, 0xf2} +#define XCC_OUI {0x00, 0x40, 0x96} + +/* Action field structure + used for extended management action such as spectrum management */ +typedef TI_UINT8 dot11_ACTION_FIELD_t[2]; + + +/* Management frames sub types */ +typedef enum +{ + ASSOC_REQUEST = 0, + ASSOC_RESPONSE = 1, + RE_ASSOC_REQUEST = 2, + RE_ASSOC_RESPONSE = 3, + PROBE_REQUEST = 4, + PROBE_RESPONSE = 5, + BEACON = 8, + ATIM = 9, + DIS_ASSOC = 10, + AUTH = 11, + DE_AUTH = 12, + ACTION = 13 +} dot11MgmtSubType_e; + +/* Management frames element IDs */ +typedef enum +{ + SSID_IE_ID = 0, + SUPPORTED_RATES_IE_ID = 1, + FH_PARAMETER_SET_IE_ID = 2, + DS_PARAMETER_SET_IE_ID = 3, + CF_PARAMETER_SET_IE_ID = 4, + TIM_IE_ID = 5, + IBSS_PARAMETER_SET_IE_ID = 6, + COUNTRY_IE_ID = 7, + CHALLANGE_TEXT_IE_ID = 16, + POWER_CONSTRAINT_IE_ID = 32, + TPC_REPORT_IE_ID = 35, + CHANNEL_SWITCH_ANNOUNCEMENT_IE_ID = 37, + QUIET_IE_ID = 40, + ERP_IE_ID = 42, + HT_CAPABILITIES_IE_ID = 45, + QOS_CAPABILITY_IE_ID = 46, + RSN_IE_ID = 48, + EXT_SUPPORTED_RATES_IE_ID = 50, + HT_INFORMATION_IE_ID = 61, + XCC_EXT_1_IE_ID = 133, + XCC_EXT_2_IE_ID = 149, + CELL_POWER_IE = 150, /*XCC*/ + WPA_IE_ID = 221 + +} dot11MgmtIeId_e; + +/* Spectrum Management Action fields */ +typedef enum +{ + MEASUREMENT_REQUEST = 0, + MEASUREMENT_REPORT = 1, + TPC_REQUEST = 2, + TPC_REPORT = 3, + CHANNEL_SWITCH_ANNOUNCEMENT = 4 +} dot11ActionFrameTypes_e; + +/* Category fields (such as apectrum management)*/ +typedef enum +{ + CATAGORY_SPECTRUM_MANAGEMENT = 0, + CATAGORY_QOS = 1, + WME_CATAGORY_QOS = 17, + CATAGORY_SPECTRUM_MANAGEMENT_ERROR = 128 +} dot11CategoryTypes_e; + + +/* + * Management templates to set to the HAL: + */ + +#ifdef XCC_MODULE_INCLUDED + + typedef struct + { + dot11_mgmtHeader_t hdr; + char infoElements[sizeof( dot11_SSID_t ) + + sizeof( dot11_RATES_t ) + + sizeof( dot11_RATES_t ) + + sizeof( Tdot11HtCapabilitiesUnparse ) + + sizeof( DOT11_WSC_PROBE_REQ_MAX_LENGTH ) + + sizeof( XCC_radioManagmentCapability_IE_t ) + ]; + } probeReqTemplate_t; + +#else /* XCC_MODULE_INCLUDED */ + + typedef struct + { + dot11_mgmtHeader_t hdr; + char infoElements[sizeof( dot11_SSID_t ) + + sizeof( dot11_RATES_t ) + + sizeof( dot11_RATES_t ) + + sizeof( Tdot11HtCapabilitiesUnparse ) + + sizeof( DOT11_WSC_PROBE_REQ_MAX_LENGTH ) + ]; + } probeReqTemplate_t; + +#endif /* XCC_MODULE_INCLUDED */ + + +typedef struct +{ + dot11_mgmtHeader_t hdr; + TI_UINT8 timeStamp[TIME_STAMP_LEN]; + TI_UINT16 beaconInterval; + TI_UINT16 capabilities; + char infoElements[ sizeof( dot11_SSID_t ) + + sizeof( dot11_RATES_t ) + + sizeof( dot11_RATES_t ) + + sizeof( dot11_DS_PARAMS_t ) + + sizeof( dot11_COUNTRY_t) ]; +} probeRspTemplate_t; + +typedef struct +{ + dot11_mgmtHeader_t hdr; +} nullDataTemplate_t; + +typedef struct +{ + dot11_mgmtHeader_t hdr; + TI_UINT16 disconnReason; +} disconnTemplate_t; /* Deauth or Disassoc */ + +typedef struct +{ + dot11_PsPollFrameHeader_t hdr; +} psPollTemplate_t; + +typedef struct +{ + dot11_header_t hdr; +} QosNullDataTemplate_t; + +/* Traffic Stream Rate Set (TSRS) info-elements */ +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 oui_type; + TI_UINT8 tsid; + TI_UINT8 tsNominalRate; +} dot11_TSRS_STA_IE_t; + +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 oui_type; + TI_UINT8 tsid; + TI_UINT8 tsRates[8]; +} dot11_TSRS_IE_t; + +/* MSDU lifetime info-element */ +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 oui_type; + TI_UINT8 tsid; + TI_UINT16 msduLifeTime; +} dot11_MSDU_LIFE_TIME_IE_t; + +typedef struct +{ + dot11_eleHdr_t hdr; + TI_UINT8 OUI[3]; + TI_UINT8 oui_type; + TI_UINT8 tsid; + TI_UINT8 state; + TI_UINT16 measureInterval; +} dot11_TS_METRICS_IE_t; + +typedef struct +{ + dot11_TSRS_IE_t *trafficStreamParameter; + dot11_MSDU_LIFE_TIME_IE_t *edcaLifetimeParameter; + dot11_TS_METRICS_IE_t *tsMetrixParameter; +} XCCv4IEs_t; + + +/* Measurement Report message frame structure */ +#define DOT11_MEASUREMENT_REPORT_ELE_ID (39) +#define DOT11_MAX_MEASUREMENT_REPORT_LEN (4) +#define DOT11_MIN_MEASUREMENT_REPORT_IE_LEN (3) +#define DOT11_MEASUREMENT_REPORT_ELE_IE_LEN (DOT11_MIN_MEASUREMENT_REPORT_IE_LEN + DOT11_MAX_MEASUREMENT_REPORT_LEN*MAX_NUM_REQ) + +typedef struct +{ + dot11_ACTION_FIELD_t actionField; + TI_UINT8 dialogToken; + + dot11_eleHdr_t hdr; + TI_UINT8 measurementToken; + TI_UINT8 measurementMode; + TI_UINT8 measurementType; + TI_UINT8 measurementReports[DOT11_MAX_MEASUREMENT_REPORT_LEN*MAX_NUM_REQ]; +} MeasurementReportFrame_t; + + + +typedef enum +{ + STATUS_SUCCESSFUL = 0, + STATUS_UNSPECIFIED, + STATUS_AUTH_REJECT, + STATUS_ASSOC_REJECT, + STATUS_SECURITY_FAILURE, + STATUS_AP_DEAUTHENTICATE, + STATUS_AP_DISASSOCIATE, + STATUS_ROAMING_TRIGGER, + STATUS_DISCONNECT_DURING_CONNECT, + STATUS_SG_RESELECT, + MGMT_STATUS_MAX_NUM +} mgmtStatus_e; + +/* Used as a status code in case of STATUS_AUTH_REJECT or STATUS_ASSOC_REJECT that was not received at all */ +#define STATUS_PACKET_REJ_TIMEOUT 0xFFFF + +/* As defined in 802.11 spec section 7.3.1 - status codes for deAuth packet */ +#define STATUS_CODE_802_1X_AUTHENTICATION_FAILED 23 + +/* map field included in measurement report IE (only in basic report) */ +typedef enum +{ + DOT11_BSS_ONLY = (0x01), + DOT11_OFDM_ONLY = (0x02), + DOT11_RADAR_AND_UNIDENTIFIED = (0x0C) +} dot11_Map_Sub_Field_e; + + +typedef struct +{ + legacy_dot11_header_t dot11Header; + Wlan_LlcHeader_T snapHeader; +} legacy_dot11_DataMsduHeader_t; + + +#define WLAN_HEADER_TYPE_CONCATENATION 0x01 +#define WLAN_CONCAT_HEADER_LEN 2 + + +#endif /* _802_11_INFO_DEFS_H */