staging: vt6655: fix braces at newline for structs
[cascardo/linux.git] / drivers / staging / vt6655 / wmgr.h
1 /*
2  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3  * All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  *
20  * File: wmgr.h
21  *
22  * Purpose:
23  *
24  * Author: lyndon chen
25  *
26  * Date: Jan 2, 2003
27  *
28  * Functions:
29  *
30  * Revision History:
31  *
32  */
33
34 #ifndef __WMGR_H__
35 #define __WMGR_H__
36
37 #include "ttype.h"
38 #include "80211mgr.h"
39 #include "80211hdr.h"
40 #include "wcmd.h"
41 #include "bssdb.h"
42 #include "wpa2.h"
43 #include "vntwifi.h"
44 #include "card.h"
45
46 /*---------------------  Export Definitions -------------------------*/
47
48 // Scan time
49 #define PROBE_DELAY                  100  // (us)
50 #define SWITCH_CHANNEL_DELAY         200 // (us)
51 #define WLAN_SCAN_MINITIME           25   // (ms)
52 #define WLAN_SCAN_MAXTIME            100  // (ms)
53 #define TRIVIAL_SYNC_DIFFERENCE      0    // (us)
54 #define DEFAULT_IBSS_BI              100  // (ms)
55
56 #define WCMD_ACTIVE_SCAN_TIME   50 //(ms)
57 #define WCMD_PASSIVE_SCAN_TIME  100 //(ms)
58
59 #define DEFAULT_MSDU_LIFETIME           512  // ms
60 #define DEFAULT_MSDU_LIFETIME_RES_64us  8000 // 64us
61
62 #define DEFAULT_MGN_LIFETIME            8    // ms
63 #define DEFAULT_MGN_LIFETIME_RES_64us   125  // 64us
64
65 #define MAKE_BEACON_RESERVED            10  //(us)
66
67 #define TIM_MULTICAST_MASK           0x01
68 #define TIM_BITMAPOFFSET_MASK        0xFE
69 #define DEFAULT_DTIM_PERIOD             1
70
71 #define AP_LONG_RETRY_LIMIT             4
72
73 #define DEFAULT_IBSS_CHANNEL            6  //2.4G
74
75 /*---------------------  Export Classes  ----------------------------*/
76
77 /*---------------------  Export Variables  --------------------------*/
78
79 /*---------------------  Export Types  ------------------------------*/
80 #define timer_expire(timer, next_tick)   mod_timer(&timer, RUN_AT(next_tick))
81 typedef void (*TimerFunction)(unsigned long);
82
83 //+++ NDIS related
84
85 typedef unsigned char NDIS_802_11_MAC_ADDRESS[6];
86 typedef struct _NDIS_802_11_AI_REQFI {
87         unsigned short Capabilities;
88         unsigned short ListenInterval;
89         NDIS_802_11_MAC_ADDRESS  CurrentAPAddress;
90 } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
91
92 typedef struct _NDIS_802_11_AI_RESFI {
93         unsigned short Capabilities;
94         unsigned short StatusCode;
95         unsigned short AssociationId;
96 } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
97
98 typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION {
99         unsigned long Length;
100         unsigned short          AvailableRequestFixedIEs;
101         NDIS_802_11_AI_REQFI    RequestFixedIEs;
102         unsigned long RequestIELength;
103         unsigned long OffsetRequestIEs;
104         unsigned short          AvailableResponseFixedIEs;
105         NDIS_802_11_AI_RESFI    ResponseFixedIEs;
106         unsigned long ResponseIELength;
107         unsigned long OffsetResponseIEs;
108 } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
109
110 typedef struct tagSAssocInfo {
111         NDIS_802_11_ASSOCIATION_INFORMATION     AssocInfo;
112         unsigned char abyIEs[WLAN_BEACON_FR_MAXLEN+WLAN_BEACON_FR_MAXLEN];
113         // store ReqIEs set by OID_802_11_ASSOCIATION_INFORMATION
114         unsigned long RequestIELength;
115         unsigned char abyReqIEs[WLAN_BEACON_FR_MAXLEN];
116 } SAssocInfo, *PSAssocInfo;
117 //---
118
119 typedef enum tagWMAC_SCAN_TYPE {
120         WMAC_SCAN_ACTIVE,
121         WMAC_SCAN_PASSIVE,
122         WMAC_SCAN_HYBRID
123 } WMAC_SCAN_TYPE, *PWMAC_SCAN_TYPE;
124
125 typedef enum tagWMAC_SCAN_STATE {
126         WMAC_NO_SCANNING,
127         WMAC_IS_SCANNING,
128         WMAC_IS_PROBEPENDING
129 } WMAC_SCAN_STATE, *PWMAC_SCAN_STATE;
130
131 // Notes:
132 // Basic Service Set state explained as following:
133 // WMAC_STATE_IDLE          : no BSS is selected (Adhoc or Infra)
134 // WMAC_STATE_STARTED       : no BSS is selected, start own IBSS (Adhoc only)
135 // WMAC_STATE_JOINTED       : BSS is selected and synchronized (Adhoc or Infra)
136 // WMAC_STATE_AUTHPENDING   : Authentication pending (Infra)
137 // WMAC_STATE_AUTH          : Authenticated (Infra)
138 // WMAC_STATE_ASSOCPENDING  : Association pending (Infra)
139 // WMAC_STATE_ASSOC         : Associated (Infra)
140
141 typedef enum tagWMAC_BSS_STATE {
142         WMAC_STATE_IDLE,
143         WMAC_STATE_STARTED,
144         WMAC_STATE_JOINTED,
145         WMAC_STATE_AUTHPENDING,
146         WMAC_STATE_AUTH,
147         WMAC_STATE_ASSOCPENDING,
148         WMAC_STATE_ASSOC
149 } WMAC_BSS_STATE, *PWMAC_BSS_STATE;
150
151 // WMAC selected running mode
152 typedef enum tagWMAC_CURRENT_MODE {
153         WMAC_MODE_STANDBY,
154         WMAC_MODE_ESS_STA,
155         WMAC_MODE_IBSS_STA,
156         WMAC_MODE_ESS_AP
157 } WMAC_CURRENT_MODE, *PWMAC_CURRENT_MODE;
158
159 /*
160   typedef enum tagWMAC_POWER_MODE {
161   WMAC_POWER_CAM,
162   WMAC_POWER_FAST,
163   WMAC_POWER_MAX
164
165   } WMAC_POWER_MODE, *PWMAC_POWER_MODE;
166 */
167
168 // Tx Management Packet descriptor
169 typedef struct tagSTxMgmtPacket {
170         PUWLAN_80211HDR     p80211Header;
171         unsigned int cbMPDULen;
172         unsigned int cbPayloadLen;
173 } STxMgmtPacket, *PSTxMgmtPacket;
174
175 // Rx Management Packet descriptor
176 typedef struct tagSRxMgmtPacket {
177         PUWLAN_80211HDR     p80211Header;
178         QWORD               qwLocalTSF;
179         unsigned int cbMPDULen;
180         unsigned int cbPayloadLen;
181         unsigned int uRSSI;
182         unsigned char bySQ;
183         unsigned char byRxRate;
184         unsigned char byRxChannel;
185 } SRxMgmtPacket, *PSRxMgmtPacket;
186
187 typedef struct tagSMgmtObject {
188         void *pAdapter;
189         // MAC address
190         unsigned char abyMACAddr[WLAN_ADDR_LEN];
191
192         // Configuration Mode
193         WMAC_CONFIG_MODE        eConfigMode; // MAC pre-configed mode
194         CARD_PHY_TYPE           eCurrentPHYMode;
195         CARD_PHY_TYPE           eConfigPHYMode;
196
197         // Operation state variables
198         WMAC_CURRENT_MODE       eCurrMode;   // MAC current connection mode
199         WMAC_BSS_STATE          eCurrState;  // MAC current BSS state
200
201         PKnownBSS               pCurrBSS;
202         unsigned char byCSSGK;
203         unsigned char byCSSPK;
204
205         // Current state vars
206         unsigned int    uCurrChannel;
207         unsigned char abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
208         unsigned char abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
209         unsigned char abyCurrSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
210         unsigned char abyCurrBSSID[WLAN_BSSID_LEN];
211         unsigned short wCurrCapInfo;
212         unsigned short wCurrAID;
213         unsigned short wCurrATIMWindow;
214         unsigned short wCurrBeaconPeriod;
215         bool bIsDS;
216         unsigned char byERPContext;
217
218         CMD_STATE               eCommandState;
219         unsigned int    uScanChannel;
220
221         // Desire joining BSS vars
222         unsigned char abyDesireSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
223         unsigned char abyDesireBSSID[WLAN_BSSID_LEN];
224
225         // Adhoc or AP configuration vars
226         unsigned short wIBSSBeaconPeriod;
227         unsigned short wIBSSATIMWindow;
228         unsigned int    uIBSSChannel;
229         unsigned char abyIBSSSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
230         unsigned char byAPBBType;
231         unsigned char abyWPAIE[MAX_WPA_IE_LEN];
232         unsigned short wWPAIELen;
233
234         unsigned int    uAssocCount;
235         bool bMoreData;
236
237         // Scan state vars
238         WMAC_SCAN_STATE         eScanState;
239         WMAC_SCAN_TYPE          eScanType;
240         unsigned int    uScanStartCh;
241         unsigned int    uScanEndCh;
242         unsigned short wScanSteps;
243         unsigned int    uScanBSSType;
244         // Desire scanning vars
245         unsigned char abyScanSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
246         unsigned char abyScanBSSID[WLAN_BSSID_LEN];
247
248         // Privacy
249         WMAC_AUTHENTICATION_MODE eAuthenMode;
250         WMAC_ENCRYPTION_MODE    eEncryptionMode;
251         bool bShareKeyAlgorithm;
252         unsigned char abyChallenge[WLAN_CHALLENGE_LEN];
253         bool bPrivacyInvoked;
254
255         // Received beacon state vars
256         bool bInTIM;
257         bool bMulticastTIM;
258         unsigned char byDTIMCount;
259         unsigned char byDTIMPeriod;
260
261         // Power saving state vars
262         WMAC_POWER_MODE         ePSMode;
263         unsigned short wListenInterval;
264         unsigned short wCountToWakeUp;
265         bool bInTIMWake;
266         unsigned char *pbyPSPacketPool;
267         unsigned char byPSPacketPool[sizeof(STxMgmtPacket) + WLAN_NULLDATA_FR_MAXLEN];
268         bool bRxBeaconInTBTTWake;
269         unsigned char abyPSTxMap[MAX_NODE_NUM + 1];
270
271         // management command related
272         unsigned int    uCmdBusy;
273         unsigned int    uCmdHostAPBusy;
274
275         // management packet pool
276         unsigned char *pbyMgmtPacketPool;
277         unsigned char byMgmtPacketPool[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
278
279         // One second callback timer
280         struct timer_list           sTimerSecondCallback;
281
282         // Temporarily Rx Mgmt Packet Descriptor
283         SRxMgmtPacket           sRxPacket;
284
285         // link list of known bss's (scan results)
286         KnownBSS                sBSSList[MAX_BSS_NUM];
287
288         // table list of known node
289         // sNodeDBList[0] is reserved for AP under Infra mode
290         // sNodeDBList[0] is reserved for Multicast under adhoc/AP mode
291         KnownNodeDB             sNodeDBTable[MAX_NODE_NUM + 1];
292
293         // WPA2 PMKID Cache
294         SPMKIDCache             gsPMKIDCache;
295         bool bRoaming;
296
297         // rate fall back vars
298
299         // associate info
300         SAssocInfo              sAssocInfo;
301
302         // for 802.11h
303         bool b11hEnable;
304         bool bSwitchChannel;
305         unsigned char byNewChannel;
306         PWLAN_IE_MEASURE_REP    pCurrMeasureEIDRep;
307         unsigned int    uLengthOfRepEIDs;
308         unsigned char abyCurrentMSRReq[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
309         unsigned char abyCurrentMSRRep[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
310         unsigned char abyIECountry[WLAN_A3FR_MAXLEN];
311         unsigned char abyIBSSDFSOwner[6];
312         unsigned char byIBSSDFSRecovery;
313
314         struct sk_buff  skb;
315 } SMgmtObject, *PSMgmtObject;
316
317 /*---------------------  Export Macros ------------------------------*/
318
319 /*---------------------  Export Functions  --------------------------*/
320
321 void
322 vMgrObjectInit(
323         void *hDeviceContext
324 );
325
326 void
327 vMgrTimerInit(
328         void *hDeviceContext
329 );
330
331 void
332 vMgrObjectReset(
333         void *hDeviceContext
334 );
335
336 void
337 vMgrAssocBeginSta(
338         void *hDeviceContext,
339         PSMgmtObject pMgmt,
340         PCMD_STATUS pStatus
341 );
342
343 void
344 vMgrReAssocBeginSta(
345         void *hDeviceContext,
346         PSMgmtObject pMgmt,
347         PCMD_STATUS pStatus
348 );
349
350 void
351 vMgrDisassocBeginSta(
352         void *hDeviceContext,
353         PSMgmtObject pMgmt,
354         unsigned char *abyDestAddress,
355         unsigned short wReason,
356         PCMD_STATUS pStatus
357 );
358
359 void
360 vMgrAuthenBeginSta(
361         void *hDeviceContext,
362         PSMgmtObject pMgmt,
363         PCMD_STATUS pStatus
364 );
365
366 void
367 vMgrCreateOwnIBSS(
368         void *hDeviceContext,
369         PCMD_STATUS pStatus
370 );
371
372 void
373 vMgrJoinBSSBegin(
374         void *hDeviceContext,
375         PCMD_STATUS pStatus
376 );
377
378 void
379 vMgrRxManagePacket(
380         void *hDeviceContext,
381         PSMgmtObject pMgmt,
382         PSRxMgmtPacket pRxPacket
383 );
384
385 /*
386   void
387   vMgrScanBegin(
388   void *hDeviceContext,
389   PCMD_STATUS pStatus
390 );
391 */
392
393 void
394 vMgrDeAuthenBeginSta(
395         void *hDeviceContext,
396         PSMgmtObject  pMgmt,
397         unsigned char *abyDestAddress,
398         unsigned short wReason,
399         PCMD_STATUS pStatus
400 );
401
402 bool
403 bMgrPrepareBeaconToSend(
404         void *hDeviceContext,
405         PSMgmtObject pMgmt
406 );
407
408 bool
409 bAdd_PMKID_Candidate(
410         void *hDeviceContext,
411         unsigned char *pbyBSSID,
412         PSRSNCapObject psRSNCapObj
413 );
414
415 void
416 vFlush_PMKID_Candidate(
417         void *hDeviceContext
418 );
419
420 #endif // __WMGR_H__