• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/vt6656/
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 "card.h"
44
45/*---------------------  Export Definitions -------------------------*/
46
47
48
49// Scan time
50#define PROBE_DELAY                  100  // (us)
51#define SWITCH_CHANNEL_DELAY         200 // (us)
52#define WLAN_SCAN_MINITIME           25   // (ms)
53#define WLAN_SCAN_MAXTIME            100  // (ms)
54#define TRIVIAL_SYNC_DIFFERENCE      0    // (us)
55#define DEFAULT_IBSS_BI              100  // (ms)
56
57#define WCMD_ACTIVE_SCAN_TIME   20 //(ms)
58#define WCMD_PASSIVE_SCAN_TIME  100 //(ms)
59
60
61#define DEFAULT_MSDU_LIFETIME           512  // ms
62#define DEFAULT_MSDU_LIFETIME_RES_64us  8000 // 64us
63
64#define DEFAULT_MGN_LIFETIME            8    // ms
65#define DEFAULT_MGN_LIFETIME_RES_64us   125  // 64us
66
67#define MAKE_BEACON_RESERVED            10  //(us)
68
69
70#define TIM_MULTICAST_MASK           0x01
71#define TIM_BITMAPOFFSET_MASK        0xFE
72#define DEFAULT_DTIM_PERIOD             1
73
74#define AP_LONG_RETRY_LIMIT             4
75
76#define DEFAULT_IBSS_CHANNEL            6  //2.4G
77
78
79/*---------------------  Export Classes  ----------------------------*/
80
81/*---------------------  Export Variables  --------------------------*/
82
83/*---------------------  Export Types  ------------------------------*/
84//mike define: make timer  to expire after desired times
85#define timer_expire(timer, next_tick) mod_timer(&timer, RUN_AT(next_tick))
86
87typedef void (*TimerFunction)(unsigned long);
88
89
90//+++ NDIS related
91
92typedef unsigned char NDIS_802_11_MAC_ADDRESS[ETH_ALEN];
93typedef struct _NDIS_802_11_AI_REQFI
94{
95    unsigned short Capabilities;
96    unsigned short ListenInterval;
97    NDIS_802_11_MAC_ADDRESS  CurrentAPAddress;
98} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
99
100typedef struct _NDIS_802_11_AI_RESFI
101{
102    unsigned short Capabilities;
103    unsigned short StatusCode;
104    unsigned short AssociationId;
105} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
106
107typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
108{
109    unsigned long                   Length;
110    unsigned short                  AvailableRequestFixedIEs;
111    NDIS_802_11_AI_REQFI    RequestFixedIEs;
112    unsigned long                   RequestIELength;
113    unsigned long                   OffsetRequestIEs;
114    unsigned short                  AvailableResponseFixedIEs;
115    NDIS_802_11_AI_RESFI    ResponseFixedIEs;
116    unsigned long                   ResponseIELength;
117    unsigned long                   OffsetResponseIEs;
118} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
119
120
121
122typedef struct tagSAssocInfo {
123    NDIS_802_11_ASSOCIATION_INFORMATION     AssocInfo;
124    BYTE                                    abyIEs[WLAN_BEACON_FR_MAXLEN+WLAN_BEACON_FR_MAXLEN];
125    // store ReqIEs set by OID_802_11_ASSOCIATION_INFORMATION
126    unsigned long                                   RequestIELength;
127    BYTE                                    abyReqIEs[WLAN_BEACON_FR_MAXLEN];
128} SAssocInfo, *PSAssocInfo;
129//---
130
131
132
133typedef enum tagWMAC_AUTHENTICATION_MODE {
134
135    WMAC_AUTH_OPEN,
136    WMAC_AUTH_SHAREKEY,
137    WMAC_AUTH_AUTO,
138    WMAC_AUTH_WPA,
139    WMAC_AUTH_WPAPSK,
140    WMAC_AUTH_WPANONE,
141    WMAC_AUTH_WPA2,
142    WMAC_AUTH_WPA2PSK,
143    WMAC_AUTH_MAX       // Not a real mode, defined as upper bound
144} WMAC_AUTHENTICATION_MODE, *PWMAC_AUTHENTICATION_MODE;
145
146
147
148// Pre-configured Mode (from XP)
149
150typedef enum tagWMAC_CONFIG_MODE {
151    WMAC_CONFIG_ESS_STA,
152    WMAC_CONFIG_IBSS_STA,
153    WMAC_CONFIG_AUTO,
154    WMAC_CONFIG_AP
155
156} WMAC_CONFIG_MODE, *PWMAC_CONFIG_MODE;
157
158
159typedef enum tagWMAC_SCAN_TYPE {
160
161    WMAC_SCAN_ACTIVE,
162    WMAC_SCAN_PASSIVE,
163    WMAC_SCAN_HYBRID
164
165} WMAC_SCAN_TYPE, *PWMAC_SCAN_TYPE;
166
167
168typedef enum tagWMAC_SCAN_STATE {
169
170    WMAC_NO_SCANNING,
171    WMAC_IS_SCANNING,
172    WMAC_IS_PROBEPENDING
173
174} WMAC_SCAN_STATE, *PWMAC_SCAN_STATE;
175
176
177
178// Notes:
179// Basic Service Set state explained as following:
180// WMAC_STATE_IDLE          : no BSS is selected (Adhoc or Infra)
181// WMAC_STATE_STARTED       : no BSS is selected, start own IBSS (Adhoc only)
182// WMAC_STATE_JOINTED       : BSS is selected and synchronized (Adhoc or Infra)
183// WMAC_STATE_AUTHPENDING   : Authentication pending (Infra)
184// WMAC_STATE_AUTH          : Authenticated (Infra)
185// WMAC_STATE_ASSOCPENDING  : Association pending (Infra)
186// WMAC_STATE_ASSOC         : Associated (Infra)
187
188typedef enum tagWMAC_BSS_STATE {
189
190    WMAC_STATE_IDLE,
191    WMAC_STATE_STARTED,
192    WMAC_STATE_JOINTED,
193    WMAC_STATE_AUTHPENDING,
194    WMAC_STATE_AUTH,
195    WMAC_STATE_ASSOCPENDING,
196    WMAC_STATE_ASSOC
197
198} WMAC_BSS_STATE, *PWMAC_BSS_STATE;
199
200// WMAC selected running mode
201typedef enum tagWMAC_CURRENT_MODE {
202
203    WMAC_MODE_STANDBY,
204    WMAC_MODE_ESS_STA,
205    WMAC_MODE_IBSS_STA,
206    WMAC_MODE_ESS_AP
207
208} WMAC_CURRENT_MODE, *PWMAC_CURRENT_MODE;
209
210
211typedef enum tagWMAC_POWER_MODE {
212
213    WMAC_POWER_CAM,
214    WMAC_POWER_FAST,
215    WMAC_POWER_MAX
216
217} WMAC_POWER_MODE, *PWMAC_POWER_MODE;
218
219
220
221// Tx Managment Packet descriptor
222typedef struct tagSTxMgmtPacket {
223
224    PUWLAN_80211HDR     p80211Header;
225    unsigned int                cbMPDULen;
226    unsigned int                cbPayloadLen;
227
228} STxMgmtPacket, *PSTxMgmtPacket;
229
230
231// Rx Managment Packet descriptor
232typedef struct tagSRxMgmtPacket {
233
234    PUWLAN_80211HDR     p80211Header;
235    QWORD               qwLocalTSF;
236    unsigned int                cbMPDULen;
237    unsigned int                cbPayloadLen;
238    unsigned int                uRSSI;
239    BYTE                bySQ;
240    BYTE                byRxRate;
241    BYTE                byRxChannel;
242
243} SRxMgmtPacket, *PSRxMgmtPacket;
244
245
246
247typedef struct tagSMgmtObject
248{
249	void *pAdapter;
250    // MAC address
251    BYTE                    abyMACAddr[WLAN_ADDR_LEN];
252
253    // Configuration Mode
254    WMAC_CONFIG_MODE        eConfigMode; // MAC pre-configed mode
255
256    CARD_PHY_TYPE           eCurrentPHYMode;
257
258
259    // Operation state variables
260    WMAC_CURRENT_MODE       eCurrMode;   // MAC current connection mode
261    WMAC_BSS_STATE          eCurrState;  // MAC current BSS state
262    WMAC_BSS_STATE          eLastState;  // MAC last BSS state
263
264    PKnownBSS               pCurrBSS;
265    BYTE                    byCSSGK;
266    BYTE                    byCSSPK;
267
268//    BYTE                    abyNewSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
269//    BYTE                    abyNewExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN];
270    BOOL                    bCurrBSSIDFilterOn;
271
272    // Current state vars
273    unsigned int                    uCurrChannel;
274    BYTE                    abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
275    BYTE                    abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
276    BYTE                    abyCurrSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
277    BYTE                    abyCurrBSSID[WLAN_BSSID_LEN];
278    WORD                    wCurrCapInfo;
279    WORD                    wCurrAID;
280    unsigned int                    uRSSITrigger;
281    WORD                    wCurrATIMWindow;
282    WORD                    wCurrBeaconPeriod;
283    BOOL                    bIsDS;
284    BYTE                    byERPContext;
285
286    CMD_STATE               eCommandState;
287    unsigned int                    uScanChannel;
288
289    // Desire joinning BSS vars
290    BYTE                    abyDesireSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
291    BYTE                    abyDesireBSSID[WLAN_BSSID_LEN];
292
293//restore BSS info for Ad-Hoc mode
294     BYTE                    abyAdHocSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
295
296    // Adhoc or AP configuration vars
297    WORD                    wIBSSBeaconPeriod;
298    WORD                    wIBSSATIMWindow;
299    unsigned int                    uIBSSChannel;
300    BYTE                    abyIBSSSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
301    BYTE                    byAPBBType;
302    BYTE                    abyWPAIE[MAX_WPA_IE_LEN];
303    WORD                    wWPAIELen;
304
305    unsigned int                    uAssocCount;
306    BOOL                    bMoreData;
307
308    // Scan state vars
309    WMAC_SCAN_STATE         eScanState;
310    WMAC_SCAN_TYPE          eScanType;
311    unsigned int                    uScanStartCh;
312    unsigned int                    uScanEndCh;
313    WORD                    wScanSteps;
314    unsigned int                    uScanBSSType;
315    // Desire scannig vars
316    BYTE                    abyScanSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
317    BYTE                    abyScanBSSID[WLAN_BSSID_LEN];
318
319    // Privacy
320    WMAC_AUTHENTICATION_MODE eAuthenMode;
321    BOOL                    bShareKeyAlgorithm;
322    BYTE                    abyChallenge[WLAN_CHALLENGE_LEN];
323    BOOL                    bPrivacyInvoked;
324
325    // Received beacon state vars
326    BOOL                    bInTIM;
327    BOOL                    bMulticastTIM;
328    BYTE                    byDTIMCount;
329    BYTE                    byDTIMPeriod;
330
331    // Power saving state vars
332    WMAC_POWER_MODE         ePSMode;
333    WORD                    wListenInterval;
334    WORD                    wCountToWakeUp;
335    BOOL                    bInTIMWake;
336    PBYTE                   pbyPSPacketPool;
337    BYTE                    byPSPacketPool[sizeof(STxMgmtPacket) + WLAN_NULLDATA_FR_MAXLEN];
338    BOOL                    bRxBeaconInTBTTWake;
339    BYTE                    abyPSTxMap[MAX_NODE_NUM + 1];
340
341    // management command related
342    unsigned int                    uCmdBusy;
343    unsigned int                    uCmdHostAPBusy;
344
345    // management packet pool
346    PBYTE                   pbyMgmtPacketPool;
347    BYTE                    byMgmtPacketPool[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
348
349
350    // One second callback timer
351	struct timer_list	    sTimerSecondCallback;
352
353    // Temporarily Rx Mgmt Packet Descriptor
354    SRxMgmtPacket           sRxPacket;
355
356    // link list of known bss's (scan results)
357    KnownBSS                sBSSList[MAX_BSS_NUM];
358   //link list of same bss's  //DavidWang
359    KnownBSS				pSameBSS[6] ;
360    BOOL          Cisco_cckm ;
361    BYTE          Roam_dbm;
362
363    // table list of known node
364    // sNodeDBList[0] is reserved for AP under Infra mode
365    // sNodeDBList[0] is reserved for Multicast under adhoc/AP mode
366    KnownNodeDB             sNodeDBTable[MAX_NODE_NUM + 1];
367
368
369
370    // WPA2 PMKID Cache
371    SPMKIDCache             gsPMKIDCache;
372    BOOL                    bRoaming;
373
374    // rate fall back vars
375
376
377
378    // associate info
379    SAssocInfo              sAssocInfo;
380
381
382    // for 802.11h
383    BOOL                    b11hEnable;
384    BOOL                    bSwitchChannel;
385    BYTE                    byNewChannel;
386    PWLAN_IE_MEASURE_REP    pCurrMeasureEIDRep;
387    unsigned int                    uLengthOfRepEIDs;
388    BYTE                    abyCurrentMSRReq[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
389    BYTE                    abyCurrentMSRRep[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
390    BYTE                    abyIECountry[WLAN_A3FR_MAXLEN];
391    BYTE                    abyIBSSDFSOwner[6];
392    BYTE                    byIBSSDFSRecovery;
393
394    struct sk_buff  skb;
395
396} SMgmtObject, *PSMgmtObject;
397
398/*---------------------  Export Macros ------------------------------*/
399
400/*---------------------  Export Functions  --------------------------*/
401
402void vMgrObjectInit(void *hDeviceContext);
403
404void vMgrAssocBeginSta(void *hDeviceContext,
405		       PSMgmtObject pMgmt,
406		       PCMD_STATUS pStatus);
407
408void vMgrReAssocBeginSta(void *hDeviceContext,
409			 PSMgmtObject pMgmt,
410			 PCMD_STATUS pStatus);
411
412void vMgrDisassocBeginSta(void *hDeviceContext,
413			  PSMgmtObject pMgmt,
414			  PBYTE abyDestAddress,
415			  WORD wReason,
416			  PCMD_STATUS pStatus);
417
418void vMgrAuthenBeginSta(void *hDeviceContext,
419			PSMgmtObject pMgmt,
420			PCMD_STATUS pStatus);
421
422void vMgrCreateOwnIBSS(void *hDeviceContext,
423		       PCMD_STATUS pStatus);
424
425void vMgrJoinBSSBegin(void *hDeviceContext,
426		      PCMD_STATUS pStatus);
427
428void vMgrRxManagePacket(void *hDeviceContext,
429			PSMgmtObject pMgmt,
430			PSRxMgmtPacket pRxPacket);
431
432/*
433void
434vMgrScanBegin(
435      void *hDeviceContext,
436     PCMD_STATUS pStatus
437    );
438*/
439
440void vMgrDeAuthenBeginSta(void *hDeviceContext,
441			  PSMgmtObject pMgmt,
442			  PBYTE abyDestAddress,
443			  WORD wReason,
444			  PCMD_STATUS pStatus);
445
446BOOL bMgrPrepareBeaconToSend(void *hDeviceContext,
447			     PSMgmtObject pMgmt);
448
449BOOL bAdd_PMKID_Candidate(void *hDeviceContext,
450			  PBYTE pbyBSSID,
451			  PSRSNCapObject psRSNCapObj);
452
453void vFlush_PMKID_Candidate(void *hDeviceContext);
454
455#endif /* __WMGR_H__ */
456