xref: /wlan-driver/qca-wifi-host-cmn/umac/regulatory/dispatcher/inc/wlan_reg_ucfg_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  *
6*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
7*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
8*5113495bSYour Name  * above copyright notice and this permission notice appear in all
9*5113495bSYour Name  * copies.
10*5113495bSYour Name  *
11*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
12*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
15*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
16*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
17*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
19*5113495bSYour Name  */
20*5113495bSYour Name 
21*5113495bSYour Name /**
22*5113495bSYour Name  * DOC: wlan_reg_ucfg_api.h
23*5113495bSYour Name  * This file provides prototypes of the regulatory component user
24*5113495bSYour Name  * config interface routines
25*5113495bSYour Name  */
26*5113495bSYour Name 
27*5113495bSYour Name #ifndef __WLAN_REG_UCFG_API_H
28*5113495bSYour Name #define __WLAN_REG_UCFG_API_H
29*5113495bSYour Name 
30*5113495bSYour Name #ifdef CONFIG_AFC_SUPPORT
31*5113495bSYour Name #include <wlan_reg_afc.h>
32*5113495bSYour Name #endif
33*5113495bSYour Name #include <reg_services_public_struct.h>
34*5113495bSYour Name 
35*5113495bSYour Name typedef QDF_STATUS (*reg_event_cb)(void *status_struct);
36*5113495bSYour Name 
37*5113495bSYour Name /**
38*5113495bSYour Name  * ucfg_reg_set_band() - Sets the band information for the PDEV
39*5113495bSYour Name  * @pdev: The physical pdev to set the band for
40*5113495bSYour Name  * @band_bitmap: The band bitmap parameter (over reg_wifi_band) to configure
41*5113495bSYour Name  *	for the physical device
42*5113495bSYour Name  *
43*5113495bSYour Name  * Return: QDF_STATUS
44*5113495bSYour Name  */
45*5113495bSYour Name QDF_STATUS ucfg_reg_set_band(struct wlan_objmgr_pdev *pdev,
46*5113495bSYour Name 			     uint32_t band_bitmap);
47*5113495bSYour Name 
48*5113495bSYour Name /**
49*5113495bSYour Name  * ucfg_reg_get_band() - Gets the band information for the PDEV
50*5113495bSYour Name  * @pdev: The physical pdev to get the band for
51*5113495bSYour Name  * @band_bitmap: The band parameter of the physical device
52*5113495bSYour Name  *
53*5113495bSYour Name  * Return: QDF_STATUS
54*5113495bSYour Name  */
55*5113495bSYour Name QDF_STATUS ucfg_reg_get_band(struct wlan_objmgr_pdev *pdev,
56*5113495bSYour Name 			     uint32_t *band_bitmap);
57*5113495bSYour Name 
58*5113495bSYour Name /**
59*5113495bSYour Name  * ucfg_reg_notify_sap_event() - Notify regulatory domain for sap event
60*5113495bSYour Name  * @pdev: The physical dev to notify
61*5113495bSYour Name  * @sap_state: true for sap start else false
62*5113495bSYour Name  *
63*5113495bSYour Name  * Return: QDF_STATUS
64*5113495bSYour Name  */
65*5113495bSYour Name QDF_STATUS ucfg_reg_notify_sap_event(struct wlan_objmgr_pdev *pdev,
66*5113495bSYour Name 				     bool sap_state);
67*5113495bSYour Name 
68*5113495bSYour Name /**
69*5113495bSYour Name  * ucfg_reg_cache_channel_freq_state() - Cache the current state of the
70*5113495bSYour Name  * channels based on the channel center frequency.
71*5113495bSYour Name  * @pdev: Pointer to pdev.
72*5113495bSYour Name  * @channel_list: List of the channels for which states need to be cached.
73*5113495bSYour Name  * @num_channels: Number of channels in the list.
74*5113495bSYour Name  *
75*5113495bSYour Name  * Return: QDF_STATUS
76*5113495bSYour Name  */
77*5113495bSYour Name #if defined(DISABLE_CHANNEL_LIST) && defined(CONFIG_CHAN_FREQ_API)
78*5113495bSYour Name void ucfg_reg_cache_channel_freq_state(struct wlan_objmgr_pdev *pdev,
79*5113495bSYour Name 				       uint32_t *channel_list,
80*5113495bSYour Name 				       uint32_t num_channels);
81*5113495bSYour Name #else
82*5113495bSYour Name static inline
ucfg_reg_cache_channel_freq_state(struct wlan_objmgr_pdev * pdev,uint32_t * channel_list,uint32_t num_channels)83*5113495bSYour Name void ucfg_reg_cache_channel_freq_state(struct wlan_objmgr_pdev *pdev,
84*5113495bSYour Name 				       uint32_t *channel_list,
85*5113495bSYour Name 				       uint32_t num_channels)
86*5113495bSYour Name {
87*5113495bSYour Name }
88*5113495bSYour Name #endif /* CONFIG_CHAN_FREQ_API */
89*5113495bSYour Name 
90*5113495bSYour Name #ifdef DISABLE_CHANNEL_LIST
91*5113495bSYour Name /**
92*5113495bSYour Name  * ucfg_reg_disable_cached_channels() - Disable cached channels
93*5113495bSYour Name  * @pdev: The physical dev to cache the channels for
94*5113495bSYour Name  *
95*5113495bSYour Name  * Return: Void
96*5113495bSYour Name  */
97*5113495bSYour Name void ucfg_reg_disable_cached_channels(struct wlan_objmgr_pdev *pdev);
98*5113495bSYour Name 
99*5113495bSYour Name /**
100*5113495bSYour Name  * ucfg_reg_restore_cached_channels() - Restore disabled cached channels
101*5113495bSYour Name  * @pdev: The physical dev to cache the channels for
102*5113495bSYour Name  *
103*5113495bSYour Name  * Return: Void
104*5113495bSYour Name  */
105*5113495bSYour Name void ucfg_reg_restore_cached_channels(struct wlan_objmgr_pdev *pdev);
106*5113495bSYour Name #else
107*5113495bSYour Name static inline
ucfg_reg_disable_cached_channels(struct wlan_objmgr_pdev * pdev)108*5113495bSYour Name void ucfg_reg_disable_cached_channels(struct wlan_objmgr_pdev *pdev)
109*5113495bSYour Name {
110*5113495bSYour Name }
111*5113495bSYour Name 
112*5113495bSYour Name static inline
ucfg_reg_restore_cached_channels(struct wlan_objmgr_pdev * pdev)113*5113495bSYour Name void ucfg_reg_restore_cached_channels(struct wlan_objmgr_pdev *pdev)
114*5113495bSYour Name {
115*5113495bSYour Name }
116*5113495bSYour Name #endif
117*5113495bSYour Name 
118*5113495bSYour Name /**
119*5113495bSYour Name  * ucfg_reg_get_keep_6ghz_sta_cli_connection() - Get keep 6ghz sta cli
120*5113495bSYour Name  *                                               connection flag
121*5113495bSYour Name  * @pdev: The physical pdev to get keep_6ghz_sta_cli_connection
122*5113495bSYour Name  *
123*5113495bSYour Name  * Return: Return true if keep 6ghz sta cli connection set else return flase
124*5113495bSYour Name  */
125*5113495bSYour Name bool ucfg_reg_get_keep_6ghz_sta_cli_connection(
126*5113495bSYour Name 					struct wlan_objmgr_pdev *pdev);
127*5113495bSYour Name 
128*5113495bSYour Name /**
129*5113495bSYour Name  * ucfg_reg_set_keep_6ghz_sta_cli_connection() - Set keep 6ghz sta cli
130*5113495bSYour Name  *                                               connection flag
131*5113495bSYour Name  * @pdev: The physical pdev to get keep_6ghz_sta_cli_connection
132*5113495bSYour Name  * @keep_6ghz_sta_cli_connection: Parameter to set
133*5113495bSYour Name  *
134*5113495bSYour Name  * Return: QDF_STATUS
135*5113495bSYour Name  */
136*5113495bSYour Name 
137*5113495bSYour Name QDF_STATUS ucfg_reg_set_keep_6ghz_sta_cli_connection(
138*5113495bSYour Name 					struct wlan_objmgr_pdev *pdev,
139*5113495bSYour Name 					bool keep_6ghz_sta_cli_connection);
140*5113495bSYour Name /**
141*5113495bSYour Name  * ucfg_reg_set_fcc_constraint() - apply fcc constraints on channels 12/13
142*5113495bSYour Name  * @pdev: The physical pdev to reduce tx power for
143*5113495bSYour Name  * @fcc_constraint: true to apply the constraint, false to remove it
144*5113495bSYour Name  *
145*5113495bSYour Name  * This function adjusts the transmit power on channels 12 and 13, to comply
146*5113495bSYour Name  * with FCC regulations in the USA.
147*5113495bSYour Name  *
148*5113495bSYour Name  * Return: QDF_STATUS
149*5113495bSYour Name  */
150*5113495bSYour Name QDF_STATUS ucfg_reg_set_fcc_constraint(struct wlan_objmgr_pdev *pdev,
151*5113495bSYour Name 				       bool fcc_constraint);
152*5113495bSYour Name 
153*5113495bSYour Name /**
154*5113495bSYour Name  * ucfg_reg_get_default_country() - Get the default regulatory country
155*5113495bSYour Name  * @psoc: The physical SoC to get default country from
156*5113495bSYour Name  * @country_code: the buffer to populate the country code into
157*5113495bSYour Name  *
158*5113495bSYour Name  * Return: QDF_STATUS
159*5113495bSYour Name  */
160*5113495bSYour Name QDF_STATUS ucfg_reg_get_default_country(struct wlan_objmgr_psoc *psoc,
161*5113495bSYour Name 					uint8_t *country_code);
162*5113495bSYour Name 
163*5113495bSYour Name /**
164*5113495bSYour Name  * ucfg_reg_get_current_country() - Get the current regulatory country
165*5113495bSYour Name  * @psoc: The physical SoC to get current country from
166*5113495bSYour Name  * @country_code: the buffer to populate the country code into
167*5113495bSYour Name  *
168*5113495bSYour Name  * Return: QDF_STATUS
169*5113495bSYour Name  */
170*5113495bSYour Name QDF_STATUS ucfg_reg_get_current_country(struct wlan_objmgr_psoc *psoc,
171*5113495bSYour Name 					uint8_t *country_code);
172*5113495bSYour Name 
173*5113495bSYour Name /**
174*5113495bSYour Name  * ucfg_reg_set_default_country() - Set the default regulatory country
175*5113495bSYour Name  * @psoc: The physical SoC to set default country for
176*5113495bSYour Name  * @country: The country information to configure
177*5113495bSYour Name  *
178*5113495bSYour Name  * Return: QDF_STATUS
179*5113495bSYour Name  */
180*5113495bSYour Name QDF_STATUS ucfg_reg_set_default_country(struct wlan_objmgr_psoc *psoc,
181*5113495bSYour Name 					       uint8_t *country);
182*5113495bSYour Name 
183*5113495bSYour Name /**
184*5113495bSYour Name  * ucfg_reg_set_country() - Set the current regulatory country
185*5113495bSYour Name  * @pdev: The physical dev to set current country for
186*5113495bSYour Name  * @country: The country information to configure
187*5113495bSYour Name  *
188*5113495bSYour Name  * Return: QDF_STATUS
189*5113495bSYour Name  */
190*5113495bSYour Name QDF_STATUS ucfg_reg_set_country(struct wlan_objmgr_pdev *pdev,
191*5113495bSYour Name 				uint8_t *country);
192*5113495bSYour Name 
193*5113495bSYour Name /**
194*5113495bSYour Name  * ucfg_reg_reset_country() - Reset the regulatory country to default
195*5113495bSYour Name  * @psoc: The physical SoC to reset country for
196*5113495bSYour Name  *
197*5113495bSYour Name  * Return: QDF_STATUS
198*5113495bSYour Name  */
199*5113495bSYour Name QDF_STATUS ucfg_reg_reset_country(struct wlan_objmgr_psoc *psoc);
200*5113495bSYour Name 
201*5113495bSYour Name /**
202*5113495bSYour Name  * ucfg_reg_enable_dfs_channels() - Enable the use of DFS channels
203*5113495bSYour Name  * @pdev: The physical dev to enable DFS channels for
204*5113495bSYour Name  * @dfs_enable: true to enable DFS channels, false to disable them
205*5113495bSYour Name  *
206*5113495bSYour Name  * Return: QDF_STATUS
207*5113495bSYour Name  */
208*5113495bSYour Name QDF_STATUS ucfg_reg_enable_dfs_channels(struct wlan_objmgr_pdev *pdev,
209*5113495bSYour Name 					bool dfs_enable);
210*5113495bSYour Name 
211*5113495bSYour Name QDF_STATUS ucfg_reg_register_event_handler(uint8_t vdev_id, reg_event_cb cb,
212*5113495bSYour Name 		void *arg);
213*5113495bSYour Name QDF_STATUS ucfg_reg_unregister_event_handler(uint8_t vdev_id, reg_event_cb cb,
214*5113495bSYour Name 		void *arg);
215*5113495bSYour Name QDF_STATUS ucfg_reg_init_handler(uint8_t pdev_id);
216*5113495bSYour Name 
217*5113495bSYour Name #ifdef WLAN_REG_PARTIAL_OFFLOAD
218*5113495bSYour Name /**
219*5113495bSYour Name  * ucfg_reg_program_default_cc() - Program default country code
220*5113495bSYour Name  * @pdev: Pdev pointer
221*5113495bSYour Name  * @regdmn: Regdomain value
222*5113495bSYour Name  *
223*5113495bSYour Name  * Return: QDF_STATUS
224*5113495bSYour Name  */
225*5113495bSYour Name QDF_STATUS ucfg_reg_program_default_cc(struct wlan_objmgr_pdev *pdev,
226*5113495bSYour Name 				       uint16_t regdmn);
227*5113495bSYour Name #endif
228*5113495bSYour Name 
229*5113495bSYour Name /**
230*5113495bSYour Name  * ucfg_reg_program_cc() - Program user country code or regdomain
231*5113495bSYour Name  * @pdev: The physical dev to program country code or regdomain
232*5113495bSYour Name  * @rd: User country code or regdomain
233*5113495bSYour Name  *
234*5113495bSYour Name  * Return: QDF_STATUS
235*5113495bSYour Name  */
236*5113495bSYour Name QDF_STATUS ucfg_reg_program_cc(struct wlan_objmgr_pdev *pdev,
237*5113495bSYour Name 			       struct cc_regdmn_s *rd);
238*5113495bSYour Name 
239*5113495bSYour Name /**
240*5113495bSYour Name  * ucfg_reg_get_current_cc() - get current country code or regdomain
241*5113495bSYour Name  * @pdev: The physical dev to program country code or regdomain
242*5113495bSYour Name  * @rd: Pointer to country code or regdomain
243*5113495bSYour Name  *
244*5113495bSYour Name  * Return: QDF_STATUS
245*5113495bSYour Name  */
246*5113495bSYour Name QDF_STATUS ucfg_reg_get_current_cc(struct wlan_objmgr_pdev *pdev,
247*5113495bSYour Name 				   struct cc_regdmn_s *rd);
248*5113495bSYour Name 
249*5113495bSYour Name /**
250*5113495bSYour Name  * ucfg_reg_set_config_vars () - Set the config vars in reg component
251*5113495bSYour Name  * @psoc: psoc ptr
252*5113495bSYour Name  * @config_vars: config variables structure
253*5113495bSYour Name  *
254*5113495bSYour Name  * Return: QDF_STATUS
255*5113495bSYour Name  */
256*5113495bSYour Name QDF_STATUS ucfg_reg_set_config_vars(struct wlan_objmgr_psoc *psoc,
257*5113495bSYour Name 				    struct reg_config_vars config_vars);
258*5113495bSYour Name 
259*5113495bSYour Name /**
260*5113495bSYour Name  * ucfg_reg_get_current_chan_list () - get current channel list
261*5113495bSYour Name  * @pdev: pdev ptr
262*5113495bSYour Name  * @chan_list: channel list
263*5113495bSYour Name  *
264*5113495bSYour Name  * Return: QDF_STATUS
265*5113495bSYour Name  */
266*5113495bSYour Name QDF_STATUS ucfg_reg_get_current_chan_list(struct wlan_objmgr_pdev *pdev,
267*5113495bSYour Name 				    struct regulatory_channel *chan_list);
268*5113495bSYour Name 
269*5113495bSYour Name /**
270*5113495bSYour Name  * ucfg_reg_modify_chan_144() - Enable/Disable channel 144
271*5113495bSYour Name  * @pdev: pdev pointer
272*5113495bSYour Name  * @enable_ch_144: flag to disable/enable channel 144
273*5113495bSYour Name  *
274*5113495bSYour Name  * Return: Success or Failure
275*5113495bSYour Name  */
276*5113495bSYour Name QDF_STATUS ucfg_reg_modify_chan_144(struct wlan_objmgr_pdev *pdev,
277*5113495bSYour Name 				    bool enable_ch_144);
278*5113495bSYour Name 
279*5113495bSYour Name /**
280*5113495bSYour Name  * ucfg_reg_get_en_chan_144() - get en_chan_144 flag value
281*5113495bSYour Name  * @pdev: pdev pointer
282*5113495bSYour Name  *
283*5113495bSYour Name  * Return: en_chan_144 flag value
284*5113495bSYour Name  */
285*5113495bSYour Name bool ucfg_reg_get_en_chan_144(struct wlan_objmgr_pdev *pdev);
286*5113495bSYour Name 
287*5113495bSYour Name /**
288*5113495bSYour Name  * ucfg_reg_is_regdb_offloaded () - is regulatory database offloaded
289*5113495bSYour Name  * @psoc: psoc ptr
290*5113495bSYour Name  *
291*5113495bSYour Name  * Return: bool
292*5113495bSYour Name  */
293*5113495bSYour Name bool ucfg_reg_is_regdb_offloaded(struct wlan_objmgr_psoc *psoc);
294*5113495bSYour Name 
295*5113495bSYour Name /**
296*5113495bSYour Name  * ucfg_reg_program_mas_chan_list () - program master channel list
297*5113495bSYour Name  * @psoc: psoc ptr
298*5113495bSYour Name  * @reg_channels: regulatory channels
299*5113495bSYour Name  * @alpha2: country code
300*5113495bSYour Name  * @dfs_region: dfs region
301*5113495bSYour Name  *
302*5113495bSYour Name  * Return: void
303*5113495bSYour Name  */
304*5113495bSYour Name void ucfg_reg_program_mas_chan_list(struct wlan_objmgr_psoc *psoc,
305*5113495bSYour Name 				    struct regulatory_channel *reg_channels,
306*5113495bSYour Name 				    uint8_t *alpha2,
307*5113495bSYour Name 				    enum dfs_reg dfs_region);
308*5113495bSYour Name 
309*5113495bSYour Name /**
310*5113495bSYour Name  * ucfg_reg_get_regd_rules() - provides the reg domain rules info pointer
311*5113495bSYour Name  * @pdev: pdev ptr
312*5113495bSYour Name  * @reg_rules: regulatory rules
313*5113495bSYour Name  *
314*5113495bSYour Name  * Return: QDF_STATUS
315*5113495bSYour Name  */
316*5113495bSYour Name QDF_STATUS ucfg_reg_get_regd_rules(struct wlan_objmgr_pdev *pdev,
317*5113495bSYour Name 				   struct reg_rule_info *reg_rules);
318*5113495bSYour Name 
319*5113495bSYour Name /**
320*5113495bSYour Name  * ucfg_reg_register_chan_change_callback () - add chan change cbk
321*5113495bSYour Name  * @psoc: psoc ptr
322*5113495bSYour Name  * @cbk: callback
323*5113495bSYour Name  * @arg: argument
324*5113495bSYour Name  *
325*5113495bSYour Name  * Return: void
326*5113495bSYour Name  */
327*5113495bSYour Name void ucfg_reg_register_chan_change_callback(struct wlan_objmgr_psoc *psoc,
328*5113495bSYour Name 					    void *cbk, void *arg);
329*5113495bSYour Name 
330*5113495bSYour Name /**
331*5113495bSYour Name  * ucfg_reg_unregister_chan_change_callback () - remove chan change cbk
332*5113495bSYour Name  * @psoc: psoc ptr
333*5113495bSYour Name  * @cbk: callback
334*5113495bSYour Name  *
335*5113495bSYour Name  * Return: void
336*5113495bSYour Name  */
337*5113495bSYour Name void ucfg_reg_unregister_chan_change_callback(struct wlan_objmgr_psoc *psoc,
338*5113495bSYour Name 					      void *cbk);
339*5113495bSYour Name 
340*5113495bSYour Name #ifdef CONFIG_AFC_SUPPORT
341*5113495bSYour Name /**
342*5113495bSYour Name  * ucfg_reg_register_afc_req_rx_callback () - add AFC request received callback
343*5113495bSYour Name  * @pdev: Pointer to pdev
344*5113495bSYour Name  * @cbf: Pointer to callback function
345*5113495bSYour Name  * @arg: Pointer to opaque argument
346*5113495bSYour Name  *
347*5113495bSYour Name  * Return: QDF_STATUS
348*5113495bSYour Name  */
349*5113495bSYour Name QDF_STATUS ucfg_reg_register_afc_req_rx_callback(struct wlan_objmgr_pdev *pdev,
350*5113495bSYour Name 						 afc_req_rx_evt_handler cbf,
351*5113495bSYour Name 						 void *arg);
352*5113495bSYour Name 
353*5113495bSYour Name /**
354*5113495bSYour Name  * ucfg_reg_unregister_afc_req_rx_callback () - remove AFC request received
355*5113495bSYour Name  * callback
356*5113495bSYour Name  * @pdev: Pointer to pdev
357*5113495bSYour Name  * @cbf: Pointer to callback function
358*5113495bSYour Name  *
359*5113495bSYour Name  * Return: QDF_STATUS
360*5113495bSYour Name  */
361*5113495bSYour Name QDF_STATUS ucfg_reg_unregister_afc_req_rx_callback(struct wlan_objmgr_pdev *pdev,
362*5113495bSYour Name 						   afc_req_rx_evt_handler cbf);
363*5113495bSYour Name 
364*5113495bSYour Name /**
365*5113495bSYour Name  * ucfg_reg_get_afc_req_info() - Get the the frequency ranges and
366*5113495bSYour Name  * opclass + channel ranges. This is partial because in the AFC request there
367*5113495bSYour Name  * are a few more parameters: Longitude, Latitude a few other information
368*5113495bSYour Name  * @pdev: Pointer to PDEV object.
369*5113495bSYour Name  * @afc_req: Address of AFC request pointer.
370*5113495bSYour Name  * @req_id: AFC request ID.
371*5113495bSYour Name  *
372*5113495bSYour Name  * Return: QDF_STATUS_E_INVAL if unable to set and QDF_STATUS_SUCCESS is set.
373*5113495bSYour Name  */
374*5113495bSYour Name QDF_STATUS ucfg_reg_get_afc_req_info(struct wlan_objmgr_pdev *pdev,
375*5113495bSYour Name 				     struct wlan_afc_host_request **afc_req,
376*5113495bSYour Name 				     uint64_t req_id);
377*5113495bSYour Name 
378*5113495bSYour Name /**
379*5113495bSYour Name  * ucfg_reg_free_afc_req() - Free the  memory allocated for AFC request
380*5113495bSYour Name  * structure and its members.
381*5113495bSYour Name  * @pdev: Pointer to pdev.
382*5113495bSYour Name  * @afc_req: Pointer to AFC request structure.
383*5113495bSYour Name  *
384*5113495bSYour Name  * Return: void
385*5113495bSYour Name  */
386*5113495bSYour Name void
387*5113495bSYour Name ucfg_reg_free_afc_req(struct wlan_objmgr_pdev *pdev,
388*5113495bSYour Name 		      struct wlan_afc_host_request *afc_req);
389*5113495bSYour Name 
390*5113495bSYour Name /**
391*5113495bSYour Name  * ucfg_reg_register_afc_power_event_callback() - add AFC power event received
392*5113495bSYour Name  * @pdev: Pointer to pdev
393*5113495bSYour Name  * @cbf: Pointer to callback function
394*5113495bSYour Name  * @arg: Pointer to opaque argument
395*5113495bSYour Name  *
396*5113495bSYour Name  * Return: QDF_STATUS
397*5113495bSYour Name  */
398*5113495bSYour Name QDF_STATUS
399*5113495bSYour Name ucfg_reg_register_afc_power_event_callback(struct wlan_objmgr_pdev *pdev,
400*5113495bSYour Name 					   afc_power_tx_evt_handler cbf,
401*5113495bSYour Name 					   void *arg);
402*5113495bSYour Name 
403*5113495bSYour Name /**
404*5113495bSYour Name  * ucfg_reg_unregister_afc_power_event_callback() - remove AFC power event
405*5113495bSYour Name  * received callback
406*5113495bSYour Name  * @pdev: Pointer to pdev
407*5113495bSYour Name  * @cbf: Pointer to callback function
408*5113495bSYour Name  *
409*5113495bSYour Name  * Return: QDF_STATUS
410*5113495bSYour Name  */
411*5113495bSYour Name QDF_STATUS
412*5113495bSYour Name ucfg_reg_unregister_afc_power_event_callback(struct wlan_objmgr_pdev *pdev,
413*5113495bSYour Name 					     afc_power_tx_evt_handler cbf);
414*5113495bSYour Name 
415*5113495bSYour Name /**
416*5113495bSYour Name  * ucfg_reg_register_afc_payload_reset_event_callback() - Add AFC payload reset
417*5113495bSYour Name  * event received callback
418*5113495bSYour Name  * @pdev: Pointer to pdev
419*5113495bSYour Name  * @cbf: Pointer to callback function
420*5113495bSYour Name  * @arg: Pointer to opaque argument
421*5113495bSYour Name  *
422*5113495bSYour Name  * Return: QDF_STATUS
423*5113495bSYour Name  */
424*5113495bSYour Name QDF_STATUS ucfg_reg_register_afc_payload_reset_event_callback(
425*5113495bSYour Name 		struct wlan_objmgr_pdev *pdev,
426*5113495bSYour Name 		afc_payload_reset_tx_evt_handler cbf,
427*5113495bSYour Name 		void *arg);
428*5113495bSYour Name 
429*5113495bSYour Name /**
430*5113495bSYour Name  * ucfg_reg_unregister_afc_payload_reset_event_callback() - Remove AFC payload
431*5113495bSYour Name  * reset event received callback
432*5113495bSYour Name  * @pdev: Pointer to pdev
433*5113495bSYour Name  * @cbf: Pointer to callback function
434*5113495bSYour Name  *
435*5113495bSYour Name  * Return: QDF_STATUS
436*5113495bSYour Name  */
437*5113495bSYour Name QDF_STATUS ucfg_reg_unregister_afc_payload_reset_event_callback(
438*5113495bSYour Name 		struct wlan_objmgr_pdev *pdev,
439*5113495bSYour Name 		afc_payload_reset_tx_evt_handler cbf);
440*5113495bSYour Name #endif
441*5113495bSYour Name 
442*5113495bSYour Name /**
443*5113495bSYour Name  * ucfg_reg_get_cc_and_src () - get country code and src
444*5113495bSYour Name  * @psoc: psoc ptr
445*5113495bSYour Name  * @alpha2: country code alpha2
446*5113495bSYour Name  *
447*5113495bSYour Name  * Return: void
448*5113495bSYour Name  */
449*5113495bSYour Name enum country_src ucfg_reg_get_cc_and_src(struct wlan_objmgr_psoc *psoc,
450*5113495bSYour Name 					 uint8_t *alpha2);
451*5113495bSYour Name 
452*5113495bSYour Name /**
453*5113495bSYour Name  * ucfg_reg_unit_simulate_ch_avoid () - fake a ch avoid event
454*5113495bSYour Name  * @psoc: psoc ptr
455*5113495bSYour Name  * @ch_avoid: ch_avoid_ind_type ranges
456*5113495bSYour Name  *
457*5113495bSYour Name  * This function inject a ch_avoid event for unit test sap chan switch.
458*5113495bSYour Name  *
459*5113495bSYour Name  * Return: void
460*5113495bSYour Name  */
461*5113495bSYour Name void ucfg_reg_unit_simulate_ch_avoid(struct wlan_objmgr_psoc *psoc,
462*5113495bSYour Name 	struct ch_avoid_ind_type *ch_avoid);
463*5113495bSYour Name 
464*5113495bSYour Name /**
465*5113495bSYour Name  * ucfg_reg_ch_avoid () - Send channel avoid cmd to regulatory
466*5113495bSYour Name  * @psoc: psoc ptr
467*5113495bSYour Name  * @ch_avoid: ch_avoid_ind_type ranges
468*5113495bSYour Name  *
469*5113495bSYour Name  * This function send channel avoid cmd to regulatory from os_if/upper layer
470*5113495bSYour Name  *
471*5113495bSYour Name  * Return: void
472*5113495bSYour Name  */
473*5113495bSYour Name void ucfg_reg_ch_avoid(struct wlan_objmgr_psoc *psoc,
474*5113495bSYour Name 		       struct ch_avoid_ind_type *ch_avoid);
475*5113495bSYour Name 
476*5113495bSYour Name #ifdef FEATURE_WLAN_CH_AVOID_EXT
477*5113495bSYour Name /**
478*5113495bSYour Name  * ucfg_reg_ch_avoid_ext () - Send channel avoid extend cmd to regulatory
479*5113495bSYour Name  * @psoc: psoc ptr
480*5113495bSYour Name  * @ch_avoid: ch_avoid_ind_type ranges
481*5113495bSYour Name  *
482*5113495bSYour Name  * This function send channel avoid extend cmd to regulatory from
483*5113495bSYour Name  * os_if/upper layer
484*5113495bSYour Name  *
485*5113495bSYour Name  * Return: void
486*5113495bSYour Name  */
487*5113495bSYour Name void ucfg_reg_ch_avoid_ext(struct wlan_objmgr_psoc *psoc,
488*5113495bSYour Name 			   struct ch_avoid_ind_type *ch_avoid);
489*5113495bSYour Name #endif
490*5113495bSYour Name 
491*5113495bSYour Name #if defined(CONFIG_BAND_6GHZ) && defined(CONFIG_AFC_SUPPORT)
492*5113495bSYour Name /**
493*5113495bSYour Name  * ucfg_reg_get_enable_6ghz_sp_mode_support() - Get enable 6 GHz SP mode support
494*5113495bSYour Name  * @psoc: psoc ptr
495*5113495bSYour Name  *
496*5113495bSYour Name  * Return: enable 6 GHz SP mode support flag
497*5113495bSYour Name  */
498*5113495bSYour Name bool ucfg_reg_get_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc *psoc);
499*5113495bSYour Name 
500*5113495bSYour Name /**
501*5113495bSYour Name  * ucfg_reg_set_enable_6ghz_sp_mode_support() - Set enable 6 GHz SP mode support
502*5113495bSYour Name  * @psoc: psoc ptr
503*5113495bSYour Name  * @value: value to be set
504*5113495bSYour Name  *
505*5113495bSYour Name  * Return: None
506*5113495bSYour Name  */
507*5113495bSYour Name void ucfg_reg_set_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc *psoc,
508*5113495bSYour Name 					      bool value);
509*5113495bSYour Name 
510*5113495bSYour Name /**
511*5113495bSYour Name  * ucfg_reg_get_afc_disable_timer_check() - Get AFC timer check disable flag
512*5113495bSYour Name  * @psoc: psoc ptr
513*5113495bSYour Name  *
514*5113495bSYour Name  * Return: AFC timer check disable flag
515*5113495bSYour Name  */
516*5113495bSYour Name bool ucfg_reg_get_afc_disable_timer_check(struct wlan_objmgr_psoc *psoc);
517*5113495bSYour Name 
518*5113495bSYour Name /**
519*5113495bSYour Name  * ucfg_reg_set_afc_disable_timer_check() - Set AFC timer check disable flag
520*5113495bSYour Name  * @psoc: psoc ptr
521*5113495bSYour Name  * @value: value to be set
522*5113495bSYour Name  *
523*5113495bSYour Name  * Return: None
524*5113495bSYour Name  */
525*5113495bSYour Name void ucfg_reg_set_afc_disable_timer_check(struct wlan_objmgr_psoc *psoc,
526*5113495bSYour Name 					  bool value);
527*5113495bSYour Name 
528*5113495bSYour Name /**
529*5113495bSYour Name  * ucfg_reg_get_afc_disable_request_id_check() - Get AFC request id check flag
530*5113495bSYour Name  * @psoc: psoc ptr
531*5113495bSYour Name  *
532*5113495bSYour Name  * Return: AFC request id check disable flag
533*5113495bSYour Name  */
534*5113495bSYour Name bool ucfg_reg_get_afc_disable_request_id_check(struct wlan_objmgr_psoc *psoc);
535*5113495bSYour Name 
536*5113495bSYour Name /**
537*5113495bSYour Name  * ucfg_reg_set_afc_disable_request_id_check() - Set AFC request id check flag
538*5113495bSYour Name  * @psoc: psoc ptr
539*5113495bSYour Name  * @value: value to be set
540*5113495bSYour Name  *
541*5113495bSYour Name  * Return: None
542*5113495bSYour Name  */
543*5113495bSYour Name void ucfg_reg_set_afc_disable_request_id_check(struct wlan_objmgr_psoc *psoc,
544*5113495bSYour Name 					       bool value);
545*5113495bSYour Name 
546*5113495bSYour Name /**
547*5113495bSYour Name  * ucfg_reg_get_afc_no_action() - Get AFC no action flag
548*5113495bSYour Name  * @psoc: psoc ptr
549*5113495bSYour Name  *
550*5113495bSYour Name  * Return: AFC no action flag
551*5113495bSYour Name  */
552*5113495bSYour Name bool ucfg_reg_get_afc_no_action(struct wlan_objmgr_psoc *psoc);
553*5113495bSYour Name 
554*5113495bSYour Name /**
555*5113495bSYour Name  * ucfg_reg_set_afc_no_action() - Set AFC no action flag
556*5113495bSYour Name  * @psoc: psoc ptr
557*5113495bSYour Name  * @value: value to be set
558*5113495bSYour Name  *
559*5113495bSYour Name  * Return: None
560*5113495bSYour Name  */
561*5113495bSYour Name void ucfg_reg_set_afc_no_action(struct wlan_objmgr_psoc *psoc, bool value);
562*5113495bSYour Name #else
563*5113495bSYour Name static inline
ucfg_reg_get_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc * psoc)564*5113495bSYour Name bool ucfg_reg_get_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc *psoc)
565*5113495bSYour Name {
566*5113495bSYour Name 	return false;
567*5113495bSYour Name }
568*5113495bSYour Name 
569*5113495bSYour Name static inline
ucfg_reg_set_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc * psoc,bool value)570*5113495bSYour Name void ucfg_reg_set_enable_6ghz_sp_mode_support(struct wlan_objmgr_psoc *psoc,
571*5113495bSYour Name 					      bool value)
572*5113495bSYour Name {
573*5113495bSYour Name }
574*5113495bSYour Name 
575*5113495bSYour Name static inline
ucfg_reg_get_afc_disable_timer_check(struct wlan_objmgr_psoc * psoc)576*5113495bSYour Name bool ucfg_reg_get_afc_disable_timer_check(struct wlan_objmgr_psoc *psoc)
577*5113495bSYour Name {
578*5113495bSYour Name 	return false;
579*5113495bSYour Name }
580*5113495bSYour Name 
581*5113495bSYour Name static inline
ucfg_reg_set_afc_disable_timer_check(struct wlan_objmgr_psoc * psoc,bool value)582*5113495bSYour Name void ucfg_reg_set_afc_disable_timer_check(struct wlan_objmgr_psoc *psoc,
583*5113495bSYour Name 					  bool value)
584*5113495bSYour Name {
585*5113495bSYour Name }
586*5113495bSYour Name 
587*5113495bSYour Name static inline
ucfg_reg_get_afc_disable_request_id_check(struct wlan_objmgr_psoc * psoc)588*5113495bSYour Name bool ucfg_reg_get_afc_disable_request_id_check(struct wlan_objmgr_psoc *psoc)
589*5113495bSYour Name {
590*5113495bSYour Name 	return false;
591*5113495bSYour Name }
592*5113495bSYour Name 
593*5113495bSYour Name static inline
ucfg_reg_set_afc_disable_request_id_check(struct wlan_objmgr_psoc * psoc,bool value)594*5113495bSYour Name void ucfg_reg_set_afc_disable_request_id_check(struct wlan_objmgr_psoc *psoc,
595*5113495bSYour Name 					       bool value)
596*5113495bSYour Name {
597*5113495bSYour Name }
598*5113495bSYour Name 
599*5113495bSYour Name static inline
ucfg_reg_get_afc_no_action(struct wlan_objmgr_psoc * psoc)600*5113495bSYour Name bool ucfg_reg_get_afc_no_action(struct wlan_objmgr_psoc *psoc)
601*5113495bSYour Name {
602*5113495bSYour Name 	return false;
603*5113495bSYour Name }
604*5113495bSYour Name 
605*5113495bSYour Name static inline
ucfg_reg_set_afc_no_action(struct wlan_objmgr_psoc * psoc,bool value)606*5113495bSYour Name void ucfg_reg_set_afc_no_action(struct wlan_objmgr_psoc *psoc, bool value)
607*5113495bSYour Name {
608*5113495bSYour Name }
609*5113495bSYour Name #endif
610*5113495bSYour Name 
611*5113495bSYour Name #ifdef TARGET_11D_SCAN
612*5113495bSYour Name /**
613*5113495bSYour Name  * ucfg_reg_11d_vdev_delete_update() - update vdev delete to regulatory
614*5113495bSYour Name  * @psoc: psoc pointer
615*5113495bSYour Name  * @op_mode: Operating mode of the deleted vdev
616*5113495bSYour Name  * @vdev_id: Vdev id of the deleted vdev
617*5113495bSYour Name  *
618*5113495bSYour Name  * Return: QDF_STATUS
619*5113495bSYour Name  */
620*5113495bSYour Name QDF_STATUS ucfg_reg_11d_vdev_delete_update(struct wlan_objmgr_psoc *psoc,
621*5113495bSYour Name 					   enum QDF_OPMODE op_mode,
622*5113495bSYour Name 					   uint32_t vdev_id);
623*5113495bSYour Name 
624*5113495bSYour Name /**
625*5113495bSYour Name  * ucfg_reg_11d_vdev_created_update() - update vdev create to regulatory
626*5113495bSYour Name  * @vdev: vdev ptr
627*5113495bSYour Name  *
628*5113495bSYour Name  * Return: QDF_STATUS
629*5113495bSYour Name  */
630*5113495bSYour Name QDF_STATUS ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev);
631*5113495bSYour Name #else
632*5113495bSYour Name static inline
ucfg_reg_11d_vdev_delete_update(struct wlan_objmgr_psoc * psoc,enum QDF_OPMODE op_mode,uint32_t vdev_id)633*5113495bSYour Name QDF_STATUS ucfg_reg_11d_vdev_delete_update(struct wlan_objmgr_psoc *psoc,
634*5113495bSYour Name 					   enum QDF_OPMODE op_mode,
635*5113495bSYour Name 					   uint32_t vdev_id)
636*5113495bSYour Name {
637*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
638*5113495bSYour Name }
639*5113495bSYour Name 
640*5113495bSYour Name static inline
ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev * vdev)641*5113495bSYour Name QDF_STATUS ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev)
642*5113495bSYour Name {
643*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
644*5113495bSYour Name }
645*5113495bSYour Name #endif
646*5113495bSYour Name 
647*5113495bSYour Name /**
648*5113495bSYour Name  * ucfg_reg_update_hal_cap_wireless_modes() - update wireless modes
649*5113495bSYour Name  * @psoc: psoc ptr
650*5113495bSYour Name  * @modes: value of modes to update
651*5113495bSYour Name  * @phy_id: phy id
652*5113495bSYour Name  *
653*5113495bSYour Name  * Return: QDF_STATUS
654*5113495bSYour Name  */
655*5113495bSYour Name QDF_STATUS ucfg_reg_update_hal_cap_wireless_modes(struct wlan_objmgr_psoc *psoc,
656*5113495bSYour Name 					       uint64_t modes, uint8_t phy_id);
657*5113495bSYour Name 
658*5113495bSYour Name /**
659*5113495bSYour Name  * ucfg_reg_get_hal_reg_cap() - return hal reg cap
660*5113495bSYour Name  * @psoc: psoc ptr
661*5113495bSYour Name  *
662*5113495bSYour Name  * Return: ptr to  wlan_psoc_host_hal_reg_capabilities_ext
663*5113495bSYour Name  */
664*5113495bSYour Name struct wlan_psoc_host_hal_reg_capabilities_ext *ucfg_reg_get_hal_reg_cap(
665*5113495bSYour Name 				struct wlan_objmgr_psoc *psoc);
666*5113495bSYour Name 
667*5113495bSYour Name /**
668*5113495bSYour Name  * ucfg_reg_set_hal_reg_cap() - update hal reg cap
669*5113495bSYour Name  * @psoc: psoc ptr
670*5113495bSYour Name  * @reg_cap: Regulatory cap array
671*5113495bSYour Name  * @phy_cnt: Number of phy
672*5113495bSYour Name  *
673*5113495bSYour Name  * Return: QDF_STATUS
674*5113495bSYour Name  */
675*5113495bSYour Name QDF_STATUS ucfg_reg_set_hal_reg_cap(struct wlan_objmgr_psoc *psoc,
676*5113495bSYour Name 			struct wlan_psoc_host_hal_reg_capabilities_ext *reg_cap,
677*5113495bSYour Name 			uint16_t phy_cnt);
678*5113495bSYour Name 
679*5113495bSYour Name /**
680*5113495bSYour Name  * ucfg_reg_update_hal_reg_range_caps() - update hal reg frequency range fields
681*5113495bSYour Name  * @psoc: psoc ptr
682*5113495bSYour Name  * @low_2g_chan: low 2g channel
683*5113495bSYour Name  * @high_2g_chan: high 2g channel
684*5113495bSYour Name  * @low_5g_chan: low 5g channel
685*5113495bSYour Name  * @high_5g_chan: high 2g channel
686*5113495bSYour Name  * @phy_id: phy id
687*5113495bSYour Name  *
688*5113495bSYour Name  * Return: QDF_STATUS
689*5113495bSYour Name  */
690*5113495bSYour Name QDF_STATUS ucfg_reg_update_hal_reg_range_caps(struct wlan_objmgr_psoc *psoc,
691*5113495bSYour Name 					      uint32_t low_2g_chan,
692*5113495bSYour Name 					      uint32_t high_2g_chan,
693*5113495bSYour Name 					      uint32_t low_5g_chan,
694*5113495bSYour Name 					      uint32_t high_5g_chan,
695*5113495bSYour Name 					      uint8_t phy_id);
696*5113495bSYour Name 
697*5113495bSYour Name /**
698*5113495bSYour Name  * ucfg_set_ignore_fw_reg_offload_ind() - API to set ignore regdb offload ind
699*5113495bSYour Name  * @psoc: psoc ptr
700*5113495bSYour Name  *
701*5113495bSYour Name  * Return: QDF_STATUS
702*5113495bSYour Name  */
703*5113495bSYour Name QDF_STATUS ucfg_set_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc);
704*5113495bSYour Name 
705*5113495bSYour Name /**
706*5113495bSYour Name  * ucfg_reg_get_unii_5g_bitmap() - get unii_5g_bitmap value
707*5113495bSYour Name  * @pdev: pdev pointer
708*5113495bSYour Name  * @bitmap: Pointer to retrieve unii_5g_bitmap of enum reg_unii_band.
709*5113495bSYour Name  *
710*5113495bSYour Name  * Return: QDF_STATUS
711*5113495bSYour Name  */
712*5113495bSYour Name #ifdef DISABLE_UNII_SHARED_BANDS
713*5113495bSYour Name QDF_STATUS
714*5113495bSYour Name ucfg_reg_get_unii_5g_bitmap(struct wlan_objmgr_pdev *pdev, uint8_t *bitmap);
715*5113495bSYour Name #else
716*5113495bSYour Name static inline QDF_STATUS
ucfg_reg_get_unii_5g_bitmap(struct wlan_objmgr_pdev * pdev,uint8_t * bitmap)717*5113495bSYour Name ucfg_reg_get_unii_5g_bitmap(struct wlan_objmgr_pdev *pdev, uint8_t *bitmap)
718*5113495bSYour Name {
719*5113495bSYour Name 	*bitmap = 0;
720*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
721*5113495bSYour Name }
722*5113495bSYour Name #endif
723*5113495bSYour Name 
724*5113495bSYour Name #if defined(CONFIG_BAND_6GHZ)
725*5113495bSYour Name /**
726*5113495bSYour Name  * ucfg_reg_get_cur_6g_ap_pwr_type() - Get the current 6G regulatory AP power
727*5113495bSYour Name  * type.
728*5113495bSYour Name  * @pdev: Pointer to PDEV object.
729*5113495bSYour Name  * @reg_cur_6g_ap_pwr_type: The current regulatory 6G AP type ie VLPI/LPI/SP.
730*5113495bSYour Name  *
731*5113495bSYour Name  * Return: QDF_STATUS.
732*5113495bSYour Name  */
733*5113495bSYour Name QDF_STATUS
734*5113495bSYour Name ucfg_reg_get_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev,
735*5113495bSYour Name 				enum reg_6g_ap_type *reg_cur_6g_ap_pwr_type);
736*5113495bSYour Name 
737*5113495bSYour Name /**
738*5113495bSYour Name  * ucfg_reg_set_cur_6g_ap_pwr_type() - Set the current 6G regulatory AP power
739*5113495bSYour Name  * type.
740*5113495bSYour Name  * @pdev: Pointer to PDEV object.
741*5113495bSYour Name  * @reg_cur_6g_ap_pwr_type: Regulatory 6G AP type ie VLPI/LPI/SP.
742*5113495bSYour Name  *
743*5113495bSYour Name  * Return: QDF_STATUS_E_INVAL if unable to set and QDF_STATUS_SUCCESS is set.
744*5113495bSYour Name  */
745*5113495bSYour Name QDF_STATUS
746*5113495bSYour Name ucfg_reg_set_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev,
747*5113495bSYour Name 				enum reg_6g_ap_type reg_cur_6g_ap_pwr_type);
748*5113495bSYour Name #else
749*5113495bSYour Name static inline 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)750*5113495bSYour Name ucfg_reg_get_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev,
751*5113495bSYour Name 				enum reg_6g_ap_type *reg_cur_6g_ap_pwr_type)
752*5113495bSYour Name {
753*5113495bSYour Name 	*reg_cur_6g_ap_pwr_type = REG_INDOOR_AP;
754*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
755*5113495bSYour Name }
756*5113495bSYour Name 
757*5113495bSYour Name static inline QDF_STATUS
ucfg_reg_set_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev * pdev,enum reg_6g_ap_type reg_cur_6g_ap_type)758*5113495bSYour Name ucfg_reg_set_cur_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev,
759*5113495bSYour Name 				enum reg_6g_ap_type reg_cur_6g_ap_type)
760*5113495bSYour Name {
761*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
762*5113495bSYour Name }
763*5113495bSYour Name #endif
764*5113495bSYour Name 
765*5113495bSYour Name #if defined(CONFIG_AFC_SUPPORT) && defined(CONFIG_BAND_6GHZ)
766*5113495bSYour Name /**
767*5113495bSYour Name  * ucfg_reg_send_afc_resp_rx_ind() - Send AFC response received indication to
768*5113495bSYour Name  * the FW.
769*5113495bSYour Name  * @pdev: pdev ptr
770*5113495bSYour Name  * @afc_ind_obj: Pointer to hold AFC indication
771*5113495bSYour Name  *
772*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if the WMI command is sent or QDF_STATUS_E_FAILURE
773*5113495bSYour Name  * otherwise
774*5113495bSYour Name  */
775*5113495bSYour Name QDF_STATUS
776*5113495bSYour Name ucfg_reg_send_afc_resp_rx_ind(struct wlan_objmgr_pdev *pdev,
777*5113495bSYour Name 			      struct reg_afc_resp_rx_ind_info *afc_ind_obj);
778*5113495bSYour Name 
779*5113495bSYour Name /**
780*5113495bSYour Name  * ucfg_reg_afc_start() - Start the AFC request from regulatory. This finally
781*5113495bSYour Name  *                   sends the request to registered callbacks
782*5113495bSYour Name  * @pdev: Pointer to pdev
783*5113495bSYour Name  * @req_id: The AFC request ID
784*5113495bSYour Name  *
785*5113495bSYour Name  * Return: QDF_STATUS
786*5113495bSYour Name  */
787*5113495bSYour Name QDF_STATUS ucfg_reg_afc_start(struct wlan_objmgr_pdev *pdev, uint64_t req_id);
788*5113495bSYour Name #endif
789*5113495bSYour Name 
790*5113495bSYour Name #ifndef CONFIG_REG_CLIENT
791*5113495bSYour Name /**
792*5113495bSYour Name  * ucfg_reg_enable_disable_opclass_chans() - Disable or enable the input 20 MHz
793*5113495bSYour Name  * operating channels in the radio's current channel list.
794*5113495bSYour Name  * @pdev: Pointer to pdev
795*5113495bSYour Name  * @is_disable: Boolean to disable or enable the channels
796*5113495bSYour Name  * @opclass: Operating class. Only 20MHz opclasses are supported.
797*5113495bSYour Name  * @ieee_chan_list: Pointer to ieee_chan_list
798*5113495bSYour Name  * @chan_list_size: Size of ieee_chan_list
799*5113495bSYour Name  * @global_tbl_lookup: Whether to lookup global op class table
800*5113495bSYour Name  *
801*5113495bSYour Name  * Return - Return QDF_STATUS
802*5113495bSYour Name  */
803*5113495bSYour Name QDF_STATUS ucfg_reg_enable_disable_opclass_chans(struct wlan_objmgr_pdev *pdev,
804*5113495bSYour Name 						 bool is_disable,
805*5113495bSYour Name 						 uint8_t opclass,
806*5113495bSYour Name 						 uint8_t *ieee_chan_list,
807*5113495bSYour Name 						 uint8_t chan_list_size,
808*5113495bSYour Name 						 bool global_tbl_lookup);
809*5113495bSYour Name 
810*5113495bSYour Name static inline
ucfg_reg_is_user_country_set_allowed(struct wlan_objmgr_psoc * psoc)811*5113495bSYour Name bool ucfg_reg_is_user_country_set_allowed(struct wlan_objmgr_psoc *psoc)
812*5113495bSYour Name {
813*5113495bSYour Name 	return true;
814*5113495bSYour Name }
815*5113495bSYour Name 
816*5113495bSYour Name static inline
ucfg_reg_is_fcc_constraint_set(struct wlan_objmgr_pdev * pdev)817*5113495bSYour Name bool ucfg_reg_is_fcc_constraint_set(struct wlan_objmgr_pdev *pdev)
818*5113495bSYour Name {
819*5113495bSYour Name 	return false;
820*5113495bSYour Name }
821*5113495bSYour Name 
822*5113495bSYour Name #else
823*5113495bSYour Name static inline QDF_STATUS
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)824*5113495bSYour Name ucfg_reg_enable_disable_opclass_chans(struct wlan_objmgr_pdev *pdev,
825*5113495bSYour Name 				      bool is_disable,
826*5113495bSYour Name 				      uint8_t opclass,
827*5113495bSYour Name 				      uint8_t *ieee_chan_list,
828*5113495bSYour Name 				      uint8_t chan_list_size,
829*5113495bSYour Name 				      bool global_tbl_lookup)
830*5113495bSYour Name {
831*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
832*5113495bSYour Name }
833*5113495bSYour Name 
834*5113495bSYour Name /**
835*5113495bSYour Name  * ucfg_reg_is_user_country_set_allowed() - Checks whether user country is
836*5113495bSYour Name  * allowed to set
837*5113495bSYour Name  * @psoc: psoc ptr
838*5113495bSYour Name  *
839*5113495bSYour Name  * Return: bool
840*5113495bSYour Name  */
841*5113495bSYour Name bool ucfg_reg_is_user_country_set_allowed(struct wlan_objmgr_psoc *psoc);
842*5113495bSYour Name 
843*5113495bSYour Name /**
844*5113495bSYour Name  * ucfg_reg_is_fcc_constraint_set() - Check if fcc constraint is set
845*5113495bSYour Name  * @pdev: pointer to pdev
846*5113495bSYour Name  *
847*5113495bSYour Name  * Return: Return true if fcc constraint is set
848*5113495bSYour Name  */
849*5113495bSYour Name bool ucfg_reg_is_fcc_constraint_set(struct wlan_objmgr_pdev *pdev);
850*5113495bSYour Name #endif
851*5113495bSYour Name #endif
852