xref: /wlan-dirver/qca-wifi-host-cmn/umac/dfs/core/src/dfs_channel.h (revision d0c05845839e5f2ba5a8dcebe0cd3e4cd4e8dfcf)
1 /*
2  * Copyright (c) 2016-2018,2020-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2008 Atheros Communications, Inc.
4  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
5  *
6  * Permission to use, copy, modify, and/or distribute this software for
7  * any purpose with or without fee is hereby granted, provided that the
8  * above copyright notice and this permission notice appear in all
9  * copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
12  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
15  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
16  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
17  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18  * PERFORMANCE OF THIS SOFTWARE.
19  */
20 
21 /**
22  * DOC: This file has channel related information.
23  */
24 
25 #ifndef _DFS_CHANNEL_H_
26 #define _DFS_CHANNEL_H_
27 
28 /* Channel attributes */
29 #ifdef WLAN_COMP_CHAN_MODE
30 
31 #define WLAN_CHAN_20MHZ            0x0000000000000100
32 
33 #define WLAN_CHAN_40PLUS           0x0000000000000200
34 
35 #define WLAN_CHAN_40MINUS          0x0000000000000300
36 
37 #define WLAN_CHAN_80MHZ            0x0000000000000400
38 
39 #define WLAN_CHAN_160MHZ           0x0000000000000500
40 
41 #define WLAN_CHAN_80_80MHZ         0x0000000000000600
42 
43 #define WLAN_CHAN_320MHZ           0x0000000000000700
44 
45 #define WLAN_CHAN_HTCAP            0x0000000000001000
46 
47 #define WLAN_CHAN_VHTCAP           0x0000000000002000
48 
49 #define WLAN_CHAN_HECAP            0x0000000000003000
50 
51 #define WLAN_CHAN_EHTCAP           0x0000000000004000
52 
53 /* 2 GHz spectrum channel. */
54 #define WLAN_CHAN_2GHZ             0x0000000000000010
55 
56 /* 5 GHz spectrum channel */
57 #define WLAN_CHAN_5GHZ             0x0000000000000020
58 
59 /* 6 GHz spectrum channel */
60 #define WLAN_CHAN_6GHZ             0x0000000000000030
61 
62 /* HT 20 channel */
63 #define WLAN_CHAN_HT20             (WLAN_CHAN_HTCAP | WLAN_CHAN_20MHZ)
64 
65 /* HT 40 with extension channel above */
66 #define WLAN_CHAN_HT40PLUS         (WLAN_CHAN_HTCAP | WLAN_CHAN_40PLUS)
67 
68 /* HT 40 with extension channel below */
69 #define WLAN_CHAN_HT40MINUS        (WLAN_CHAN_HTCAP | WLAN_CHAN_40MINUS)
70 
71 /* VHT 20 channel */
72 #define WLAN_CHAN_VHT20            (WLAN_CHAN_VHTCAP | WLAN_CHAN_20MHZ)
73 
74 /* VHT 40 with extension channel above */
75 #define WLAN_CHAN_VHT40PLUS        (WLAN_CHAN_VHTCAP | WLAN_CHAN_40PLUS)
76 
77 /* VHT 40 with extension channel below */
78 #define WLAN_CHAN_VHT40MINUS       (WLAN_CHAN_VHTCAP | WLAN_CHAN_40MINUS)
79 
80 /* VHT 80 channel */
81 #define WLAN_CHAN_VHT80            (WLAN_CHAN_VHTCAP | WLAN_CHAN_80MHZ)
82 
83 /* VHT 160 channel */
84 #define WLAN_CHAN_VHT160           (WLAN_CHAN_VHTCAP | WLAN_CHAN_160MHZ)
85 
86 /* VHT 80_80 channel */
87 #define WLAN_CHAN_VHT80_80         (WLAN_CHAN_VHTCAP | WLAN_CHAN_80_80MHZ)
88 
89 /* HE 20 channel */
90 #define WLAN_CHAN_HE20             (WLAN_CHAN_HECAP | WLAN_CHAN_20MHZ)
91 
92 /* HE 40 with extension channel above */
93 #define WLAN_CHAN_HE40PLUS         (WLAN_CHAN_HECAP | WLAN_CHAN_40PLUS)
94 
95 /* HE 40 with extension channel below */
96 #define WLAN_CHAN_HE40MINUS        (WLAN_CHAN_HECAP | WLAN_CHAN_40MINUS)
97 
98 /* HE 80 channel */
99 #define WLAN_CHAN_HE80             (WLAN_CHAN_HECAP | WLAN_CHAN_80MHZ)
100 
101 /* HE 160 channel */
102 #define WLAN_CHAN_HE160            (WLAN_CHAN_HECAP | WLAN_CHAN_160MHZ)
103 
104 /* HE 80_80 channel */
105 #define WLAN_CHAN_HE80_80          (WLAN_CHAN_HECAP | WLAN_CHAN_80_80MHZ)
106 
107 /* EHT 20 channel */
108 #define WLAN_CHAN_EHT20            (WLAN_CHAN_EHTCAP | WLAN_CHAN_20MHZ)
109 
110 /* EHT 40 with extension channel above */
111 #define WLAN_CHAN_EHT40PLUS        (WLAN_CHAN_EHTCAP | WLAN_CHAN_40PLUS)
112 
113 /* EHT 40 with extension channel below */
114 #define WLAN_CHAN_EHT40MINUS       (WLAN_CHAN_EHTCAP | WLAN_CHAN_40MINUS)
115 
116 /* EHT 80 channel */
117 #define WLAN_CHAN_EHT80            (WLAN_CHAN_EHTCAP | WLAN_CHAN_80MHZ)
118 
119 /* EHT 160 channel */
120 #define WLAN_CHAN_EHT160           (WLAN_CHAN_EHTCAP | WLAN_CHAN_160MHZ)
121 
122 /* EHT 320 channel */
123 #define WLAN_CHAN_EHT320           (WLAN_CHAN_EHTCAP | WLAN_CHAN_320MHZ)
124 
125 /* OFDM channel */
126 #define WLAN_CHAN_OFDM             0x0000000000400000
127 
128 /* Turbo Channel */
129 #define WLAN_CHAN_TURBO            0x0000000020000000
130 
131 /* Radar found on channel */
132 #define WLAN_CHAN_DFS_RADAR        0x0000000002000000
133 
134 #define WLAN_CHAN_BAND_MASK        0x00000000000000F0
135 
136 #define WLAN_CHAN_BW_MASK          0x000000000000FF00
137 
138 #define WLAN_IS_CHAN_2GHZ(_c)        WLAN_IS_FLAG_2GHZ((_c)->dfs_ch_flags)
139 
140 #define WLAN_IS_CHAN_5GHZ(_c)        WLAN_IS_FLAG_5GHZ((_c)->dfs_ch_flags)
141 
142 #define WLAN_IS_CHAN_6GHZ(_c)        WLAN_IS_FLAG_6GHZ((_c)->dfs_ch_flags)
143 
144 #define WLAN_IS_CHAN_HT20(_c)        WLAN_IS_FLAG_HT20((_c)->dfs_ch_flags)
145 
146 #define WLAN_IS_CHAN_HT40PLUS(_c)    WLAN_IS_FLAG_HT40PLUS((_c)->dfs_ch_flags)
147 
148 #define WLAN_IS_CHAN_HT40MINUS(_c)   WLAN_IS_FLAG_HT40MINUS((_c)->dfs_ch_flags)
149 
150 #define WLAN_IS_CHAN_HT40(_c)        WLAN_IS_FLAG_HT40((_c)->dfs_ch_flags)
151 
152 #define WLAN_IS_CHAN_VHT20(_c)       WLAN_IS_FLAG_VHT20((_c)->dfs_ch_flags)
153 
154 #define WLAN_IS_CHAN_VHT40PLUS(_c)   WLAN_IS_FLAG_VHT40PLUS((_c)->dfs_ch_flags)
155 
156 #define WLAN_IS_CHAN_VHT40MINUS(_c)  WLAN_IS_FLAG_VHT40MINUS((_c)->dfs_ch_flags)
157 
158 #define WLAN_IS_CHAN_VHT40(_c)       WLAN_IS_FLAG_VHT40((_c)->dfs_ch_flags)
159 
160 #define WLAN_IS_CHAN_VHT80(_c)       WLAN_IS_FLAG_VHT80((_c)->dfs_ch_flags)
161 
162 #define WLAN_IS_CHAN_VHT160(_c)      WLAN_IS_FLAG_VHT160((_c)->dfs_ch_flags)
163 
164 #define WLAN_IS_CHAN_VHT80_80(_c)    WLAN_IS_FLAG_VHT80_80((_c)->dfs_ch_flags)
165 
166 #define WLAN_IS_CHAN_VHT40(_c)       WLAN_IS_FLAG_VHT40((_c)->dfs_ch_flags)
167 
168 #define WLAN_IS_CHAN_HE20(_c)        WLAN_IS_FLAG_HE20((_c)->dfs_ch_flags)
169 
170 #define WLAN_IS_CHAN_HE40PLUS(_c)    WLAN_IS_FLAG_HE40PLUS((_c)->dfs_ch_flags)
171 
172 #define WLAN_IS_CHAN_HE40MINUS(_c)   WLAN_IS_FLAG_HE40MINUS((_c)->dfs_ch_flags)
173 
174 #define WLAN_IS_CHAN_HE40(_c)        WLAN_IS_FLAG_HE40((_c)->dfs_ch_flags)
175 
176 #define WLAN_IS_CHAN_HE80(_c)        WLAN_IS_FLAG_HE80((_c)->dfs_ch_flags)
177 
178 #define WLAN_IS_CHAN_HE160(_c)       WLAN_IS_FLAG_HE160((_c)->dfs_ch_flags)
179 
180 #define WLAN_IS_CHAN_HE80_80(_c)     WLAN_IS_FLAG_HE80_80((_c)->dfs_ch_flags)
181 
182 #define WLAN_IS_CHAN_EHT20(_c)       WLAN_IS_FLAG_EHT20((_c)->dfs_ch_flags)
183 
184 #define WLAN_IS_CHAN_EHT40PLUS(_c)   WLAN_IS_FLAG_EHT40PLUS((_c)->dfs_ch_flags)
185 
186 #define WLAN_IS_CHAN_EHT40MINUS(_c)  WLAN_IS_FLAG_EHT40MINUS((_c)->dfs_ch_flags)
187 
188 #define WLAN_IS_CHAN_EHT40(_c)       WLAN_IS_FLAG_EHT40((_c)->dfs_ch_flags)
189 
190 #define WLAN_IS_CHAN_EHT80(_c)       WLAN_IS_FLAG_EHT80((_c)->dfs_ch_flags)
191 
192 #define WLAN_IS_CHAN_EHT160(_c)      WLAN_IS_FLAG_EHT160((_c)->dfs_ch_flags)
193 
194 #define WLAN_IS_CHAN_EHT320(_c)      WLAN_IS_FLAG_EHT320((_c)->dfs_ch_flags)
195 
196 #define WLAN_IS_CHAN_OFDM(_c)        WLAN_IS_FLAG_OFDM((_c)->dfs_ch_flags)
197 
198 #define WLAN_IS_CHAN_TURBO(_c)       WLAN_IS_FLAG_TURBO((_c)->dfs_ch_flags)
199 
200 #define WLAN_IS_FLAG_2GHZ(_flag) \
201 	(((_flag) & WLAN_CHAN_BAND_MASK) == WLAN_CHAN_2GHZ)
202 
203 #define WLAN_IS_FLAG_5GHZ(_flag) \
204 	(((_flag) & WLAN_CHAN_BAND_MASK) == WLAN_CHAN_5GHZ)
205 
206 #define WLAN_IS_FLAG_6GHZ(_flag) \
207 	(((_flag) & WLAN_CHAN_BAND_MASK) == WLAN_CHAN_6GHZ)
208 
209 #define WLAN_IS_FLAG_HT20(_flag) \
210 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HT20)
211 
212 #define WLAN_IS_FLAG_HT40PLUS(_flag) \
213 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HT40PLUS)
214 
215 #define WLAN_IS_FLAG_HT40MINUS(_flag) \
216 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HT40MINUS)
217 
218 #define WLAN_IS_FLAG_VHT20(_flag) \
219 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_VHT20)
220 
221 #define WLAN_IS_FLAG_VHT40PLUS(_flag) \
222 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_VHT40PLUS)
223 
224 #define WLAN_IS_FLAG_VHT40MINUS(_flag) \
225 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_VHT40MINUS)
226 
227 #define WLAN_IS_FLAG_VHT80(_flag) \
228 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_VHT80)
229 
230 #define WLAN_IS_FLAG_VHT160(_flag) \
231 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_VHT160)
232 
233 #define WLAN_IS_FLAG_VHT80_80(_flag) \
234 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_VHT80_80)
235 
236 #define WLAN_IS_FLAG_HE20(_flag) \
237 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HE20)
238 
239 #define WLAN_IS_FLAG_HE40PLUS(_flag) \
240 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HE40PLUS)
241 
242 #define WLAN_IS_FLAG_HE40MINUS(_flag) \
243 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HE40MINUS)
244 
245 #define WLAN_IS_FLAG_HE80(_flag) \
246 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HE80)
247 
248 #define WLAN_IS_FLAG_HE160(_flag) \
249 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HE160)
250 
251 #define WLAN_IS_FLAG_HE80_80(_flag) \
252 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_HE80_80)
253 
254 #define WLAN_IS_FLAG_EHT20(_flag) \
255 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_EHT20)
256 
257 #define WLAN_IS_FLAG_EHT40PLUS(_flag) \
258 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_EHT40PLUS)
259 
260 #define WLAN_IS_FLAG_EHT40MINUS(_flag) \
261 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_EHT40MINUS)
262 
263 #define WLAN_IS_FLAG_EHT40(_flag) \
264 	((WLAN_IS_FLAG_EHT40PLUS(flag)) || (WLAN_IS_FLAG_EHT40MINUS(flag)))
265 
266 #define WLAN_IS_FLAG_EHT80(_flag) \
267 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_EHT80)
268 
269 #define WLAN_IS_FLAG_EHT160(_flag) \
270 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_EHT160)
271 
272 #define WLAN_IS_FLAG_EHT320(_flag) \
273 	(((_flag) & WLAN_CHAN_BW_MASK) == WLAN_CHAN_EHT320)
274 
275 #define WLAN_IS_FLAG_OFDM(_flag) \
276 	((_flag) & WLAN_CHAN_OFDM)
277 
278 #define WLAN_IS_FLAG_TURBO(_flag) \
279 	((_flag) & WLAN_CHAN_TURBO)
280 
281 #define WLAN_IS_CHAN_11N_HT40(_c) \
282 	(WLAN_IS_CHAN_HT40PLUS(_c) || WLAN_IS_CHAN_HT40MINUS(_c))
283 
284 #define WLAN_IS_CHAN_11N_HT40PLUS(_c) WLAN_IS_CHAN_HT40PLUS(_c)
285 
286 #define WLAN_IS_CHAN_11N_HT40MINUS(_c) WLAN_IS_CHAN_HT40MINUS(_c)
287 
288 #define WLAN_IS_CHAN_A(_c) \
289 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_OFDM(_c))
290 
291 #define WLAN_IS_CHAN_11NA_HT20(_c) \
292 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HT20(_c))
293 
294 #define WLAN_IS_CHAN_11NA_HT40PLUS(_c) \
295 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HT40PLUS(_c))
296 
297 #define WLAN_IS_CHAN_11NA_HT40MINUS(_c) \
298 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HT40MINUS(_c))
299 
300 #define WLAN_IS_CHAN_11AC_VHT20(_c) \
301 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_VHT20(_c))
302 
303 #define WLAN_IS_CHAN_11AC_VHT40(_c) \
304 	(WLAN_IS_CHAN_11AC_VHT40MINUS(_c) || WLAN_IS_CHAN_11AC_VHT40PLUS(_c))
305 
306 #define WLAN_IS_CHAN_11AC_VHT40PLUS(_c) \
307 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_VHT40PLUS(_c))
308 
309 #define WLAN_IS_CHAN_11AC_VHT40MINUS(_c) \
310 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_VHT40MINUS(_c))
311 
312 #define WLAN_IS_CHAN_11AC_VHT80(_c) \
313 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_VHT80(_c))
314 
315 #define WLAN_IS_CHAN_11AC_VHT160(_c) \
316 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_VHT160(_c))
317 
318 #define WLAN_IS_CHAN_11AC_VHT80_80(_c) \
319 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_VHT80_80(_c))
320 
321 #define WLAN_IS_CHAN_11AXA_HE20_5G(_c) \
322 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HE20(_c))
323 
324 #define WLAN_IS_CHAN_11AXA_HE40_5G(_c) \
325 	(WLAN_IS_CHAN_11AXA_HE40MINUS_5G(_c) ||  \
326 	 WLAN_IS_CHAN_11AXA_HE40PLUS_5G(_c))
327 
328 #define WLAN_IS_CHAN_11AXA_HE40PLUS_5G(_c) \
329 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HE40PLUS(_c))
330 
331 #define WLAN_IS_CHAN_11AXA_HE40MINUS_5G(_c) \
332 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HE40MINUS(_c))
333 
334 #define WLAN_IS_CHAN_11AXA_HE80_5G(_c) \
335 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HE80(_c))
336 
337 #define WLAN_IS_CHAN_11AXA_HE160_5G(_c) \
338 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HE160(_c))
339 
340 #define WLAN_IS_CHAN_11AXA_HE80_80_5G(_c) \
341 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_HE80_80(_c))
342 
343 #define WLAN_IS_CHAN_11BE_EHT20_5G(_c) \
344 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_EHT20(_c))
345 
346 #define WLAN_IS_CHAN_11BE_EHT40PLUS_5G(_c) \
347 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_EHT40PLUS(_c))
348 
349 #define WLAN_IS_CHAN_11BE_EHT40MINUS_5G(_c) \
350 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_EHT40MINUS(_c))
351 
352 #define WLAN_IS_CHAN_11BE_EHT40_5G(_c) \
353 	(WLAN_IS_CHAN_11BE_EHT40MINUS_5G(_c) ||  \
354 	 WLAN_IS_CHAN_11BE_EHT40PLUS_5G(_c))
355 
356 #define WLAN_IS_CHAN_11BE_EHT80_5G(_c) \
357 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_EHT80(_c))
358 
359 #define WLAN_IS_CHAN_11BE_EHT160_5G(_c) \
360 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_EHT160(_c))
361 
362 #define WLAN_IS_CHAN_11BE_EHT320_5G(_c) \
363 	(WLAN_IS_CHAN_5GHZ(_c) && WLAN_IS_CHAN_EHT320(_c))
364 
365 #define WLAN_IS_CHAN_11AXA_HE20_6G(_c) \
366 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_HE20(_c))
367 
368 #define WLAN_IS_CHAN_11AXA_HE40_6G(_c) \
369 	(WLAN_IS_CHAN_11AXA_HE40MINUS_6G(_c) || \
370 	 WLAN_IS_CHAN_11AXA_HE40PLUS_6G(_c))
371 
372 #define WLAN_IS_CHAN_11AXA_HE40PLUS_6G(_c) \
373 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_HE40PLUS(_c))
374 
375 #define WLAN_IS_CHAN_11AXA_HE40MINUS_6G(_c) \
376 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_HE40MINUS(_c))
377 
378 #define WLAN_IS_CHAN_11AXA_HE80_6G(_c) \
379 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_HE80(_c))
380 
381 #define WLAN_IS_CHAN_11AXA_HE160_6G(_c) \
382 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_HE160(_c))
383 
384 #define WLAN_IS_CHAN_11AXA_HE80_80_6G(_c) \
385 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_HE80_80(_c))
386 
387 #define WLAN_IS_CHAN_11BE_EHT20_6G(_c) \
388 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_EHT20(_c))
389 
390 #define WLAN_IS_CHAN_11BE_EHT40PLUS_6G(_c) \
391 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_EHT40PLUS(_c))
392 
393 #define WLAN_IS_CHAN_11BE_EHT40MINUS_6G(_c) \
394 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_EHT40MINUS(_c))
395 
396 #define WLAN_IS_CHAN_11BE_EHT40_6G(_c) \
397 	(WLAN_IS_CHAN_11BE_EHT40MINUS_6G(_c) ||  \
398 	 WLAN_IS_CHAN_11BE_EHT40PLUS_6G(_c))
399 
400 #define WLAN_IS_CHAN_11BE_EHT80_6G(_c) \
401 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_EHT80(_c))
402 
403 #define WLAN_IS_CHAN_11BE_EHT160_6G(_c) \
404 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_EHT160(_c))
405 
406 #define WLAN_IS_CHAN_11BE_EHT320_6G(_c) \
407 	(WLAN_IS_CHAN_6GHZ(_c) && WLAN_IS_CHAN_EHT320(_c))
408 
409 #define WLAN_IS_CHAN_11AXA_HE20(_c) \
410 	(WLAN_IS_CHAN_11AXA_HE20_5G(_c) || WLAN_IS_CHAN_11AXA_HE20_6G(_c))
411 
412 #define WLAN_IS_CHAN_11AXA_HE40PLUS(_c) \
413 	(WLAN_IS_CHAN_11AXA_HE40PLUS_5G(_c) || \
414 	 WLAN_IS_CHAN_11AXA_HE40PLUS_6G(_c))
415 
416 #define WLAN_IS_CHAN_11AXA_HE40MINUS(_c) \
417 	(WLAN_IS_CHAN_11AXA_HE40MINUS_5G(_c) || \
418 	 WLAN_IS_CHAN_11AXA_HE40MINUS_6G(_c))
419 
420 #define WLAN_IS_CHAN_11AXA_HE80(_c) \
421 	(WLAN_IS_CHAN_11AXA_HE80_5G(_c) || WLAN_IS_CHAN_11AXA_HE80_6G(_c))
422 
423 #define WLAN_IS_CHAN_11AXA_HE160(_c) \
424 	(WLAN_IS_CHAN_11AXA_HE160_5G(_c) || WLAN_IS_CHAN_11AXA_HE160_6G(_c))
425 
426 #define WLAN_IS_CHAN_11AXA_HE80_80(_c) \
427 	(WLAN_IS_CHAN_11AXA_HE80_80_5G(_c) || WLAN_IS_CHAN_11AXA_HE80_80_6G(_c))
428 
429 #define WLAN_IS_CHAN_11BE_EHT20(_c) \
430 	(WLAN_IS_CHAN_11BE_EHT20_5G(_c) || WLAN_IS_CHAN_11BE_EHT20_6G(_c))
431 
432 #define WLAN_IS_CHAN_11BE_EHT40PLUS(_c) \
433 	(WLAN_IS_CHAN_11BE_EHT40PLUS_5G(_c) || \
434 	 WLAN_IS_CHAN_11BE_EHT40PLUS_6G(_c))
435 
436 #define WLAN_IS_CHAN_11BE_EHT40MINUS(_c) \
437 	(WLAN_IS_CHAN_11BE_EHT40MINUS_5G(_c) || \
438 	 WLAN_IS_CHAN_11BE_EHT40MINUS_6G(_c))
439 
440 #define WLAN_IS_CHAN_11BE_EHT40(_c) \
441 	(WLAN_IS_CHAN_11BE_EHT40PLUS(_c) || WLAN_IS_CHAN_11BE_EHT40MINUS(_c))
442 
443 #define WLAN_IS_CHAN_11BE_EHT80(_c) \
444 	(WLAN_IS_CHAN_11BE_EHT80_5G(_c) || WLAN_IS_CHAN_11BE_EHT80_6G(_c))
445 
446 #define WLAN_IS_CHAN_11BE_EHT160(_c) \
447 	(WLAN_IS_CHAN_11BE_EHT160_5G(_c) || WLAN_IS_CHAN_11BE_EHT160_6G(_c))
448 
449 #define WLAN_IS_CHAN_11BE_EHT320(_c) \
450 	(WLAN_IS_CHAN_11BE_EHT320_5G(_c) || WLAN_IS_CHAN_11BE_EHT320_6G(_c))
451 #else
452 
453 /* OFDM channel */
454 #define WLAN_CHAN_OFDM             0x0000000000000040
455 
456 /* 2 GHz spectrum channel. */
457 #define WLAN_CHAN_2GHZ             0x0000000000000080
458 
459 /* 5 GHz spectrum channel */
460 #define WLAN_CHAN_5GHZ             0x0000000000000100
461 
462 /* 6 GHz spectrum channel */
463 #define WLAN_CHAN_6GHZ             0x0000001000000000
464 
465 /* Radar found on channel */
466 #define WLAN_CHAN_DFS_RADAR        0x0000000000001000
467 
468 /* HT 20 channel */
469 #define WLAN_CHAN_HT20             0x0000000000010000
470 
471 /* HT 40 with extension channel above */
472 #define WLAN_CHAN_HT40PLUS         0x0000000000020000
473 
474 /* HT 40 with extension channel below */
475 #define WLAN_CHAN_HT40MINUS        0x0000000000040000
476 
477 /* VHT 20 channel */
478 #define WLAN_CHAN_VHT20            0x0000000000100000
479 
480 /* VHT 40 with extension channel above */
481 #define WLAN_CHAN_VHT40PLUS        0x0000000000200000
482 
483 /* VHT 40 with extension channel below */
484 #define WLAN_CHAN_VHT40MINUS       0x0000000000400000
485 
486 /* VHT 80 channel */
487 #define WLAN_CHAN_VHT80            0x0000000000800000
488 
489 /* VHT 160 channel */
490 #define WLAN_CHAN_VHT160           0x0000000004000000
491 
492 /* VHT 80_80 channel */
493 #define WLAN_CHAN_VHT80_80         0x0000000008000000
494 
495 /* HE 20 channel */
496 #define WLAN_CHAN_HE20             0x0000000010000000
497 
498 /* HE 40 with extension channel above */
499 #define WLAN_CHAN_HE40PLUS         0x0000000020000000
500 
501 /* HE 40 with extension channel below */
502 #define WLAN_CHAN_HE40MINUS        0x0000000040000000
503 
504 /* HE 80 channel */
505 #define WLAN_CHAN_HE80             0x0000000200000000
506 
507 /* HE 160 channel */
508 #define WLAN_CHAN_HE160            0x0000000400000000
509 
510 /* HE 80_80 channel */
511 #define WLAN_CHAN_HE80_80          0x0000000800000000
512 
513 /* EHT 20 channel */
514 #define WLAN_CHAN_EHT20            0x0000001000000000
515 
516 /* EHT 40 with extension channel above */
517 #define WLAN_CHAN_EHT40PLUS        0x0000002000000000
518 
519 /* EHT 40 with extension channel below */
520 #define WLAN_CHAN_EHT40MINUS       0x0000004000000000
521 
522 /* EHT 80 channel */
523 #define WLAN_CHAN_EHT80            0x0000008000000000
524 
525 /* HE 160 channel */
526 #define WLAN_CHAN_EHT160           0x0000010000000000
527 
528 /* HE 320 channel */
529 #define WLAN_CHAN_EHT320           0x0000020000000000
530 
531 /* Turbo Channel */
532 #define WLAN_CHAN_TURBO            0x0000000000000010
533 
534 #define WLAN_IS_CHAN_2GHZ(_c) \
535 	(((_c)->dfs_ch_flags & WLAN_CHAN_2GHZ) != 0)
536 
537 #define WLAN_IS_CHAN_5GHZ(_c) \
538 	(((_c)->dfs_ch_flags & WLAN_CHAN_5GHZ) != 0)
539 
540 #define WLAN_IS_CHAN_11N_HT40(_c) \
541 	(((_c)->dfs_ch_flags & (WLAN_CHAN_HT40PLUS | \
542 					WLAN_CHAN_HT40MINUS)) != 0)
543 
544 #define WLAN_IS_CHAN_11N_HT40PLUS(_c) \
545 	(((_c)->dfs_ch_flags & WLAN_CHAN_HT40PLUS) != 0)
546 
547 #define WLAN_IS_CHAN_11N_HT40MINUS(_c) \
548 	(((_c)->dfs_ch_flags & WLAN_CHAN_HT40MINUS) != 0)
549 
550 #define WLAN_IS_CHAN_VHT40PLUS(_c) \
551 	(((_c)->dfs_ch_flags & WLAN_CHAN_VHT40PLUS) != 0)
552 
553 #define WLAN_IS_CHAN_VHT40MINUS(_c) \
554 	(((_c)->dfs_ch_flags & WLAN_CHAN_VHT40MINUS) != 0)
555 
556 #define WLAN_CHAN_A \
557 	(WLAN_CHAN_5GHZ | WLAN_CHAN_OFDM)
558 
559 #define WLAN_IS_CHAN_A(_c) \
560 	(((_c)->dfs_ch_flags & WLAN_CHAN_A) == WLAN_CHAN_A)
561 
562 #define WLAN_CHAN_11NA_HT20 \
563 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HT20)
564 
565 #define WLAN_CHAN_11NA_HT40PLUS \
566 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HT40PLUS)
567 
568 #define WLAN_CHAN_11NA_HT40MINUS \
569 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HT40MINUS)
570 
571 #define WLAN_IS_CHAN_11NA_HT20(_c) \
572 	(((_c)->dfs_ch_flags & WLAN_CHAN_11NA_HT20) == \
573 	 WLAN_CHAN_11NA_HT20)
574 
575 #define WLAN_IS_CHAN_11NA_HT40PLUS(_c) \
576 	(((_c)->dfs_ch_flags & WLAN_CHAN_11NA_HT40PLUS) == \
577 	WLAN_CHAN_11NA_HT40PLUS)
578 
579 #define WLAN_IS_CHAN_11NA_HT40MINUS(_c) \
580 	(((_c)->dfs_ch_flags & WLAN_CHAN_11NA_HT40MINUS) == \
581 	 WLAN_CHAN_11NA_HT40MINUS)
582 
583 #define WLAN_CHAN_11AC_VHT20 \
584 	(WLAN_CHAN_5GHZ | WLAN_CHAN_VHT20)
585 
586 #define WLAN_CHAN_11AC_VHT40PLUS \
587 	(WLAN_CHAN_5GHZ | WLAN_CHAN_VHT40PLUS)
588 
589 #define WLAN_CHAN_11AC_VHT40MINUS \
590 	(WLAN_CHAN_5GHZ | WLAN_CHAN_VHT40MINUS)
591 
592 #define WLAN_CHAN_11AC_VHT80 \
593 	(WLAN_CHAN_5GHZ | WLAN_CHAN_VHT80)
594 
595 #define WLAN_CHAN_11AC_VHT160 \
596 	(WLAN_CHAN_5GHZ | WLAN_CHAN_VHT160)
597 
598 #define WLAN_CHAN_11AC_VHT80_80 \
599 	(WLAN_CHAN_5GHZ | WLAN_CHAN_VHT80_80)
600 
601 #define WLAN_IS_CHAN_11AC_VHT20(_c) \
602 	(((_c)->dfs_ch_flags & WLAN_CHAN_11AC_VHT20) == \
603 	 WLAN_CHAN_11AC_VHT20)
604 
605 #define WLAN_IS_CHAN_11AC_VHT40(_c) \
606 	(((_c)->dfs_ch_flags & (WLAN_CHAN_VHT40PLUS | \
607 			    WLAN_CHAN_VHT40MINUS)) != 0)
608 
609 #define WLAN_IS_CHAN_11AC_VHT40PLUS(_c) \
610 	(((_c)->dfs_ch_flags & WLAN_CHAN_11AC_VHT40PLUS) == \
611 	WLAN_CHAN_11AC_VHT40PLUS)
612 
613 #define WLAN_IS_CHAN_11AC_VHT40MINUS(_c) \
614 	(((_c)->dfs_ch_flags & WLAN_CHAN_11AC_VHT40MINUS) == \
615 	WLAN_CHAN_11AC_VHT40MINUS)
616 
617 #define WLAN_IS_CHAN_11AC_VHT80(_c) \
618 	(((_c)->dfs_ch_flags & WLAN_CHAN_11AC_VHT80) == \
619 	 WLAN_CHAN_11AC_VHT80)
620 
621 #define WLAN_IS_CHAN_11AC_VHT160(_c) \
622 	(((_c)->dfs_ch_flags & WLAN_CHAN_11AC_VHT160) == \
623 	 WLAN_CHAN_11AC_VHT160)
624 
625 #define WLAN_IS_CHAN_11AC_VHT80_80(_c) \
626 	(((_c)->dfs_ch_flags & WLAN_CHAN_11AC_VHT80_80) == \
627 	WLAN_CHAN_11AC_VHT80_80)
628 
629 #define WLAN_CHAN_11AXA_HE20 \
630 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HE20)
631 
632 #define WLAN_CHAN_11AXA_HE20_6G \
633 	(WLAN_CHAN_6GHZ | WLAN_CHAN_HE20)
634 
635 #define WLAN_CHAN_11AXA_HE40PLUS \
636 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HE40PLUS)
637 
638 #define WLAN_CHAN_11AXA_HE40PLUS_6G \
639 	(WLAN_CHAN_6GHZ | WLAN_CHAN_HE40PLUS)
640 
641 #define WLAN_CHAN_11AXA_HE40MINUS \
642 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HE40MINUS)
643 
644 #define WLAN_CHAN_11AXA_HE40MINUS_6G \
645 	(WLAN_CHAN_6GHZ | WLAN_CHAN_HE40MINUS)
646 
647 #define WLAN_CHAN_11AXA_HE80 \
648 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HE80)
649 
650 #define WLAN_CHAN_11AXA_HE80_6G \
651 	(WLAN_CHAN_6GHZ | WLAN_CHAN_HE80)
652 
653 #define WLAN_CHAN_11AXA_HE160 \
654 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HE160)
655 
656 #define WLAN_CHAN_11AXA_HE160_6G \
657 	(WLAN_CHAN_6GHZ | WLAN_CHAN_HE160)
658 
659 #define WLAN_CHAN_11AXA_HE80_80 \
660 	(WLAN_CHAN_5GHZ | WLAN_CHAN_HE80_80)
661 
662 #define WLAN_CHAN_11AXA_HE80_80_6G \
663 	(WLAN_CHAN_6GHZ | WLAN_CHAN_HE80_80)
664 
665 #define WLAN_CHAN_11BE_EHT20 \
666 	(WLAN_CHAN_5GHZ | WLAN_CHAN_EHT20)
667 
668 #define WLAN_CHAN_11BE_EHT20_6G \
669 	(WLAN_CHAN_6GHZ | WLAN_CHAN_EHT20)
670 
671 #define WLAN_CHAN_11BE_EHT40PLUS \
672 	(WLAN_CHAN_5GHZ | WLAN_CHAN_EHT40PLUS)
673 
674 #define WLAN_CHAN_11BE_EHT40PLUS_6G \
675 	(WLAN_CHAN_6GHZ | WLAN_CHAN_EHT40PLUS)
676 
677 #define WLAN_CHAN_11BE_EHT40MINUS \
678 	(WLAN_CHAN_5GHZ | WLAN_CHAN_EHT40MINUS)
679 
680 #define WLAN_CHAN_11BE_EHT40MINUS_6G \
681 	(WLAN_CHAN_6GHZ | WLAN_CHAN_EHT40MINUS)
682 
683 #define WLAN_CHAN_11BE_EHT80 \
684 	(WLAN_CHAN_5GHZ | WLAN_CHAN_EHT80)
685 
686 #define WLAN_CHAN_11BE_EHT80_6G \
687 	(WLAN_CHAN_6GHZ | WLAN_CHAN_EHT80)
688 
689 #define WLAN_CHAN_11BE_EHT160 \
690 	(WLAN_CHAN_5GHZ | WLAN_CHAN_EHT160)
691 
692 #define WLAN_CHAN_11BE_EHT160_6G \
693 	(WLAN_CHAN_6GHZ | WLAN_CHAN_EHT160)
694 
695 #define WLAN_CHAN_11BE_EHT320 \
696 	(WLAN_CHAN_5GHZ | WLAN_CHAN_EHT320)
697 
698 #define WLAN_CHAN_11BE_EHT320_6G \
699 	(WLAN_CHAN_6GHZ | WLAN_CHAN_EHT320)
700 
701 #define WLAN_CHAN_108G \
702 	(WLAN_CHAN_2GHZ | WLAN_CHAN_OFDM | WLAN_CHAN_TURBO)
703 
704 #define WLAN_IS_CHAN_11AXA_HE20(_c) \
705 	((((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE20) == \
706 	 WLAN_CHAN_11AXA_HE20) || \
707 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE20_6G) == \
708 	 WLAN_CHAN_11AXA_HE20_6G))
709 
710 #define WLAN_IS_CHAN_11AXA_HE40PLUS(_c) \
711 	((((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE40PLUS) == \
712 	 WLAN_CHAN_11AXA_HE40PLUS) || \
713 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE40PLUS_6G) == \
714 	  WLAN_CHAN_11AXA_HE40PLUS_6G))
715 
716 #define WLAN_IS_CHAN_11AXA_HE40MINUS(_c) \
717 	((((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE40MINUS) == \
718 	 WLAN_CHAN_11AXA_HE40MINUS) || \
719 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE40MINUS_6G) == \
720 	 WLAN_CHAN_11AXA_HE40MINUS_6G))
721 
722 #define WLAN_IS_CHAN_11AXA_HE80(_c) \
723 	((((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE80) == \
724 	 WLAN_CHAN_11AXA_HE80) || \
725 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE80_6G) == \
726 	  WLAN_CHAN_11AXA_HE80_6G))
727 
728 #define WLAN_IS_CHAN_11AXA_HE160(_c) \
729 	((((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE160) == \
730 	 WLAN_CHAN_11AXA_HE160) || \
731 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE160_6G) == \
732 	  WLAN_CHAN_11AXA_HE160_6G))
733 
734 #define WLAN_IS_CHAN_11AXA_HE80_80(_c) \
735 	((((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE80_80) == \
736 	 WLAN_CHAN_11AXA_HE80_80) || \
737 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11AXA_HE80_80_6G) == \
738 	  WLAN_CHAN_11AXA_HE80_80_6G))
739 
740 #define WLAN_IS_CHAN_11BE_EHT20(_c) \
741 	((((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT20) == \
742 	 WLAN_CHAN_11BE_EHT20) || \
743 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT20_6G) == \
744 	 WLAN_CHAN_11BE_EHT20_6G))
745 
746 #define WLAN_IS_CHAN_11BE_EHT40PLUS(_c) \
747 	((((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT40PLUS) == \
748 	 WLAN_CHAN_11BE_EHT40PLUS) || \
749 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT40PLUS_6G) == \
750 	  WLAN_CHAN_11BE_EHT40PLUS_6G))
751 
752 #define WLAN_IS_CHAN_11BE_EHT40MINUS(_c) \
753 	((((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT40MINUS) == \
754 	 WLAN_CHAN_11BE_EHT40MINUS) || \
755 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT40MINUS_6G) == \
756 	 WLAN_CHAN_11BE_EHT40MINUS_6G))
757 
758 #define WLAN_IS_CHAN_11BE_EHT80(_c) \
759 	((((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT80) == \
760 	 WLAN_CHAN_11BE_EHT80) || \
761 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT80_6G) == \
762 	  WLAN_CHAN_11BE_EHT80_6G))
763 
764 #define WLAN_IS_CHAN_11BE_EHT160(_c) \
765 	((((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT160) == \
766 	 WLAN_CHAN_11BE_EHT160) || \
767 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT160_6G) == \
768 	  WLAN_CHAN_11BE_EHT160_6G))
769 
770 #define WLAN_IS_CHAN_11BE_EHT320(_c) \
771 	((((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT320) == \
772 	 WLAN_CHAN_11BE_EHT320) || \
773 	 (((_c)->dfs_ch_flags & WLAN_CHAN_11BE_EHT320_6G) == \
774 	  WLAN_CHAN_11BE_EHT320_6G))
775 
776 #define WLAN_IS_CHAN_TURBO(_c) \
777 	(((_c)->dfs_ch_flags & WLAN_CHAN_TURBO) != 0)
778 
779 #endif /* WLAN_COMP_CHAN_MODE */
780 
781 #define WLAN_CHAN_108G \
782 	(WLAN_CHAN_2GHZ | WLAN_CHAN_OFDM | WLAN_CHAN_TURBO)
783 
784 #define WLAN_IS_CHAN_108G(_c) \
785 	(((_c)->dfs_ch_flags & WLAN_CHAN_108G) == WLAN_CHAN_108G)
786 
787 /* flagext */
788 #define WLAN_CHAN_DFS_RADAR_FOUND    0x01
789 
790 /* DFS required on channel */
791 #define WLAN_CHAN_DFS              0x0002
792 
793 /* DFS required on channel for 2nd band of 80+80*/
794 #define WLAN_CHAN_DFS_CFREQ2       0x0004
795 
796 /* if channel has been checked for DFS */
797 #define WLAN_CHAN_DFS_CLEAR        0x0008
798 
799 /* DFS radar history for client device(STA mode) */
800 #define WLAN_CHAN_HISTORY_RADAR    0x0100
801 
802 /* DFS CAC valid for  client device(STA mode) */
803 #define WLAN_CHAN_CAC_VALID        0x0200
804 
805 #define WLAN_IS_CHAN_DFS(_c) \
806 	(((_c)->dfs_ch_flagext & \
807 	(WLAN_CHAN_DFS | WLAN_CHAN_DFS_CLEAR)) == WLAN_CHAN_DFS)
808 
809 #define WLAN_IS_CHAN_DFS_CFREQ2(_c) \
810 	(((_c)->dfs_ch_flagext & \
811 	(WLAN_CHAN_DFS_CFREQ2|WLAN_CHAN_DFS_CLEAR)) == \
812 	WLAN_CHAN_DFS_CFREQ2)
813 
814 #define WLAN_IS_PRIMARY_OR_SECONDARY_CHAN_DFS(_c) \
815 	(WLAN_IS_CHAN_DFS(_c) || \
816 	 ((WLAN_IS_CHAN_11AC_VHT160(_c) || \
817 	 WLAN_IS_CHAN_11AC_VHT80_80(_c) || \
818 	 WLAN_IS_CHAN_11AXA_HE160(_c) || \
819 	 WLAN_IS_CHAN_11AXA_HE80_80(_c) || \
820 	 WLAN_IS_CHAN_11BE_EHT160(_c) || \
821 	 WLAN_IS_CHAN_11BE_EHT320(_c)) \
822 	&& WLAN_IS_CHAN_DFS_CFREQ2(_c)))
823 
824 #ifdef CONFIG_HOST_FIND_CHAN
825 #define WLAN_IS_CHAN_RADAR wlan_is_chan_radar
826 #define WLAN_IS_CHAN_HISTORY_RADAR wlan_is_chan_history_radar
827 #else
828 #define WLAN_IS_CHAN_RADAR(_dfs, _c)    \
829 	(((_c)->dfs_ch_flags & WLAN_CHAN_DFS_RADAR) == \
830 	 WLAN_CHAN_DFS_RADAR)
831 
832 #define WLAN_IS_CHAN_HISTORY_RADAR(_dfs, _c)    \
833 	(((_c)->dfs_ch_flagext & WLAN_CHAN_HISTORY_RADAR) == \
834 	WLAN_CHAN_HISTORY_RADAR)
835 
836 #endif
837 
838 #define WLAN_CHAN_CLR_HISTORY_RADAR(_c)    \
839 	((_c)->dfs_ch_flagext &= ~WLAN_CHAN_HISTORY_RADAR)
840 
841 #define WLAN_CHAN_ANY      (-1)    /* token for ``any channel'' */
842 
843 #define WLAN_CHAN_ANYC \
844 	((struct dfs_channel *) WLAN_CHAN_ANY)
845 
846 #define WLAN_IS_CHAN_MODE_20(_c)      \
847 	(WLAN_IS_CHAN_A(_c)        ||    \
848 	 WLAN_IS_CHAN_11NA_HT20(_c)  ||  \
849 	 WLAN_IS_CHAN_11AC_VHT20(_c) ||  \
850 	 WLAN_IS_CHAN_11AXA_HE20(_c) ||  \
851 	 WLAN_IS_CHAN_11BE_EHT20(_c))
852 
853 #define WLAN_IS_CHAN_MODE_40(_c)          \
854 	(WLAN_IS_CHAN_11AC_VHT40PLUS(_c)  || \
855 	 WLAN_IS_CHAN_11AC_VHT40MINUS(_c) || \
856 	 WLAN_IS_CHAN_11NA_HT40PLUS(_c)   || \
857 	 WLAN_IS_CHAN_11NA_HT40MINUS(_c)  || \
858 	 WLAN_IS_CHAN_11AXA_HE40PLUS(_c)  || \
859 	 WLAN_IS_CHAN_11AXA_HE40MINUS(_c) || \
860 	 WLAN_IS_CHAN_11BE_EHT40PLUS(_c)  || \
861 	 WLAN_IS_CHAN_11BE_EHT40MINUS(_c))
862 
863 #define WLAN_IS_CHAN_MODE_80(_c)          \
864 	(WLAN_IS_CHAN_11AC_VHT80(_c)      || \
865 	 WLAN_IS_CHAN_11AXA_HE80(_c)      || \
866 	 WLAN_IS_CHAN_11BE_EHT80(_c))
867 
868 #define WLAN_IS_CHAN_MODE_160(_c)         \
869 	(WLAN_IS_CHAN_11AC_VHT160(_c)     || \
870 	 WLAN_IS_CHAN_11AXA_HE160(_c)     || \
871 	 WLAN_IS_CHAN_11BE_EHT160(_c))
872 
873 #define WLAN_IS_CHAN_MODE_80_80(_c)       \
874 	(WLAN_IS_CHAN_11AC_VHT80_80(_c)   || \
875 	 WLAN_IS_CHAN_11AXA_HE80_80(_c))
876 
877 #define WLAN_IS_CHAN_MODE_165(_dfs, _c) \
878 	(dfs_is_restricted_80p80mhz_supported(_dfs) && \
879 	WLAN_IS_CHAN_MODE_80_80(_c))
880 
881 #define WLAN_IS_CHAN_MODE_320(_c) WLAN_IS_CHAN_11BE_EHT320(_c)
882 
883 #define WLAN_IS_CHAN_11BE(_c)             \
884 	(WLAN_IS_CHAN_11BE_EHT20(_c)      || \
885 	 WLAN_IS_CHAN_11BE_EHT40PLUS(_c)  || \
886 	 WLAN_IS_CHAN_11BE_EHT40MINUS(_c) || \
887 	 WLAN_IS_CHAN_11BE_EHT80(_c)      || \
888 	 WLAN_IS_CHAN_11BE_EHT160(_c)     || \
889 	 WLAN_IS_CHAN_11BE_EHT320(_c))
890 
891 #define WLAN_IS_CHAN_11AXA(_c)            \
892 	(WLAN_IS_CHAN_11AXA_HE20(_c)      || \
893 	 WLAN_IS_CHAN_11AXA_HE40PLUS(_c)  || \
894 	 WLAN_IS_CHAN_11AXA_HE40MINUS(_c) || \
895 	 WLAN_IS_CHAN_11AXA_HE80(_c)      || \
896 	 WLAN_IS_CHAN_11AXA_HE160(_c)     || \
897 	 WLAN_IS_CHAN_11AXA_HE80_80(_c))
898 
899 #define WLAN_IS_CHAN_11AC(_c)             \
900 	(WLAN_IS_CHAN_11AC_VHT20(_c)      || \
901 	 WLAN_IS_CHAN_11AC_VHT40PLUS(_c)  || \
902 	 WLAN_IS_CHAN_11AC_VHT40MINUS(_c) || \
903 	 WLAN_IS_CHAN_11AC_VHT80(_c)      || \
904 	 WLAN_IS_CHAN_11AC_VHT160(_c)     || \
905 	 WLAN_IS_CHAN_11AC_VHT80_80(_c))
906 
907 #endif /* _DFS_CHANNEL_H_ */
908