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