Home | History | Annotate | Download | only in utils
      1 /*
      2  * osDot11.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 /* Module:		osDot11.h */
     37 /**/
     38 /* Purpose:		*/
     39 /**/
     40 /*--------------------------------------------------------------------------*/
     41 #ifndef __OSDOT11_H__
     42 #define __OSDOT11_H__
     43 
     44 #include "tidef.h"
     45 #include "tiQosTypes.h"
     46 
     47 
     48 #define	OS_STATUS_MEDIA_SPECIFIC_INDICATION	((NDIS_STATUS)0x40010012L)
     49 
     50 #define OS_802_11_REQUEST_REAUTH					0x01
     51 #define OS_802_11_REQUEST_KEYUPDATE					0x02
     52 #define OS_802_11_REQUEST_PAIRWISE_ERROR			0x06
     53 #define OS_802_11_REQUEST_GROUP_ERROR				0x0E
     54 
     55 #define OS_802_11_SSID_FIRST_VALID_CHAR             32
     56 
     57 #define OS_802_11_SSID_JUNK(str,len)                   \
     58         ((len) > 2 &&                                  \
     59          (unsigned char)(str)[0] < OS_802_11_SSID_FIRST_VALID_CHAR && \
     60          (unsigned char)(str)[1] < OS_802_11_SSID_FIRST_VALID_CHAR && \
     61          (unsigned char)(str)[2] < OS_802_11_SSID_FIRST_VALID_CHAR)
     62 
     63 
     64 /**/
     65 /*  Per-packet information for Ieee8021QInfo.*/
     66 /**/
     67 typedef struct _OS_PACKET_8021Q_INFO
     68 {
     69     union
     70     {
     71         struct
     72         {
     73             TI_UINT32      UserPriority:3;         /* 802.1p priority */
     74             TI_UINT32      CanonicalFormatId:1;    /* always 0*/
     75             TI_UINT32      VlanId:12;              /* VLAN Identification*/
     76             TI_UINT32      Reserved:16;            /* set to 0*/
     77         }   TagHeader;
     78 
     79         void*  Value;
     80     }u;
     81 } OS_PACKET_8021Q_INFO, *POS_PACKET_8021Q_INFO;
     82 
     83 
     84 typedef TI_UINT64 OS_802_11_KEY_RSC;
     85 
     86 typedef struct _OS_802_11_SSID
     87 {
     88     TI_UINT32 SsidLength;
     89     TI_UINT8  Ssid[32];
     90 } OS_802_11_SSID, *POS_802_11_SSID;
     91 
     92 typedef enum _OS_802_11_NETWORK_TYPE
     93 {
     94   os802_11FH,
     95   os802_11DS,
     96   os802_11OFDM5,
     97   os802_11OFDM24,
     98   os802_11Automode,
     99   os802_11NetworkTypeMax
    100 } OS_802_11_NETWORK_TYPE;
    101 
    102 typedef struct _OS_802_11_NETWORK_TYPE_LIST
    103 {
    104   TI_UINT32                  NumberOfItems;
    105   OS_802_11_NETWORK_TYPE NetworkType [1];
    106 } OS_802_11_NETWORK_TYPE_LIST, *POS_802_11_NETWORK_TYPE_LIST;
    107 
    108 typedef enum _OS_802_11_POWER_MODE
    109 {
    110   /*Continuous access mode (CAM). */
    111   /*When the power mode is set to CAM, the device is always on. */
    112   os802_11PowerModeCAM,
    113 
    114   /*Specifies maximum (MAX) power saving. A power mode of MAX */
    115   /*results in the greatest power savings for the 802.11 NIC radio. */
    116   os802_11PowerModeMAX_PSP,
    117 
    118   /*Specifies fast power-saving mode. This power mode provides */
    119   /*the best combination of network performance and power usage. */
    120   os802_11PowerModeFast_PSP,
    121   os802_11PowerModeMax
    122 } OS_802_11_POWER_MODE;
    123 
    124 /*specified in milliwatts (mW).*/
    125 typedef TI_UINT32 OS_802_11_TX_POWER_LEVEL;
    126 /*Normal value from -10 and -200*/
    127 typedef TI_INT32 OS_802_11_RSSI;
    128 
    129 /*Length */
    130 
    131 /*  Specifies the length of the OS_802_11_CONFIGURATION_FH structure in bytes. */
    132 /*HopPattern*/
    133 /*  Specifies the hop pattern used to determine the hop sequence. */
    134 /*  As defined by the 802.11 standard, the layer management entity (LME) of */
    135 /*  the physical layer uses a hop pattern to determine the hop sequence. */
    136 /*HopSet*/
    137 /*  Specifies a set of patterns. The LME of the physical layer uses these */
    138 /*  patterns to determine the hop sequence. */
    139 /*DwellTime*/
    140 /*  Specifies the maximum period of time during which the transmitter */
    141 /*  should remain fixed on a channel. This interval is described in Ksec (1024 sec). */
    142 typedef struct _OS_802_11_CONFIGURATION_FH
    143 {
    144     TI_UINT32  Length;
    145     TI_UINT32  HopPattern;
    146     TI_UINT32  HopSet;
    147     TI_UINT32  DwellTime;
    148 } OS_802_11_CONFIGURATION_FH, *POS_802_11_CONFIGURATION_FH;
    149 
    150 /*Length */
    151 
    152 /*  Specifies the length of the NDIS_802_11_CONFIGURATION structure in bytes. */
    153 /*BeaconPeriod */
    154 /*  Specifies the interval between beacon message transmissions. */
    155 /*  This value is specified in Ksec (1024 sec). */
    156 /*ATIMWindow */
    157 /*  Specifies the announcement traffic information message (ATIM) window in */
    158 /*  Ksec (1024 sec). The ATIM window is a short time period immediately */
    159 /*  after the transmission of each beacon in an IBSS configuration. */
    160 /*  During the ATIM window, any station can indicate the need to transfer data */
    161 /*  to another station during the following data-transmission window. */
    162 /*DSConfig */
    163 /*  Specifies the frequency of the selected channel in kHz. */
    164 /*FHConfig */
    165 /*  Specifies the frequency hopping configuration in an OS_802_11_CONFIGURATION_FH structure. */
    166 typedef struct _OS_802_11_CONFIGURATION
    167 {
    168     TI_UINT32 Length;
    169     TI_UINT32 BeaconPeriod;
    170     TI_UINT32 ATIMWindow;
    171   union
    172   {
    173         TI_UINT32 DSConfig;
    174         TI_UINT32 channel;
    175   } Union;
    176   OS_802_11_CONFIGURATION_FH FHConfig;
    177 } OS_802_11_CONFIGURATION, *POS_802_11_CONFIGURATION;
    178 
    179 /*Ndis802_11IBSS */
    180 /*  Specifies the independent basic service set (IBSS) mode. */
    181 /*  This mode is also known as ad hoc mode. */
    182 /*Ndis802_11Infrastructure */
    183 /*  Specifies the infrastructure mode. */
    184 /*Ndis802_11AutoUnknown */
    185 /*  Specifies an automatic mode. In this mode, the 802.11 NIC can switch */
    186 /*  between ad hoc and infrastructure modes as required. */
    187 /*Ndis802_11HighSpeedIBSS*/
    188 /*  Specifies proprietary ad hoc mode that works only PBCC.*/
    189 typedef enum _OS_802_11_NETWORK_MODE
    190 {
    191   os802_11IBSS,
    192   os802_11Infrastructure,
    193   os802_11AutoUnknown,
    194   os802_11HighSpeedIBSS,
    195   os802_11InfrastructureMax
    196 } OS_802_11_NETWORK_MODE, OS_802_11_NETWORK_INFRASTRUCTURE,*POS_802_11_NETWORK_INFRASTRUCTURE;
    197 
    198 /**/
    199 /*The rates array contains a set of eight octets. */
    200 /*Each octet contains a desired data rate in units of .5 Mbps.*/
    201 /**/
    202 typedef TI_UINT8 OS_802_11_RATES[8];
    203 
    204 typedef TI_UINT8 OS_802_11_RATES_EX[16];
    205 
    206 typedef TI_UINT8 OS_802_11_N_RATES[32];
    207 
    208 typedef struct _OS_802_11_FIXED_IEs
    209 {
    210 	TI_UINT8  TimeStamp[8];
    211 	TI_UINT16 BeaconInterval;
    212 	TI_UINT16 Capabilities;
    213 } OS_802_11_FIXED_IEs, *POS_802_11_FIXED_IEs;
    214 
    215 typedef struct _OS_802_11_VARIABLE_IEs
    216 {
    217 	TI_UINT8 ElementID;
    218 	TI_UINT8 Length;	/* Number of bytes in data field*/
    219 	TI_UINT8 data[1];
    220 }  OS_802_11_VARIABLE_IEs, *POS_802_11_VARIABLE_IEs;
    221 
    222 typedef struct _OS_802_11_BSSID
    223 {
    224   TI_UINT32 Length;
    225   TMacAddr                  MacAddress;
    226   TI_UINT16					Capabilities;
    227   OS_802_11_SSID            Ssid;
    228   TI_UINT32                 Privacy;
    229   OS_802_11_RSSI            Rssi;
    230   OS_802_11_NETWORK_TYPE    NetworkTypeInUse;
    231   OS_802_11_CONFIGURATION   Configuration;
    232   OS_802_11_NETWORK_MODE    InfrastructureMode;
    233   OS_802_11_RATES           SupportedRates;
    234 }  OS_802_11_BSSID, *POS_802_11_BSSID;
    235 
    236 typedef struct _OS_802_11_BSSID_LIST
    237 {
    238     TI_UINT32          NumberOfItems;
    239   OS_802_11_BSSID  Bssid[1];
    240 }  OS_802_11_BSSID_LIST, *POS_802_11_BSSID_LIST;
    241 
    242 
    243 typedef struct _OS_802_11_BSSID_EX
    244 {
    245   TI_UINT32					Length;
    246   TMacAddr		            MacAddress;
    247   TI_UINT16					Capabilities;
    248   OS_802_11_SSID            Ssid;
    249   TI_UINT32                 Privacy;
    250   OS_802_11_RSSI            Rssi;
    251   OS_802_11_NETWORK_TYPE    NetworkTypeInUse;
    252   OS_802_11_CONFIGURATION   Configuration;
    253   OS_802_11_NETWORK_MODE    InfrastructureMode;
    254   OS_802_11_RATES_EX        SupportedRates;
    255   TI_UINT32                 IELength;
    256   TI_UINT8                  IEs[1];
    257 } OS_802_11_BSSID_EX, *POS_802_11_BSSID_EX, OS_WLAN_BSSID_EX, *POS_WLAN_BSSID_EX;
    258 
    259 typedef struct _OS_802_11_BSSID_LIST_EX
    260 {
    261   TI_UINT32                 NumberOfItems;
    262   OS_802_11_BSSID_EX        Bssid[1];
    263 }  OS_802_11_BSSID_LIST_EX, *POS_802_11_BSSID_LIST_EX;
    264 
    265 
    266 typedef TI_UINT32 OS_802_11_FRAGMENTATION_THRESHOLD;
    267 typedef TI_UINT32 OS_802_11_RTS_THRESHOLD;
    268 typedef TI_UINT32 OS_802_11_ANTENNA;
    269 
    270 
    271 /*Length */
    272 /*  Specifies the length of the NDIS_802_11_WEP structure in bytes. */
    273 /*KeyIndex */
    274 /*  Specifies which key to add or remove. The global keys are represented */
    275 /*  by values of zero to n. When the most significant bit is set to 1, */
    276 /*  it indicates the key used to transmit to the access point. */
    277 /*KeyLength */
    278 /*  Specifies the length of the KeyMaterial character array in bytes. */
    279 /*KeyMaterial */
    280 /*  Specifies an arraythat identifies the WEP key. The length of this array is */
    281 /*  variable and depends upon the value of the KeyLength member. */
    282 
    283 typedef TI_UINT32 OS_802_11_KEY_INDEX;
    284 typedef struct _OS_802_11_WEP
    285 {
    286     TI_UINT32 Length;
    287     TI_UINT32 KeyIndex;
    288     TI_UINT32 KeyLength;
    289     TI_UINT8  KeyMaterial [32];
    290 } OS_802_11_WEP, *POS_802_11_WEP;
    291 
    292 /* Key mapping keys require a BSSID*/
    293 /*typedef tiUINT64 OS_802_11_KEY_RSC;*/
    294 
    295 typedef struct _OS_802_11_KEY
    296 {
    297     TI_UINT32                  Length;             /* Length of this structure*/
    298     TI_UINT32                  KeyIndex;
    299     TI_UINT32                  KeyLength;          /* length of key in bytes*/
    300     TMacAddr                   BSSID;
    301     OS_802_11_KEY_RSC          KeyRSC;
    302     TI_UINT8                   KeyMaterial[32];     /* variable length depending on above field*/
    303 }  OS_802_11_KEY, *POS_802_11_KEY;
    304 
    305 typedef struct _OS_802_11_REMOVE_KEY
    306 {
    307     TI_UINT32                  Length;             /* Length of this structure*/
    308     TI_UINT32                  KeyIndex;
    309     TMacAddr                   BSSID;
    310 } OS_802_11_REMOVE_KEY, *POS_802_11_REMOVE_KEY;
    311 
    312 #define OS_802_11_AI_REQFI_CAPABILITIES     1
    313 #define OS_802_11_AI_REQFI_LISTENINTERVAL   2
    314 #define OS_802_11_AI_REQFI_CURRENTAPADDRESS 4
    315 
    316 
    317 #define OS_802_11_AI_RESFI_CAPABILITIES     1
    318 #define OS_802_11_AI_RESFI_STATUSCODE       2
    319 #define OS_802_11_AI_RESFI_ASSOCIATIONID    4
    320 
    321 typedef struct _OS_802_11_AI_REQFI
    322 {
    323 	TI_UINT16 Capabilities;
    324 	TI_UINT16 ListenInterval;
    325 	TMacAddr  CurrentAPAddress;
    326 #ifndef _WINDOWS
    327     TI_UINT16 reserved; /* added for packing */
    328 #endif
    329 } OS_802_11_AI_REQFI;
    330 
    331 typedef struct _OS_802_11_AI_RESFI
    332 {
    333 	TI_UINT16 Capabilities;
    334 	TI_UINT16 StatusCode;
    335 	TI_UINT16 AssociationId;
    336 #ifndef _WINDOWS
    337     TI_UINT16 reserved; /* added for packing */
    338 #endif
    339 } OS_802_11_AI_RESFI;
    340 
    341 typedef struct _OS_802_11_ASSOCIATION_INFORMATION
    342 {
    343     TI_UINT32 Length;
    344     TI_UINT16 AvailableRequestFixedIEs;
    345     OS_802_11_AI_REQFI RequestFixedIEs;
    346     TI_UINT32 RequestIELength;
    347     TI_UINT32 OffsetRequestIEs;
    348     TI_UINT16 AvailableResponseFixedIEs;
    349     OS_802_11_AI_RESFI ResponseFixedIEs;
    350     TI_UINT32 ResponseIELength;
    351     TI_UINT32 OffsetResponseIEs;
    352 
    353 }  OS_802_11_ASSOCIATION_INFORMATION, *POS_802_11_ASSOCIATION_INFORMATION;
    354 
    355 
    356 /* supported EAP types*/
    357 typedef enum _OS_802_11_EAP_TYPES
    358 {
    359     OS_EAP_TYPE_NONE                = -1,
    360 	OS_EAP_TYPE_MD5_CHALLENGE		= 4,
    361 	OS_EAP_TYPE_GENERIC_TOKEN_CARD	= 6,
    362 	OS_EAP_TYPE_TLS					= 13,
    363 	OS_EAP_TYPE_LEAP				= 17,
    364 	OS_EAP_TYPE_TTLS				= 21,
    365 	OS_EAP_TYPE_PEAP				= 25,
    366 	OS_EAP_TYPE_MS_CHAP_V2			= 26,
    367     OS_EAP_TYPE_FAST                = 43
    368 } OS_802_11_EAP_TYPES;
    369 
    370 /* encryption type*/
    371 typedef enum _OS_802_11_ENCRYPTION_TYPES
    372 {
    373 	OS_ENCRYPTION_TYPE_NONE = 0,
    374 	OS_ENCRYPTION_TYPE_WEP,
    375 	OS_ENCRYPTION_TYPE_TKIP,
    376 	OS_ENCRYPTION_TYPE_AES
    377 } OS_802_11_ENCRYPTION_TYPES;
    378 
    379 /* Key type*/
    380 typedef enum _OS_802_11_KEY_TYPES
    381 {
    382     OS_KEY_TYPE_STATIC = 0,
    383     OS_KEY_TYPE_DYNAMIC
    384 } OS_802_11_KEY_TYPES;
    385 
    386 /* ELP mode*/
    387 typedef enum _OS_802_11_ELP_MODES
    388 {
    389 	OS_ELP_MODE_DISABLE,
    390 	OS_ELP_MODE_SYNC,
    391     OS_ELP_MODE_NON_SYNC
    392 } OS_802_11_ELP_MODES;
    393 
    394 /* Roaming mode*/
    395 typedef enum _OS_802_11_ROAMING_MODES
    396 {
    397 	OS_ROAMING_MODE_DISABLE,
    398 	OS_ROAMING_MODE_ENABLE
    399 } OS_802_11_ROAMING_MODES;
    400 
    401 typedef enum _OS_802_11_POWER_PROFILE
    402 {
    403     OS_POWER_MODE_AUTO,
    404     OS_POWER_MODE_ACTIVE,
    405     OS_POWER_MODE_SHORT_DOZE,
    406     OS_POWER_MODE_LONG_DOZE
    407 } OS_802_11_POWER_PROFILE;
    408 
    409 typedef enum _OS_802_11_POWER_LEVELS
    410 {
    411     OS_POWER_LEVEL_ELP,
    412     OS_POWER_LEVEL_PD,
    413     OS_POWER_LEVEL_AWAKE
    414 } OS_802_11_POWER_LEVELS;
    415 
    416 
    417 typedef enum _OS_802_11_BEACON_FILTER_MODE
    418 {
    419     OS_BEACON_FILTER_MODE_INACTIVE,
    420     OS_BEACON_FILTER_MODE_ACTIVE
    421 } OS_802_11_BEACON_FILTER_MODE;
    422 
    423 
    424 typedef enum _OS_802_11_SCAN_TYPES
    425 {
    426     OS_SCAN_TYPE_PASSIVE,
    427     OS_SCAN_TYPE_BROADCAST,
    428     OS_SCAN_TYPE_UNICAST
    429 } OS_802_11_SCAN_TYPES;
    430 
    431 typedef enum _OS_802_11_VOICE_DELIVERY_PROTOCOL
    432 {
    433     OS_VOICE_DELIVERY_PROTOCOL_DISABLED,
    434     OS_VOICE_DELIVERY_PROTOCOL_PS_POLL
    435 } OS_802_11_VOICE_DELIVERY_PROTOCOL;
    436 
    437 typedef struct _OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS
    438 {
    439     TI_UINT32 uHighThreshold;
    440 	TI_UINT32 uLowThreshold;
    441     TI_UINT32 TestInterval;
    442 } OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS;
    443 
    444 typedef struct{
    445 	TI_UINT32 uHighOrLowThresholdFlag;                /* high or low */
    446 	TI_UINT32 uAboveOrBelowFlag;       /* direction of crossing */
    447 } OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_CROSS_INDICATION_PARAMS;
    448 
    449 typedef TI_UINT8   OS_802_11_PMKID_VALUE[16];
    450 
    451 typedef struct _OS_BSSIDInfo
    452 {
    453     TMacAddr   BSSID;
    454     OS_802_11_PMKID_VALUE   PMKID;
    455 }  OS_BSSIDInfo, *POS_BSSIDInfo;
    456 
    457 typedef struct _OS_802_11_PMKID
    458 {
    459     TI_UINT32        Length;
    460     TI_UINT32        BSSIDInfoCount;
    461     OS_BSSIDInfo    osBSSIDInfo[1];
    462 }  OS_802_11_PMKID, *POS_802_11_PMKID;
    463 
    464 typedef enum _OS_802_11_WEP_STATUS
    465 {
    466   os802_11WEPEnabled = 0,
    467   os802_11Encryption1Enabled = os802_11WEPEnabled,
    468   os802_11WEPDisabled,
    469   os802_11EncryptionDisabled = os802_11WEPDisabled,
    470   os802_11WEPKeyAbsent,
    471   os802_11Encryption1KeyAbsent = os802_11WEPKeyAbsent,
    472   os802_11WEPNotSupported,
    473   os802_11EncryptionNotSupported = os802_11WEPNotSupported,
    474   os802_11Encryption2Enabled,
    475   os802_11Encryption2KeyAbsent,
    476   os802_11Encryption3Enabled,
    477   os802_11Encryption3KeyAbsent
    478 } OS_802_11_WEP_STATUS, OS_802_11_ENCRYPTION_STATUS;
    479 
    480 /*os802_11AuthModeOpen */
    481 /*  Specifies 802.11 open authentication mode. There are no checks when accepting */
    482 /*  clients in this mode. */
    483 /*os802_11AuthModeShared */
    484 /*  Specifies 802.11 shared authentication that uses a pre-shared wired equivalent */
    485 /*  privacy (WEP) key. */
    486 /*os802_11AuthModeAutoSwitch */
    487 /*  Specifies auto-switch mode. When using auto-switch mode, the NIC tries 802.11 shared */
    488 /*  authentication mode first. If shared mode fails, the NIC attempts to use 802.11 open */
    489 /*  authentication mode. */
    490 
    491 typedef enum _OS_802_11_AUTHENTICATION_MODE
    492 {
    493     os802_11AuthModeOpen,
    494     os802_11AuthModeShared,
    495     os802_11AuthModeAutoSwitch,
    496     os802_11AuthModeWPA,
    497     os802_11AuthModeWPAPSK,
    498     os802_11AuthModeWPANone,
    499     os802_11AuthModeWPA2,
    500     os802_11AuthModeWPA2PSK,
    501     os802_11AuthModeMax
    502 } OS_802_11_AUTHENTICATION_MODE;
    503 
    504 
    505 /*os802_11PrivFilterAcceptAll */
    506 /*  Specifies an open mode. In this mode, the NIC accepts any packet if the packet */
    507 /*  is not encrypted or if the NIC successfully decrypts it. */
    508 /*os802_11PrivFilter8021xWEP */
    509 /*  Specifies a filtering mode. In the 802.1X filtering mode, 802.1X packets are */
    510 /*  accepted even if they are not encrypted. However, the NIC accepts nothing else */
    511 /*  unless it is encrypted using WEP. */
    512 typedef enum _OS_802_11_PRIVACY_FILTER
    513 {
    514   os802_11PrivFilterAcceptAll,
    515   os802_11PrivFilter8021xWEP
    516 } OS_802_11_PRIVACY_FILTER;
    517 
    518 typedef enum _OS_802_11_RELOAD_DEFAULTS
    519 {
    520   os802_11ReloadWEPKeys
    521 } OS_802_11_RELOAD_DEFAULTS, *POS_802_11_RELOAD_DEFAULTS;
    522 
    523 typedef enum _OS_802_11_STATUS_TYPE
    524 {
    525     os802_11StatusType_Authentication,
    526     os802_11StatusType_PMKID_CandidateList = 2,
    527     os802_11StatusTypeMax       /* not a real type, defined as an upper bound */
    528 } OS_802_11_STATUS_TYPE, *POS_802_11_STATUS_TYPE;
    529 
    530 typedef struct _OS_802_11_STATUS_INDICATION
    531 {
    532     OS_802_11_STATUS_TYPE StatusType;
    533 } OS_802_11_STATUS_INDICATION, *POS_802_11_STATUS_INDICATION;
    534 
    535 
    536 typedef struct _OS_802_11_AUTHENTICATION_REQUEST
    537 {
    538     TI_UINT32           	Length;             /* Length of this structure*/
    539     TMacAddr 	            BSSID;
    540 	TI_UINT32				Flags;
    541 }  OS_802_11_AUTHENTICATION_REQUEST, *POS_802_11_AUTHENTICATION_REQUEST;
    542 
    543 typedef enum
    544 {
    545 	OS_DISASSOC_STATUS_UNSPECIFIED      		=   0,
    546 	OS_DISASSOC_STATUS_AUTH_REJECT				=   1,
    547 	OS_DISASSOC_STATUS_ASSOC_REJECT				=   2,
    548 	OS_DISASSOC_STATUS_SECURITY_FAILURE 		=   3,
    549 	OS_DISASSOC_STATUS_AP_DEAUTHENTICATE		=   4,
    550 	OS_DISASSOC_STATUS_AP_DISASSOCIATE			=   5,
    551 	OS_DISASSOC_STATUS_ROAMING_TRIGGER			=   6
    552 
    553 }	OS_802_11_DISASSOCIATE_REASON_E;
    554 
    555 typedef struct
    556 {
    557 	OS_802_11_DISASSOCIATE_REASON_E  eDisAssocType;
    558 	TI_UINT32						 uStatusCode;
    559 } OS_802_11_DISASSOCIATE_REASON_T;
    560 
    561 
    562 
    563 #define OS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLE   0x01
    564 
    565 typedef struct _OS_802_11_PMKID_CANDIDATE
    566 {
    567     TMacAddr               BSSID;
    568     TI_UINT32              Flags;
    569 }  OS_802_11_PMKID_CANDIDATE, *POS_802_11_PMKID_CANDIDATE;
    570 
    571 typedef struct _OS_802_11_PMKID_CANDIDATELIST
    572 {
    573     TI_UINT32                   Version;       /* Version of the structure*/
    574     TI_UINT32                   NumCandidates; /* No. of pmkid candidates*/
    575     OS_802_11_PMKID_CANDIDATE  CandidateList[1];
    576 }  OS_802_11_PMKID_CANDIDATELIST, *POS_802_11_PMKID_CANDIDATELIST;
    577 
    578 
    579 typedef TI_UINT8 OS_802_11_MAC_PMKID_VALUE[16];
    580 
    581 typedef struct _OS_802_11_BSSIDInfo
    582 {
    583     TMacAddr 	               BSSID;
    584     OS_802_11_MAC_PMKID_VALUE  PMKID;
    585 }  OS_802_11_BSSIDInfo, *POS_802_11_BSSIDInfo;
    586 
    587 
    588 typedef struct _OS_802_11_AUTH_ENCRYPTION
    589 {
    590     OS_802_11_AUTHENTICATION_MODE AuthModeSupported;
    591     OS_802_11_ENCRYPTION_STATUS   EncryptionStatusSupported;
    592 } OS_802_11_AUTH_ENCRYPTION, *POS_802_11_AUTH_ENCRYPTION;
    593 
    594 
    595 typedef struct _OS_802_11_CAPABILITY
    596 {
    597     TI_UINT32 Length;
    598     TI_UINT32 Version;
    599     TI_UINT32 NoOfPmKIDs;
    600     TI_UINT32 NoOfAuthEncryptPairsSupported;
    601     OS_802_11_AUTH_ENCRYPTION AuthEncryptionSupported[1];
    602 
    603 } OS_802_11_CAPABILITY, *POS_802_11_CAPABILITY;
    604 
    605 #define OID_CAPABILITY_VERSION 2
    606 
    607 
    608 
    609 typedef enum _OS_802_11_REG_DOMAIN
    610 {
    611   os802_11_Domain_FCC = 0x10,
    612   os802_11_Domain_IC = 0x20,
    613   os802_11_Domain_ETSI = 0x30,
    614   os802_11_Domain_Spain = 0x31,
    615   os802_11_Domain_France = 0x32,
    616   os802_11_Domain_MKK = 0x40,
    617   os802_11_Domain_MKK1 = 0x41,
    618   os802_11_Domain_US	= 0x50,
    619   os802_11_Domain_WB	= 0x51,
    620   os802_11_Domain_EXWB	= 0x52
    621 } OS_802_11_REG_DOMAIN;
    622 
    623 
    624 
    625 #define OID_TI_VERSION							0xFF080001
    626 
    627 
    628 /* propritary OIDs used by FUNK supplicant for WPA Mixed mode support*/
    629 /* WPA2 MIxed mode OIDs */
    630 #define CGUID_FSW_802_11_AVAILABLE_OPTIONS      {0x1a905534, 0xe71f, 0x46d1, {0xa2, 0xcb, 0xa5, 0x57, 0x01, 0x76, 0x38, 0xfd}}
    631 #define CGUID_FSW_802_11_OPTIONS 				{0xdc7a51b7, 0x2236, 0x467d, {0xb1, 0x55, 0x03, 0x50, 0x42, 0x04, 0xcf, 0x30}}
    632 
    633 #define OID_FSW_802_11_AVAILABLE_OPTIONS        0xFF010237
    634 #define OID_FSW_802_11_OPTIONS                  0xFF010238
    635 
    636 
    637 
    638 /**/
    639 /* IEEE 802.11 OIDs*/
    640 /**/
    641 #define OID_802_11_BSSID                        0x0D010101
    642 #define OID_802_11_SSID                         0x0D010102
    643 #define OID_802_11_INFRASTRUCTURE_MODE          0x0D010108
    644 #define OID_802_11_ADD_WEP                      0x0D010113
    645 #define OID_802_11_REMOVE_WEP                   0x0D010114
    646 #define OID_802_11_DISASSOCIATE                 0x0D010115
    647 #define OID_802_11_AUTHENTICATION_MODE          0x0D010118
    648 #define OID_802_11_PRIVACY_FILTER               0x0D010119
    649 #define OID_802_11_BSSID_LIST_SCAN              0x0D01011A
    650 #define OID_802_11_WEP_STATUS                   0x0D01011B
    651 #define OID_802_11_RELOAD_DEFAULTS              0x0D01011C
    652 #define OID_802_11_ADD_KEY                      0x0D01011D
    653 #define OID_802_11_REMOVE_KEY                   0x0D01011E
    654 #define OID_802_11_ASSOCIATION_INFORMATION      0x0D01011F
    655 #define OID_802_11_NETWORK_TYPES_SUPPORTED      0x0D010203
    656 #define OID_802_11_NETWORK_TYPE_IN_USE          0x0D010204
    657 #define OID_802_11_TX_POWER_LEVEL               0x0D010205
    658 #define OID_802_11_RSSI                         0x0D010206
    659 #define OID_802_11_RSSI_TRIGGER                 0x0D010207
    660 #define OID_802_11_FRAGMENTATION_THRESHOLD      0x0D010209
    661 #define OID_802_11_RTS_THRESHOLD                0x0D01020A
    662 #define OID_802_11_NUMBER_OF_ANTENNAS           0x0D01020B
    663 #define OID_802_11_RX_ANTENNA_SELECTED          0x0D01020C
    664 #define OID_802_11_TX_ANTENNA_SELECTED          0x0D01020D
    665 #define OID_802_11_SUPPORTED_RATES              0x0D01020E
    666 #define OID_802_11_DESIRED_RATES                0x0D010210
    667 #define OID_802_11_CONFIGURATION                0x0D010211
    668 #define OID_802_11_STATISTICS                   0x0D020212
    669 #define OID_802_11_POWER_MODE                   0x0D010216
    670 #define OID_802_11_BSSID_LIST                   0x0D010217
    671 
    672 
    673 #ifndef _USER_MODE
    674 	#include "osdot11nousermode.h"
    675 #endif
    676 
    677 
    678 
    679 
    680 /* AnyWPA mode flags used in propritary FUNK suplicant OIDs*/
    681 
    682 #define     OS_802_11_OPTION_ENABLE_PROMOTE_MODE        0x00000001 /*bit 0*/
    683 #define     OS_802_11_OPTION_ENABLE_PROMOTE_CIPHER      0x00000002 /*bit 1*/
    684 #define		OS_802_11_OPTION_DISABLE_PROMOTE_MODE		0
    685 #define     OS_802_11_OPTION_ENABLE_ALL                 0x00000003
    686 
    687 #endif
    688