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