Staging: Add pristine upstream vt6656 driver sources to drivers/staging/vt6656.
[firewire-audio.git] / drivers / staging / vt6656 / wmgr.h
blobfcf19e4ad62dae5f7dbd462eaa95da351d4ff79c
1 /*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
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.
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.
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.
20 * File: wmgr.h
22 * Purpose:
24 * Author: lyndon chen
26 * Date: Jan 2, 2003
28 * Functions:
30 * Revision History:
35 #ifndef __WMGR_H__
36 #define __WMGR_H__
38 #if !defined(__TTYPE_H__)
39 #include "ttype.h"
40 #endif
41 #if !defined(__80211MGR_H__)
42 #include "80211mgr.h"
43 #endif
44 #if !defined(__80211HDR_H__)
45 #include "80211hdr.h"
46 #endif
47 #if !defined(__WCMD_H__)
48 #include "wcmd.h"
49 #endif
50 #if !defined(__BSSDB_H__)
51 #include "bssdb.h"
52 #endif
53 #if !defined(__WPA2_H__)
54 #include "wpa2.h"
55 #endif
56 #if !defined(__CARD_H__)
57 #include "card.h"
58 #endif
62 /*--------------------- Export Definitions -------------------------*/
66 // Scan time
67 #define PROBE_DELAY 100 // (us)
68 #define SWITCH_CHANNEL_DELAY 200 // (us)
69 #define WLAN_SCAN_MINITIME 25 // (ms)
70 #define WLAN_SCAN_MAXTIME 100 // (ms)
71 #define TRIVIAL_SYNC_DIFFERENCE 0 // (us)
72 #define DEFAULT_IBSS_BI 100 // (ms)
74 #define WCMD_ACTIVE_SCAN_TIME 20 //(ms)
75 #define WCMD_PASSIVE_SCAN_TIME 100 //(ms)
78 #define DEFAULT_MSDU_LIFETIME 512 // ms
79 #define DEFAULT_MSDU_LIFETIME_RES_64us 8000 // 64us
81 #define DEFAULT_MGN_LIFETIME 8 // ms
82 #define DEFAULT_MGN_LIFETIME_RES_64us 125 // 64us
84 #define MAKE_BEACON_RESERVED 10 //(us)
87 #define TIM_MULTICAST_MASK 0x01
88 #define TIM_BITMAPOFFSET_MASK 0xFE
89 #define DEFAULT_DTIM_PERIOD 1
91 #define AP_LONG_RETRY_LIMIT 4
93 #define DEFAULT_IBSS_CHANNEL 6 //2.4G
96 /*--------------------- Export Classes ----------------------------*/
98 /*--------------------- Export Variables --------------------------*/
100 /*--------------------- Export Types ------------------------------*/
101 //mike define: make timer to expire after desired times
102 #define timer_expire(timer,next_tick) mod_timer(&timer, RUN_AT(next_tick))
104 typedef void (*TimerFunction)(ULONG);
107 //+++ NDIS related
109 typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
110 typedef struct _NDIS_802_11_AI_REQFI
112 USHORT Capabilities;
113 USHORT ListenInterval;
114 NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
115 } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
117 typedef struct _NDIS_802_11_AI_RESFI
119 USHORT Capabilities;
120 USHORT StatusCode;
121 USHORT AssociationId;
122 } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
124 typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
126 ULONG Length;
127 USHORT AvailableRequestFixedIEs;
128 NDIS_802_11_AI_REQFI RequestFixedIEs;
129 ULONG RequestIELength;
130 ULONG OffsetRequestIEs;
131 USHORT AvailableResponseFixedIEs;
132 NDIS_802_11_AI_RESFI ResponseFixedIEs;
133 ULONG ResponseIELength;
134 ULONG OffsetResponseIEs;
135 } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
139 typedef struct tagSAssocInfo {
140 NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo;
141 BYTE abyIEs[WLAN_BEACON_FR_MAXLEN+WLAN_BEACON_FR_MAXLEN];
142 // store ReqIEs set by OID_802_11_ASSOCIATION_INFORMATION
143 ULONG RequestIELength;
144 BYTE abyReqIEs[WLAN_BEACON_FR_MAXLEN];
145 } SAssocInfo, DEF* PSAssocInfo;
146 //---
150 typedef enum tagWMAC_AUTHENTICATION_MODE {
152 WMAC_AUTH_OPEN,
153 WMAC_AUTH_SHAREKEY,
154 WMAC_AUTH_AUTO,
155 WMAC_AUTH_WPA,
156 WMAC_AUTH_WPAPSK,
157 WMAC_AUTH_WPANONE,
158 WMAC_AUTH_WPA2,
159 WMAC_AUTH_WPA2PSK,
160 WMAC_AUTH_MAX // Not a real mode, defined as upper bound
161 } WMAC_AUTHENTICATION_MODE, *PWMAC_AUTHENTICATION_MODE;
165 // Pre-configured Mode (from XP)
167 typedef enum tagWMAC_CONFIG_MODE {
168 WMAC_CONFIG_ESS_STA,
169 WMAC_CONFIG_IBSS_STA,
170 WMAC_CONFIG_AUTO,
171 WMAC_CONFIG_AP
173 } WMAC_CONFIG_MODE, *PWMAC_CONFIG_MODE;
176 typedef enum tagWMAC_SCAN_TYPE {
178 WMAC_SCAN_ACTIVE,
179 WMAC_SCAN_PASSIVE,
180 WMAC_SCAN_HYBRID
182 } WMAC_SCAN_TYPE, *PWMAC_SCAN_TYPE;
185 typedef enum tagWMAC_SCAN_STATE {
187 WMAC_NO_SCANNING,
188 WMAC_IS_SCANNING,
189 WMAC_IS_PROBEPENDING
191 } WMAC_SCAN_STATE, *PWMAC_SCAN_STATE;
195 // Notes:
196 // Basic Service Set state explained as following:
197 // WMAC_STATE_IDLE : no BSS is selected (Adhoc or Infra)
198 // WMAC_STATE_STARTED : no BSS is selected, start own IBSS (Adhoc only)
199 // WMAC_STATE_JOINTED : BSS is selected and synchronized (Adhoc or Infra)
200 // WMAC_STATE_AUTHPENDING : Authentication pending (Infra)
201 // WMAC_STATE_AUTH : Authenticated (Infra)
202 // WMAC_STATE_ASSOCPENDING : Association pending (Infra)
203 // WMAC_STATE_ASSOC : Associated (Infra)
205 typedef enum tagWMAC_BSS_STATE {
207 WMAC_STATE_IDLE,
208 WMAC_STATE_STARTED,
209 WMAC_STATE_JOINTED,
210 WMAC_STATE_AUTHPENDING,
211 WMAC_STATE_AUTH,
212 WMAC_STATE_ASSOCPENDING,
213 WMAC_STATE_ASSOC
215 } WMAC_BSS_STATE, *PWMAC_BSS_STATE;
217 // WMAC selected running mode
218 typedef enum tagWMAC_CURRENT_MODE {
220 WMAC_MODE_STANDBY,
221 WMAC_MODE_ESS_STA,
222 WMAC_MODE_IBSS_STA,
223 WMAC_MODE_ESS_AP
225 } WMAC_CURRENT_MODE, *PWMAC_CURRENT_MODE;
228 typedef enum tagWMAC_POWER_MODE {
230 WMAC_POWER_CAM,
231 WMAC_POWER_FAST,
232 WMAC_POWER_MAX
234 } WMAC_POWER_MODE, *PWMAC_POWER_MODE;
238 // Tx Managment Packet descriptor
239 typedef struct tagSTxMgmtPacket {
241 PUWLAN_80211HDR p80211Header;
242 UINT cbMPDULen;
243 UINT cbPayloadLen;
245 } STxMgmtPacket, DEF* PSTxMgmtPacket;
248 // Rx Managment Packet descriptor
249 typedef struct tagSRxMgmtPacket {
251 PUWLAN_80211HDR p80211Header;
252 QWORD qwLocalTSF;
253 UINT cbMPDULen;
254 UINT cbPayloadLen;
255 UINT uRSSI;
256 BYTE bySQ;
257 BYTE byRxRate;
258 BYTE byRxChannel;
260 } SRxMgmtPacket, DEF* PSRxMgmtPacket;
264 typedef struct tagSMgmtObject
267 PVOID pAdapter;
268 // MAC address
269 BYTE abyMACAddr[WLAN_ADDR_LEN];
271 // Configuration Mode
272 WMAC_CONFIG_MODE eConfigMode; // MAC pre-configed mode
274 CARD_PHY_TYPE eCurrentPHYMode;
277 // Operation state variables
278 WMAC_CURRENT_MODE eCurrMode; // MAC current connection mode
279 WMAC_BSS_STATE eCurrState; // MAC current BSS state
280 #ifdef SndEvt_ToAPI
281 WMAC_BSS_STATE eLastState; // MAC last BSS state
282 #endif
284 PKnownBSS pCurrBSS;
285 BYTE byCSSGK;
286 BYTE byCSSPK;
288 // BYTE abyNewSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
289 // BYTE abyNewExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
290 BOOL bCurrBSSIDFilterOn;
292 // Current state vars
293 UINT uCurrChannel;
294 BYTE abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
295 BYTE abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
296 BYTE abyCurrSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
297 BYTE abyCurrBSSID[WLAN_BSSID_LEN];
298 WORD wCurrCapInfo;
299 WORD wCurrAID;
300 UINT uRSSITrigger;
301 WORD wCurrATIMWindow;
302 WORD wCurrBeaconPeriod;
303 BOOL bIsDS;
304 BYTE byERPContext;
306 CMD_STATE eCommandState;
307 UINT uScanChannel;
309 // Desire joinning BSS vars
310 BYTE abyDesireSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
311 BYTE abyDesireBSSID[WLAN_BSSID_LEN];
313 //restore BSS info for Ad-Hoc mode
314 //20080131-05,<Add> by Mike Liu
315 #ifdef Adhoc_STA
316 BYTE abyAdHocSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
317 #endif
319 // Adhoc or AP configuration vars
320 WORD wIBSSBeaconPeriod;
321 WORD wIBSSATIMWindow;
322 UINT uIBSSChannel;
323 BYTE abyIBSSSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
324 BYTE byAPBBType;
325 BYTE abyWPAIE[MAX_WPA_IE_LEN];
326 WORD wWPAIELen;
328 UINT uAssocCount;
329 BOOL bMoreData;
331 // Scan state vars
332 WMAC_SCAN_STATE eScanState;
333 WMAC_SCAN_TYPE eScanType;
334 UINT uScanStartCh;
335 UINT uScanEndCh;
336 WORD wScanSteps;
337 UINT uScanBSSType;
338 // Desire scannig vars
339 BYTE abyScanSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
340 BYTE abyScanBSSID[WLAN_BSSID_LEN];
342 // Privacy
343 WMAC_AUTHENTICATION_MODE eAuthenMode;
344 BOOL bShareKeyAlgorithm;
345 BYTE abyChallenge[WLAN_CHALLENGE_LEN];
346 BOOL bPrivacyInvoked;
348 // Received beacon state vars
349 BOOL bInTIM;
350 BOOL bMulticastTIM;
351 BYTE byDTIMCount;
352 BYTE byDTIMPeriod;
354 // Power saving state vars
355 WMAC_POWER_MODE ePSMode;
356 WORD wListenInterval;
357 WORD wCountToWakeUp;
358 BOOL bInTIMWake;
359 PBYTE pbyPSPacketPool;
360 BYTE byPSPacketPool[sizeof(STxMgmtPacket) + WLAN_NULLDATA_FR_MAXLEN];
361 BOOL bRxBeaconInTBTTWake;
362 BYTE abyPSTxMap[MAX_NODE_NUM + 1];
364 // managment command related
365 UINT uCmdBusy;
366 UINT uCmdHostAPBusy;
368 // managment packet pool
369 PBYTE pbyMgmtPacketPool;
370 BYTE byMgmtPacketPool[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
373 // One second callback timer
374 struct timer_list sTimerSecondCallback;
376 // Temporarily Rx Mgmt Packet Descriptor
377 SRxMgmtPacket sRxPacket;
379 // link list of known bss's (scan results)
380 KnownBSS sBSSList[MAX_BSS_NUM];
381 //link list of same bss's //DavidWang
382 KnownBSS pSameBSS[6] ;
383 BOOL Cisco_cckm ;
384 BYTE Roam_dbm;
386 // table list of known node
387 // sNodeDBList[0] is reserved for AP under Infra mode
388 // sNodeDBList[0] is reserved for Multicast under adhoc/AP mode
389 KnownNodeDB sNodeDBTable[MAX_NODE_NUM + 1];
393 // WPA2 PMKID Cache
394 SPMKIDCache gsPMKIDCache;
395 BOOL bRoaming;
397 // rate fall back vars
401 // associate info
402 SAssocInfo sAssocInfo;
405 // for 802.11h
406 BOOL b11hEnable;
407 BOOL bSwitchChannel;
408 BYTE byNewChannel;
409 PWLAN_IE_MEASURE_REP pCurrMeasureEIDRep;
410 UINT uLengthOfRepEIDs;
411 BYTE abyCurrentMSRReq[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
412 BYTE abyCurrentMSRRep[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
413 BYTE abyIECountry[WLAN_A3FR_MAXLEN];
414 BYTE abyIBSSDFSOwner[6];
415 BYTE byIBSSDFSRecovery;
417 struct sk_buff skb;
419 } SMgmtObject, DEF *PSMgmtObject;
422 /*--------------------- Export Macros ------------------------------*/
425 /*--------------------- Export Functions --------------------------*/
428 void
429 vMgrObjectInit(
430 IN HANDLE hDeviceContext
434 void
435 vMgrAssocBeginSta(
436 IN HANDLE hDeviceContext,
437 IN PSMgmtObject pMgmt,
438 OUT PCMD_STATUS pStatus
441 VOID
442 vMgrReAssocBeginSta(
443 IN HANDLE hDeviceContext,
444 IN PSMgmtObject pMgmt,
445 OUT PCMD_STATUS pStatus
448 VOID
449 vMgrDisassocBeginSta(
450 IN HANDLE hDeviceContext,
451 IN PSMgmtObject pMgmt,
452 IN PBYTE abyDestAddress,
453 IN WORD wReason,
454 OUT PCMD_STATUS pStatus
457 VOID
458 vMgrAuthenBeginSta(
459 IN HANDLE hDeviceContext,
460 IN PSMgmtObject pMgmt,
461 OUT PCMD_STATUS pStatus
464 VOID
465 vMgrCreateOwnIBSS(
466 IN HANDLE hDeviceContext,
467 OUT PCMD_STATUS pStatus
470 VOID
471 vMgrJoinBSSBegin(
472 IN HANDLE hDeviceContext,
473 OUT PCMD_STATUS pStatus
476 VOID
477 vMgrRxManagePacket(
478 IN HANDLE hDeviceContext,
479 IN PSMgmtObject pMgmt,
480 IN PSRxMgmtPacket pRxPacket
484 VOID
485 vMgrScanBegin(
486 IN HANDLE hDeviceContext,
487 OUT PCMD_STATUS pStatus
491 VOID
492 vMgrDeAuthenBeginSta(
493 IN HANDLE hDeviceContext,
494 IN PSMgmtObject pMgmt,
495 IN PBYTE abyDestAddress,
496 IN WORD wReason,
497 OUT PCMD_STATUS pStatus
500 BOOL
501 bMgrPrepareBeaconToSend(
502 IN HANDLE hDeviceContext,
503 IN PSMgmtObject pMgmt
507 BOOL
508 bAdd_PMKID_Candidate (
509 IN HANDLE hDeviceContext,
510 IN PBYTE pbyBSSID,
511 IN PSRSNCapObject psRSNCapObj
514 VOID
515 vFlush_PMKID_Candidate (
516 IN HANDLE hDeviceContext
519 #endif // __WMGR_H__