summaryrefslogtreecommitdiff
path: root/drivers/staging/winbond/mlme_s.h
blob: 58094f61c032dfa17b0ec4eac1a529b6785835cf (plain)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//	Mlme.h
//		Define the related definitions of MLME module
//	history -- 01/14/03' created
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#define AUTH_REJECT_REASON_CHALLENGE_FAIL		1

//====== the state of MLME module
#define INACTIVE			0x0
#define IDLE_SCAN			0x1

//====== the state of MLME/ESS module
#define STATE_1				0x2
#define AUTH_REQ			0x3
#define AUTH_WEP			0x4
#define STATE_2				0x5
#define ASSOC_REQ			0x6
#define STATE_3				0x7

//====== the state of MLME/IBSS module
#define IBSS_JOIN_SYNC		0x8
#define IBSS_AUTH_REQ		0x9
#define IBSS_AUTH_CHANLGE	0xa
#define IBSS_AUTH_WEP		0xb
#define IBSS_AUTH_IND		0xc
#define IBSS_STATE_2		0xd



//=========================================
//depend on D5C(MAC timing control 03 register): MaxTxMSDULifeTime default 0x80000us
#define AUTH_FAIL_TIMEOUT		550
#define ASSOC_FAIL_TIMEOUT		550
#define REASSOC_FAIL_TIMEOUT	550



//
// MLME task global CONSTANTS, STRUCTURE, variables
//


/////////////////////////////////////////////////////////////
//  enum_ResultCode --
//  Result code returned from MLME to SME.
//
/////////////////////////////////////////////////////////////
// PD43 20030829 Modifiled
//#define	SUCCESS								0
#define MLME_SUCCESS                        0 //follow spec.
#define	INVALID_PARAMETERS					1 //Not following spec.
#define	NOT_SUPPPORTED						2
#define	TIMEOUT								3
#define	TOO_MANY_SIMULTANEOUS_REQUESTS		4
#define REFUSED								5
#define	BSS_ALREADY_STARTED_OR_JOINED		6
#define	TRANSMIT_FRAME_FAIL					7
#define	NO_BSS_FOUND						8
#define RETRY								9
#define GIVE_UP								10


#define OPEN_AUTH							0
#define SHARE_AUTH							1
#define ANY_AUTH							2
#define WPA_AUTH							3	//for WPA
#define WPAPSK_AUTH							4
#define WPANONE_AUTH						5
///////////////////////////////////////////// added by ws 04/19/04
#ifdef _WPA2_
#define WPA2_AUTH                           6//for WPA2
#define WPA2PSK_AUTH                        7
#endif //end def _WPA2_

//////////////////////////////////////////////////////////////////
//define the msg type of MLME module
//////////////////////////////////////////////////////////////////
//--------------------------------------------------------
//from SME

#define MLMEMSG_AUTH_REQ				0x0b
#define MLMEMSG_DEAUTH_REQ				0x0c
#define MLMEMSG_ASSOC_REQ				0x0d
#define MLMEMSG_REASSOC_REQ				0x0e
#define MLMEMSG_DISASSOC_REQ			0x0f
#define MLMEMSG_START_IBSS_REQ			0x10
#define MLMEMSG_IBSS_NET_CFM			0x11

//from RX :
#define MLMEMSG_RCV_MLMEFRAME			0x20
#define MLMEMSG_RCV_ASSOCRSP			0x22
#define MLMEMSG_RCV_REASSOCRSP			0x24
#define MLMEMSG_RCV_DISASSOC			0x2b
#define MLMEMSG_RCV_AUTH				0x2c
#define MLMEMSG_RCV_DEAUTH				0x2d


//from TX callback
#define MLMEMSG_TX_CALLBACK				0x40
#define MLMEMSG_ASSOCREQ_CALLBACK		0x41
#define MLMEMSG_REASSOCREQ_CALLBACK		0x43
#define MLMEMSG_DISASSOC_CALLBACK		0x4a
#define MLMEMSG_AUTH_CALLBACK			0x4c
#define MLMEMSG_DEAUTH_CALLBACK			0x4d

//#define MLMEMSG_JOIN_FAIL				4
//#define MLMEMSG_AUTHEN_FAIL			18
#define MLMEMSG_TIMEOUT					0x50

///////////////////////////////////////////////////////////////////////////
//Global data structures
#define MAX_NUM_TX_MMPDU	2
#define MAX_MMPDU_SIZE		1512
#define MAX_NUM_RX_MMPDU	6


///////////////////////////////////////////////////////////////////////////
//MACRO
#define boMLME_InactiveState(_AA_)	(_AA_->wState==INACTIVE)
#define boMLME_IdleScanState(_BB_)	(_BB_->wState==IDLE_SCAN)
#define boMLME_FoundSTAinfo(_CC_)	(_CC_->wState>=IDLE_SCAN)

typedef struct _MLME_FRAME
{
	//NDIS_PACKET		MLME_Packet;
	PCHAR			pMMPDU;
	u16			len;
	u8			DataType;
	u8			IsInUsed;

	OS_SPIN_LOCK	MLMESpinLock;

    u8		TxMMPDU[MAX_NUM_TX_MMPDU][MAX_MMPDU_SIZE];
	u8		TxMMPDUInUse[ (MAX_NUM_TX_MMPDU+3) & ~0x03 ];

	u16		wNumTxMMPDU;
	u16		wNumTxMMPDUDiscarded;

    u8		RxMMPDU[MAX_NUM_RX_MMPDU][MAX_MMPDU_SIZE];
    u8	 	SaveRxBufSlotInUse[ (MAX_NUM_RX_MMPDU+3) & ~0x03 ];

	u16		wNumRxMMPDU;
	u16		wNumRxMMPDUDiscarded;

	u16		wNumRxMMPDUInMLME; 	// Number of the Rx MMPDU
	u16		reserved_1;			//  in MLME.
                    	            //  excluding the discarded
} MLME_FRAME, *psMLME_FRAME;

typedef struct _AUTHREQ {

	u8 	peerMACaddr[MAC_ADDR_LENGTH];
	u16	wAuthAlgorithm;

} MLME_AUTHREQ_PARA, *psMLME_AUTHREQ_PARA;

struct _Reason_Code {

	u8	peerMACaddr[MAC_ADDR_LENGTH];
	u16	wReasonCode;
};
typedef struct _Reason_Code MLME_DEAUTHREQ_PARA, *psMLME_DEAUTHREQ_PARA;
typedef struct _Reason_Code MLME_DISASSOCREQ_PARA, *psMLME_DISASSOCREQ_PARA;

typedef struct _ASSOCREQ {
  u8       PeerSTAAddr[MAC_ADDR_LENGTH];
  u16       CapabilityInfo;
  u16       ListenInterval;

}__attribute__ ((packed)) MLME_ASSOCREQ_PARA, *psMLME_ASSOCREQ_PARA;

typedef struct _REASSOCREQ {
  u8       NewAPAddr[MAC_ADDR_LENGTH];
  u16       CapabilityInfo;
  u16       ListenInterval;

}__attribute__ ((packed)) MLME_REASSOCREQ_PARA, *psMLME_REASSOCREQ_PARA;

typedef struct _MLMECALLBACK {

  u8 	*psFramePtr;
  u8		bResult;

} MLME_TXCALLBACK, *psMLME_TXCALLBACK;

typedef struct _RXDATA
{
	s32		FrameLength;
	u8	__attribute__ ((packed)) *pbFramePtr;

}__attribute__ ((packed)) RXDATA, *psRXDATA;