1/*
2 * This program is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU General Public License as
4 * published by the Free Software Foundation; either version 2 of
5 * the License, or (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
15 * MA 02111-1307 USA
16 */
17/* vi: set sw=4 ts=4 sts=4: */
18/*
19 * stapriv.h -- definitions and structures used by station.c privately
20 *
21 * Copyright (c) Ralink Technology Corporation All Rights Reserved.
22 *
23 * $Id: stapriv.h,v 1.13 2007-07-26 11:22:24 yy Exp $
24 */
25
26#include "linux/autoconf.h"
27
28#define NDIS_802_11_LENGTH_SSID         32
29#define NDIS_802_11_LENGTH_RATES        8
30#define NDIS_802_11_LENGTH_RATES_EX     16
31
32// BW
33#define BW_20       0
34#define BW_40       1
35// SHORTGI
36#define GI_400      1 // only support in HT mode
37#define GI_800      0
38
39#define WPA_OUI_TYPE        0x01F25000
40#define WPA_OUI             0x00F25000
41#define WPA_OUI_1           0x00030000
42#define WPA2_OUI            0x00AC0F00
43#define CISCO_OUI           0x00964000
44
45
46typedef unsigned long   NDIS_802_11_FRAGMENTATION_THRESHOLD;
47typedef unsigned long   NDIS_802_11_RTS_THRESHOLD;
48typedef unsigned long   NDIS_802_11_TX_POWER_LEVEL; // in milliwatts
49typedef unsigned long long NDIS_802_11_KEY_RSC;
50
51#define MAX_TX_POWER_LEVEL                100   /* mW */
52#define MAX_RTS_THRESHOLD                 2347  /* byte count */
53
54#define PACKED __attribute__ ((packed))
55
56#define A_SHA_DIGEST_LEN 20
57typedef struct
58{
59	unsigned int    H[5];
60	unsigned int    W[80];
61	int             lenW;
62	unsigned int    sizeHi,sizeLo;
63} A_SHA_CTX;
64
65typedef struct PACKED _NDIS_802_11_SSID
66{
67	unsigned int    SsidLength;   // length of SSID field below, in bytes;
68                                  // this can be zero.
69	unsigned char   Ssid[NDIS_802_11_LENGTH_SSID]; // SSID information field
70} NDIS_802_11_SSID, *PNDIS_802_11_SSID;
71
72typedef struct _RT_802_11_STA_CONFIG {
73	unsigned long   EnableTxBurst;      // 0-disable, 1-enable
74	unsigned long   EnableTurboRate;    // 0-disable, 1-enable 72/100mbps turbo rate
75	unsigned long   UseBGProtection;    // 0-AUTO, 1-always ON, 2-always OFF
76	unsigned long   UseShortSlotTime;   // 0-no use, 1-use 9-us short slot time when applicable
77	unsigned long   AdhocMode;          // 0-11b rates only (WIFI spec), 1 - b/g mixed, 2 - g only
78	unsigned long   HwRadioStatus;      // 0-OFF, 1-ON, default is 1, Read-Only
79	unsigned long   Rsv1;               // must be 0
80	unsigned long   SystemErrorBitmap;  // ignore upon SET, return system error upon QUERY
81} RT_802_11_STA_CONFIG, *PRT_802_11_STA_CONFIG;
82
83typedef struct _NDIS_802_11_CONFIGURATION_FH
84{
85	unsigned long   Length;             // Length of structure
86	unsigned long   HopPattern;         // As defined by 802.11, MSB set
87	unsigned long   HopSet;             // to one if non-802.11
88	unsigned long   DwellTime;          // units are Kusec
89} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
90
91typedef struct _NDIS_802_11_CONFIGURATION
92{
93	unsigned long   Length;             // Length of structure
94	unsigned long   BeaconPeriod;       // units are Kusec
95	unsigned long   ATIMWindow;         // units are Kusec
96	unsigned long   DSConfig;           // Frequency, units are kHz
97	NDIS_802_11_CONFIGURATION_FH    FHConfig;
98} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
99
100typedef struct _RT_802_11_LINK_STATUS {
101	unsigned long   CurrTxRate;         // in units of 0.5Mbps
102	unsigned long   ChannelQuality;     // 0..100 %
103	unsigned long   TxByteCount;        // both ok and fail
104	unsigned long   RxByteCount;        // both ok and fail
105	unsigned long   CentralChannel;     // 40MHz central channel number
106} RT_802_11_LINK_STATUS, *PRT_802_11_LINK_STATUS;
107
108typedef struct _PAIR_CHANNEL_FREQ_ENTRY
109{
110	unsigned long   lChannel;
111	unsigned long   lFreq;
112} PAIR_CHANNEL_FREQ_ENTRY, *PPAIR_CHANNEL_FREQ_ENTRY;
113
114typedef union  _HTTRANSMIT_SETTING {
115	struct {
116		unsigned short  MCS:7;          // MCS
117		unsigned short  BW:1;           //channel bandwidth 20MHz or 40 MHz
118		unsigned short  ShortGI:1;
119		unsigned short  STBC:2;         //SPACE
120		unsigned short  rsv:3;
121		unsigned short  MODE:2;         // 0: CCK, 1:OFDM, 2:Mixedmode, 3:GreenField
122	} field;
123	unsigned short  word;
124} HTTRANSMIT_SETTING, *PHTTRANSMIT_SETTING;
125
126typedef union _LARGE_INTEGER {
127	struct {
128		unsigned long LowPart;
129		long HighPart;
130	};
131	struct {
132		unsigned long LowPart;
133		long HighPart;
134	} u;
135	signed long long QuadPart;
136} LARGE_INTEGER;
137
138typedef struct _NDIS_802_11_STATISTICS
139{
140	unsigned long   Length;             // Length of structure
141	LARGE_INTEGER   TransmittedFragmentCount;
142	LARGE_INTEGER   MulticastTransmittedFrameCount;
143	LARGE_INTEGER   FailedCount;
144	LARGE_INTEGER   RetryCount;
145	LARGE_INTEGER   MultipleRetryCount;
146	LARGE_INTEGER   RTSSuccessCount;
147	LARGE_INTEGER   RTSFailureCount;
148	LARGE_INTEGER   ACKFailureCount;
149	LARGE_INTEGER   FrameDuplicateCount;
150	LARGE_INTEGER   ReceivedFragmentCount;
151	LARGE_INTEGER   MulticastReceivedFrameCount;
152	LARGE_INTEGER   FCSErrorCount;
153	LARGE_INTEGER   TKIPLocalMICFailures;
154	LARGE_INTEGER   TKIPRemoteMICErrors;
155	LARGE_INTEGER   TKIPICVErrors;
156	LARGE_INTEGER   TKIPCounterMeasuresInvoked;
157	LARGE_INTEGER   TKIPReplays;
158	LARGE_INTEGER   CCMPFormatErrors;
159	LARGE_INTEGER   CCMPReplays;
160	LARGE_INTEGER   CCMPDecryptErrors;
161	LARGE_INTEGER   FourWayHandshakeFailures;
162} NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
163
164typedef struct _RT_VERSION_INFO {
165	unsigned char   DriverVersionW;
166	unsigned char   DriverVersionX;
167	unsigned char   DriverVersionY;
168	unsigned char   DriverVersionZ;
169	unsigned int    DriverBuildYear;
170	unsigned int    DriverBuildMonth;
171	unsigned int    DriverBuildDay;
172} RT_VERSION_INFO, *PRT_VERSION_INFO;
173
174//Block ACK
175#define TID_SIZE 8
176
177typedef enum _REC_BLOCKACK_STATUS
178{
179	Recipient_NONE=0,
180	Recipient_USED,
181	Recipient_HandleRes,
182	Recipient_Accept
183} REC_BLOCKACK_STATUS, *PREC_BLOCKACK_STATUS;
184
185typedef enum _ORI_BLOCKACK_STATUS
186{
187	Originator_NONE=0,
188	Originator_USED,
189	Originator_WaitRes,
190	Originator_Done
191} ORI_BLOCKACK_STATUS, *PORI_BLOCKACK_STATUS;
192
193//For QureyBATableOID use
194typedef struct  _OID_BA_REC_ENTRY
195{
196	unsigned char   MACAddr[6];
197	unsigned char   BaBitmap;   // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize
198	unsigned char   rsv;
199	unsigned char   BufSize[8];
200	REC_BLOCKACK_STATUS REC_BA_Status[8];
201} OID_BA_REC_ENTRY, *POID_BA_REC_ENTRY;
202
203//For QureyBATableOID use
204typedef struct  _OID_BA_ORI_ENTRY
205{
206	unsigned char   MACAddr[6];
207	unsigned char   BaBitmap;  // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize, read ORI_BA_Status[TID] for status
208	unsigned char   rsv;
209	unsigned char   BufSize[8];
210	ORI_BLOCKACK_STATUS  ORI_BA_Status[8];
211} OID_BA_ORI_ENTRY, *POID_BA_ORI_ENTRY;
212
213//For SetBATable use
214typedef struct {
215	unsigned char   IsRecipient;
216	unsigned char   MACAddr[6];
217	unsigned char   TID;
218	unsigned char   BufSize;
219	unsigned short  TimeOut;
220	unsigned char   AllTid;  // If True, delete all TID for BA sessions with this MACaddr.
221} OID_ADD_BA_ENTRY, *POID_ADD_BA_ENTRY;
222
223typedef struct _QUERYBA_TABLE
224{
225	OID_BA_ORI_ENTRY       BAOriEntry[32];
226	OID_BA_REC_ENTRY       BARecEntry[32];
227	unsigned char   OriNum;// Number of below BAOriEntry
228	unsigned char   RecNum;// Number of below BARecEntry
229} QUERYBA_TABLE, *PQUERYBA_TABLE;
230
231// Received Signal Strength Indication
232typedef long NDIS_802_11_RSSI;           // in dBm
233
234// Added new types for OFDM 5G and 2.4G
235typedef enum _NDIS_802_11_NETWORK_TYPE
236{
237	Ndis802_11FH,
238	Ndis802_11DS,
239	Ndis802_11OFDM5,
240	Ndis802_11OFDM24,
241	Ndis802_11Automode,
242	Ndis802_11OFDM5_N,
243	Ndis802_11OFDM24_N,
244	Ndis802_11OFDM5_VHT,
245	Ndis802_11NetworkTypeMax    // not a real type, defined as an upper bound
246} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
247
248typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE
249{
250	Ndis802_11IBSS,
251	Ndis802_11Infrastructure,
252	Ndis802_11AutoUnknown,
253	Ndis802_11InfrastructureMax         // Not a real value, defined as upper bound
254} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
255
256typedef unsigned char  NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];        // Set of 8 data rates
257typedef unsigned char  NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];  // Set of 16 data rates
258
259typedef struct PACKED _NDIS_WLAN_BSSID
260{
261	unsigned long                       Length;             // Length of this structure
262	unsigned char                       MacAddress[6];      // BSSID
263	unsigned char                       Reserved[2];
264	NDIS_802_11_SSID                    Ssid;               // SSID
265	unsigned long                       Privacy;            // WEP encryption requirement
266	NDIS_802_11_RSSI                    Rssi;               // receive signal
267                                                            // strength in dBm
268	NDIS_802_11_NETWORK_TYPE            NetworkTypeInUse;
269	NDIS_802_11_CONFIGURATION           Configuration;
270	NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
271	NDIS_802_11_RATES                   SupportedRates;
272} NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
273
274// Added Capabilities, IELength and IEs for each BSSID
275typedef struct PACKED _NDIS_WLAN_BSSID_EX
276{
277	unsigned long                       Length;             // Length of this structure
278	unsigned char                       MacAddress[6];      // BSSID
279	unsigned char                       Reserved[2];
280	NDIS_802_11_SSID                    Ssid;               // SSID
281	unsigned int                        Privacy;            // WEP encryption requirement
282	NDIS_802_11_RSSI                    Rssi;               // receive signal
283                                                            // strength in dBm
284	NDIS_802_11_NETWORK_TYPE            NetworkTypeInUse;
285	NDIS_802_11_CONFIGURATION           Configuration;
286	NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
287	NDIS_802_11_RATES_EX                SupportedRates;
288	unsigned long                       IELength;
289	unsigned char                       IEs[1];
290} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
291
292typedef struct PACKED _NDIS_802_11_BSSID_LIST_EX
293{
294	unsigned int            NumberOfItems;      // in list below, at least 1
295	NDIS_WLAN_BSSID_EX      Bssid[1];
296} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
297
298typedef struct PACKED _NDIS_802_11_FIXED_IEs
299{
300	unsigned char   Timestamp[8];
301	unsigned short  BeaconInterval;
302	unsigned short  Capabilities;
303} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
304
305typedef struct PACKED _NDIS_802_11_VARIABLE_IEs
306{
307	unsigned char   ElementID;
308	unsigned char   Length;        // Number of bytes in data field
309	unsigned char   data[1];
310} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
311
312typedef struct _NDIS_802_11_NETWORK_TYPE_LIST
313{
314	unsigned int    NumberOfItems;  // in list below, at least 1
315	NDIS_802_11_NETWORK_TYPE    NetworkType [1];
316} NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
317
318//For OID Query or Set about BA structure
319typedef struct  _OID_BACAP_STRUC {
320	unsigned char   RxBAWinLimit;
321	unsigned char   TxBAWinLimit;
322	unsigned char   Policy;     // 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use. other value invalid
323	unsigned char   MpduDensity;// 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use. other value invalid
324	unsigned char   AmsduEnable;//Enable AMSDU transmisstion
325	unsigned char   AmsduSize;  // 0:3839, 1:7935 bytes. unsigned int  MSDUSizeToBytes[]    = { 3839, 7935};
326	unsigned char   MMPSmode;   // MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable
327	unsigned char   AutoBA;     // Auto BA will automatically , BOOLEAN
328} OID_BACAP_STRUC, *POID_BACAP_STRUC;
329
330typedef enum _RT_802_11_PHY_MODE {
331	PHY_11BG_MIXED = 0,
332	PHY_11B,
333	PHY_11A,
334	PHY_11ABG_MIXED,
335	PHY_11G,
336	PHY_11ABGN_MIXED,   // both band   5
337	PHY_11N,            //    6
338	PHY_11GN_MIXED,     // 2.4G band      7
339	PHY_11AN_MIXED,     // 5G  band       8
340	PHY_11BGN_MIXED,    // if check 802.11b.      9
341	PHY_11AGN_MIXED,    // if check 802.11b.      10
342	PHY_11N_5G,         // 11
343	PHY_11VHT_N_ABG_MIXED,
344	PHY_11VHT_N_AG_MIXED,
345	PHY_11VHT_N_A_MIXED,// 14
346	PHY_11VHT_N_MIXED,
347	PHY_MODE_MAX
348} RT_802_11_PHY_MODE;
349
350enum WIFI_MODE{
351	WMODE_INVALID = 0,
352	WMODE_A  = 1 << 0,
353	WMODE_B  = 1 << 1,
354	WMODE_G  = 1 << 2,
355	WMODE_GN = 1 << 3,
356	WMODE_AN = 1 << 4,
357	WMODE_AC = 1 << 5,
358	WMODE_COMP = 6, /* total types of supported wireless mode, add this value once yow add new type */
359};
360
361
362typedef struct {
363	RT_802_11_PHY_MODE  PhyMode;
364	unsigned char       TransmitNo;
365	unsigned char       HtMode;     //HTMODE_GF or HTMODE_MM
366	unsigned char       ExtOffset;  //extension channel above or below
367	unsigned char       MCS;
368	unsigned char       BW;
369	unsigned char       STBC;
370	unsigned char       SHORTGI;
371	unsigned char       rsv;
372} OID_SET_HT_PHYMODE, *POID_SET_HT_PHYMODE;
373
374#define MAX_NUM_OF_DLS_ENTRY        4
375// structure for DLS
376typedef struct _RT_802_11_DLS {
377	unsigned short      TimeOut;        // unit: second , set by UI
378	unsigned short      CountDownTimer; // unit: second , used by driver only
379	unsigned char       MacAddr[6];     // set by UI
380	unsigned char       Status;         // 0: none, 1: wait STAkey, 2: finish DLS setup, set by driver only
381	unsigned char       Valid;          // 1: valid, 0: invalid, set by UI, use to setup or tear down DLS link
382} RT_802_11_DLS, *PRT_802_11_DLS;
383
384typedef enum _RT_802_11_DLS_MODE {
385	DLS_NONE,
386	DLS_WAIT_KEY,
387	DLS_FINISH                                                                                                                                               } RT_802_11_DLS_MODE;
388
389typedef enum _NDIS_802_11_AUTHENTICATION_MODE
390{
391	Ndis802_11AuthModeOpen,
392	Ndis802_11AuthModeShared,
393	Ndis802_11AuthModeAutoSwitch,
394	Ndis802_11AuthModeWPA,
395	Ndis802_11AuthModeWPAPSK,
396	Ndis802_11AuthModeWPANone,
397	Ndis802_11AuthModeWPA2,
398	Ndis802_11AuthModeWPA2PSK,
399	Ndis802_11AuthModeMax               // Not a real mode, defined as upper bound
400} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
401
402typedef enum _NDIS_802_11_WEP_STATUS
403{
404	Ndis802_11WEPEnabled,
405	Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
406	Ndis802_11WEPDisabled,
407	Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
408	Ndis802_11WEPKeyAbsent,
409	Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
410	Ndis802_11WEPNotSupported,
411	Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
412	Ndis802_11Encryption2Enabled,
413	Ndis802_11Encryption2KeyAbsent,
414	Ndis802_11Encryption3Enabled,
415	Ndis802_11Encryption3KeyAbsent
416} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
417  NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
418
419typedef enum _NDIS_802_11_POWER_MODE
420{
421	Ndis802_11PowerModeCAM,
422	Ndis802_11PowerModeMAX_PSP,
423	Ndis802_11PowerModeFast_PSP,
424	Ndis802_11PowerModeMax      // not a real mode, defined as an upper bound
425} NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
426
427typedef enum _RT_802_11_PREAMBLE {
428	Rt802_11PreambleLong,
429	Rt802_11PreambleShort,
430	Rt802_11PreambleAuto
431} RT_802_11_PREAMBLE, *PRT_802_11_PREAMBLE;
432
433#ifdef WPA_SUPPLICANT_SUPPORT
434#define IDENTITY_LENGTH 32
435#define CERT_PATH_LENGTH    64
436#define PRIVATE_KEY_PATH_LENGTH 64
437
438typedef enum _RT_WPA_SUPPLICANT_KEY_MGMT {
439	Rtwpa_supplicantKeyMgmtWPAPSK,
440	Rtwpa_supplicantKeyMgmtWPAEAP,
441	Rtwpa_supplicantKeyMgmtIEEE8021X,
442	Rtwpa_supplicantKeyMgmtNONE
443} RT_WPA_SUPPLICANT_KEY_MGMT, *PRT_WPA_SUPPLICANT_KEY_MGMT;
444
445typedef enum _RT_WPA_SUPPLICANT_EAP {
446	Rtwpa_supplicantEAPMD5,
447	Rtwpa_supplicantEAPMSCHAPV2,
448	Rtwpa_supplicantEAPOTP,
449	Rtwpa_supplicantEAPGTC,
450	Rtwpa_supplicantEAPTLS,
451	Rtwpa_supplicantEAPPEAP,
452	Rtwpa_supplicantEAPTTLS,
453	Rtwpa_supplicantEAPNONE
454} RT_WPA_SUPPLICANT_EAP, *PRT_WPA_SUPPLICANT_EAP;
455
456typedef enum _RT_WPA_SUPPLICANT_TUNNEL {
457	Rtwpa_supplicantTUNNELMSCHAP,
458	Rtwpa_supplicantTUNNELMSCHAPV2,
459	Rtwpa_supplicantTUNNELPAP,
460	Rtwpa_supplicantTUNNENONE
461} RT_WPA_SUPPLICANT_TUNNEL, *PRT_WPA_SUPPLICANT_TUNNEL;
462#endif
463
464typedef struct _RT_PROFILE_SETTING {
465	unsigned int                        ProfileDataType; //0x18140201
466	unsigned char                       Profile[32+1];
467	unsigned char                       SSID[NDIS_802_11_LENGTH_SSID+1];
468	unsigned int                        SsidLen;
469	unsigned int                        Channel;
470	NDIS_802_11_AUTHENTICATION_MODE     Authentication; //Ndis802_11AuthModeOpen, Ndis802_11AuthModeShared, Ndis802_11AuthModeWPAPSK
471	NDIS_802_11_WEP_STATUS              Encryption; //Ndis802_11WEPEnabled, Ndis802_11WEPDisabled, Ndis802_11Encryption2Enabled, Ndis802_11Encryption3Enabled
472	NDIS_802_11_NETWORK_INFRASTRUCTURE  NetworkType;
473	unsigned int                        KeyDefaultId;
474	unsigned int                        Key1Type;
475	unsigned int                        Key2Type;
476	unsigned int                        Key3Type;
477	unsigned int                        Key4Type;
478	unsigned int                        Key1Length;
479	unsigned int                        Key2Length;
480	unsigned int                        Key3Length;
481	unsigned int                        Key4Length;
482	char                                Key1[26+1];
483	char                                Key2[26+1];
484	char                                Key3[26+1];
485	char                                Key4[26+1];
486	char                                WpaPsk[64+1]; //[32+1];
487	unsigned int                        TransRate;
488	unsigned int                        TransPower;
489	char                                RTSCheck;  //boolean
490	unsigned int                        RTS;
491	char                                FragmentCheck; //boolean
492	unsigned int                        Fragment;
493	NDIS_802_11_POWER_MODE              PSmode;
494	RT_802_11_PREAMBLE                  PreamType;
495	unsigned int                        AntennaRx;
496	unsigned int                        AntennaTx;
497	unsigned int                        CountryRegion;
498	//Advance
499	//RT_802_11_TX_RATES                  ConfigSta;
500	unsigned int                        AdhocMode;
501	//unsigned char                       reserved[64];
502	unsigned int                        Active; // 0 is the profile is set as connection profile, 1 is not.
503#ifdef WPA_SUPPLICANT_SUPPORT
504	RT_WPA_SUPPLICANT_KEY_MGMT          KeyMgmt;
505	RT_WPA_SUPPLICANT_EAP               EAP;
506	unsigned char                       Identity[IDENTITY_LENGTH];
507	unsigned char                       Password[32];
508	unsigned char                       CACert[CERT_PATH_LENGTH];
509	unsigned char                       ClientCert[CERT_PATH_LENGTH];
510	unsigned char                       PrivateKey[PRIVATE_KEY_PATH_LENGTH];
511	unsigned char                       PrivateKeyPassword[32];
512	//unsigned int                        EapolFlag;
513	//RT_WPA_SUPPLICANT_PROTO             Proto;
514	//RT_WPA_SUPPLICANT_PAIRWISE          Pairwise;
515	//RT_WPA_SUPPLICANT_GROUP             group;
516	//unsigned char                       Phase1[32];
517	RT_WPA_SUPPLICANT_TUNNEL            Tunnel;
518#endif
519	struct  _RT_PROFILE_SETTING         *Next;
520} RT_PROFILE_SETTING, *PRT_PROFILE_SETTING;
521
522// move to station.c
523//PRT_PROFILE_SETTING selectedProfileSetting = NULL, headerProfileSetting = NULL, currentProfileSetting = NULL;
524
525typedef struct _NDIS_802_11_REMOVE_KEY
526{
527	unsigned int        Length;             // Length of this structure
528	unsigned int        KeyIndex;
529	unsigned char       BSSID[6];
530} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
531
532// Key mapping keys require a BSSID
533typedef struct _NDIS_802_11_KEY
534{
535    unsigned int        Length;             // Length of this structure
536	unsigned int        KeyIndex;
537	unsigned int        KeyLength;          // length of key in bytes
538	unsigned char       BSSID[6];
539	NDIS_802_11_KEY_RSC KeyRSC;
540	unsigned char       KeyMaterial[1];     // variable length depending on above field
541} NDIS_802_11_KEY, *PNDIS_802_11_KEY;
542
543typedef struct _NDIS_802_11_WEP                                                                                                                              {
544	unsigned int        Length;        // Length of this structure
545	unsigned int        KeyIndex;      // 0 is the per-client key, 1-N are the global keys
546	unsigned int        KeyLength;     // length of key in bytes
547	unsigned char       KeyMaterial[1];// variable length depending on above field
548} NDIS_802_11_WEP, *PNDIS_802_11_WEP;
549
550
551
552