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
35
36
37
38
39#ifndef __MLME_H__
40#define __MLME_H__
41
42#include "rtmp_dot11.h"
43
44#ifdef CONFIG_STA_SUPPORT
45#endif
46
47
48
49
50#define SUPPORTED_CAPABILITY_INFO 0x0533
51
52#define END_OF_ARGS -1
53#define LFSR_MASK 0x80000057
54#define MLME_TASK_EXEC_INTV 100
55#define LEAD_TIME 5
56#define MLME_TASK_EXEC_MULTIPLE 10
57#define REORDER_EXEC_INTV 100
58
59
60
61#define CE 0
62#define FCC 1
63#define JAP 2
64#define JAP_W53 3
65#define JAP_W56 4
66#define MAX_RD_REGION 5
67
68#define BEACON_LOST_TIME 4 * OS_HZ
69
70#define DLS_TIMEOUT 1200
71#define AUTH_TIMEOUT 300
72#define ASSOC_TIMEOUT 300
73#define JOIN_TIMEOUT 2000
74#define SHORT_CHANNEL_TIME 90
75#define MIN_CHANNEL_TIME 110
76#define MAX_CHANNEL_TIME 140
77#define FAST_ACTIVE_SCAN_TIME 30
78#define CW_MIN_IN_BITS 4
79#define LINK_DOWN_TIMEOUT 20000
80#define AUTO_WAKEUP_TIMEOUT 70
81
82
83#ifdef CONFIG_STA_SUPPORT
84#define CW_MAX_IN_BITS 10
85#endif
86
87#ifdef CONFIG_APSTA_MIXED_SUPPORT
88extern UINT32 CW_MAX_IN_BITS;
89#endif
90
91
92
93
94#define RSSI_FOR_MID_TX_POWER -55
95#define RSSI_FOR_LOW_TX_POWER -45
96
97#define RSSI_FOR_LOWEST_TX_POWER -30
98
99#define LOW_TX_POWER_DELTA 6
100#define LOWEST_TX_POWER_DELTA 16
101
102#define RSSI_TRIGGERED_UPON_BELOW_THRESHOLD 0
103#define RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD 1
104#define RSSI_THRESHOLD_FOR_ROAMING 25
105#define RSSI_DELTA 5
106
107
108#define CQI_IS_GOOD(cqi) ((cqi) >= 50)
109
110#define CQI_IS_POOR(cqi) (cqi < 50)
111#define CQI_IS_BAD(cqi) (cqi < 5)
112#define CQI_IS_DEAD(cqi) (cqi == 0)
113
114
115#define RSSI_WEIGHTING 50
116#define TX_WEIGHTING 30
117#define RX_WEIGHTING 20
118
119
120
121
122
123
124
125
126#define BSS_NOT_FOUND 0xFFFFFFFF
127
128
129#ifdef CONFIG_STA_SUPPORT
130#define MAX_LEN_OF_MLME_QUEUE 40
131#endif
132
133#define SCAN_PASSIVE 18
134#define SCAN_ACTIVE 19
135#define SCAN_CISCO_PASSIVE 20
136#define SCAN_CISCO_ACTIVE 21
137#define SCAN_CISCO_NOISE 22
138#define SCAN_CISCO_CHANNEL_LOAD 23
139#define FAST_SCAN_ACTIVE 24
140
141#ifdef DOT11N_DRAFT3
142#define SCAN_2040_BSS_COEXIST 26
143#endif
144
145
146#define MAC_ADDR_IS_GROUP(Addr) (((Addr[0]) & 0x01))
147#define MAC_ADDR_HASH(Addr) (Addr[0] ^ Addr[1] ^ Addr[2] ^ Addr[3] ^ Addr[4] ^ Addr[5])
148#define MAC_ADDR_HASH_INDEX(Addr) (MAC_ADDR_HASH(Addr) % HASH_TABLE_SIZE)
149#define TID_MAC_HASH(Addr,TID) (TID^Addr[0] ^ Addr[1] ^ Addr[2] ^ Addr[3] ^ Addr[4] ^ Addr[5])
150#define TID_MAC_HASH_INDEX(Addr,TID) (TID_MAC_HASH(Addr,TID) % HASH_TABLE_SIZE)
151
152
153
154
155#define ASIC_LED_ACT_ON(pAd) RTMP_IO_WRITE32(pAd, MAC_CSR14, 0x00031e46)
156#define ASIC_LED_ACT_OFF(pAd) RTMP_IO_WRITE32(pAd, MAC_CSR14, 0x00001e46)
157
158
159#define CAP_IS_ESS_ON(x) (((x) & 0x0001) != 0)
160#define CAP_IS_IBSS_ON(x) (((x) & 0x0002) != 0)
161#define CAP_IS_CF_POLLABLE_ON(x) (((x) & 0x0004) != 0)
162#define CAP_IS_CF_POLL_REQ_ON(x) (((x) & 0x0008) != 0)
163#define CAP_IS_PRIVACY_ON(x) (((x) & 0x0010) != 0)
164#define CAP_IS_SHORT_PREAMBLE_ON(x) (((x) & 0x0020) != 0)
165#define CAP_IS_PBCC_ON(x) (((x) & 0x0040) != 0)
166#define CAP_IS_AGILITY_ON(x) (((x) & 0x0080) != 0)
167#define CAP_IS_SPECTRUM_MGMT(x) (((x) & 0x0100) != 0)
168#define CAP_IS_QOS(x) (((x) & 0x0200) != 0)
169#define CAP_IS_SHORT_SLOT(x) (((x) & 0x0400) != 0)
170#define CAP_IS_APSD(x) (((x) & 0x0800) != 0)
171#define CAP_IS_IMMED_BA(x) (((x) & 0x1000) != 0)
172#define CAP_IS_DSSS_OFDM(x) (((x) & 0x2000) != 0)
173#define CAP_IS_DELAY_BA(x) (((x) & 0x4000) != 0)
174
175#define CAP_GENERATE(ess,ibss,priv,s_pre,s_slot,spectrum) (((ess) ? 0x0001 : 0x0000) | ((ibss) ? 0x0002 : 0x0000) | ((priv) ? 0x0010 : 0x0000) | ((s_pre) ? 0x0020 : 0x0000) | ((s_slot) ? 0x0400 : 0x0000) | ((spectrum) ? 0x0100 : 0x0000))
176
177
178
179#define ERP_IS_NON_ERP_PRESENT(x) (((x) & 0x01) != 0)
180#define ERP_IS_USE_PROTECTION(x) (((x) & 0x02) != 0)
181#define ERP_IS_USE_BARKER_PREAMBLE(x) (((x) & 0x04) != 0)
182
183#define DRS_TX_QUALITY_WORST_BOUND 8
184#define DRS_PENALTY 8
185
186#define BA_NOTUSE 2
187
188#define IMMED_BA 1
189#define DELAY_BA 0
190
191
192#define ORIGINATOR 1
193#define RECIPIENT 0
194
195
196#define ADDBA_RESULTCODE_SUCCESS 0
197#define ADDBA_RESULTCODE_REFUSED 37
198#define ADDBA_RESULTCODE_INVALID_PARAMETERS 38
199
200
201#define DELBA_REASONCODE_QSTA_LEAVING 36
202#define DELBA_REASONCODE_END_BA 37
203#define DELBA_REASONCODE_UNKNOWN_BA 38
204#define DELBA_REASONCODE_TIMEOUT 39
205
206
207#define RESET_ONE_SEC_TX_CNT(__pEntry) \
208if (((__pEntry)) != NULL) \
209{ \
210 (__pEntry)->OneSecTxRetryOkCount = 0; \
211 (__pEntry)->OneSecTxFailCount = 0; \
212 (__pEntry)->OneSecTxNoRetryOkCount = 0; \
213}
214
215
216
217
218
219typedef struct PACKED {
220#ifdef RT_BIG_ENDIAN
221 USHORT LSIGTxopProSup:1;
222 USHORT Forty_Mhz_Intolerant:1;
223 USHORT PSMP:1;
224 USHORT CCKmodein40:1;
225 USHORT AMsduSize:1;
226 USHORT DelayedBA:1;
227 USHORT RxSTBC:2;
228 USHORT TxSTBC:1;
229 USHORT ShortGIfor40:1;
230 USHORT ShortGIfor20:1;
231 USHORT GF:1;
232 USHORT MimoPs:2;
233 USHORT ChannelWidth:1;
234 USHORT AdvCoding:1;
235#else
236 USHORT AdvCoding:1;
237 USHORT ChannelWidth:1;
238 USHORT MimoPs:2;
239 USHORT GF:1;
240 USHORT ShortGIfor20:1;
241 USHORT ShortGIfor40:1;
242 USHORT TxSTBC:1;
243 USHORT RxSTBC:2;
244 USHORT DelayedBA:1;
245 USHORT AMsduSize:1;
246 USHORT CCKmodein40:1;
247 USHORT PSMP:1;
248 USHORT Forty_Mhz_Intolerant:1;
249 USHORT LSIGTxopProSup:1;
250#endif
251} HT_CAP_INFO, *PHT_CAP_INFO;
252
253
254typedef struct PACKED {
255#ifdef RT_BIG_ENDIAN
256 UCHAR rsv:3;
257 UCHAR MpduDensity:3;
258 UCHAR MaxRAmpduFactor:2;
259#else
260 UCHAR MaxRAmpduFactor:2;
261 UCHAR MpduDensity:3;
262 UCHAR rsv:3;
263#endif
264} HT_CAP_PARM, *PHT_CAP_PARM;
265
266
267typedef struct PACKED {
268 UCHAR MCSSet[10];
269 UCHAR SupRate[2];
270#ifdef RT_BIG_ENDIAN
271 UCHAR rsv:3;
272 UCHAR MpduDensity:1;
273 UCHAR TxStream:2;
274 UCHAR TxRxNotEqual:1;
275 UCHAR TxMCSSetDefined:1;
276#else
277 UCHAR TxMCSSetDefined:1;
278 UCHAR TxRxNotEqual:1;
279 UCHAR TxStream:2;
280 UCHAR MpduDensity:1;
281 UCHAR rsv:3;
282#endif
283 UCHAR rsv3[3];
284} HT_MCS_SET, *PHT_MCS_SET;
285
286
287typedef struct PACKED {
288#ifdef RT_BIG_ENDIAN
289 USHORT rsv2:4;
290 USHORT RDGSupport:1;
291 USHORT PlusHTC:1;
292 USHORT MCSFeedback:2;
293 USHORT rsv:5;
294 USHORT TranTime:2;
295 USHORT Pco:1;
296#else
297 USHORT Pco:1;
298 USHORT TranTime:2;
299 USHORT rsv:5;
300 USHORT MCSFeedback:2;
301 USHORT PlusHTC:1;
302 USHORT RDGSupport:1;
303 USHORT rsv2:4;
304#endif
305} EXT_HT_CAP_INFO, *PEXT_HT_CAP_INFO;
306
307
308typedef struct PACKED _HT_BF_CAP{
309#ifdef RT_BIG_ENDIAN
310 ULONG rsv:3;
311 ULONG ChanEstimation:2;
312 ULONG CSIRowBFSup:2;
313 ULONG ComSteerBFAntSup:2;
314 ULONG NoComSteerBFAntSup:2;
315 ULONG CSIBFAntSup:2;
316 ULONG MinGrouping:2;
317 ULONG ExpComBF:2;
318 ULONG ExpNoComBF:2;
319 ULONG ExpCSIFbk:2;
320 ULONG ExpComSteerCapable:1;
321 ULONG ExpNoComSteerCapable:1;
322 ULONG ExpCSICapable:1;
323 ULONG Calibration:2;
324 ULONG ImpTxBFCapable:1;
325 ULONG TxNDPCapable:1;
326 ULONG RxNDPCapable:1;
327 ULONG TxSoundCapable:1;
328 ULONG RxSoundCapable:1;
329 ULONG TxBFRecCapable:1;
330#else
331 ULONG TxBFRecCapable:1;
332 ULONG RxSoundCapable:1;
333 ULONG TxSoundCapable:1;
334 ULONG RxNDPCapable:1;
335 ULONG TxNDPCapable:1;
336 ULONG ImpTxBFCapable:1;
337 ULONG Calibration:2;
338 ULONG ExpCSICapable:1;
339 ULONG ExpNoComSteerCapable:1;
340 ULONG ExpComSteerCapable:1;
341 ULONG ExpCSIFbk:2;
342 ULONG ExpNoComBF:2;
343 ULONG ExpComBF:2;
344 ULONG MinGrouping:2;
345 ULONG CSIBFAntSup:2;
346 ULONG NoComSteerBFAntSup:2;
347 ULONG ComSteerBFAntSup:2;
348 ULONG CSIRowBFSup:2;
349 ULONG ChanEstimation:2;
350 ULONG rsv:3;
351#endif
352} HT_BF_CAP, *PHT_BF_CAP;
353
354
355typedef struct PACKED _HT_AS_CAP{
356#ifdef RT_BIG_ENDIAN
357 UCHAR rsv:1;
358 UCHAR TxSoundPPDU:1;
359 UCHAR RxASel:1;
360 UCHAR AntIndFbk:1;
361 UCHAR ExpCSIFbk:1;
362 UCHAR AntIndFbkTxASEL:1;
363 UCHAR ExpCSIFbkTxASEL:1;
364 UCHAR AntSelect:1;
365#else
366 UCHAR AntSelect:1;
367 UCHAR ExpCSIFbkTxASEL:1;
368 UCHAR AntIndFbkTxASEL:1;
369 UCHAR ExpCSIFbk:1;
370 UCHAR AntIndFbk:1;
371 UCHAR RxASel:1;
372 UCHAR TxSoundPPDU:1;
373 UCHAR rsv:1;
374#endif
375} HT_AS_CAP, *PHT_AS_CAP;
376
377
378#define SIZE_HT_CAP_IE 26
379
380typedef struct PACKED _HT_CAPABILITY_IE{
381 HT_CAP_INFO HtCapInfo;
382 HT_CAP_PARM HtCapParm;
383
384 UCHAR MCSSet[16];
385 EXT_HT_CAP_INFO ExtHtCapInfo;
386 HT_BF_CAP TxBFCap;
387 HT_AS_CAP ASCap;
388} HT_CAPABILITY_IE, *PHT_CAPABILITY_IE;
389
390
391
392
393#define dot11OBSSScanPassiveDwell 20
394#define dot11OBSSScanActiveDwell 10
395#define dot11BSSWidthTriggerScanInterval 300
396#define dot11OBSSScanPassiveTotalPerChannel 200
397#define dot11OBSSScanActiveTotalPerChannel 20
398#define dot11BSSWidthChannelTransactionDelayFactor 5
399
400#define dot11BSSScanActivityThreshold 25
401
402
403
404typedef struct PACKED _OVERLAP_BSS_SCAN_IE{
405 USHORT ScanPassiveDwell;
406 USHORT ScanActiveDwell;
407 USHORT TriggerScanInt;
408 USHORT PassiveTalPerChannel;
409 USHORT ActiveTalPerChannel;
410 USHORT DelayFactor;
411 USHORT ScanActThre;
412}OVERLAP_BSS_SCAN_IE, *POVERLAP_BSS_SCAN_IE;
413
414
415
416typedef union PACKED _BSS_2040_COEXIST_IE{
417 struct PACKED {
418 #ifdef RT_BIG_ENDIAN
419 UCHAR rsv:5;
420 UCHAR BSS20WidthReq:1;
421 UCHAR Intolerant40:1;
422 UCHAR InfoReq:1;
423 #else
424 UCHAR InfoReq:1;
425 UCHAR Intolerant40:1;
426 UCHAR BSS20WidthReq:1;
427 UCHAR rsv:5;
428#endif
429 } field;
430 UCHAR word;
431} BSS_2040_COEXIST_IE, *PBSS_2040_COEXIST_IE;
432
433
434typedef struct _TRIGGER_EVENTA{
435 BOOLEAN bValid;
436 UCHAR BSSID[6];
437 UCHAR RegClass;
438 USHORT Channel;
439 ULONG CDCounter;
440} TRIGGER_EVENTA, *PTRIGGER_EVENTA;
441
442
443
444#define MAX_TRIGGER_EVENT 64
445typedef struct _TRIGGER_EVENT_TAB{
446 UCHAR EventANo;
447 TRIGGER_EVENTA EventA[MAX_TRIGGER_EVENT];
448 ULONG EventBCountDown;
449} TRIGGER_EVENT_TAB, *PTRIGGER_EVENT_TAB;
450
451
452
453typedef struct PACKED _EXT_CAP_INFO_ELEMENT{
454#ifdef RT_BIG_ENDIAN
455 UCHAR rsv2:5;
456 UCHAR ExtendChannelSwitch:1;
457 UCHAR rsv:1;
458 UCHAR BssCoexistMgmtSupport:1;
459#else
460 UCHAR BssCoexistMgmtSupport:1;
461 UCHAR rsv:1;
462 UCHAR ExtendChannelSwitch:1;
463 UCHAR rsv2:5;
464#endif
465}EXT_CAP_INFO_ELEMENT, *PEXT_CAP_INFO_ELEMENT;
466
467
468
469typedef struct PACKED _BSS_2040_COEXIST_ELEMENT{
470 UCHAR ElementID;
471 UCHAR Len;
472 BSS_2040_COEXIST_IE BssCoexistIe;
473}BSS_2040_COEXIST_ELEMENT, *PBSS_2040_COEXIST_ELEMENT;
474
475
476
477typedef struct PACKED _BSS_2040_INTOLERANT_CH_REPORT{
478 UCHAR ElementID;
479 UCHAR Len;
480 UCHAR RegulatoryClass;
481 UCHAR ChList[0];
482}BSS_2040_INTOLERANT_CH_REPORT, *PBSS_2040_INTOLERANT_CH_REPORT;
483
484
485
486typedef struct PACKED _CHA_SWITCH_ANNOUNCE_IE{
487 UCHAR SwitchMode;
488 UCHAR NewChannel;
489 UCHAR SwitchCount;
490} CHA_SWITCH_ANNOUNCE_IE, *PCHA_SWITCH_ANNOUNCE_IE;
491
492
493
494typedef struct PACKED _SEC_CHA_OFFSET_IE{
495 UCHAR SecondaryChannelOffset;
496} SEC_CHA_OFFSET_IE, *PSEC_CHA_OFFSET_IE;
497
498
499
500typedef struct {
501 BOOLEAN bHtEnable;
502 BOOLEAN bPreNHt;
503
504 UCHAR MCSSet[16];
505} RT_HT_PHY_INFO, *PRT_HT_PHY_INFO;
506
507
508
509typedef struct {
510#ifdef RT_BIG_ENDIAN
511 USHORT rsv:5;
512 USHORT AmsduSize:1;
513 USHORT AmsduEnable:1;
514 USHORT RxSTBC:2;
515 USHORT TxSTBC:1;
516 USHORT ShortGIfor40:1;
517 USHORT ShortGIfor20:1;
518 USHORT GF:1;
519 USHORT MimoPs:2;
520 USHORT ChannelWidth:1;
521#else
522 USHORT ChannelWidth:1;
523 USHORT MimoPs:2;
524 USHORT GF:1;
525 USHORT ShortGIfor20:1;
526 USHORT ShortGIfor40:1;
527 USHORT TxSTBC:1;
528 USHORT RxSTBC:2;
529 USHORT AmsduEnable:1;
530 USHORT AmsduSize:1;
531 USHORT rsv:5;
532#endif
533
534
535#ifdef RT_BIG_ENDIAN
536 UCHAR RecomWidth:1;
537 UCHAR ExtChanOffset:2;
538 UCHAR MpduDensity:3;
539 UCHAR MaxRAmpduFactor:2;
540#else
541 UCHAR MaxRAmpduFactor:2;
542 UCHAR MpduDensity:3;
543 UCHAR ExtChanOffset:2;
544 UCHAR RecomWidth:1;
545#endif
546
547#ifdef RT_BIG_ENDIAN
548 USHORT rsv2:11;
549 USHORT OBSS_NonHTExist:1;
550 USHORT rsv3:1;
551 USHORT NonGfPresent:1;
552 USHORT OperaionMode:2;
553#else
554 USHORT OperaionMode:2;
555 USHORT NonGfPresent:1;
556 USHORT rsv3:1;
557 USHORT OBSS_NonHTExist:1;
558 USHORT rsv2:11;
559#endif
560
561
562 UCHAR NewExtChannelOffset;
563
564 UCHAR BSSCoexist2040;
565} RT_HT_CAPABILITY, *PRT_HT_CAPABILITY;
566
567
568typedef struct PACKED {
569#ifdef RT_BIG_ENDIAN
570 UCHAR SerInterGranu:3;
571 UCHAR S_PSMPSup:1;
572 UCHAR RifsMode:1;
573 UCHAR RecomWidth:1;
574 UCHAR ExtChanOffset:2;
575#else
576 UCHAR ExtChanOffset:2;
577 UCHAR RecomWidth:1;
578 UCHAR RifsMode:1;
579 UCHAR S_PSMPSup:1;
580 UCHAR SerInterGranu:3;
581#endif
582} ADD_HTINFO, *PADD_HTINFO;
583
584typedef struct PACKED{
585#ifdef RT_BIG_ENDIAN
586 USHORT rsv2:11;
587 USHORT OBSS_NonHTExist:1;
588 USHORT rsv:1;
589 USHORT NonGfPresent:1;
590 USHORT OperaionMode:2;
591#else
592 USHORT OperaionMode:2;
593 USHORT NonGfPresent:1;
594 USHORT rsv:1;
595 USHORT OBSS_NonHTExist:1;
596 USHORT rsv2:11;
597#endif
598} ADD_HTINFO2, *PADD_HTINFO2;
599
600
601
602typedef struct PACKED{
603#ifdef RT_BIG_ENDIAN
604 USHORT rsv:4;
605 USHORT PcoPhase:1;
606 USHORT PcoActive:1;
607 USHORT LsigTxopProt:1;
608 USHORT STBCBeacon:1;
609 USHORT DualCTSProtect:1;
610 USHORT DualBeacon:1;
611 USHORT StbcMcs:6;
612#else
613 USHORT StbcMcs:6;
614 USHORT DualBeacon:1;
615 USHORT DualCTSProtect:1;
616 USHORT STBCBeacon:1;
617 USHORT LsigTxopProt:1;
618 USHORT PcoActive:1;
619 USHORT PcoPhase:1;
620 USHORT rsv:4;
621#endif
622} ADD_HTINFO3, *PADD_HTINFO3;
623
624#define SIZE_ADD_HT_INFO_IE 22
625typedef struct PACKED{
626 UCHAR ControlChan;
627 ADD_HTINFO AddHtInfo;
628 ADD_HTINFO2 AddHtInfo2;
629 ADD_HTINFO3 AddHtInfo3;
630 UCHAR MCSSet[16];
631} ADD_HT_INFO_IE, *PADD_HT_INFO_IE;
632
633typedef struct PACKED{
634 UCHAR NewExtChanOffset;
635} NEW_EXT_CHAN_IE, *PNEW_EXT_CHAN_IE;
636
637typedef struct PACKED _FRAME_802_11 {
638 HEADER_802_11 Hdr;
639 UCHAR Octet[1];
640} FRAME_802_11, *PFRAME_802_11;
641
642
643typedef struct PACKED _MA_BODY {
644 UCHAR Category;
645 UCHAR Action;
646 UCHAR Octet[1];
647} MA_BODY, *PMA_BODY;
648
649typedef struct PACKED _HEADER_802_3 {
650 UCHAR DAAddr1[MAC_ADDR_LEN];
651 UCHAR SAAddr2[MAC_ADDR_LEN];
652 UCHAR Octet[2];
653} HEADER_802_3, *PHEADER_802_3;
654
655
656typedef struct PACKED{
657#ifdef RT_BIG_ENDIAN
658 USHORT TID:4;
659 USHORT Initiator:1;
660 USHORT Rsv:11;
661#else
662 USHORT Rsv:11;
663 USHORT Initiator:1;
664 USHORT TID:4;
665#endif
666} DELBA_PARM, *PDELBA_PARM;
667
668
669typedef struct PACKED {
670#ifdef RT_BIG_ENDIAN
671 USHORT BufSize:10;
672 USHORT TID:4;
673 USHORT BAPolicy:1;
674 USHORT AMSDUSupported:1;
675#else
676 USHORT AMSDUSupported:1;
677 USHORT BAPolicy:1;
678 USHORT TID:4;
679 USHORT BufSize:10;
680#endif
681} BA_PARM, *PBA_PARM;
682
683
684typedef union PACKED {
685 struct PACKED {
686#ifdef RT_BIG_ENDIAN
687 USHORT StartSeq:12;
688 USHORT FragNum:4;
689#else
690 USHORT FragNum:4;
691 USHORT StartSeq:12;
692#endif
693 } field;
694 USHORT word;
695} BASEQ_CONTROL, *PBASEQ_CONTROL;
696
697
698
699typedef struct PACKED {
700#ifdef RT_BIG_ENDIAN
701 USHORT TID:4;
702 USHORT Rsv:9;
703 USHORT Compressed:1;
704 USHORT MTID:1;
705 USHORT ACKPolicy:1;
706#else
707 USHORT ACKPolicy:1;
708 USHORT MTID:1;
709 USHORT Compressed:1;
710 USHORT Rsv:9;
711 USHORT TID:4;
712#endif
713} BA_CONTROL, *PBA_CONTROL;
714
715
716typedef struct PACKED {
717#ifdef RT_BIG_ENDIAN
718 USHORT TID:4;
719 USHORT Rsv1:9;
720 USHORT Compressed:1;
721 USHORT MTID:1;
722 USHORT ACKPolicy:1;
723#else
724 USHORT ACKPolicy:1;
725 USHORT MTID:1;
726 USHORT Compressed:1;
727 USHORT Rsv1:9;
728 USHORT TID:4;
729#endif
730} BAR_CONTROL, *PBAR_CONTROL;
731
732
733typedef struct PACKED {
734#ifdef RT_BIG_ENDIAN
735 USHORT NumTID:4;
736 USHORT Rsv1:9;
737 USHORT Compressed:1;
738 USHORT MTID:1;
739 USHORT ACKPolicy:1;
740#else
741 USHORT ACKPolicy:1;
742 USHORT MTID:1;
743 USHORT Compressed:1;
744 USHORT Rsv1:9;
745 USHORT NumTID:4;
746#endif
747} MTBAR_CONTROL, *PMTBAR_CONTROL;
748
749typedef struct PACKED {
750#ifdef RT_BIG_ENDIAN
751 USHORT TID:4;
752 USHORT Rsv1:12;
753#else
754 USHORT Rsv1:12;
755 USHORT TID:4;
756#endif
757} PER_TID_INFO, *PPER_TID_INFO;
758
759typedef struct {
760 PER_TID_INFO PerTID;
761 BASEQ_CONTROL BAStartingSeq;
762} EACH_TID, *PEACH_TID;
763
764
765
766typedef struct PACKED _FRAME_BA_REQ {
767 FRAME_CONTROL FC;
768 USHORT Duration;
769 UCHAR Addr1[MAC_ADDR_LEN];
770 UCHAR Addr2[MAC_ADDR_LEN];
771 BAR_CONTROL BARControl;
772 BASEQ_CONTROL BAStartingSeq;
773} FRAME_BA_REQ, *PFRAME_BA_REQ;
774
775typedef struct PACKED _FRAME_MTBA_REQ {
776 FRAME_CONTROL FC;
777 USHORT Duration;
778 UCHAR Addr1[MAC_ADDR_LEN];
779 UCHAR Addr2[MAC_ADDR_LEN];
780 MTBAR_CONTROL MTBARControl;
781 PER_TID_INFO PerTIDInfo;
782 BASEQ_CONTROL BAStartingSeq;
783} FRAME_MTBA_REQ, *PFRAME_MTBA_REQ;
784
785
786typedef struct PACKED _FRAME_MTBA {
787 FRAME_CONTROL FC;
788 USHORT Duration;
789 UCHAR Addr1[MAC_ADDR_LEN];
790 UCHAR Addr2[MAC_ADDR_LEN];
791 BA_CONTROL BAControl;
792 BASEQ_CONTROL BAStartingSeq;
793 UCHAR BitMap[8];
794} FRAME_MTBA, *PFRAME_MTBA;
795
796typedef struct PACKED _FRAME_PSMP_ACTION {
797 HEADER_802_11 Hdr;
798 UCHAR Category;
799 UCHAR Action;
800 UCHAR Psmp;
801} FRAME_PSMP_ACTION, *PFRAME_PSMP_ACTION;
802
803typedef struct PACKED _FRAME_ACTION_HDR {
804 HEADER_802_11 Hdr;
805 UCHAR Category;
806 UCHAR Action;
807} FRAME_ACTION_HDR, *PFRAME_ACTION_HDR;
808
809
810
811typedef struct PACKED _CHAN_SWITCH_ANNOUNCE {
812 UCHAR ElementID;
813 UCHAR Len;
814 CHA_SWITCH_ANNOUNCE_IE CSAnnounceIe;
815} CHAN_SWITCH_ANNOUNCE, *PCHAN_SWITCH_ANNOUNCE;
816
817
818
819typedef struct PACKED _SECOND_CHAN_OFFSET {
820 UCHAR ElementID;
821 UCHAR Len;
822 SEC_CHA_OFFSET_IE SecChOffsetIe;
823} SECOND_CHAN_OFFSET, *PSECOND_CHAN_OFFSET;
824
825
826typedef struct PACKED _FRAME_SPETRUM_CS {
827 HEADER_802_11 Hdr;
828 UCHAR Category;
829 UCHAR Action;
830 CHAN_SWITCH_ANNOUNCE CSAnnounce;
831 SECOND_CHAN_OFFSET SecondChannel;
832} FRAME_SPETRUM_CS, *PFRAME_SPETRUM_CS;
833
834
835typedef struct PACKED _FRAME_ADDBA_REQ {
836 HEADER_802_11 Hdr;
837 UCHAR Category;
838 UCHAR Action;
839 UCHAR Token;
840 BA_PARM BaParm;
841 USHORT TimeOutValue;
842 BASEQ_CONTROL BaStartSeq;
843} FRAME_ADDBA_REQ, *PFRAME_ADDBA_REQ;
844
845typedef struct PACKED _FRAME_ADDBA_RSP {
846 HEADER_802_11 Hdr;
847 UCHAR Category;
848 UCHAR Action;
849 UCHAR Token;
850 USHORT StatusCode;
851 BA_PARM BaParm;
852 USHORT TimeOutValue;
853} FRAME_ADDBA_RSP, *PFRAME_ADDBA_RSP;
854
855typedef struct PACKED _FRAME_DELBA_REQ {
856 HEADER_802_11 Hdr;
857 UCHAR Category;
858 UCHAR Action;
859 DELBA_PARM DelbaParm;
860 USHORT ReasonCode;
861} FRAME_DELBA_REQ, *PFRAME_DELBA_REQ;
862
863
864
865typedef struct PACKED _FRAME_BAR {
866 FRAME_CONTROL FC;
867 USHORT Duration;
868 UCHAR Addr1[MAC_ADDR_LEN];
869 UCHAR Addr2[MAC_ADDR_LEN];
870 BAR_CONTROL BarControl;
871 BASEQ_CONTROL StartingSeq;
872} FRAME_BAR, *PFRAME_BAR;
873
874
875typedef struct PACKED _FRAME_BA {
876 FRAME_CONTROL FC;
877 USHORT Duration;
878 UCHAR Addr1[MAC_ADDR_LEN];
879 UCHAR Addr2[MAC_ADDR_LEN];
880 BAR_CONTROL BarControl;
881 BASEQ_CONTROL StartingSeq;
882 UCHAR bitmask[8];
883} FRAME_BA, *PFRAME_BA;
884
885
886
887typedef struct PACKED _FRAME_RM_REQ_ACTION {
888 HEADER_802_11 Hdr;
889 UCHAR Category;
890 UCHAR Action;
891 UCHAR Token;
892 USHORT Repetition;
893 UCHAR data[0];
894} FRAME_RM_REQ_ACTION, *PFRAME_RM_REQ_ACTION;
895
896typedef struct PACKED {
897 UCHAR ID;
898 UCHAR Length;
899 UCHAR ChannelSwitchMode;
900 UCHAR NewRegClass;
901 UCHAR NewChannelNum;
902 UCHAR ChannelSwitchCount;
903} HT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE, *PHT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE;
904
905
906
907
908
909
910#define SEQ_STEPONE(_SEQ1, _SEQ2, _Limit) ((_SEQ1 == ((_SEQ2+1) & _Limit)))
911#define SEQ_SMALLER(_SEQ1, _SEQ2, _Limit) (((_SEQ1-_SEQ2) & ((_Limit+1)>>1)))
912#define SEQ_LARGER(_SEQ1, _SEQ2, _Limit) ((_SEQ1 != _SEQ2) && !(((_SEQ1-_SEQ2) & ((_Limit+1)>>1))))
913#define SEQ_WITHIN_WIN(_SEQ1, _SEQ2, _WIN, _Limit) (SEQ_LARGER(_SEQ1, _SEQ2, _Limit) && \
914 SEQ_SMALLER(_SEQ1, ((_SEQ2+_WIN+1)&_Limit), _Limit))
915
916
917
918
919typedef struct PACKED {
920 BOOLEAN bValid;
921 UCHAR CfpCount;
922 UCHAR CfpPeriod;
923 USHORT CfpMaxDuration;
924 USHORT CfpDurRemaining;
925} CF_PARM, *PCF_PARM;
926
927typedef struct _CIPHER_SUITE {
928 NDIS_802_11_ENCRYPTION_STATUS PairCipher;
929 NDIS_802_11_ENCRYPTION_STATUS PairCipherAux;
930 NDIS_802_11_ENCRYPTION_STATUS GroupCipher;
931 USHORT RsnCapability;
932 BOOLEAN bMixMode;
933} CIPHER_SUITE, *PCIPHER_SUITE;
934
935
936typedef struct {
937 BOOLEAN bValid;
938 BOOLEAN bAdd;
939 BOOLEAN bQAck;
940 BOOLEAN bQueueRequest;
941 BOOLEAN bTxopRequest;
942 BOOLEAN bAPSDCapable;
943
944 UCHAR EdcaUpdateCount;
945 UCHAR Aifsn[4];
946 UCHAR Cwmin[4];
947 UCHAR Cwmax[4];
948 USHORT Txop[4];
949 BOOLEAN bACM[4];
950} EDCA_PARM, *PEDCA_PARM;
951
952
953typedef struct {
954 BOOLEAN bValid;
955 USHORT StaNum;
956 UCHAR ChannelUtilization;
957 USHORT RemainingAdmissionControl;
958} QBSS_LOAD_PARM, *PQBSS_LOAD_PARM;
959
960
961typedef struct PACKED {
962#ifdef RT_BIG_ENDIAN
963 UCHAR Rsv2:1;
964 UCHAR MaxSPLength:2;
965 UCHAR Rsv1:1;
966 UCHAR UAPSD_AC_BE:1;
967 UCHAR UAPSD_AC_BK:1;
968 UCHAR UAPSD_AC_VI:1;
969 UCHAR UAPSD_AC_VO:1;
970#else
971 UCHAR UAPSD_AC_VO:1;
972 UCHAR UAPSD_AC_VI:1;
973 UCHAR UAPSD_AC_BK:1;
974 UCHAR UAPSD_AC_BE:1;
975 UCHAR Rsv1:1;
976 UCHAR MaxSPLength:2;
977 UCHAR Rsv2:1;
978#endif
979} QBSS_STA_INFO_PARM, *PQBSS_STA_INFO_PARM;
980
981
982typedef struct PACKED {
983#ifdef RT_BIG_ENDIAN
984 UCHAR UAPSD:1;
985 UCHAR Rsv:3;
986 UCHAR ParamSetCount:4;
987#else
988 UCHAR ParamSetCount:4;
989 UCHAR Rsv:3;
990 UCHAR UAPSD:1;
991#endif
992} QBSS_AP_INFO_PARM, *PQBSS_AP_INFO_PARM;
993
994
995
996typedef struct {
997 BOOLEAN bValid;
998 BOOLEAN bQAck;
999 BOOLEAN bQueueRequest;
1000 BOOLEAN bTxopRequest;
1001
1002 UCHAR EdcaUpdateCount;
1003} QOS_CAPABILITY_PARM, *PQOS_CAPABILITY_PARM;
1004
1005#ifdef CONFIG_STA_SUPPORT
1006typedef struct {
1007 UCHAR IELen;
1008 UCHAR IE[MAX_CUSTOM_LEN];
1009} WPA_IE_;
1010#endif
1011
1012
1013typedef struct {
1014 UCHAR Bssid[MAC_ADDR_LEN];
1015 UCHAR Channel;
1016 UCHAR CentralChannel;
1017 UCHAR BssType;
1018 USHORT AtimWin;
1019 USHORT BeaconPeriod;
1020
1021 UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES];
1022 UCHAR SupRateLen;
1023 UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
1024 UCHAR ExtRateLen;
1025 HT_CAPABILITY_IE HtCapability;
1026 UCHAR HtCapabilityLen;
1027 ADD_HT_INFO_IE AddHtInfo;
1028 UCHAR AddHtInfoLen;
1029 UCHAR NewExtChanOffset;
1030 CHAR Rssi;
1031 UCHAR Privacy;
1032 UCHAR Hidden;
1033
1034 USHORT DtimPeriod;
1035 USHORT CapabilityInfo;
1036
1037 USHORT CfpCount;
1038 USHORT CfpPeriod;
1039 USHORT CfpMaxDuration;
1040 USHORT CfpDurRemaining;
1041 UCHAR SsidLen;
1042 CHAR Ssid[MAX_LEN_OF_SSID];
1043
1044 ULONG LastBeaconRxTime;
1045
1046 BOOLEAN bSES;
1047
1048
1049 CIPHER_SUITE WPA;
1050 CIPHER_SUITE WPA2;
1051
1052
1053 NDIS_802_11_FIXED_IEs FixIEs;
1054 NDIS_802_11_AUTHENTICATION_MODE AuthModeAux;
1055 NDIS_802_11_AUTHENTICATION_MODE AuthMode;
1056 NDIS_802_11_WEP_STATUS WepStatus;
1057 USHORT VarIELen;
1058 UCHAR VarIEs[MAX_VIE_LEN];
1059
1060
1061 UCHAR CkipFlag;
1062
1063
1064 UCHAR PTSF[4];
1065 UCHAR TTSF[8];
1066
1067
1068 EDCA_PARM EdcaParm;
1069 QOS_CAPABILITY_PARM QosCapability;
1070 QBSS_LOAD_PARM QbssLoad;
1071#ifdef CONFIG_STA_SUPPORT
1072 WPA_IE_ WpaIE;
1073 WPA_IE_ RsnIE;
1074#ifdef EXT_BUILD_CHANNEL_LIST
1075 UCHAR CountryString[3];
1076 BOOLEAN bHasCountryIE;
1077#endif
1078#endif
1079
1080} BSS_ENTRY, *PBSS_ENTRY;
1081
1082typedef struct {
1083 UCHAR BssNr;
1084 UCHAR BssOverlapNr;
1085 BSS_ENTRY BssEntry[MAX_LEN_OF_BSS_TABLE];
1086} BSS_TABLE, *PBSS_TABLE;
1087
1088
1089typedef struct _MLME_QUEUE_ELEM {
1090 ULONG Machine;
1091 ULONG MsgType;
1092 ULONG MsgLen;
1093 UCHAR Msg[MGMT_DMA_BUFFER_SIZE];
1094 LARGE_INTEGER TimeStamp;
1095 UCHAR Rssi0;
1096 UCHAR Rssi1;
1097 UCHAR Rssi2;
1098 UCHAR Signal;
1099 UCHAR Channel;
1100 UCHAR Wcid;
1101 BOOLEAN Occupied;
1102#ifdef MLME_EX
1103 USHORT Idx;
1104#endif
1105} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM;
1106
1107typedef struct _MLME_QUEUE {
1108 ULONG Num;
1109 ULONG Head;
1110 ULONG Tail;
1111 NDIS_SPIN_LOCK Lock;
1112 MLME_QUEUE_ELEM Entry[MAX_LEN_OF_MLME_QUEUE];
1113} MLME_QUEUE, *PMLME_QUEUE;
1114
1115typedef VOID (*STATE_MACHINE_FUNC)(VOID *Adaptor, MLME_QUEUE_ELEM *Elem);
1116
1117typedef struct _STATE_MACHINE {
1118 ULONG Base;
1119 ULONG NrState;
1120 ULONG NrMsg;
1121 ULONG CurrState;
1122 STATE_MACHINE_FUNC *TransFunc;
1123} STATE_MACHINE, *PSTATE_MACHINE;
1124
1125
1126
1127
1128
1129
1130
1131
1132typedef struct _MLME_AUX {
1133 UCHAR BssType;
1134 UCHAR Ssid[MAX_LEN_OF_SSID];
1135 UCHAR SsidLen;
1136 UCHAR Bssid[MAC_ADDR_LEN];
1137 UCHAR AutoReconnectSsid[MAX_LEN_OF_SSID];
1138 UCHAR AutoReconnectSsidLen;
1139 USHORT Alg;
1140 UCHAR ScanType;
1141 UCHAR Channel;
1142 UCHAR CentralChannel;
1143 USHORT Aid;
1144 USHORT CapabilityInfo;
1145 USHORT BeaconPeriod;
1146 USHORT CfpMaxDuration;
1147 USHORT CfpPeriod;
1148 USHORT AtimWin;
1149
1150
1151
1152 UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES];
1153 UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
1154 UCHAR SupRateLen;
1155 UCHAR ExtRateLen;
1156 HT_CAPABILITY_IE HtCapability;
1157 UCHAR HtCapabilityLen;
1158 ADD_HT_INFO_IE AddHtInfo;
1159 UCHAR NewExtChannelOffset;
1160
1161
1162
1163 QOS_CAPABILITY_PARM APQosCapability;
1164 EDCA_PARM APEdcaParm;
1165 QBSS_LOAD_PARM APQbssLoad;
1166
1167
1168 ULONG APRalinkIe;
1169
1170 BSS_TABLE SsidBssTab;
1171 BSS_TABLE RoamTab;
1172 ULONG BssIdx;
1173 ULONG RoamIdx;
1174
1175 BOOLEAN CurrReqIsFromNdis;
1176
1177 RALINK_TIMER_STRUCT BeaconTimer, ScanTimer;
1178 RALINK_TIMER_STRUCT AuthTimer;
1179 RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer;
1180
1181#ifdef CONFIG_STA_SUPPORT
1182#endif
1183} MLME_AUX, *PMLME_AUX;
1184
1185typedef struct _MLME_ADDBA_REQ_STRUCT{
1186 UCHAR Wcid;
1187 UCHAR pAddr[MAC_ADDR_LEN];
1188 UCHAR BaBufSize;
1189 USHORT TimeOutValue;
1190 UCHAR TID;
1191 UCHAR Token;
1192 USHORT BaStartSeq;
1193} MLME_ADDBA_REQ_STRUCT, *PMLME_ADDBA_REQ_STRUCT;
1194
1195
1196typedef struct _MLME_DELBA_REQ_STRUCT{
1197 UCHAR Wcid;
1198 UCHAR Addr[MAC_ADDR_LEN];
1199 UCHAR TID;
1200 UCHAR Initiator;
1201} MLME_DELBA_REQ_STRUCT, *PMLME_DELBA_REQ_STRUCT;
1202
1203
1204typedef struct _MLME_ASSOC_REQ_STRUCT{
1205 UCHAR Addr[MAC_ADDR_LEN];
1206 USHORT CapabilityInfo;
1207 USHORT ListenIntv;
1208 ULONG Timeout;
1209} MLME_ASSOC_REQ_STRUCT, *PMLME_ASSOC_REQ_STRUCT, MLME_REASSOC_REQ_STRUCT, *PMLME_REASSOC_REQ_STRUCT;
1210
1211typedef struct _MLME_DISASSOC_REQ_STRUCT{
1212 UCHAR Addr[MAC_ADDR_LEN];
1213 USHORT Reason;
1214} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_REQ_STRUCT;
1215
1216typedef struct _MLME_AUTH_REQ_STRUCT {
1217 UCHAR Addr[MAC_ADDR_LEN];
1218 USHORT Alg;
1219 ULONG Timeout;
1220} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT;
1221
1222typedef struct _MLME_DEAUTH_REQ_STRUCT {
1223 UCHAR Addr[MAC_ADDR_LEN];
1224 USHORT Reason;
1225} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT;
1226
1227typedef struct {
1228 ULONG BssIdx;
1229} MLME_JOIN_REQ_STRUCT;
1230
1231typedef struct _MLME_SCAN_REQ_STRUCT {
1232 UCHAR Bssid[MAC_ADDR_LEN];
1233 UCHAR BssType;
1234 UCHAR ScanType;
1235 UCHAR SsidLen;
1236 CHAR Ssid[MAX_LEN_OF_SSID];
1237} MLME_SCAN_REQ_STRUCT, *PMLME_SCAN_REQ_STRUCT;
1238
1239typedef struct _MLME_START_REQ_STRUCT {
1240 CHAR Ssid[MAX_LEN_OF_SSID];
1241 UCHAR SsidLen;
1242} MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT;
1243
1244#ifdef CONFIG_STA_SUPPORT
1245#ifdef QOS_DLS_SUPPORT
1246
1247typedef struct _RT_802_11_DLS {
1248 USHORT TimeOut;
1249 USHORT CountDownTimer;
1250 NDIS_802_11_MAC_ADDRESS MacAddr;
1251 UCHAR Status;
1252 BOOLEAN Valid;
1253 RALINK_TIMER_STRUCT Timer;
1254 USHORT Sequence;
1255 USHORT MacTabMatchWCID;
1256 BOOLEAN bHTCap;
1257 PVOID pAd;
1258} RT_802_11_DLS, *PRT_802_11_DLS;
1259
1260typedef struct _MLME_DLS_REQ_STRUCT {
1261 PRT_802_11_DLS pDLS;
1262 USHORT Reason;
1263} MLME_DLS_REQ_STRUCT, *PMLME_DLS_REQ_STRUCT;
1264#endif
1265#endif
1266
1267typedef struct PACKED {
1268 UCHAR Eid;
1269 UCHAR Len;
1270 UCHAR Octet[1];
1271} EID_STRUCT,*PEID_STRUCT, BEACON_EID_STRUCT, *PBEACON_EID_STRUCT;
1272
1273typedef struct PACKED _RTMP_TX_RATE_SWITCH
1274{
1275 UCHAR ItemNo;
1276#ifdef RT_BIG_ENDIAN
1277 UCHAR Rsv2:2;
1278 UCHAR Mode:2;
1279 UCHAR Rsv1:1;
1280 UCHAR BW:1;
1281 UCHAR ShortGI:1;
1282 UCHAR STBC:1;
1283#else
1284 UCHAR STBC:1;
1285 UCHAR ShortGI:1;
1286 UCHAR BW:1;
1287 UCHAR Rsv1:1;
1288 UCHAR Mode:2;
1289 UCHAR Rsv2:2;
1290#endif
1291 UCHAR CurrMCS;
1292 UCHAR TrainUp;
1293 UCHAR TrainDown;
1294} RRTMP_TX_RATE_SWITCH, *PRTMP_TX_RATE_SWITCH;
1295
1296
1297#define TBTT_PRELOAD_TIME 384
1298#define DEFAULT_DTIM_PERIOD 1
1299
1300
1301
1302
1303
1304
1305#define MAC_TABLE_AGEOUT_TIME 300
1306#define MAC_TABLE_ASSOC_TIMEOUT 5
1307#define MAC_TABLE_FULL(Tab) ((Tab).size == MAX_LEN_OF_MAC_TABLE)
1308
1309
1310#define MAC_ENTRY_LIFE_CHECK_CNT 20
1311
1312
1313typedef enum _Sst {
1314 SST_NOT_AUTH,
1315 SST_AUTH,
1316 SST_ASSOC
1317} SST;
1318
1319
1320typedef enum _AuthState {
1321 AS_NOT_AUTH,
1322 AS_AUTH_OPEN,
1323 AS_AUTH_KEY,
1324 AS_AUTHENTICATING
1325} AUTH_STATE;
1326
1327
1328typedef enum _ApWpaState {
1329 AS_NOTUSE,
1330 AS_DISCONNECT,
1331 AS_DISCONNECTED,
1332 AS_INITIALIZE,
1333 AS_AUTHENTICATION,
1334 AS_AUTHENTICATION2,
1335 AS_INITPMK,
1336 AS_INITPSK,
1337 AS_PTKSTART,
1338 AS_PTKINIT_NEGOTIATING,
1339 AS_PTKINITDONE,
1340 AS_UPDATEKEYS,
1341 AS_INTEGRITY_FAILURE,
1342 AS_KEYUPDATE,
1343} AP_WPA_STATE;
1344
1345
1346typedef enum _GTKState {
1347 REKEY_NEGOTIATING,
1348 REKEY_ESTABLISHED,
1349 KEYERROR,
1350} GTK_STATE;
1351
1352
1353typedef enum _WpaGTKState {
1354 SETKEYS,
1355 SETKEYS_DONE,
1356} WPA_GTK_STATE;
1357
1358
1359
1360#endif
1361