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