1*5113495bSYour Name /*
2*5113495bSYour Name * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name *
5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name * above copyright notice and this permission notice appear in all
8*5113495bSYour Name * copies.
9*5113495bSYour Name *
10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name */
19*5113495bSYour Name
20*5113495bSYour Name /**
21*5113495bSYour Name * DOC: Implement API's specific to Regulatory component.
22*5113495bSYour Name */
23*5113495bSYour Name
24*5113495bSYour Name #include <qdf_status.h>
25*5113495bSYour Name #include <qdf_module.h>
26*5113495bSYour Name #include <wmi_unified_api.h>
27*5113495bSYour Name #include <wmi_unified_priv.h>
28*5113495bSYour Name #include <wmi_unified_reg_api.h>
29*5113495bSYour Name
wmi_extract_reg_chan_list_update_event(wmi_unified_t wmi_handle,uint8_t * evt_buf,struct cur_regulatory_info * reg_info,uint32_t len)30*5113495bSYour Name QDF_STATUS wmi_extract_reg_chan_list_update_event(
31*5113495bSYour Name wmi_unified_t wmi_handle,
32*5113495bSYour Name uint8_t *evt_buf,
33*5113495bSYour Name struct cur_regulatory_info *reg_info,
34*5113495bSYour Name uint32_t len)
35*5113495bSYour Name {
36*5113495bSYour Name if (wmi_handle && wmi_handle->ops->extract_reg_chan_list_update_event)
37*5113495bSYour Name return wmi_handle->ops->extract_reg_chan_list_update_event
38*5113495bSYour Name (wmi_handle,
39*5113495bSYour Name evt_buf, reg_info, len);
40*5113495bSYour Name
41*5113495bSYour Name return QDF_STATUS_E_FAILURE;
42*5113495bSYour Name }
43*5113495bSYour Name qdf_export_symbol(wmi_extract_reg_chan_list_update_event);
44*5113495bSYour Name
45*5113495bSYour Name #ifdef CONFIG_BAND_6GHZ
wmi_extract_reg_chan_list_ext_update_event(wmi_unified_t wmi_handle,uint8_t * evt_buf,struct cur_regulatory_info * reg_info,uint32_t len)46*5113495bSYour Name QDF_STATUS wmi_extract_reg_chan_list_ext_update_event(
47*5113495bSYour Name wmi_unified_t wmi_handle,
48*5113495bSYour Name uint8_t *evt_buf,
49*5113495bSYour Name struct cur_regulatory_info *reg_info,
50*5113495bSYour Name uint32_t len)
51*5113495bSYour Name {
52*5113495bSYour Name if (wmi_handle &&
53*5113495bSYour Name wmi_handle->ops->extract_reg_chan_list_ext_update_event)
54*5113495bSYour Name return wmi_handle->ops->extract_reg_chan_list_ext_update_event
55*5113495bSYour Name (wmi_handle, evt_buf, reg_info, len);
56*5113495bSYour Name
57*5113495bSYour Name return QDF_STATUS_E_FAILURE;
58*5113495bSYour Name }
59*5113495bSYour Name
60*5113495bSYour Name qdf_export_symbol(wmi_extract_reg_chan_list_ext_update_event);
61*5113495bSYour Name
62*5113495bSYour Name #ifdef CONFIG_AFC_SUPPORT
wmi_extract_afc_event(wmi_unified_t wmi_handle,uint8_t * evt_buf,struct afc_regulatory_info * afc_info,uint32_t len)63*5113495bSYour Name QDF_STATUS wmi_extract_afc_event(wmi_unified_t wmi_handle,
64*5113495bSYour Name uint8_t *evt_buf,
65*5113495bSYour Name struct afc_regulatory_info *afc_info,
66*5113495bSYour Name uint32_t len)
67*5113495bSYour Name {
68*5113495bSYour Name if (wmi_handle &&
69*5113495bSYour Name wmi_handle->ops->extract_afc_event)
70*5113495bSYour Name return wmi_handle->ops->extract_afc_event(wmi_handle, evt_buf,
71*5113495bSYour Name afc_info, len);
72*5113495bSYour Name
73*5113495bSYour Name return QDF_STATUS_E_FAILURE;
74*5113495bSYour Name }
75*5113495bSYour Name
76*5113495bSYour Name qdf_export_symbol(wmi_extract_afc_event);
77*5113495bSYour Name #endif
78*5113495bSYour Name #endif
79*5113495bSYour Name
80*5113495bSYour Name /*
81*5113495bSYour Name * wmi_unified_send_start_11d_scan_cmd() - start 11d scan
82*5113495bSYour Name * @wmi_handle: wmi handle
83*5113495bSYour Name * @start_11d_scan: pointer to 11d scan start req.
84*5113495bSYour Name *
85*5113495bSYour Name * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
86*5113495bSYour Name */
wmi_unified_send_start_11d_scan_cmd(wmi_unified_t wmi_handle,struct reg_start_11d_scan_req * start_11d_scan)87*5113495bSYour Name QDF_STATUS wmi_unified_send_start_11d_scan_cmd(wmi_unified_t wmi_handle,
88*5113495bSYour Name struct reg_start_11d_scan_req *start_11d_scan)
89*5113495bSYour Name {
90*5113495bSYour Name if (wmi_handle->ops->send_start_11d_scan_cmd)
91*5113495bSYour Name return wmi_handle->ops->send_start_11d_scan_cmd(wmi_handle,
92*5113495bSYour Name start_11d_scan);
93*5113495bSYour Name
94*5113495bSYour Name return QDF_STATUS_E_FAILURE;
95*5113495bSYour Name }
96*5113495bSYour Name qdf_export_symbol(wmi_unified_send_start_11d_scan_cmd);
97*5113495bSYour Name
98*5113495bSYour Name /*
99*5113495bSYour Name * wmi_unified_send_stop_11d_scan_cmd() - stop 11d scan
100*5113495bSYour Name * @wmi_handle: wmi handle
101*5113495bSYour Name * @stop_11d_scan: pointer to 11d scan stop req.
102*5113495bSYour Name *
103*5113495bSYour Name * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
104*5113495bSYour Name */
wmi_unified_send_stop_11d_scan_cmd(wmi_unified_t wmi_handle,struct reg_stop_11d_scan_req * stop_11d_scan)105*5113495bSYour Name QDF_STATUS wmi_unified_send_stop_11d_scan_cmd(wmi_unified_t wmi_handle,
106*5113495bSYour Name struct reg_stop_11d_scan_req *stop_11d_scan)
107*5113495bSYour Name {
108*5113495bSYour Name if (wmi_handle->ops->send_stop_11d_scan_cmd)
109*5113495bSYour Name return wmi_handle->ops->send_stop_11d_scan_cmd(wmi_handle,
110*5113495bSYour Name stop_11d_scan);
111*5113495bSYour Name
112*5113495bSYour Name return QDF_STATUS_E_FAILURE;
113*5113495bSYour Name }
114*5113495bSYour Name qdf_export_symbol(wmi_unified_send_stop_11d_scan_cmd);
115*5113495bSYour Name
wmi_extract_reg_11d_new_cc_event(wmi_unified_t wmi_handle,uint8_t * evt_buf,struct reg_11d_new_country * reg_11d_new_cc,uint32_t len)116*5113495bSYour Name QDF_STATUS wmi_extract_reg_11d_new_cc_event(
117*5113495bSYour Name wmi_unified_t wmi_handle,
118*5113495bSYour Name uint8_t *evt_buf,
119*5113495bSYour Name struct reg_11d_new_country *reg_11d_new_cc,
120*5113495bSYour Name uint32_t len)
121*5113495bSYour Name {
122*5113495bSYour Name if (wmi_handle && wmi_handle->ops->extract_reg_11d_new_country_event)
123*5113495bSYour Name return wmi_handle->ops->extract_reg_11d_new_country_event(
124*5113495bSYour Name wmi_handle, evt_buf, reg_11d_new_cc, len);
125*5113495bSYour Name
126*5113495bSYour Name return QDF_STATUS_E_FAILURE;
127*5113495bSYour Name }
128*5113495bSYour Name qdf_export_symbol(wmi_extract_reg_11d_new_cc_event);
129*5113495bSYour Name
wmi_unified_set_user_country_code_cmd_send(wmi_unified_t wmi_handle,uint8_t pdev_id,struct cc_regdmn_s * rd)130*5113495bSYour Name QDF_STATUS wmi_unified_set_user_country_code_cmd_send(
131*5113495bSYour Name wmi_unified_t wmi_handle,
132*5113495bSYour Name uint8_t pdev_id, struct cc_regdmn_s *rd)
133*5113495bSYour Name {
134*5113495bSYour Name if (wmi_handle->ops->send_user_country_code_cmd)
135*5113495bSYour Name return wmi_handle->ops->send_user_country_code_cmd(
136*5113495bSYour Name wmi_handle, pdev_id, rd);
137*5113495bSYour Name
138*5113495bSYour Name return QDF_STATUS_E_FAILURE;
139*5113495bSYour Name }
140*5113495bSYour Name qdf_export_symbol(wmi_unified_set_user_country_code_cmd_send);
141*5113495bSYour Name
wmi_extract_reg_ch_avoid_event(wmi_unified_t wmi_handle,uint8_t * evt_buf,struct ch_avoid_ind_type * ch_avoid_ind,uint32_t len)142*5113495bSYour Name QDF_STATUS wmi_extract_reg_ch_avoid_event(
143*5113495bSYour Name wmi_unified_t wmi_handle,
144*5113495bSYour Name uint8_t *evt_buf,
145*5113495bSYour Name struct ch_avoid_ind_type *ch_avoid_ind,
146*5113495bSYour Name uint32_t len)
147*5113495bSYour Name {
148*5113495bSYour Name if (wmi_handle && wmi_handle->ops->extract_reg_ch_avoid_event)
149*5113495bSYour Name return wmi_handle->ops->extract_reg_ch_avoid_event(
150*5113495bSYour Name wmi_handle, evt_buf, ch_avoid_ind, len);
151*5113495bSYour Name
152*5113495bSYour Name return QDF_STATUS_E_FAILURE;
153*5113495bSYour Name }
154*5113495bSYour Name qdf_export_symbol(wmi_extract_reg_ch_avoid_event);
155*5113495bSYour Name
wmi_extract_tgtr2p_table_event(wmi_unified_t wmi_handle,uint8_t * evt_buf,struct r2p_table_update_status_obj * update_status,uint32_t len)156*5113495bSYour Name QDF_STATUS wmi_extract_tgtr2p_table_event(
157*5113495bSYour Name wmi_unified_t wmi_handle,
158*5113495bSYour Name uint8_t *evt_buf,
159*5113495bSYour Name struct r2p_table_update_status_obj *update_status,
160*5113495bSYour Name uint32_t len)
161*5113495bSYour Name {
162*5113495bSYour Name if (wmi_handle &&
163*5113495bSYour Name wmi_handle->ops->extract_tgtr2p_table_event)
164*5113495bSYour Name return wmi_handle->ops->extract_tgtr2p_table_event(
165*5113495bSYour Name wmi_handle, evt_buf, update_status, len);
166*5113495bSYour Name
167*5113495bSYour Name return QDF_STATUS_E_FAILURE;
168*5113495bSYour Name }
169*5113495bSYour Name
170*5113495bSYour Name qdf_export_symbol(wmi_extract_tgtr2p_table_event);
171