1 /* 2 * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 /** 20 * DOC: wlan_reg_services_api.h 21 * This file provides prototypes of the routines needed for the 22 * external components to utilize the services provided by the 23 * regulatory component. 24 */ 25 26 #ifndef __WLAN_REG_SERVICES_API_H 27 #define __WLAN_REG_SERVICES_API_H 28 29 /** 30 * wlan_reg_min_24ghz_ch_num() - Get minimum 2.4GHz channel number 31 * 32 * Return: Minimum 2.4GHz channel number 33 */ 34 #define WLAN_REG_MIN_24GHZ_CH_NUM wlan_reg_min_24ghz_ch_num() 35 uint32_t wlan_reg_min_24ghz_ch_num(void); 36 37 /** 38 * wlan_reg_max_24ghz_ch_num() - Get maximum 2.4GHz channel number 39 * 40 * Return: Maximum 2.4GHz channel number 41 */ 42 #define WLAN_REG_MAX_24GHZ_CH_NUM wlan_reg_max_24ghz_ch_num() 43 uint32_t wlan_reg_max_24ghz_ch_num(void); 44 45 /** 46 * wlan_reg_min_5ghz_ch_num() - Get minimum 5GHz channel number 47 * 48 * Return: Minimum 5GHz channel number 49 */ 50 #define WLAN_REG_MIN_5GHZ_CH_NUM wlan_reg_min_5ghz_ch_num() 51 uint32_t wlan_reg_min_5ghz_ch_num(void); 52 53 /** 54 * wlan_reg_max_5ghz_ch_num() - Get maximum 5GHz channel number 55 * 56 * Return: Maximum 5GHz channel number 57 */ 58 #define WLAN_REG_MAX_5GHZ_CH_NUM wlan_reg_max_5ghz_ch_num() 59 uint32_t wlan_reg_max_5ghz_ch_num(void); 60 61 /** 62 * wlan_reg_is_24ghz_ch() - Check if the given channel number is 2.4GHz 63 * @chan: Channel number 64 * 65 * Return: true if channel number is 2.4GHz, else false 66 */ 67 #define WLAN_REG_IS_24GHZ_CH(chan) wlan_reg_is_24ghz_ch(chan) 68 bool wlan_reg_is_24ghz_ch(uint32_t chan); 69 70 /** 71 * wlan_reg_is_5ghz_ch() - Check if the given channel number is 5GHz 72 * @chan: Channel number 73 * 74 * Return: true if channel number is 5GHz, else false 75 */ 76 #define WLAN_REG_IS_5GHZ_CH(chan) wlan_reg_is_5ghz_ch(chan) 77 bool wlan_reg_is_5ghz_ch(uint32_t chan); 78 79 /** 80 * wlan_reg_is_24ghz_ch_freq() - Check if the given channel frequency is 2.4GHz 81 * @freq: Channel frequency 82 * 83 * Return: true if channel frequency is 2.4GHz, else false 84 */ 85 #define WLAN_REG_IS_24GHZ_CH_FREQ(freq) wlan_reg_is_24ghz_ch_freq(freq) 86 bool wlan_reg_is_24ghz_ch_freq(uint32_t freq); 87 88 /** 89 * wlan_reg_is_5ghz_ch_freq() - Check if the given channel frequency is 5GHz 90 * @freq: Channel frequency 91 * 92 * Return: true if channel frequency is 5GHz, else false 93 */ 94 #define WLAN_REG_IS_5GHZ_CH_FREQ(freq) wlan_reg_is_5ghz_ch_freq(freq) 95 bool wlan_reg_is_5ghz_ch_freq(uint32_t freq); 96 97 #ifndef CONFIG_LEGACY_CHAN_ENUM 98 /** 99 * wlan_reg_is_49ghz_freq() - Check if the given channel frequency is 4.9GHz 100 * @freq: Channel frequency 101 * 102 * Return: true if channel frequency is 4.9GHz, else false 103 */ 104 #define WLAN_REG_IS_49GHZ_FREQ(freq) wlan_reg_is_49ghz_freq(freq) 105 bool wlan_reg_is_49ghz_freq(uint32_t freq); 106 #endif 107 108 /** 109 * wlan_reg_ch_num() - Get channel number from channel enum 110 * @ch_enum: Channel enum 111 * 112 * Return: channel number 113 */ 114 #define WLAN_REG_CH_NUM(ch_enum) wlan_reg_ch_num(ch_enum) 115 uint32_t wlan_reg_ch_num(uint32_t ch_enum); 116 117 /** 118 * wlan_reg_ch_to_freq() - Get channel frequency from channel enum 119 * @ch_enum: Channel enum 120 * 121 * Return: channel frequency 122 */ 123 #define WLAN_REG_CH_TO_FREQ(ch_enum) wlan_reg_ch_to_freq(ch_enum) 124 uint32_t wlan_reg_ch_to_freq(uint32_t ch_enum); 125 126 /** 127 * wlan_reg_is_same_band_channels() - Check if given channel numbers have same 128 * band 129 * @chan_num1: Channel number1 130 * @chan_num2: Channel number2 131 * 132 * Return: true if both the channels has the same band. 133 */ 134 #define WLAN_REG_IS_SAME_BAND_CHANNELS(chan_num1, chan_num2) \ 135 wlan_reg_is_same_band_channels(chan_num1, chan_num2) 136 bool wlan_reg_is_same_band_channels(uint32_t chan_num1, uint32_t chan_num2); 137 138 /** 139 * wlan_reg_is_channel_valid_5g_sbs() Check if the given channel is 5G SBS. 140 * @curchan: current channel 141 * @newchan:new channel 142 * 143 * Return: true if the given channel is a valid 5G SBS 144 */ 145 #define WLAN_REG_IS_CHANNEL_VALID_5G_SBS(curchan, newchan) \ 146 wlan_reg_is_channel_valid_5g_sbs(curchan, newchan) 147 bool wlan_reg_is_channel_valid_5g_sbs(uint32_t curchan, uint32_t newchan); 148 149 #define WLAN_REG_INVALID_CHANNEL_ID 150 #define WLAN_REG_GET_24_END_CHAN_NUM 14 151 152 /** 153 * wlan_reg_chan_to_band() - Get band from channel number 154 * @chan_num: channel number 155 * 156 * Return: band info 157 */ 158 #define WLAN_REG_CHAN_TO_BAND(chan_num) wlan_reg_chan_to_band(chan_num) 159 enum band_info wlan_reg_chan_to_band(uint32_t chan_num); 160 161 /** 162 * wlan_reg_get_channel_list_with_power() - Provide the channel list with power 163 * @ch_list: pointer to the channel list. 164 * 165 * Return: QDF_STATUS 166 */ 167 QDF_STATUS wlan_reg_get_channel_list_with_power(struct wlan_objmgr_pdev *pdev, 168 struct channel_power *ch_list, 169 uint8_t *num_chan); 170 171 /** 172 * wlan_reg_read_default_country() - Read the default country for the regdomain 173 * @country: pointer to the country code. 174 * 175 * Return: QDF_STATUS 176 */ 177 QDF_STATUS wlan_reg_read_default_country(struct wlan_objmgr_psoc *psoc, 178 uint8_t *country); 179 180 #ifdef CONFIG_MCL_REGDB 181 /** 182 * wlan_reg_read_current_country() - Read the current country for the regdomain 183 * @country: pointer to the country code. 184 * 185 * Return: QDF_STATUS 186 */ 187 QDF_STATUS wlan_reg_read_current_country(struct wlan_objmgr_psoc *psoc, 188 uint8_t *country); 189 190 /** 191 * wlan_reg_chan_has_dfs_attribute() - check channel has dfs attribute flag 192 * @ch: channel number. 193 * 194 * This API get chan initial dfs attribute from regdomain 195 * 196 * Return: true if chan is dfs, otherwise false 197 */ 198 bool 199 wlan_reg_chan_has_dfs_attribute(struct wlan_objmgr_pdev *pdev, uint32_t ch); 200 201 /** 202 * wlan_reg_is_etsi13_srd_chan () - Checks if the ch is ETSI13 srd ch or not 203 * @pdev: pdev ptr 204 * @chan_num: channel 205 * 206 * Return: true or false 207 */ 208 bool wlan_reg_is_etsi13_srd_chan(struct wlan_objmgr_pdev *pdev, 209 uint8_t chan_num); 210 211 /** 212 * wlan_reg_is_etsi13_regdmn() - Checks if current reg domain is ETSI13 or not 213 * @pdev: pdev ptr 214 * 215 * Return: true or false 216 */ 217 bool wlan_reg_is_etsi13_regdmn(struct wlan_objmgr_pdev *pdev); 218 219 /** 220 * wlan_reg_is_etsi13_srd_chan_allowed_master_mode() - Checks if regdmn is 221 * ETSI13 and SRD channels are allowed in master mode or not. 222 * 223 * @pdev: pdev ptr 224 * 225 * Return: true or false 226 */ 227 bool wlan_reg_is_etsi13_srd_chan_allowed_master_mode(struct wlan_objmgr_pdev 228 *pdev); 229 #endif 230 231 /** 232 * wlan_reg_is_world() - reg is world mode 233 * @country: The country information 234 * 235 * Return: true or false 236 */ 237 bool wlan_reg_is_world(uint8_t *country); 238 239 /** 240 * wlan_reg_get_chan_enum() - Get channel enum for given channel number 241 * @chan_num: Channel number 242 * 243 * Return: Channel enum 244 */ 245 enum channel_enum wlan_reg_get_chan_enum(uint32_t chan_num); 246 247 /** 248 * wlan_reg_get_channel_state() - Get channel state from regulatory 249 * @ch: channel number. 250 * 251 * Return: channel state 252 */ 253 enum channel_state wlan_reg_get_channel_state(struct wlan_objmgr_pdev *pdev, 254 uint32_t ch); 255 256 /** 257 * wlan_reg_get_5g_bonded_channel_state() - Get 5G bonded channel state 258 * @pdev: The physical dev to program country code or regdomain 259 * @ch: channel number. 260 * @bw: channel band width 261 * 262 * Return: channel state 263 */ 264 enum channel_state wlan_reg_get_5g_bonded_channel_state( 265 struct wlan_objmgr_pdev *pdev, uint8_t ch, 266 enum phy_ch_width bw); 267 268 /** 269 * wlan_reg_get_2g_bonded_channel_state() - Get 2G bonded channel state 270 * @pdev: The physical dev to program country code or regdomain 271 * @ch: channel number. 272 * @sec_ch: Secondary channel. 273 * @bw: channel band width 274 * 275 * Return: channel state 276 */ 277 enum channel_state wlan_reg_get_2g_bonded_channel_state( 278 struct wlan_objmgr_pdev *pdev, uint8_t ch, 279 uint8_t sec_ch, enum phy_ch_width bw); 280 281 /** 282 * wlan_reg_set_channel_params () - Sets channel parameteres for given bandwidth 283 * @pdev: The physical dev to program country code or regdomain 284 * @ch: channel number. 285 * @sec_ch_2g: Secondary channel. 286 * @ch_params: pointer to the channel parameters. 287 * 288 * Return: None 289 */ 290 void wlan_reg_set_channel_params(struct wlan_objmgr_pdev *pdev, uint8_t ch, 291 uint8_t sec_ch_2g, 292 struct ch_params *ch_params); 293 294 /** 295 * wlan_reg_get_dfs_region () - Get the current dfs region 296 * @dfs_reg: pointer to dfs region 297 * 298 * Return: Status 299 */ 300 QDF_STATUS wlan_reg_get_dfs_region(struct wlan_objmgr_pdev *pdev, 301 enum dfs_reg *dfs_reg); 302 303 /** 304 * wlan_reg_get_channel_reg_power() - Provide the channel regulatory power 305 * @chan_num: chennal number 306 * 307 * Return: int 308 */ 309 uint32_t wlan_reg_get_channel_reg_power(struct wlan_objmgr_pdev *pdev, 310 uint32_t chan_num); 311 312 /** 313 * wlan_reg_get_channel_freq() - provide the channel center freq 314 * @chan_num: chennal number 315 * 316 * Return: int 317 */ 318 uint32_t wlan_reg_get_channel_freq(struct wlan_objmgr_pdev *pdev, 319 uint32_t chan_num); 320 321 /** 322 * wlan_reg_get_current_chan_list() - provide the pdev current channel list 323 * @pdev: pdev pointer 324 * @chan_list: channel list pointer 325 * 326 * Return: QDF_STATUS 327 */ 328 QDF_STATUS wlan_reg_get_current_chan_list(struct wlan_objmgr_pdev *pdev, 329 struct regulatory_channel *chan_list); 330 /** 331 * wlan_reg_get_bonded_channel_state() - get bonded channel state 332 * @pdev: pdev ptr 333 * @ch: chennal number 334 * @bw: chennal number 335 * @sec_ch: secondary channel 336 * 337 * Return: enum channel_state 338 */ 339 enum channel_state wlan_reg_get_bonded_channel_state( 340 struct wlan_objmgr_pdev *pdev, uint8_t ch, 341 enum phy_ch_width bw, uint8_t sec_ch); 342 343 /** 344 * wlan_reg_set_dfs_region() - set the dfs region 345 * @pdev: pdev ptr 346 * @dfs_reg: dfs region 347 * 348 * Return: void 349 */ 350 void wlan_reg_set_dfs_region(struct wlan_objmgr_pdev *pdev, 351 enum dfs_reg dfs_reg); 352 353 /** 354 * wlan_reg_get_bw_value() - provide the channel center freq 355 * @chan_num: chennal number 356 * 357 * Return: int 358 */ 359 uint16_t wlan_reg_get_bw_value(enum phy_ch_width bw); 360 361 /** 362 * wlan_reg_get_domain_from_country_code() - provide the channel center freq 363 * @reg_domain_ptr: regulatory domain ptr 364 * @country_alpha2: country alpha2 365 * @source: alpha2 source 366 * 367 * Return: int 368 */ 369 QDF_STATUS wlan_reg_get_domain_from_country_code(v_REGDOMAIN_t *reg_domain_ptr, 370 const uint8_t *country_alpha2, 371 enum country_src source); 372 373 /** 374 * wlan_reg_dmn_get_opclass_from_channel() - provide the channel center freq 375 * @country: country alpha2 376 * @channel: channel number 377 * @offset: offset 378 * 379 * Return: int 380 */ 381 uint16_t wlan_reg_dmn_get_opclass_from_channel(uint8_t *country, 382 uint8_t channel, 383 uint8_t offset); 384 385 /** 386 * wlan_reg_dmn_get_chanwidth_from_opclass() - get channel width from 387 * operating class 388 * @country: country alpha2 389 * @channel: channel number 390 * @opclass: operating class 391 * 392 * Return: int 393 */ 394 uint16_t wlan_reg_dmn_get_chanwidth_from_opclass(uint8_t *country, 395 uint8_t channel, 396 uint8_t opclass); 397 /** 398 * wlan_reg_dmn_set_curr_opclasses() - set operating class 399 * @num_classes: number of classes 400 * @class: operating class 401 * 402 * Return: int 403 */ 404 uint16_t wlan_reg_dmn_set_curr_opclasses(uint8_t num_classes, 405 uint8_t *class); 406 407 /** 408 * wlan_reg_dmn_get_curr_opclasses() - get current oper classes 409 * @num_classes: number of classes 410 * @class: operating class 411 * 412 * Return: int 413 */ 414 uint16_t wlan_reg_dmn_get_curr_opclasses(uint8_t *num_classes, 415 uint8_t *class); 416 417 418 /** 419 * wlan_regulatory_init() - init regulatory component 420 * 421 * Return: Success or Failure 422 */ 423 QDF_STATUS wlan_regulatory_init(void); 424 425 /** 426 * wlan_regulatory_deinit() - deinit regulatory component 427 * 428 * Return: Success or Failure 429 */ 430 QDF_STATUS wlan_regulatory_deinit(void); 431 432 /** 433 * regulatory_psoc_open() - open regulatory component 434 * 435 * Return: Success or Failure 436 */ 437 QDF_STATUS regulatory_psoc_open(struct wlan_objmgr_psoc *psoc); 438 439 440 /** 441 * regulatory_psoc_close() - close regulatory component 442 * 443 * Return: Success or Failure 444 */ 445 QDF_STATUS regulatory_psoc_close(struct wlan_objmgr_psoc *psoc); 446 447 /** 448 * regulatory_pdev_open() - Open regulatory component 449 * @pdev: Pointer to pdev structure. 450 * 451 * Return: Success or Failure 452 */ 453 QDF_STATUS regulatory_pdev_open(struct wlan_objmgr_pdev *pdev); 454 455 /** 456 * regulatory_pdev_close() - Close regulatory component 457 * @pdev: Pointer to pdev structure. 458 * 459 * Return: Success or Failure 460 */ 461 QDF_STATUS regulatory_pdev_close(struct wlan_objmgr_pdev *pdev); 462 463 /** 464 * wlan_reg_update_nol_ch () - set nol channel 465 * @pdev: pdev ptr 466 * @ch_list: channel list to be returned 467 * @num_ch: number of channels 468 * @nol_ch: nol flag 469 * 470 * Return: void 471 */ 472 void wlan_reg_update_nol_ch(struct wlan_objmgr_pdev *pdev, 473 uint8_t *ch_list, 474 uint8_t num_ch, 475 bool nol_ch); 476 477 /** 478 * wlan_reg_is_dfs_ch () - Checks the channel state for DFS 479 * @pdev: pdev ptr 480 * @chan: channel 481 * 482 * Return: true or false 483 */ 484 bool wlan_reg_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan); 485 486 /** 487 * wlan_reg_is_dsrc_chan () - Checks if the channel is dsrc channel or not 488 * @pdev: pdev ptr 489 * @chan_num: channel 490 * 491 * Return: true or false 492 */ 493 bool wlan_reg_is_dsrc_chan(struct wlan_objmgr_pdev *pdev, uint8_t chan_num); 494 495 /** 496 * wlan_reg_is_passive_or_disable_ch () - Checks chan state for passive 497 * and disabled 498 * @pdev: pdev ptr 499 * @chan: channel 500 * 501 * Return: true or false 502 */ 503 bool wlan_reg_is_passive_or_disable_ch(struct wlan_objmgr_pdev *pdev, 504 uint32_t chan); 505 506 /** 507 * wlan_reg_is_disable_ch () - Checks chan state for disabled 508 * @pdev: pdev ptr 509 * @chan: channel 510 * 511 * Return: true or false 512 */ 513 bool wlan_reg_is_disable_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan); 514 515 /** 516 * wlan_reg_freq_to_chan () - convert channel freq to channel number 517 * @pdev: The physical dev to set current country for 518 * @freq: frequency 519 * 520 * Return: true or false 521 */ 522 uint32_t wlan_reg_freq_to_chan(struct wlan_objmgr_pdev *pdev, 523 uint32_t freq); 524 525 /** 526 * wlan_reg_chan_to_freq () - convert channel number to frequency 527 * @chan: channel number 528 * 529 * Return: true or false 530 */ 531 uint32_t wlan_reg_chan_to_freq(struct wlan_objmgr_pdev *pdev, 532 uint32_t chan); 533 534 /** 535 * wlan_reg_is_us() - reg is us country 536 * @country: The country information 537 * 538 * Return: true or false 539 */ 540 bool wlan_reg_is_us(uint8_t *country); 541 542 /** 543 * wlan_reg_chan_is_49ghz() - Check if the input channel number is 4.9GHz 544 * @pdev: Pdev pointer 545 * @chan_num: Input channel number 546 * 547 * Return: true if the channel is 4.9GHz else false. 548 */ 549 550 bool wlan_reg_chan_is_49ghz(struct wlan_objmgr_pdev *pdev, 551 uint8_t chan_num); 552 553 /** 554 * wlan_reg_set_country() - Set the current regulatory country 555 * @pdev: The physical dev to set current country for 556 * @country: The country information to configure 557 * 558 * Return: QDF_STATUS 559 */ 560 QDF_STATUS wlan_reg_set_country(struct wlan_objmgr_pdev *pdev, 561 uint8_t *country); 562 563 /** 564 * wlan_reg_set_11d_country() - Set the 11d regulatory country 565 * @pdev: The physical dev to set current country for 566 * @country: The country information to configure 567 * 568 * Return: QDF_STATUS 569 */ 570 QDF_STATUS wlan_reg_set_11d_country(struct wlan_objmgr_pdev *pdev, 571 uint8_t *country); 572 573 /** 574 * wlan_reg_register_chan_change_callback () - add chan change cbk 575 * @psoc: psoc ptr 576 * @cbk: callback 577 * @arg: argument 578 * 579 * Return: true or false 580 */ 581 void wlan_reg_register_chan_change_callback(struct wlan_objmgr_psoc *psoc, 582 void *cbk, void *arg); 583 584 /** 585 * wlan_reg_unregister_chan_change_callback () - remove chan change cbk 586 * @psoc: psoc ptr 587 * @cbk:callback 588 * 589 * Return: true or false 590 */ 591 void wlan_reg_unregister_chan_change_callback(struct wlan_objmgr_psoc *psoc, 592 void *cbk); 593 594 /** 595 * wlan_reg_is_11d_offloaded() - 11d offloaded supported 596 * @psoc: psoc ptr 597 * 598 * Return: bool 599 */ 600 bool wlan_reg_is_11d_offloaded(struct wlan_objmgr_psoc *psoc); 601 602 /** 603 * wlan_reg_11d_enabled_on_host() - 11d enabled don host 604 * @psoc: psoc ptr 605 * 606 * Return: bool 607 */ 608 bool wlan_reg_11d_enabled_on_host(struct wlan_objmgr_psoc *psoc); 609 610 /** 611 * wlan_reg_get_chip_mode() - get supported chip mode 612 * @pdev: pdev pointer 613 * @chip_mode: chip mode 614 * 615 * Return: QDF STATUS 616 */ 617 QDF_STATUS wlan_reg_get_chip_mode(struct wlan_objmgr_pdev *pdev, 618 uint32_t *chip_mode); 619 620 /** 621 * wlan_reg_is_11d_scan_inprogress() - checks 11d scan status 622 * @psoc: psoc ptr 623 * 624 * Return: bool 625 */ 626 bool wlan_reg_is_11d_scan_inprogress(struct wlan_objmgr_psoc *psoc); 627 /** 628 * wlan_reg_get_freq_range() - Get 2GHz and 5GHz frequency range 629 * @pdev: pdev pointer 630 * @low_2g: low 2GHz frequency range 631 * @high_2g: high 2GHz frequency range 632 * @low_5g: low 5GHz frequency range 633 * @high_5g: high 5GHz frequency range 634 * 635 * Return: QDF status 636 */ 637 QDF_STATUS wlan_reg_get_freq_range(struct wlan_objmgr_pdev *pdev, 638 uint32_t *low_2g, 639 uint32_t *high_2g, 640 uint32_t *low_5g, 641 uint32_t *high_5g); 642 /** 643 * wlan_reg_get_tx_ops () - get regulatory tx ops 644 * @psoc: psoc ptr 645 * 646 */ 647 struct wlan_lmac_if_reg_tx_ops * 648 wlan_reg_get_tx_ops(struct wlan_objmgr_psoc *psoc); 649 650 /** 651 * wlan_reg_get_curr_regdomain() - Get current regdomain in use 652 * @pdev: pdev pointer 653 * @cur_regdmn: Current regdomain info 654 * 655 * Return: QDF status 656 */ 657 QDF_STATUS wlan_reg_get_curr_regdomain(struct wlan_objmgr_pdev *pdev, 658 struct cur_regdmn_info *cur_regdmn); 659 660 /** 661 * wlan_reg_update_nol_history_ch() - Set nol-history flag for the channels in 662 * the list. 663 * 664 * @pdev: Pdev ptr 665 * @ch_list: Input channel list. 666 * @num_ch: Number of channels. 667 * @nol_history_ch: Nol history value. 668 * 669 * Return: void 670 */ 671 void wlan_reg_update_nol_history_ch(struct wlan_objmgr_pdev *pdev, 672 uint8_t *ch_list, 673 uint8_t num_ch, 674 bool nol_history_ch); 675 #endif 676