1 /*
2 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 *
6 * Permission to use, copy, modify, and/or distribute this software for
7 * any purpose with or without fee is hereby granted, provided that the
8 * above copyright notice and this permission notice appear in all
9 * copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
12 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
15 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
16 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
17 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18 * PERFORMANCE OF THIS SOFTWARE.
19 */
20
21 /**
22 * DOC: wlan_req_ucfg_api.c
23 * contains regulatory user config interface definitions
24 */
25
26 #include <wlan_objmgr_vdev_obj.h>
27 #include <wlan_reg_ucfg_api.h>
28 #include <wlan_objmgr_psoc_obj.h>
29 #include <../../core/src/reg_priv_objs.h>
30 #include <../../core/src/reg_utils.h>
31 #include <../../core/src/reg_services_common.h>
32 #include <../../core/src/reg_opclass.h>
33 #include <../../core/src/reg_lte.h>
34 #include <../../core/src/reg_offload_11d_scan.h>
35 #include <../../core/src/reg_build_chan_list.h>
36 #include <../../core/src/reg_callbacks.h>
37 #include <qdf_module.h>
38
ucfg_reg_register_event_handler(uint8_t vdev_id,reg_event_cb cb,void * arg)39 QDF_STATUS ucfg_reg_register_event_handler(uint8_t vdev_id, reg_event_cb cb,
40 void *arg)
41 {
42 /* Register a event cb handler */
43 return QDF_STATUS_SUCCESS;
44 }
45
ucfg_reg_unregister_event_handler(uint8_t vdev_id,reg_event_cb cb,void * arg)46 QDF_STATUS ucfg_reg_unregister_event_handler(uint8_t vdev_id, reg_event_cb cb,
47 void *arg)
48 {
49 /* unregister a event cb handler */
50 return QDF_STATUS_SUCCESS;
51 }
52
ucfg_reg_init_handler(uint8_t pdev_id)53 QDF_STATUS ucfg_reg_init_handler(uint8_t pdev_id)
54 {
55 /* regulatory initialization handler */
56 return QDF_STATUS_SUCCESS;
57 }
58
ucfg_reg_get_current_chan_list(struct wlan_objmgr_pdev * pdev,struct regulatory_channel * chan_list)59 QDF_STATUS ucfg_reg_get_current_chan_list(struct wlan_objmgr_pdev *pdev,
60 struct regulatory_channel *chan_list)
61 {
62 return reg_get_current_chan_list(pdev, chan_list);
63 }
64
65 qdf_export_symbol(ucfg_reg_get_current_chan_list);
66
ucfg_reg_modify_chan_144(struct wlan_objmgr_pdev * pdev,bool enable_ch_144)67 QDF_STATUS ucfg_reg_modify_chan_144(struct wlan_objmgr_pdev *pdev,
68 bool enable_ch_144)
69 {
70 return reg_modify_chan_144(pdev, enable_ch_144);
71 }
72
ucfg_reg_get_en_chan_144(struct wlan_objmgr_pdev * pdev)73 bool ucfg_reg_get_en_chan_144(struct wlan_objmgr_pdev *pdev)
74 {
75 return reg_get_en_chan_144(pdev);
76 }
77
ucfg_reg_set_config_vars(struct wlan_objmgr_psoc * psoc,struct reg_config_vars config_vars)78 QDF_STATUS ucfg_reg_set_config_vars(struct wlan_objmgr_psoc *psoc,
79 struct reg_config_vars config_vars)
80 {
81 return reg_set_config_vars(psoc, config_vars);
82 }
83
ucfg_reg_is_regdb_offloaded(struct wlan_objmgr_psoc * psoc)84 bool ucfg_reg_is_regdb_offloaded(struct wlan_objmgr_psoc *psoc)
85 {
86 return reg_is_regdb_offloaded(psoc);
87 }
88
ucfg_reg_program_mas_chan_list(struct wlan_objmgr_psoc * psoc,struct regulatory_channel * reg_channels,uint8_t * alpha2,enum dfs_reg dfs_region)89 void ucfg_reg_program_mas_chan_list(struct wlan_objmgr_psoc *psoc,
90 struct regulatory_channel *reg_channels,
91 uint8_t *alpha2,
92 enum dfs_reg dfs_region)
93 {
94 reg_program_mas_chan_list(psoc, reg_channels, alpha2, dfs_region);
95 }
96
ucfg_reg_get_regd_rules(struct wlan_objmgr_pdev * pdev,struct reg_rule_info * reg_rules)97 QDF_STATUS ucfg_reg_get_regd_rules(struct wlan_objmgr_pdev *pdev,
98 struct reg_rule_info *reg_rules)
99 {
100 return reg_get_regd_rules(pdev, reg_rules);
101 }
102
103 #ifdef WLAN_REG_PARTIAL_OFFLOAD
ucfg_reg_program_default_cc(struct wlan_objmgr_pdev * pdev,uint16_t regdmn)104 QDF_STATUS ucfg_reg_program_default_cc(struct wlan_objmgr_pdev *pdev,
105 uint16_t regdmn)
106 {
107 return reg_program_default_cc(pdev, regdmn);
108 }
109 #endif
110
ucfg_reg_program_cc(struct wlan_objmgr_pdev * pdev,struct cc_regdmn_s * rd)111 QDF_STATUS ucfg_reg_program_cc(struct wlan_objmgr_pdev *pdev,
112 struct cc_regdmn_s *rd)
113 {
114 return reg_program_chan_list(pdev, rd);
115 }
116
ucfg_reg_get_current_cc(struct wlan_objmgr_pdev * pdev,struct cc_regdmn_s * rd)117 QDF_STATUS ucfg_reg_get_current_cc(struct wlan_objmgr_pdev *pdev,
118 struct cc_regdmn_s *rd)
119 {
120 return reg_get_current_cc(pdev, rd);
121 }
122
123 #ifdef CONFIG_REG_CLIENT
124
ucfg_reg_set_band(struct wlan_objmgr_pdev * pdev,uint32_t band_bitmap)125 QDF_STATUS ucfg_reg_set_band(struct wlan_objmgr_pdev *pdev,
126 uint32_t band_bitmap)
127 {
128 return reg_set_band(pdev, band_bitmap);
129 }
130
ucfg_reg_get_band(struct wlan_objmgr_pdev * pdev,uint32_t * band_bitmap)131 QDF_STATUS ucfg_reg_get_band(struct wlan_objmgr_pdev *pdev,
132 uint32_t *band_bitmap)
133 {
134 return reg_get_band(pdev, band_bitmap);
135 }
136
ucfg_reg_notify_sap_event(struct wlan_objmgr_pdev * pdev,bool sap_state)137 QDF_STATUS ucfg_reg_notify_sap_event(struct wlan_objmgr_pdev *pdev,
138 bool sap_state)
139 {
140 return reg_notify_sap_event(pdev, sap_state);
141 }
142
ucfg_reg_set_fcc_constraint(struct wlan_objmgr_pdev * pdev,bool fcc_constraint)143 QDF_STATUS ucfg_reg_set_fcc_constraint(struct wlan_objmgr_pdev *pdev,
144 bool fcc_constraint)
145 {
146 return reg_set_fcc_constraint(pdev, fcc_constraint);
147 }
148
ucfg_reg_get_current_country(struct wlan_objmgr_psoc * psoc,uint8_t * country_code)149 QDF_STATUS ucfg_reg_get_current_country(struct wlan_objmgr_psoc *psoc,
150 uint8_t *country_code)
151 {
152 return reg_read_current_country(psoc, country_code);
153 }
154
ucfg_reg_set_default_country(struct wlan_objmgr_psoc * psoc,uint8_t * country)155 QDF_STATUS ucfg_reg_set_default_country(struct wlan_objmgr_psoc *psoc,
156 uint8_t *country)
157 {
158 return reg_set_default_country(psoc, country);
159 }
160
ucfg_reg_get_keep_6ghz_sta_cli_connection(struct wlan_objmgr_pdev * pdev)161 bool ucfg_reg_get_keep_6ghz_sta_cli_connection(
162 struct wlan_objmgr_pdev *pdev)
163 {
164 return reg_get_keep_6ghz_sta_cli_connection(pdev);
165 }
166
ucfg_reg_set_keep_6ghz_sta_cli_connection(struct wlan_objmgr_pdev * pdev,bool keep_6ghz_sta_cli_connection)167 QDF_STATUS ucfg_reg_set_keep_6ghz_sta_cli_connection(
168 struct wlan_objmgr_pdev *pdev,
169 bool keep_6ghz_sta_cli_connection)
170 {
171 return reg_set_keep_6ghz_sta_cli_connection(pdev,
172 keep_6ghz_sta_cli_connection);
173 }
174
ucfg_reg_is_user_country_set_allowed(struct wlan_objmgr_psoc * psoc)175 bool ucfg_reg_is_user_country_set_allowed(struct wlan_objmgr_psoc *psoc)
176 {
177 return reg_is_user_country_set_allowed(psoc);
178 }
179
ucfg_reg_is_fcc_constraint_set(struct wlan_objmgr_pdev * pdev)180 bool ucfg_reg_is_fcc_constraint_set(struct wlan_objmgr_pdev *pdev)
181 {
182 return reg_is_fcc_constraint_set(pdev);
183 }
184 #endif
185
ucfg_reg_get_default_country(struct wlan_objmgr_psoc * psoc,uint8_t * country_code)186 QDF_STATUS ucfg_reg_get_default_country(struct wlan_objmgr_psoc *psoc,
187 uint8_t *country_code)
188 {
189 return reg_read_default_country(psoc, country_code);
190 }
191
ucfg_reg_set_country(struct wlan_objmgr_pdev * pdev,uint8_t * country)192 QDF_STATUS ucfg_reg_set_country(struct wlan_objmgr_pdev *pdev,
193 uint8_t *country)
194 {
195 return reg_set_country(pdev, country);
196 }
197
ucfg_reg_reset_country(struct wlan_objmgr_psoc * psoc)198 QDF_STATUS ucfg_reg_reset_country(struct wlan_objmgr_psoc *psoc)
199 {
200 return reg_reset_country(psoc);
201 }
202
ucfg_reg_enable_dfs_channels(struct wlan_objmgr_pdev * pdev,bool dfs_enable)203 QDF_STATUS ucfg_reg_enable_dfs_channels(struct wlan_objmgr_pdev *pdev,
204 bool dfs_enable)
205 {
206 return reg_enable_dfs_channels(pdev, dfs_enable);
207 }
208
ucfg_reg_register_chan_change_callback(struct wlan_objmgr_psoc * psoc,void * cbk,void * arg)209 void ucfg_reg_register_chan_change_callback(struct wlan_objmgr_psoc *psoc,
210 void *cbk, void *arg)
211 {
212 reg_register_chan_change_callback(psoc, (reg_chan_change_callback)cbk,
213 arg);
214 }
215
ucfg_reg_unregister_chan_change_callback(struct wlan_objmgr_psoc * psoc,void * cbk)216 void ucfg_reg_unregister_chan_change_callback(struct wlan_objmgr_psoc *psoc,
217 void *cbk)
218 {
219 reg_unregister_chan_change_callback(psoc,
220 (reg_chan_change_callback)cbk);
221 }
222
223 #ifdef CONFIG_AFC_SUPPORT
ucfg_reg_register_afc_req_rx_callback(struct wlan_objmgr_pdev * pdev,afc_req_rx_evt_handler cbf,void * arg)224 QDF_STATUS ucfg_reg_register_afc_req_rx_callback(struct wlan_objmgr_pdev *pdev,
225 afc_req_rx_evt_handler cbf,
226 void *arg)
227 {
228 return reg_register_afc_req_rx_callback(pdev, cbf, arg);
229 }
230
231 qdf_export_symbol(ucfg_reg_register_afc_req_rx_callback);
232
ucfg_reg_unregister_afc_req_rx_callback(struct wlan_objmgr_pdev * pdev,afc_req_rx_evt_handler cbf)233 QDF_STATUS ucfg_reg_unregister_afc_req_rx_callback(struct wlan_objmgr_pdev *pdev,
234 afc_req_rx_evt_handler cbf)
235 {
236 return reg_unregister_afc_req_rx_callback(pdev, cbf);
237 }
238
239 QDF_STATUS
ucfg_reg_register_afc_power_event_callback(struct wlan_objmgr_pdev * pdev,afc_power_tx_evt_handler cbf,void * arg)240 ucfg_reg_register_afc_power_event_callback(struct wlan_objmgr_pdev *pdev,
241 afc_power_tx_evt_handler cbf,
242 void *arg)
243 {
244 return reg_register_afc_power_event_callback(pdev, cbf, arg);
245 }
246
247 qdf_export_symbol(ucfg_reg_register_afc_power_event_callback);
248
249 QDF_STATUS
ucfg_reg_unregister_afc_power_event_callback(struct wlan_objmgr_pdev * pdev,afc_power_tx_evt_handler cbf)250 ucfg_reg_unregister_afc_power_event_callback(struct wlan_objmgr_pdev *pdev,
251 afc_power_tx_evt_handler cbf)
252 {
253 return reg_unregister_afc_power_event_callback(pdev, cbf);
254 }
255
256 QDF_STATUS
ucfg_reg_register_afc_payload_reset_event_callback(struct wlan_objmgr_pdev * pdev,afc_payload_reset_tx_evt_handler cbf,void * arg)257 ucfg_reg_register_afc_payload_reset_event_callback(
258 struct wlan_objmgr_pdev *pdev,
259 afc_payload_reset_tx_evt_handler cbf,
260 void *arg) {
261 return reg_register_afc_payload_reset_event_callback(pdev, cbf, arg);
262 }
263
264 qdf_export_symbol(ucfg_reg_register_afc_payload_reset_event_callback);
265
ucfg_reg_unregister_afc_payload_reset_event_callback(struct wlan_objmgr_pdev * pdev,afc_payload_reset_tx_evt_handler cbf)266 QDF_STATUS ucfg_reg_unregister_afc_payload_reset_event_callback(
267 struct wlan_objmgr_pdev *pdev,
268 afc_payload_reset_tx_evt_handler cbf)
269 {
270 return reg_unregister_afc_payload_reset_event_callback(pdev, cbf);
271 }
272
ucfg_reg_get_afc_req_info(struct wlan_objmgr_pdev * pdev,struct wlan_afc_host_request ** afc_req,uint64_t req_id)273 QDF_STATUS ucfg_reg_get_afc_req_info(struct wlan_objmgr_pdev *pdev,
274 struct wlan_afc_host_request **afc_req,
275 uint64_t req_id)
276 {
277 QDF_STATUS status;
278
279 status = reg_get_afc_req_info(pdev, afc_req);
280
281 if (status == QDF_STATUS_SUCCESS)
282 reg_dmn_set_afc_req_id(*afc_req, req_id);
283
284 return status;
285 }
286
287 void
ucfg_reg_free_afc_req(struct wlan_objmgr_pdev * pdev,struct wlan_afc_host_request * afc_req)288 ucfg_reg_free_afc_req(struct wlan_objmgr_pdev *pdev,
289 struct wlan_afc_host_request *afc_req)
290 {
291 reg_free_afc_req(pdev, afc_req);
292 }
293 #endif
294
ucfg_reg_get_cc_and_src(struct wlan_objmgr_psoc * psoc,uint8_t * alpha2)295 enum country_src ucfg_reg_get_cc_and_src(struct wlan_objmgr_psoc *psoc,
296 uint8_t *alpha2)
297 {
298 return reg_get_cc_and_src(psoc, alpha2);
299 }
300
ucfg_reg_unit_simulate_ch_avoid(struct wlan_objmgr_psoc * psoc,struct ch_avoid_ind_type * ch_avoid)301 void ucfg_reg_unit_simulate_ch_avoid(struct wlan_objmgr_psoc *psoc,
302 struct ch_avoid_ind_type *ch_avoid)
303 {
304 reg_process_ch_avoid_event(psoc, ch_avoid);
305 }
306
ucfg_reg_ch_avoid(struct wlan_objmgr_psoc * psoc,struct ch_avoid_ind_type * ch_avoid)307 void ucfg_reg_ch_avoid(struct wlan_objmgr_psoc *psoc,
308 struct ch_avoid_ind_type *ch_avoid)
309 {
310 reg_process_ch_avoid_event(psoc, ch_avoid);
311 }
312
313 #ifdef FEATURE_WLAN_CH_AVOID_EXT
ucfg_reg_ch_avoid_ext(struct wlan_objmgr_psoc * psoc,struct ch_avoid_ind_type * ch_avoid)314 void ucfg_reg_ch_avoid_ext(struct wlan_objmgr_psoc *psoc,
315 struct ch_avoid_ind_type *ch_avoid)
316 {
317 reg_process_ch_avoid_ext_event(psoc, ch_avoid);
318 }
319 #endif
320
321 #ifdef TARGET_11D_SCAN
ucfg_reg_11d_vdev_delete_update(struct wlan_objmgr_psoc * psoc,enum QDF_OPMODE op_mode,uint32_t vdev_id)322 QDF_STATUS ucfg_reg_11d_vdev_delete_update(struct wlan_objmgr_psoc *psoc,
323 enum QDF_OPMODE op_mode,
324 uint32_t vdev_id)
325 {
326 return reg_11d_vdev_delete_update(psoc, op_mode, vdev_id);
327 }
328
ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev * vdev)329 QDF_STATUS ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev)
330 {
331 return reg_11d_vdev_created_update(vdev);
332 }
333 #endif
334
ucfg_reg_update_hal_cap_wireless_modes(struct wlan_objmgr_psoc * psoc,uint64_t modes,uint8_t phy_id)335 QDF_STATUS ucfg_reg_update_hal_cap_wireless_modes(struct wlan_objmgr_psoc *psoc,
336 uint64_t modes, uint8_t phy_id)
337 {
338 return reg_update_hal_cap_wireless_modes(psoc, modes, phy_id);
339 }
340
341 qdf_export_symbol(ucfg_reg_update_hal_cap_wireless_modes);
342
ucfg_reg_get_hal_reg_cap(struct wlan_objmgr_psoc * psoc)343 struct wlan_psoc_host_hal_reg_capabilities_ext *ucfg_reg_get_hal_reg_cap(
344 struct wlan_objmgr_psoc *psoc)
345 {
346 return reg_get_hal_reg_cap(psoc);
347 }
348 qdf_export_symbol(ucfg_reg_get_hal_reg_cap);
349
ucfg_reg_set_hal_reg_cap(struct wlan_objmgr_psoc * psoc,struct wlan_psoc_host_hal_reg_capabilities_ext * hal_reg_cap,uint16_t phy_cnt)350 QDF_STATUS ucfg_reg_set_hal_reg_cap(struct wlan_objmgr_psoc *psoc,
351 struct wlan_psoc_host_hal_reg_capabilities_ext *hal_reg_cap,
352 uint16_t phy_cnt)
353
354 {
355 return reg_set_hal_reg_cap(psoc, hal_reg_cap, phy_cnt);
356 }
357 qdf_export_symbol(ucfg_reg_set_hal_reg_cap);
358
ucfg_reg_update_hal_reg_range_caps(struct wlan_objmgr_psoc * psoc,uint32_t low_2g_chan,uint32_t high_2g_chan,uint32_t low_5g_chan,uint32_t high_5g_chan,uint8_t phy_id)359 QDF_STATUS ucfg_reg_update_hal_reg_range_caps(struct wlan_objmgr_psoc *psoc,
360 uint32_t low_2g_chan,
361 uint32_t high_2g_chan,
362 uint32_t low_5g_chan,
363 uint32_t high_5g_chan,
364 uint8_t phy_id)
365 {
366 return reg_update_hal_reg_range_caps(psoc, low_2g_chan,
367 high_2g_chan, low_5g_chan, high_5g_chan,
368 phy_id);
369 }
370
371 qdf_export_symbol(ucfg_reg_update_hal_reg_range_caps);
372
373 #ifdef DISABLE_CHANNEL_LIST
374 #ifdef CONFIG_CHAN_FREQ_API
ucfg_reg_cache_channel_freq_state(struct wlan_objmgr_pdev * pdev,uint32_t * channel_list,uint32_t num_channels)375 void ucfg_reg_cache_channel_freq_state(struct wlan_objmgr_pdev *pdev,
376 uint32_t *channel_list,
377 uint32_t num_channels)
378 {
379 reg_cache_channel_freq_state(pdev, channel_list, num_channels);
380 }
381 #endif /* CONFIG_CHAN_FREQ_API */
382
ucfg_reg_restore_cached_channels(struct wlan_objmgr_pdev * pdev)383 void ucfg_reg_restore_cached_channels(struct wlan_objmgr_pdev *pdev)
384 {
385 reg_restore_cached_channels(pdev);
386 }
387
ucfg_reg_disable_cached_channels(struct wlan_objmgr_pdev * pdev)388 void ucfg_reg_disable_cached_channels(struct wlan_objmgr_pdev *pdev)
389 {
390 reg_disable_cached_channels(pdev);
391 }
392
393 #endif
394
ucfg_set_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc * psoc)395 QDF_STATUS ucfg_set_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc)
396 {
397 return reg_set_ignore_fw_reg_offload_ind(psoc);
398 }
399
400 #ifdef DISABLE_UNII_SHARED_BANDS
401 QDF_STATUS
ucfg_reg_get_unii_5g_bitmap(struct wlan_objmgr_pdev * pdev,uint8_t * bitmap)402 ucfg_reg_get_unii_5g_bitmap(struct wlan_objmgr_pdev *pdev, uint8_t *bitmap)
403 {
404 return reg_get_unii_5g_bitmap(pdev, bitmap);
405 }
406 #endif
407
408 #if defined(CONFIG_BAND_6GHZ)
409 QDF_STATUS
ucfg_reg_set_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev * pdev,enum reg_6g_ap_type reg_cur_6g_ap_pwr_type)410 ucfg_reg_set_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev,
411 enum reg_6g_ap_type reg_cur_6g_ap_pwr_type)
412 {
413 return reg_set_cur_6g_ap_pwr_type(pdev, reg_cur_6g_ap_pwr_type);
414 }
415
416 QDF_STATUS
ucfg_reg_get_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev * pdev,enum reg_6g_ap_type * reg_cur_6g_ap_pwr_type)417 ucfg_reg_get_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev,
418 enum reg_6g_ap_type *reg_cur_6g_ap_pwr_type)
419 {
420 return reg_get_cur_6g_ap_pwr_type(pdev, reg_cur_6g_ap_pwr_type);
421 }
422
423 qdf_export_symbol(ucfg_reg_get_cur_6g_ap_pwr_type);
424 #endif
425
426 #if defined(CONFIG_AFC_SUPPORT) && defined(CONFIG_BAND_6GHZ)
ucfg_reg_get_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc * psoc)427 bool ucfg_reg_get_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc *psoc)
428 {
429 return reg_get_enable_6ghz_sp_mode_support(psoc);
430 }
431
432 qdf_export_symbol(ucfg_reg_get_enable_6ghz_sp_mode_support);
433
ucfg_reg_set_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc * psoc,bool value)434 void ucfg_reg_set_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc *psoc,
435 bool value)
436 {
437 reg_set_enable_6ghz_sp_mode_support(psoc, value);
438 }
439
440 qdf_export_symbol(ucfg_reg_set_enable_6ghz_sp_mode_support);
441
ucfg_reg_get_afc_disable_timer_check(struct wlan_objmgr_psoc * psoc)442 bool ucfg_reg_get_afc_disable_timer_check(struct wlan_objmgr_psoc *psoc)
443 {
444 return reg_get_afc_disable_timer_check(psoc);
445 }
446
447 qdf_export_symbol(ucfg_reg_get_afc_disable_timer_check);
448
ucfg_reg_set_afc_disable_timer_check(struct wlan_objmgr_psoc * psoc,bool value)449 void ucfg_reg_set_afc_disable_timer_check(struct wlan_objmgr_psoc *psoc,
450 bool value)
451 {
452 reg_set_afc_disable_timer_check(psoc, value);
453 }
454
455 qdf_export_symbol(ucfg_reg_set_afc_disable_timer_check);
456
ucfg_reg_get_afc_disable_request_id_check(struct wlan_objmgr_psoc * psoc)457 bool ucfg_reg_get_afc_disable_request_id_check(struct wlan_objmgr_psoc *psoc)
458 {
459 return reg_get_afc_disable_request_id_check(psoc);
460 }
461
462 qdf_export_symbol(ucfg_reg_get_afc_disable_request_id_check);
463
ucfg_reg_set_afc_disable_request_id_check(struct wlan_objmgr_psoc * psoc,bool value)464 void ucfg_reg_set_afc_disable_request_id_check(struct wlan_objmgr_psoc *psoc,
465 bool value)
466 {
467 reg_set_afc_disable_request_id_check(psoc, value);
468 }
469
470 qdf_export_symbol(ucfg_reg_set_afc_disable_request_id_check);
471
ucfg_reg_get_afc_no_action(struct wlan_objmgr_psoc * psoc)472 bool ucfg_reg_get_afc_no_action(struct wlan_objmgr_psoc *psoc)
473 {
474 return reg_get_afc_noaction(psoc);
475 }
476
477 qdf_export_symbol(ucfg_reg_get_afc_no_action);
478
ucfg_reg_set_afc_no_action(struct wlan_objmgr_psoc * psoc,bool value)479 void ucfg_reg_set_afc_no_action(struct wlan_objmgr_psoc *psoc, bool value)
480 {
481 reg_set_afc_noaction(psoc, value);
482 }
483
484 qdf_export_symbol(ucfg_reg_set_afc_no_action);
485 #endif
486
487 #if defined(CONFIG_AFC_SUPPORT) && defined(CONFIG_BAND_6GHZ)
488 QDF_STATUS
ucfg_reg_send_afc_resp_rx_ind(struct wlan_objmgr_pdev * pdev,struct reg_afc_resp_rx_ind_info * afc_ind_obj)489 ucfg_reg_send_afc_resp_rx_ind(struct wlan_objmgr_pdev *pdev,
490 struct reg_afc_resp_rx_ind_info *afc_ind_obj)
491 {
492 return reg_send_afc_cmd(pdev, afc_ind_obj);
493 }
494
495 QDF_STATUS
ucfg_reg_afc_start(struct wlan_objmgr_pdev * pdev,uint64_t req_id)496 ucfg_reg_afc_start(struct wlan_objmgr_pdev *pdev, uint64_t req_id)
497 {
498 return reg_afc_start(pdev, req_id);
499 }
500 #endif
501
502 #ifndef CONFIG_REG_CLIENT
ucfg_reg_enable_disable_opclass_chans(struct wlan_objmgr_pdev * pdev,bool is_disable,uint8_t opclass,uint8_t * ieee_chan_list,uint8_t chan_list_size,bool global_tbl_lookup)503 QDF_STATUS ucfg_reg_enable_disable_opclass_chans(struct wlan_objmgr_pdev *pdev,
504 bool is_disable,
505 uint8_t opclass,
506 uint8_t *ieee_chan_list,
507 uint8_t chan_list_size,
508 bool global_tbl_lookup)
509 {
510 return reg_enable_disable_opclass_chans(pdev, is_disable, opclass,
511 ieee_chan_list, chan_list_size,
512 global_tbl_lookup);
513 }
514 #endif
515