1 /* 2 * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. 3 * 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 the DFS dispatcher API which is exposed to outside of DFS 22 * component. 23 */ 24 25 #ifndef _WLAN_DFS_UTILS_API_H_ 26 #define _WLAN_DFS_UTILS_API_H_ 27 28 #include "wlan_dfs_ucfg_api.h" 29 #include "wlan_reg_services_api.h" 30 31 /* Add channel to nol */ 32 #define DFS_NOL_SET 1 33 34 /* Remove channel from nol */ 35 #define DFS_NOL_RESET 0 36 37 /* Max nol channels */ 38 #define DFS_MAX_NOL_CHANNEL 80 39 40 /* WLAN 2.4GHz start freq */ 41 #define DFS_24_GHZ_BASE_FREQ (2407) 42 43 /* WLAN 5GHz start freq */ 44 #define DFS_5_GHZ_BASE_FREQ (5000) 45 46 /* WLAN 2.4 GHz channel number 6 */ 47 #define DFS_24_GHZ_CHANNEL_6 (6) 48 49 /* WLAN 2.4 GHz channel number 14 */ 50 #define DFS_24_GHZ_CHANNEL_14 (14) 51 52 /* WLAN 2.4 GHz channel number 15 */ 53 #define DFS_24_GHZ_CHANNEL_15 (15) 54 55 /* WLAN 2.4 GHz channel number 27 */ 56 #define DFS_24_GHZ_CHANNEL_27 (27) 57 58 /* WLAN 5GHz channel number 170 */ 59 #define DFS_5_GHZ_CHANNEL_170 (170) 60 61 /* WLAN 5MHz channel spacing */ 62 #define DFS_CHAN_SPACING_5MHZ (5) 63 64 /* WLAN 20Hz channel spacing */ 65 #define DFS_CHAN_SPACING_20MHZ (20) 66 67 /* WLAN 2.4GHz channel number 14 freq */ 68 #define DFS_CHAN_14_FREQ (2484) 69 70 /* WLAN 2.4GHz channel number 15 freq */ 71 #define DFS_CHAN_15_FREQ (2512) 72 73 /* WLAN 5GHz channel number 170 freq */ 74 #define DFS_CHAN_170_FREQ (5852) 75 76 77 78 extern struct dfs_to_mlme global_dfs_to_mlme; 79 80 /** 81 * utils_dfs_cac_valid_reset() - Cancels the dfs_cac_valid_timer timer. 82 * @pdev: Pointer to DFS pdev object. 83 * @prevchan_ieee: Prevchan number. 84 * @prevchan_flags: Prevchan flags. 85 * 86 * Wrapper function for dfs_cac_valid_reset(). This function called from 87 * outside of DFS component. 88 */ 89 90 QDF_STATUS utils_dfs_cac_valid_reset(struct wlan_objmgr_pdev *pdev, 91 uint8_t prevchan_ieee, 92 uint32_t prevchan_flags); 93 94 /** 95 * utils_dfs_reset() - Reset DFS members. 96 * @pdev: Pointer to DFS pdev object. 97 */ 98 QDF_STATUS utils_dfs_reset(struct wlan_objmgr_pdev *pdev); 99 100 /** 101 * utils_dfs_freq_is_in_nol() - check if given channel in nol list 102 * @pdev: Pointer to DFS pdev object 103 * @freq: channel frequency 104 * 105 * check if given channel in nol list. 106 * 107 * Return: true if channel in nol, false else 108 */ 109 bool utils_dfs_freq_is_in_nol(struct wlan_objmgr_pdev *pdev, uint32_t freq); 110 111 /** 112 * utils_dfs_reset_precaclists() - Clears and initiakizes precac_required_list, 113 * precac_done_list and precac_nol_list. 114 * @pdev: Pointer to DFS pdev object. 115 * 116 * Wrapper function for dfs_reset_precaclists(). This function called from 117 * outside of DFS component. 118 */ 119 QDF_STATUS utils_dfs_reset_precaclists(struct wlan_objmgr_pdev *pdev); 120 121 /** 122 * utils_dfs_reset_etsi_precaclists() - Clears and initializes etsi 123 * precac_required_list, 124 * etsi precac_done_list and 125 * etsi precac_nol_list. 126 * @pdev: Pointer to DFS pdev object. 127 * 128 * Wrapper function for dfs_reset_etsiprecaclists(). This function called from 129 * outside of DFS component. 130 */ 131 #ifdef QCA_SUPPORT_ETSI_PRECAC_DFS 132 QDF_STATUS utils_dfs_reset_etsi_precaclists(struct wlan_objmgr_pdev *pdev); 133 #else 134 static inline QDF_STATUS utils_dfs_reset_etsi_precaclists( 135 struct wlan_objmgr_pdev *pdev) 136 { 137 return QDF_STATUS_SUCCESS; 138 } 139 #endif 140 141 /** 142 * utils_dfs_cancel_precac_timer() - Cancel the precac timer. 143 * @pdev: Pointer to DFS pdev object. 144 * 145 * wrapper function for dfs_cancel_precac_timer(). this function called from 146 * outside of dfs component. 147 */ 148 QDF_STATUS utils_dfs_cancel_precac_timer(struct wlan_objmgr_pdev *pdev); 149 150 /** 151 * utils_dfs_start_precac_timer() - Start the precac timer. 152 * @pdev: Pointer to DFS pdev object. 153 * 154 * Wrapper function for dfs_start_precac_timer(). This function called from 155 * outside of dfs component. 156 * 157 * Return: 158 * * QDF_STATUS_E_FAILURE: Failed to start timer. 159 * * QDF_STATUS_SUCCESS: Timer started successfully. 160 */ 161 QDF_STATUS utils_dfs_start_precac_timer(struct wlan_objmgr_pdev *pdev); 162 163 /** 164 * utils_dfs_is_precac_done() - Is precac done. 165 * @pdev: Pointer to DFS pdev object. 166 * 167 * wrapper function for dfs_is_precac_done(). this 168 * function called from outside of dfs component. 169 */ 170 QDF_STATUS utils_dfs_is_precac_done(struct wlan_objmgr_pdev *pdev, 171 bool *is_precac_done); 172 173 #ifdef WLAN_DFS_PRECAC_AUTO_CHAN_SUPPORT 174 /** 175 * utils_dfs_precac_decide_pref_chan() - Choose preferred channel 176 * @pdev: Pointer to DFS pdev object. 177 * @ch_ieee: Pointer to channel number 178 179 * Wrapper function for dfs_decide_precac_preferred_chan(). This 180 * function called from outside of dfs component. 181 * 182 * Return: 183 * * QDF_STATUS_E_FAILURE: Failed to decide preferred channel. 184 * * QDF_STATUS_SUCCESS: Set preferred channel successfully. 185 */ 186 QDF_STATUS utils_dfs_precac_decide_pref_chan(struct wlan_objmgr_pdev *pdev, 187 uint8_t *ch_ieee); 188 #endif 189 190 /** 191 * utils_dfs_is_esti_precac_done() - Is ETSI precac done. 192 * @pdev: Pointer to DFS pdev object. 193 * 194 * wrapper function for dfs_is_etsi_precac_done(). This 195 * function called from outside of dfs component. 196 */ 197 #ifdef QCA_SUPPORT_ETSI_PRECAC_DFS 198 QDF_STATUS utils_dfs_is_etsi_precac_done(struct wlan_objmgr_pdev *pdev, 199 bool *is_etsi_precac_done); 200 #else 201 static inline QDF_STATUS utils_dfs_is_etsi_precac_done( 202 struct wlan_objmgr_pdev *pdev, 203 bool *is_etsi_precac_done) 204 { 205 return QDF_STATUS_SUCCESS; 206 } 207 #endif 208 209 /** 210 * utils_dfs_cancel_cac_timer() - Cancels the CAC timer. 211 * @pdev: Pointer to DFS pdev object. 212 * 213 * wrapper function for dfs_cancel_cac_timer(). this 214 * function called from outside of dfs component. 215 */ 216 QDF_STATUS utils_dfs_cancel_cac_timer(struct wlan_objmgr_pdev *pdev); 217 218 /** 219 * utils_dfs_start_cac_timer() - Starts the CAC timer. 220 * @pdev: Pointer to DFS pdev object. 221 * 222 * wrapper function for dfs_start_cac_timer(). this 223 * function called from outside of dfs component. 224 */ 225 QDF_STATUS utils_dfs_start_cac_timer(struct wlan_objmgr_pdev *pdev); 226 227 /** 228 * utils_dfs_cac_stop() - Clear the AP CAC timer. 229 * @pdev: Pointer to DFS pdev object. 230 * 231 * wrapper function for dfs_cac_stop(). this 232 * function called from outside of dfs component. 233 */ 234 QDF_STATUS utils_dfs_cac_stop(struct wlan_objmgr_pdev *pdev); 235 236 /** 237 * utils_dfs_stacac_stop() - Clear the STA CAC timer. 238 * @pdev: Pointer to DFS pdev object. 239 * 240 * wrapper function for dfs_stacac_stop(). this 241 * function called from outside of dfs component. 242 */ 243 QDF_STATUS utils_dfs_stacac_stop(struct wlan_objmgr_pdev *pdev); 244 245 /** 246 * utils_dfs_is_curchan_subset_of_cac_started_chan() - Check if the dfs current 247 * channel is subset of cac started channel. 248 * @pdev: Pointer to DFS pdev object. 249 * 250 * wrapper function for dfs_is_curchan_subset_of_cac_started_chan(). this 251 * function called from outside of dfs component. 252 * 253 * Return: true if current channel is same or subset of cac started channel, 254 * else false. 255 */ 256 bool utils_dfs_is_curchan_subset_of_cac_started_chan( 257 struct wlan_objmgr_pdev *pdev); 258 259 /** 260 * utils_dfs_is_cac_aborted() - Check if previous CAC was aborted. 261 * @pdev: Pointer to DFS pdev object. 262 * 263 * Return: true if previous CAC was aborted, else false. 264 */ 265 bool utils_dfs_is_cac_aborted(struct wlan_objmgr_pdev *pdev); 266 267 /** 268 * utils_dfs_clear_cac_started_chan() - Clear dfs cac started channel. 269 * @pdev: Pointer to DFS pdev object. 270 */ 271 void utils_dfs_clear_cac_started_chan(struct wlan_objmgr_pdev *pdev); 272 273 /** 274 * utils_dfs_get_usenol() - Returns use_nol flag. 275 * @pdev: Pointer to DFS pdev object. 276 * @usenol: Pointer to usenol value. 277 * 278 * wrapper function for dfs_get_usenol(). this 279 * function called from outside of dfs component. 280 */ 281 QDF_STATUS utils_dfs_get_usenol(struct wlan_objmgr_pdev *pdev, 282 uint16_t *usenol); 283 284 /** 285 * utils_dfs_radar_disable() - Disables the radar. 286 * @pdev: Pointer to DFS pdev object. 287 * 288 * wrapper function for dfs_radar_disable(). this 289 * function called from outside of dfs component. 290 */ 291 QDF_STATUS utils_dfs_radar_disable(struct wlan_objmgr_pdev *pdev); 292 293 /** 294 * utils_dfs_set_update_nol_flag() - Sets update_nol flag. 295 * @pdev: Pointer to DFS pdev object. 296 * @val: update_nol flag. 297 * 298 * wrapper function for dfs_set_update_nol_flag(). this 299 * function called from outside of dfs component. 300 */ 301 QDF_STATUS utils_dfs_set_update_nol_flag(struct wlan_objmgr_pdev *pdev, 302 bool val); 303 304 /** 305 * utils_dfs_get_update_nol_flag() - Returns update_nol flag. 306 * @pdev: Pointer to DFS pdev object. 307 * @nol_flag: Fill nol_flag in this variable. 308 * 309 * wrapper function for dfs_get_update_nol_flag(). this 310 * function called from outside of dfs component. 311 */ 312 QDF_STATUS utils_dfs_get_update_nol_flag(struct wlan_objmgr_pdev *pdev, 313 bool *nol_flag); 314 315 /** 316 * utils_dfs_get_dfs_use_nol() - Get usenol. 317 * @pdev: Pointer to DFS pdev object. 318 * @dfs_use_nol: Pointer to dfs_use_nol. 319 * 320 * wrapper function for dfs_get_dfs_use_nol(). this 321 * function called from outside of dfs component. 322 */ 323 QDF_STATUS utils_dfs_get_dfs_use_nol(struct wlan_objmgr_pdev *pdev, 324 int *dfs_use_nol); 325 326 /** 327 * utils_dfs_get_nol_timeout() - Get NOL timeout. 328 * @pdev: Pointer to DFS pdev object. 329 * @dfs_nol_timeout: Pointer to dfs_nol_timeout. 330 * 331 * wrapper function for dfs_get_nol_timeout(). this 332 * function called from outside of dfs component. 333 */ 334 QDF_STATUS utils_dfs_get_nol_timeout(struct wlan_objmgr_pdev *pdev, 335 int *dfs_nol_timeout); 336 337 /** 338 * utils_dfs_nol_addchan() - Add channel to NOL. 339 * @pdev: Pointer to DFS pdev object. 340 * @chan: channel t o add NOL. 341 * @dfs_nol_timeout: NOL timeout. 342 * 343 * wrapper function for dfs_nol_addchan(). this 344 * function called from outside of dfs component. 345 */ 346 QDF_STATUS utils_dfs_nol_addchan(struct wlan_objmgr_pdev *pdev, 347 uint16_t freq, 348 uint32_t dfs_nol_timeout); 349 350 /** 351 * utils_dfs_nol_update() - NOL update 352 * @pdev: Pointer to DFS pdev object. 353 * 354 * wrapper function for dfs_nol_update(). this 355 * function called from outside of dfs component. 356 */ 357 QDF_STATUS utils_dfs_nol_update(struct wlan_objmgr_pdev *pdev); 358 359 /** 360 * utils_dfs_second_segment_radar_disable() - Disables the second segment radar. 361 * @pdev: Pointer to DFS pdev object. 362 * 363 * This is called when AP detects the radar, to (potentially) disable 364 * the radar code. 365 */ 366 QDF_STATUS utils_dfs_second_segment_radar_disable( 367 struct wlan_objmgr_pdev *pdev); 368 369 /** 370 * utils_dfs_is_ignore_dfs() - Get Ignore DFS value. 371 * @pdev: Pointer to DFS pdev object. 372 * @ignore_dfs: Fill ignore_dfs value in this variable. 373 */ 374 QDF_STATUS utils_dfs_is_ignore_dfs(struct wlan_objmgr_pdev *pdev, 375 bool *ignore_dfs); 376 377 /** 378 * utils_dfs_is_cac_valid() - Gets the value of is_cac_valid. 379 * @pdev: Pointer to DFS pdev object. 380 * @is_cac_valid: Fill is_cac_valid in this variable. 381 */ 382 QDF_STATUS utils_dfs_is_cac_valid(struct wlan_objmgr_pdev *pdev, 383 bool *is_cac_valid); 384 385 /** 386 * utils_dfs_is_ignore_cac() - Gets the value of is_ignore_cac. 387 * @pdev: Pointer to DFS pdev object. 388 * @ignore_cac: Fill ignore_cac value in this variable. 389 */ 390 QDF_STATUS utils_dfs_is_ignore_cac(struct wlan_objmgr_pdev *pdev, 391 bool *ignore_cac); 392 393 /** 394 * utils_dfs_set_cac_timer_running() - Sets the cac timer running. 395 * @pdev: Pointer to DFS pdev object. 396 * @val: Set this value to dfs_cac_timer_running variable. 397 */ 398 QDF_STATUS utils_dfs_set_cac_timer_running(struct wlan_objmgr_pdev *pdev, 399 int val); 400 401 /** 402 * utils_dfs_get_nol_chfreq_and_chwidth() - Sets the cac timer running. 403 * @pdev: Pointer to DFS pdev object. 404 * @nollist: Pointer to NOL channel entry. 405 * @nol_chfreq: Pointer to save channel frequency. 406 * @nol_chwidth: Pointer to save channel width. 407 * @index: Index into nol list. 408 */ 409 QDF_STATUS utils_dfs_get_nol_chfreq_and_chwidth(struct wlan_objmgr_pdev *pdev, 410 void *nollist, 411 uint32_t *nol_chfreq, 412 uint32_t *nol_chwidth, 413 int index); 414 415 /** 416 * utils_dfs_get_random_channel() - Get random channel. 417 * @pdev: Pointer to DFS pdev object. 418 * @flags: random channel selection flags. 419 * @ch_params: current channel params. 420 * @hw_mode: current operating mode. 421 * @target_chan: Pointer to target_chan. 422 * @acs_info: acs range info. 423 * 424 * wrapper function for get_random_chan(). this 425 * function called from outside of dfs component. 426 * 427 * Return: QDF_STATUS 428 */ 429 QDF_STATUS utils_dfs_get_random_channel(struct wlan_objmgr_pdev *pdev, 430 uint16_t flags, struct ch_params *ch_params, 431 uint32_t *hw_mode, uint8_t *target_chan, 432 struct dfs_acs_info *acs_info); 433 434 /** 435 * utils_dfs_bw_reduced_channel() - Get BW reduced channel. 436 * @pdev: Pointer to DFS pdev object. 437 * @flags: Reduced bandwidth channel flags. 438 * @ch_params: current channel params. 439 * @hw_mode: current operating mode. 440 * @target_chan: Pointer to target_chan. 441 * 442 * wrapper function for get bw_reduced_channel. this 443 * function called from outside of dfs component. 444 * 445 * Return: QDF_STATUS 446 */ 447 QDF_STATUS utils_dfs_bw_reduced_channel(struct wlan_objmgr_pdev *pdev, 448 uint16_t flags, 449 struct ch_params *ch_params, 450 uint32_t *hw_mode, 451 uint8_t *target_chan); 452 /** 453 * utils_dfs_init_nol() - Initialize nol from platform driver. 454 * @pdev: pdev handler. 455 * 456 * Initialize nol from platform driver. 457 * 458 * Return: None 459 */ 460 #ifdef QCA_DFS_NOL_PLATFORM_DRV_SUPPORT 461 void utils_dfs_init_nol(struct wlan_objmgr_pdev *pdev); 462 #else 463 static inline void utils_dfs_init_nol(struct wlan_objmgr_pdev *pdev) 464 { 465 } 466 #endif 467 /** 468 * utils_dfs_save_nol() - save nol list to platform driver. 469 * @pdev: pdev handler. 470 * 471 * Save nol list to platform driver. 472 * 473 * Return: None 474 */ 475 void utils_dfs_save_nol(struct wlan_objmgr_pdev *pdev); 476 477 /** 478 * utils_dfs_print_nol_channels() - log nol channels. 479 * @pdev: pdev handler. 480 * 481 * log nol channels. 482 * 483 * Return: None 484 */ 485 #ifdef DFS_COMPONENT_ENABLE 486 void utils_dfs_print_nol_channels(struct wlan_objmgr_pdev *pdev); 487 #else 488 static inline void utils_dfs_print_nol_channels(struct wlan_objmgr_pdev *pdev) 489 { 490 } 491 #endif 492 493 /** 494 * utils_dfs_clear_nol_channels() - clear nol list. 495 * @pdev: pdev handler. 496 * 497 * log nol channels. 498 * 499 * Return: None 500 */ 501 void utils_dfs_clear_nol_channels(struct wlan_objmgr_pdev *pdev); 502 503 /** 504 * utils_is_dfs_ch() - is channel dfs. 505 * @pdev: pdev handler. 506 * 507 * is channel dfs. 508 * 509 * Return: True if channel dfs, else false. 510 */ 511 static inline bool utils_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan) 512 { 513 return wlan_reg_is_dfs_ch(pdev, chan); 514 } 515 /** 516 * utils_dfs_reg_update_nol_ch() - set nol channel 517 * 518 * @pdev: pdev ptr 519 * @ch_list: channel list to be returned 520 * @num_ch: number of channels 521 * @nol_ch: nol flag 522 * 523 * Return: void 524 */ 525 void utils_dfs_reg_update_nol_ch(struct wlan_objmgr_pdev *pdev, 526 uint8_t *ch_list, 527 uint8_t num_ch, 528 bool nol_ch); 529 530 /** 531 * utils_dfs_freq_to_chan () - convert channel freq to channel number 532 * @freq: frequency 533 * 534 * Return: channel number 535 */ 536 uint8_t utils_dfs_freq_to_chan(uint32_t freq); 537 538 /** 539 * utils_dfs_chan_to_freq () - convert channel number to frequency 540 * @chan: channel number 541 * 542 * Return: frequency 543 */ 544 #ifdef DFS_COMPONENT_ENABLE 545 uint32_t utils_dfs_chan_to_freq(uint8_t chan); 546 #else 547 static inline uint32_t utils_dfs_chan_to_freq(uint8_t chan) 548 { 549 return 0; 550 } 551 #endif 552 /** 553 * utils_dfs_update_cur_chan_flags() - Update DFS channel flag and flagext. 554 * @pdev: Pointer to DFS pdev object. 555 * @flags: New channel flags 556 * @flagext: New Extended flags 557 * 558 * Return: QDF_STATUS 559 */ 560 QDF_STATUS utils_dfs_update_cur_chan_flags(struct wlan_objmgr_pdev *pdev, 561 uint64_t flags, 562 uint16_t flagext); 563 564 #ifdef QCA_MCL_DFS_SUPPORT 565 /** 566 * utils_dfs_mark_leaking_ch() - to mark channel leaking in to nol 567 * @pdev: Pointer to pdev structure. 568 * @ch_width: channel width 569 * @temp_ch_lst_sz: the target channel list 570 * @temp_ch_lst: the target channel list 571 * 572 * This function removes the channels from temp channel list that 573 * (if selected as target channel) will cause leakage in one of 574 * the NOL channels 575 * 576 * Return: QDF_STATUS 577 */ 578 QDF_STATUS utils_dfs_mark_leaking_ch(struct wlan_objmgr_pdev *pdev, 579 enum phy_ch_width ch_width, 580 uint8_t temp_ch_lst_sz, 581 uint8_t *temp_ch_lst); 582 #else 583 static inline QDF_STATUS utils_dfs_mark_leaking_ch 584 (struct wlan_objmgr_pdev *pdev, 585 enum phy_ch_width ch_width, 586 uint8_t temp_ch_lst_sz, 587 uint8_t *temp_ch_lst) 588 { 589 return QDF_STATUS_SUCCESS; 590 } 591 #endif 592 /** 593 * utils_get_dfsdomain() - Get DFS domain. 594 * @pdev: Pointer to PDEV structure. 595 * 596 * Return: DFS domain. 597 */ 598 int utils_get_dfsdomain(struct wlan_objmgr_pdev *pdev); 599 600 /** 601 * utils_dfs_get_cur_rd() - Get current regdomain. 602 * @pdev: pdev ptr 603 * 604 * Return: Regdomain pair id. 605 */ 606 uint16_t utils_dfs_get_cur_rd(struct wlan_objmgr_pdev *pdev); 607 608 /** 609 * utils_dfs_is_spoof_check_failed() - get spoof check status. 610 * @pdev: pdev ptr 611 * @is_spoof_check_failed: pointer containing the status. 612 * 613 * Return: QDF_STATUS. 614 */ 615 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) 616 QDF_STATUS utils_dfs_is_spoof_check_failed(struct wlan_objmgr_pdev *pdev, 617 bool *is_spoof_check_failed); 618 #else 619 static inline 620 QDF_STATUS utils_dfs_is_spoof_check_failed(struct wlan_objmgr_pdev *pdev, 621 bool *is_spoof_check_failed) 622 { 623 return QDF_STATUS_SUCCESS; 624 } 625 #endif 626 #endif /* _WLAN_DFS_UTILS_API_H_ */ 627