summaryrefslogtreecommitdiffstats
path: root/drivers/staging/winbond/mlme_s.h
blob: a7ef3c78022e3a2edc7255cf1044a62aac9e675f (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
#ifndef __WINBOND_MLME_H
#define __WINBOND_MLME_H

#include <linux/types.h>
#include <linux/spinlock.h>

#include "mac_structures.h"
#include "mds_s.h"

/*
 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 *	Mlme.h
 *		Define the related definitions of MLME module
 *
 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 */

#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.
 * =========================================
 */
#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
#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_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 {
	s8		*pMMPDU;
	u16		len;
	u8		DataType;
	u8		IsInUsed;

	spinlock_t	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;

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;

#endif
OpenPOWER on IntegriCloud