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__
|