summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/COMMON/DFS.h
blob: e7719c31d6a41e5c12a089937bc186faf9ac3067 (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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
/*****************************************************************************
 *	Copyright 2010,  RealTEK Technology Inc. All Right Reserved.
 *
 * Module:		DFS.h	(RTL8190  Header H File)
 *
 *
 * Note:		Declare some variable which will be used by any debug command.
 *			
 *
 * Export:		
 *
 * Abbrev:			
 *
 * History:		
 *	Data		Who		Remark 
 *	??/??/2010  Cosa   	Create initial version in different filed.
 *	12/23/2010	MHC		Gather the code from other source files.
 * 
 *****************************************************************************/
 /* Check to see if the file has been included already.  */
#ifndef	__DFS_H__
#define __DFS_H__

/*--------------------------Define Parameters-------------------------------*/
//===============================================
//		DFS related definition
//===============================================
#if (DFS_SUPPORT == 1)

#if 1//real radar chnl
#define DFS_5G_RADAR_CHANNEL(__channel)	\
	((__channel >= 50 && __channel <= 70) ||\
	(__channel >= 94 && __channel <= 145))
#else//test radar chnl
#define DFS_5G_RADAR_CHANNEL(__channel)	\
	(__channel >= 40 && __channel <= 60) 
#endif

#define DFS_DEFAULT_NON_RADAR_CHNL			40

#define DFS_TEST_ALARM							1			// enable test alarm
#define DFS_AP_TEST_ALARM_PERIOD				50			//sec
#define DFS_CLIENT_PASSIVE_SCAN_ONLY			1

#define DFS_MAX_RADAR_CHNL_NUM				30
//#define DFS_STA_CHNL_MONITOR_TIME				10			//sec
#define DFS_STA_CHNL_MONITOR_TIME				60			//sec
#define DFS_STA_CHNL_SCAN_TYPE_MONITOR_TIME	(10-2)		//sec
#define DFS_AP_NON_OCCUPANCY_PERIOD			(30*60)		//sec
#define DFS_AP_CHNL_MONITOR_TIME				20			//sec

#define DFS_DISABLE_TX_ALL						0
#define DFS_DISABLE_TX_DATA					1
#define DFS_TEST_CHNL_PLAN						0

typedef enum _DFS_STATE_AP
{
	DFS_AP_UNINITIALIZED = 0,
	DFS_AP_INITIALIZED = 1,
	DFS_AP_DETECTING = 2,
	DFS_AP_BECONING = 3,
	DFS_AP_SWITCH_CHNL = 4,
	DFS_AP_MAX = 5,
} DFS_STATE_AP, *PDFS_STATE_AP;

typedef enum _DFS_STATE_STA
{
	DFS_STA_LISTEN = 0,
	DFS_STA_SWITCH = 1,
	DFS_STA_MAX = 2,
} DFS_STATE_STA, *PDFS_STATE_STA;

typedef struct _DFS_RADAR_CHNL_AP{
	u1Byte		radarChnl;
	u8Byte		rejectTime;
}DFS_RADAR_CHNL_AP, *PDFS_RADAR_CHNL_AP;

typedef struct _DFS_RADAR_CHNL_STA{
	u1Byte		radarChnl;
	u8Byte		rxBcnTime;
}DFS_RADAR_CHNL_STA, *PDFS_RADAR_CHNL_STA;

typedef struct _DFS_MGNT_AP{
//==========================
	u4Byte				testcnt;
//==========================
	BOOLEAN				bDisableDfs;
	DFS_STATE_AP			dfsState;
	DFS_RADAR_CHNL_AP	dfsRadarChnl[DFS_MAX_RADAR_CHNL_NUM];
	u1Byte				dfsTestAlert;
	BOOLEAN				bRadarDetected;
	BOOLEAN				bDisableTx;
	u1Byte				dfsSwitchChannel;
	u1Byte				dfsSwitchChCountDown;
	BOOLEAN				bMonitored;
	u8Byte				monitorStartTime;
	// Timer & WorkItem
	RT_TIMER				dfsTimer;
	RT_WORK_ITEM		dfsTimerWorkItem;
}DFS_MGNT_AP, *PDFS_MGNT_AP;

typedef struct _DFS_MGNT_STA{
	BOOLEAN				bDisableDfs;
	DFS_STATE_STA		dfsState;
	DFS_RADAR_CHNL_STA	dfsRadarChnl[DFS_MAX_RADAR_CHNL_NUM];
	BOOLEAN				bDisableTx;
	u1Byte				dfsSwitchChannel;
	u1Byte				dfsSwitchChCountDown;
	u1Byte				dfsOldConnectedChannel;
	BOOLEAN				bMonitorAfterSwitchIsDone;
	BOOLEAN				bMonitorAfterSwitch;
	u8Byte				dfsMonitorStartTime;
	RT_WORK_ITEM		csaWorkItem;
}DFS_MGNT_STA, *PDFS_MGNT_STA;

typedef struct _DFS_MGNT{
	DFS_MGNT_AP		apMode;
	DFS_MGNT_STA	staMode;
}DFS_MGNT, *PDFS_MGNT;
//===============================================
typedef enum _DFS_TIMER_CTRL_TYPE
{
	DFS_TIMER_INIT = 0,
	DFS_TIMER_SET,
 	DFS_TIMER_CANCEL,
 	DFS_TIMER_RELEASE,
	DFS_TIMER_MAX
}DFS_TIMER_CTRL_TYPE;

// 2010/12/27 MH Add for DFS workitem control.
typedef enum _DFS_WORKITEM_CTRL_TYPE
{
	DFS_WORKITEM_INIT = 0,
	DFS_WORKITEM_SET,
 	DFS_WORKITEM_CANCEL,
 	DFS_WORKITEM_FREE,
	DFS_WORKITEM_MAX
}DFS_WORKITEM_CTRL_TYPE;

VOID
DFS_Init(
	IN	PADAPTER	Adapter
);

VOID
DFS_TimerContrl(
	IN	PADAPTER	Adapter,
	IN	UINT8		TimerCtrlType
);

VOID
DFS_WorkItemContrl(
	IN	PADAPTER	Adapter,
	IN	UINT8		WorkItemCtrlType
);

BOOLEAN
DFS_IsTxDisabled(
	IN	PADAPTER			Adapter
);

VOID
DFS_ApIfNeedMonitorChnl(
	IN	PADAPTER	Adapter
);

VOID
DFS_ApConstructBeaconIEcsa(
	IN	PADAPTER	Adapter
);

BOOLEAN
DFS_ApChnlLocked(
	IN	PADAPTER	Adapter,
	u1Byte			chnl
	);

VOID
DFS_StaInsertToRadarChnlList(
	IN	PADAPTER	Adapter,
	u1Byte			Radarchnl
	);

VOID
DFS_StaMgntResetVars(
	IN	PADAPTER	Adapter
	);

VOID
DFS_StaCheckCsaInfo(
	IN	PADAPTER		Adapter,
	IN	PRT_WLAN_BSS	pBssDesc
);

VOID
DFS_StaConstructAssociateReq(
	IN	PADAPTER		Adapter,
	IN	u2Byte			asocCap,
	IN	OCTET_STRING	AsocReq
);

VOID
DFS_StaGetValueFromBeacon(
	IN		PADAPTER		Adapter,
	IN		OCTET_STRING	mmpdu,
	OUT		RT_WLAN_BSS	*bssDesc
	);

VOID
DFS_StaMonitor(
	IN	PADAPTER	Adapter
	);

VOID
DFS_StaCheckRadarChnl(
	IN	PADAPTER		Adapter,
	IN	PRT_WLAN_BSS	pbssdesc
);

VOID
DFS_StaUpdateRadarChnlScanType(
	IN	PADAPTER	Adapter
	);

#else	// #if (DFS_SUPPORT == 1)

#define	DFS_MGNT	u1Byte
#define	DFS_5G_RADAR_CHANNEL(__channel)		(FALSE)

#define	DFS_Init(Adapter)
#define	DFS_TimerContrl(Adapter, TimerCtrlType)
#define	DFS_WorkItemContrl(Adapter, WorkItemCtrlType)
#define	DFS_IsTxDisabled(Adapter)						FALSE
#define	DFS_ApIfNeedMonitorChnl(Adapter)
#define	DFS_ApConstructBeaconIEcsa(Adapter)
#define	DFS_ApChnlLocked(Adapter, chnl)				FALSE
#define	DFS_StaInsertToRadarChnlList(Adapter, Radarchnl)
#define	DFS_StaMgntResetVars(Adapter)
#define	DFS_StaGetValueFromBeacon(Adapter, mmpdu, bssDesc)
#define	DFS_StaCheckCsaInfo(Adapter, pBssDesc)
#define	DFS_StaConstructAssociateReq(Adapter, asocCap, AsocReq)
#define	DFS_StaMonitor(Adapter)
#define	DFS_StaCheckRadarChnl(Adapter, pbssdesc)
#define	DFS_StaUpdateRadarChnlScanType(Adapter)
#endif	// #if (DFS_SUPPORT == 1)


#endif	// __DFS_H__