1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
47
48
49#define PROBE_DELAY 100
50#define SWITCH_CHANNEL_DELAY 200
51#define WLAN_SCAN_MINITIME 25
52#define WLAN_SCAN_MAXTIME 100
53#define TRIVIAL_SYNC_DIFFERENCE 0
54#define DEFAULT_IBSS_BI 100
55
56#define WCMD_ACTIVE_SCAN_TIME 50
57#define WCMD_PASSIVE_SCAN_TIME 100
58
59#define DEFAULT_MSDU_LIFETIME 512
60#define DEFAULT_MSDU_LIFETIME_RES_64us 8000
61
62#define DEFAULT_MGN_LIFETIME 8
63#define DEFAULT_MGN_LIFETIME_RES_64us 125
64
65#define MAKE_BEACON_RESERVED 10
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
74
75
76
77
78
79
80#define timer_expire(timer, next_tick) mod_timer(&timer, RUN_AT(next_tick))
81typedef void (*TimerFunction)(unsigned long);
82
83
84
85typedef unsigned char NDIS_802_11_MAC_ADDRESS[6];
86typedef struct _NDIS_802_11_AI_REQFI
87{
88 unsigned short Capabilities;
89 unsigned short ListenInterval;
90 NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
91} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
92
93typedef struct _NDIS_802_11_AI_RESFI
94{
95 unsigned short Capabilities;
96 unsigned short StatusCode;
97 unsigned short AssociationId;
98} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
99
100typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
101{
102 unsigned long Length;
103 unsigned short AvailableRequestFixedIEs;
104 NDIS_802_11_AI_REQFI RequestFixedIEs;
105 unsigned long RequestIELength;
106 unsigned long OffsetRequestIEs;
107 unsigned short AvailableResponseFixedIEs;
108 NDIS_802_11_AI_RESFI ResponseFixedIEs;
109 unsigned long ResponseIELength;
110 unsigned long OffsetResponseIEs;
111} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
112
113typedef struct tagSAssocInfo {
114 NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo;
115 unsigned char abyIEs[WLAN_BEACON_FR_MAXLEN+WLAN_BEACON_FR_MAXLEN];
116
117 unsigned long RequestIELength;
118 unsigned char abyReqIEs[WLAN_BEACON_FR_MAXLEN];
119} SAssocInfo, *PSAssocInfo;
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148typedef enum tagWMAC_SCAN_TYPE {
149 WMAC_SCAN_ACTIVE,
150 WMAC_SCAN_PASSIVE,
151 WMAC_SCAN_HYBRID
152} WMAC_SCAN_TYPE, *PWMAC_SCAN_TYPE;
153
154typedef enum tagWMAC_SCAN_STATE {
155 WMAC_NO_SCANNING,
156 WMAC_IS_SCANNING,
157 WMAC_IS_PROBEPENDING
158} WMAC_SCAN_STATE, *PWMAC_SCAN_STATE;
159
160
161
162
163
164
165
166
167
168
169
170typedef enum tagWMAC_BSS_STATE {
171 WMAC_STATE_IDLE,
172 WMAC_STATE_STARTED,
173 WMAC_STATE_JOINTED,
174 WMAC_STATE_AUTHPENDING,
175 WMAC_STATE_AUTH,
176 WMAC_STATE_ASSOCPENDING,
177 WMAC_STATE_ASSOC
178} WMAC_BSS_STATE, *PWMAC_BSS_STATE;
179
180
181typedef enum tagWMAC_CURRENT_MODE {
182 WMAC_MODE_STANDBY,
183 WMAC_MODE_ESS_STA,
184 WMAC_MODE_IBSS_STA,
185 WMAC_MODE_ESS_AP
186} WMAC_CURRENT_MODE, *PWMAC_CURRENT_MODE;
187
188
189
190
191
192
193
194
195
196
197
198typedef struct tagSTxMgmtPacket {
199 PUWLAN_80211HDR p80211Header;
200 unsigned int cbMPDULen;
201 unsigned int cbPayloadLen;
202} STxMgmtPacket, *PSTxMgmtPacket;
203
204
205typedef struct tagSRxMgmtPacket {
206 PUWLAN_80211HDR p80211Header;
207 QWORD qwLocalTSF;
208 unsigned int cbMPDULen;
209 unsigned int cbPayloadLen;
210 unsigned int uRSSI;
211 unsigned char bySQ;
212 unsigned char byRxRate;
213 unsigned char byRxChannel;
214} SRxMgmtPacket, *PSRxMgmtPacket;
215
216typedef struct tagSMgmtObject
217{
218 void *pAdapter;
219
220 unsigned char abyMACAddr[WLAN_ADDR_LEN];
221
222
223 WMAC_CONFIG_MODE eConfigMode;
224 CARD_PHY_TYPE eCurrentPHYMode;
225 CARD_PHY_TYPE eConfigPHYMode;
226
227
228 WMAC_CURRENT_MODE eCurrMode;
229 WMAC_BSS_STATE eCurrState;
230
231 PKnownBSS pCurrBSS;
232 unsigned char byCSSGK;
233 unsigned char byCSSPK;
234
235
236
237
238
239 unsigned int uCurrChannel;
240 unsigned char abyCurrSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
241 unsigned char abyCurrExtSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
242 unsigned char abyCurrSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
243 unsigned char abyCurrBSSID[WLAN_BSSID_LEN];
244 unsigned short wCurrCapInfo;
245 unsigned short wCurrAID;
246 unsigned short wCurrATIMWindow;
247 unsigned short wCurrBeaconPeriod;
248 bool bIsDS;
249 unsigned char byERPContext;
250
251 CMD_STATE eCommandState;
252 unsigned int uScanChannel;
253
254
255 unsigned char abyDesireSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
256 unsigned char abyDesireBSSID[WLAN_BSSID_LEN];
257
258
259
260 unsigned short wIBSSBeaconPeriod;
261 unsigned short wIBSSATIMWindow;
262 unsigned int uIBSSChannel;
263 unsigned char abyIBSSSuppRates[WLAN_IEHDR_LEN + WLAN_RATES_MAXLEN + 1];
264 unsigned char byAPBBType;
265 unsigned char abyWPAIE[MAX_WPA_IE_LEN];
266 unsigned short wWPAIELen;
267
268 unsigned int uAssocCount;
269 bool bMoreData;
270
271
272 WMAC_SCAN_STATE eScanState;
273 WMAC_SCAN_TYPE eScanType;
274 unsigned int uScanStartCh;
275 unsigned int uScanEndCh;
276 unsigned short wScanSteps;
277 unsigned int uScanBSSType;
278
279 unsigned char abyScanSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
280 unsigned char abyScanBSSID[WLAN_BSSID_LEN];
281
282
283 WMAC_AUTHENTICATION_MODE eAuthenMode;
284 WMAC_ENCRYPTION_MODE eEncryptionMode;
285 bool bShareKeyAlgorithm;
286 unsigned char abyChallenge[WLAN_CHALLENGE_LEN];
287 bool bPrivacyInvoked;
288
289
290 bool bInTIM;
291 bool bMulticastTIM;
292 unsigned char byDTIMCount;
293 unsigned char byDTIMPeriod;
294
295
296 WMAC_POWER_MODE ePSMode;
297 unsigned short wListenInterval;
298 unsigned short wCountToWakeUp;
299 bool bInTIMWake;
300 unsigned char *pbyPSPacketPool;
301 unsigned char byPSPacketPool[sizeof(STxMgmtPacket) + WLAN_NULLDATA_FR_MAXLEN];
302 bool bRxBeaconInTBTTWake;
303 unsigned char abyPSTxMap[MAX_NODE_NUM + 1];
304
305
306 unsigned int uCmdBusy;
307 unsigned int uCmdHostAPBusy;
308
309
310 unsigned char *pbyMgmtPacketPool;
311 unsigned char byMgmtPacketPool[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
312
313
314 struct timer_list sTimerSecondCallback;
315
316
317 SRxMgmtPacket sRxPacket;
318
319
320 KnownBSS sBSSList[MAX_BSS_NUM];
321
322
323
324
325 KnownNodeDB sNodeDBTable[MAX_NODE_NUM + 1];
326
327
328 SPMKIDCache gsPMKIDCache;
329 bool bRoaming;
330
331
332
333
334 SAssocInfo sAssocInfo;
335
336
337 bool b11hEnable;
338 bool bSwitchChannel;
339 unsigned char byNewChannel;
340 PWLAN_IE_MEASURE_REP pCurrMeasureEIDRep;
341 unsigned int uLengthOfRepEIDs;
342 unsigned char abyCurrentMSRReq[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
343 unsigned char abyCurrentMSRRep[sizeof(STxMgmtPacket) + WLAN_A3FR_MAXLEN];
344 unsigned char abyIECountry[WLAN_A3FR_MAXLEN];
345 unsigned char abyIBSSDFSOwner[6];
346 unsigned char byIBSSDFSRecovery;
347
348 struct sk_buff skb;
349} SMgmtObject, *PSMgmtObject;
350
351
352
353
354
355void
356vMgrObjectInit(
357 void *hDeviceContext
358);
359
360void
361vMgrTimerInit(
362 void *hDeviceContext
363);
364
365void
366vMgrObjectReset(
367 void *hDeviceContext
368);
369
370void
371vMgrAssocBeginSta(
372 void *hDeviceContext,
373 PSMgmtObject pMgmt,
374 PCMD_STATUS pStatus
375);
376
377void
378vMgrReAssocBeginSta(
379 void *hDeviceContext,
380 PSMgmtObject pMgmt,
381 PCMD_STATUS pStatus
382);
383
384void
385vMgrDisassocBeginSta(
386 void *hDeviceContext,
387 PSMgmtObject pMgmt,
388 unsigned char *abyDestAddress,
389 unsigned short wReason,
390 PCMD_STATUS pStatus
391);
392
393void
394vMgrAuthenBeginSta(
395 void *hDeviceContext,
396 PSMgmtObject pMgmt,
397 PCMD_STATUS pStatus
398);
399
400void
401vMgrCreateOwnIBSS(
402 void *hDeviceContext,
403 PCMD_STATUS pStatus
404);
405
406void
407vMgrJoinBSSBegin(
408 void *hDeviceContext,
409 PCMD_STATUS pStatus
410);
411
412void
413vMgrRxManagePacket(
414 void *hDeviceContext,
415 PSMgmtObject pMgmt,
416 PSRxMgmtPacket pRxPacket
417);
418
419
420
421
422
423
424
425
426
427void
428vMgrDeAuthenBeginSta(
429 void *hDeviceContext,
430 PSMgmtObject pMgmt,
431 unsigned char *abyDestAddress,
432 unsigned short wReason,
433 PCMD_STATUS pStatus
434);
435
436bool
437bMgrPrepareBeaconToSend(
438 void *hDeviceContext,
439 PSMgmtObject pMgmt
440);
441
442bool
443bAdd_PMKID_Candidate(
444 void *hDeviceContext,
445 unsigned char *pbyBSSID,
446 PSRSNCapObject psRSNCapObj
447);
448
449void
450vFlush_PMKID_Candidate(
451 void *hDeviceContext
452);
453
454#endif
455