xref: /wlan-dirver/qca-wifi-host-cmn/wmi/src/wmi_unified_sta_api.c (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
1 /*
2  * Copyright (c) 2013-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  * DOC: Implement API's specific to STA component.
20  */
21 #include <wmi.h>
22 #include "wmi_unified_priv.h"
23 #include "wmi_unified_sta_api.h"
24 
25 QDF_STATUS wmi_unified_set_sta_sa_query_param_cmd(wmi_unified_t wmi_handle,
26 						  uint8_t vdev_id,
27 						  uint32_t max_retries,
28 						  uint32_t retry_interval)
29 {
30 	if (wmi_handle->ops->send_set_sta_sa_query_param_cmd)
31 		return wmi_handle->ops->send_set_sta_sa_query_param_cmd(wmi_handle,
32 						vdev_id, max_retries,
33 						retry_interval);
34 
35 	return QDF_STATUS_E_FAILURE;
36 }
37 
38 QDF_STATUS
39 wmi_unified_set_sta_keep_alive_cmd(wmi_unified_t wmi_handle,
40 				   struct sta_keep_alive_params *params)
41 {
42 	if (wmi_handle->ops->send_set_sta_keep_alive_cmd)
43 		return wmi_handle->ops->send_set_sta_keep_alive_cmd(wmi_handle,
44 								    params);
45 
46 	return QDF_STATUS_E_FAILURE;
47 }
48 
49 QDF_STATUS
50 wmi_unified_vdev_set_gtx_cfg_cmd(wmi_unified_t wmi_handle, uint32_t if_id,
51 				 struct wmi_gtx_config *gtx_info)
52 {
53 	if (wmi_handle->ops->send_vdev_set_gtx_cfg_cmd)
54 		return wmi_handle->ops->send_vdev_set_gtx_cfg_cmd(wmi_handle,
55 								  if_id,
56 								  gtx_info);
57 
58 	return QDF_STATUS_E_FAILURE;
59 }
60 
61 QDF_STATUS wmi_unified_process_dhcp_ind(
62 			wmi_unified_t wmi_handle,
63 			wmi_peer_set_param_cmd_fixed_param *ta_dhcp_ind)
64 {
65 	if (wmi_handle->ops->send_process_dhcp_ind_cmd)
66 		return wmi_handle->ops->send_process_dhcp_ind_cmd(wmi_handle,
67 								  ta_dhcp_ind);
68 
69 	return QDF_STATUS_E_FAILURE;
70 }
71 
72 QDF_STATUS wmi_unified_get_link_speed_cmd(wmi_unified_t wmi_handle,
73 					  wmi_mac_addr peer_macaddr)
74 {
75 	if (wmi_handle->ops->send_get_link_speed_cmd)
76 		return wmi_handle->ops->send_get_link_speed_cmd(wmi_handle,
77 								peer_macaddr);
78 
79 	return QDF_STATUS_E_FAILURE;
80 }
81 
82 QDF_STATUS wmi_unified_fw_profiling_data_cmd(wmi_unified_t wmi_handle,
83 					     uint32_t cmd,
84 					     uint32_t value1,
85 					     uint32_t value2)
86 {
87 	if (wmi_handle->ops->send_fw_profiling_cmd)
88 		return wmi_handle->ops->send_fw_profiling_cmd(wmi_handle,
89 							      cmd,
90 							      value1,
91 							      value2);
92 
93 	return QDF_STATUS_E_FAILURE;
94 }
95 
96 QDF_STATUS wmi_unified_nat_keepalive_en_cmd(wmi_unified_t wmi_handle,
97 					    uint8_t vdev_id)
98 {
99 	if (wmi_handle->ops->send_nat_keepalive_en_cmd)
100 		return wmi_handle->ops->send_nat_keepalive_en_cmd(wmi_handle,
101 								  vdev_id);
102 
103 	return QDF_STATUS_E_FAILURE;
104 }
105 
106 QDF_STATUS
107 wmi_unified_wlm_latency_level_cmd(wmi_unified_t wmi_handle,
108 				  struct wlm_latency_level_param *param)
109 {
110 	if (wmi_handle->ops->send_wlm_latency_level_cmd)
111 		return wmi_handle->ops->send_wlm_latency_level_cmd(wmi_handle,
112 								   param);
113 
114 	return QDF_STATUS_E_FAILURE;
115 }
116 
117 QDF_STATUS
118 wmi_unified_process_set_ie_info_cmd(wmi_unified_t wmi_handle,
119 				    struct vdev_ie_info_param *ie_info)
120 {
121 	if (wmi_handle->ops->send_process_set_ie_info_cmd)
122 		return wmi_handle->ops->send_process_set_ie_info_cmd(wmi_handle,
123 								     ie_info);
124 
125 	return QDF_STATUS_E_FAILURE;
126 }
127 
128 QDF_STATUS wmi_unified_set_base_macaddr_indicate_cmd(wmi_unified_t wmi_handle,
129 						     uint8_t *custom_addr)
130 {
131 	if (wmi_handle->ops->send_set_base_macaddr_indicate_cmd)
132 		return wmi_handle->ops->send_set_base_macaddr_indicate_cmd(
133 						wmi_handle, custom_addr);
134 
135 	return QDF_STATUS_E_FAILURE;
136 }
137 
138 #ifdef FEATURE_WLAN_TDLS
139 QDF_STATUS wmi_unified_set_tdls_offchan_mode_cmd(
140 			wmi_unified_t wmi_handle,
141 			struct tdls_channel_switch_params *chan_switch_params)
142 {
143 	if (wmi_handle->ops->send_set_tdls_offchan_mode_cmd)
144 		return wmi_handle->ops->send_set_tdls_offchan_mode_cmd(
145 						wmi_handle, chan_switch_params);
146 
147 	return QDF_STATUS_E_FAILURE;
148 }
149 
150 QDF_STATUS wmi_unified_update_fw_tdls_state_cmd(wmi_unified_t wmi_handle,
151 						struct tdls_info *tdls_param,
152 						enum wmi_tdls_state tdls_state)
153 {
154 	if (wmi_handle->ops->send_update_fw_tdls_state_cmd)
155 		return wmi_handle->ops->send_update_fw_tdls_state_cmd(
156 				wmi_handle, tdls_param, tdls_state);
157 
158 	return QDF_STATUS_E_FAILURE;
159 }
160 
161 QDF_STATUS wmi_unified_update_tdls_peer_state_cmd(wmi_unified_t wmi_handle,
162 				struct tdls_peer_update_state *peer_state,
163 				uint32_t *ch_mhz)
164 {
165 	if (wmi_handle->ops->send_update_tdls_peer_state_cmd)
166 		return wmi_handle->ops->send_update_tdls_peer_state_cmd(wmi_handle,
167 			    peer_state, ch_mhz);
168 
169 	return QDF_STATUS_E_FAILURE;
170 }
171 
172 QDF_STATUS wmi_extract_vdev_tdls_ev_param(wmi_unified_t wmi_handle,
173 					  void *evt_buf,
174 					  struct tdls_event_info *param)
175 {
176 	if (wmi_handle->ops->extract_vdev_tdls_ev_param)
177 		return wmi_handle->ops->extract_vdev_tdls_ev_param(wmi_handle,
178 				evt_buf, param);
179 
180 	return QDF_STATUS_E_FAILURE;
181 }
182 #endif /* FEATURE_WLAN_TDLS */
183 
184 #ifdef FEATURE_BLACKLIST_MGR
185 QDF_STATUS
186 wmi_unified_send_reject_ap_list(struct wmi_unified *wmi_handle,
187 				struct reject_ap_params *reject_params)
188 {
189 	if (wmi_handle->ops->send_reject_ap_list_cmd)
190 		return wmi_handle->ops->send_reject_ap_list_cmd(wmi_handle,
191 								reject_params);
192 
193 	return QDF_STATUS_E_FAILURE;
194 }
195 #endif
196 
197 QDF_STATUS wmi_unified_send_sar_limit_cmd(wmi_unified_t wmi_handle,
198 					  struct sar_limit_cmd_params *params)
199 {
200 	if (wmi_handle->ops->send_sar_limit_cmd)
201 		return wmi_handle->ops->send_sar_limit_cmd(
202 						wmi_handle,
203 						params);
204 	return QDF_STATUS_E_FAILURE;
205 }
206 
207 QDF_STATUS wmi_unified_get_sar_limit_cmd(wmi_unified_t wmi_handle)
208 {
209 	if (wmi_handle->ops->get_sar_limit_cmd)
210 		return wmi_handle->ops->get_sar_limit_cmd(wmi_handle);
211 
212 	return QDF_STATUS_E_FAILURE;
213 }
214 
215 QDF_STATUS wmi_unified_extract_sar_limit_event(wmi_unified_t wmi_handle,
216 					       uint8_t *evt_buf,
217 					       struct sar_limit_event *event)
218 {
219 	if (wmi_handle->ops->extract_sar_limit_event)
220 		return wmi_handle->ops->extract_sar_limit_event(wmi_handle,
221 								evt_buf,
222 								event);
223 
224 	return QDF_STATUS_E_FAILURE;
225 }
226 
227 QDF_STATUS wmi_unified_extract_sar2_result_event(void *handle,
228 						 uint8_t *event, uint32_t len)
229 {
230 	wmi_unified_t wmi_handle = handle;
231 
232 	if (wmi_handle->ops->extract_sar2_result_event)
233 		return wmi_handle->ops->extract_sar2_result_event(wmi_handle,
234 								  event,
235 								  len);
236 
237 	return QDF_STATUS_E_FAILURE;
238 }
239 
240 QDF_STATUS
241 wmi_unified_set_del_pmkid_cache(wmi_unified_t wmi_handle,
242 				struct wmi_unified_pmk_cache *req_buf)
243 {
244 	if (wmi_handle->ops->send_set_del_pmkid_cache_cmd)
245 		return wmi_handle->ops->send_set_del_pmkid_cache_cmd(wmi_handle,
246 								     req_buf);
247 
248 	return QDF_STATUS_E_FAILURE;
249 }
250 
251 QDF_STATUS wmi_unified_del_ts_cmd(wmi_unified_t wmi_handle, uint8_t vdev_id,
252 				  uint8_t ac)
253 {
254 	if (wmi_handle->ops->send_del_ts_cmd)
255 		return wmi_handle->ops->send_del_ts_cmd(wmi_handle,
256 							vdev_id, ac);
257 
258 	return QDF_STATUS_E_FAILURE;
259 }
260 
261 QDF_STATUS wmi_unified_aggr_qos_cmd(
262 		wmi_unified_t wmi_handle,
263 		struct aggr_add_ts_param *aggr_qos_rsp_msg)
264 {
265 	if (wmi_handle->ops->send_aggr_qos_cmd)
266 		return wmi_handle->ops->send_aggr_qos_cmd(wmi_handle,
267 							  aggr_qos_rsp_msg);
268 
269 	return QDF_STATUS_E_FAILURE;
270 }
271 
272 QDF_STATUS wmi_unified_add_ts_cmd(wmi_unified_t wmi_handle,
273 				  struct add_ts_param *msg)
274 {
275 	if (wmi_handle->ops->send_add_ts_cmd)
276 		return wmi_handle->ops->send_add_ts_cmd(wmi_handle,
277 							msg);
278 
279 	return QDF_STATUS_E_FAILURE;
280 }
281 
282 QDF_STATUS wmi_unified_process_add_periodic_tx_ptrn_cmd(
283 					wmi_unified_t wmi_handle,
284 					struct periodic_tx_pattern *pattern,
285 					uint8_t vdev_id)
286 {
287 	if (wmi_handle->ops->send_process_add_periodic_tx_ptrn_cmd)
288 		return wmi_handle->ops->send_process_add_periodic_tx_ptrn_cmd(
289 						wmi_handle, pattern, vdev_id);
290 
291 	return QDF_STATUS_E_FAILURE;
292 }
293 
294 QDF_STATUS
295 wmi_unified_process_del_periodic_tx_ptrn_cmd(wmi_unified_t wmi_handle,
296 					     uint8_t vdev_id,
297 					     uint8_t pattern_id)
298 {
299 	if (wmi_handle->ops->send_process_del_periodic_tx_ptrn_cmd)
300 		return wmi_handle->ops->send_process_del_periodic_tx_ptrn_cmd(
301 				wmi_handle,
302 				vdev_id,
303 				pattern_id);
304 
305 	return QDF_STATUS_E_FAILURE;
306 }
307 
308 QDF_STATUS wmi_unified_set_auto_shutdown_timer_cmd(wmi_unified_t wmi_handle,
309 						   uint32_t timer_val)
310 {
311 	if (wmi_handle->ops->send_set_auto_shutdown_timer_cmd)
312 		return wmi_handle->ops->send_set_auto_shutdown_timer_cmd(
313 				wmi_handle,
314 				timer_val);
315 
316 	return QDF_STATUS_E_FAILURE;
317 }
318 
319 QDF_STATUS
320 wmi_unified_set_led_flashing_cmd(wmi_unified_t wmi_handle,
321 				 struct flashing_req_params *flashing)
322 {
323 	if (wmi_handle->ops->send_set_led_flashing_cmd)
324 		return wmi_handle->ops->send_set_led_flashing_cmd(wmi_handle,
325 								  flashing);
326 
327 	return QDF_STATUS_E_FAILURE;
328 }
329 
330 QDF_STATUS wmi_unified_process_ch_avoid_update_cmd(wmi_unified_t wmi_handle)
331 {
332 	if (wmi_handle->ops->send_process_ch_avoid_update_cmd)
333 		return wmi_handle->ops->send_process_ch_avoid_update_cmd(
334 				wmi_handle);
335 
336 	return QDF_STATUS_E_FAILURE;
337 }
338 
339 QDF_STATUS wmi_unified_pdev_set_pcl_cmd(wmi_unified_t wmi_handle,
340 					struct wmi_pcl_chan_weights *msg)
341 {
342 	if (wmi_handle->ops->send_pdev_set_pcl_cmd)
343 		return wmi_handle->ops->send_pdev_set_pcl_cmd(wmi_handle, msg);
344 
345 	return QDF_STATUS_E_FAILURE;
346 }
347 
348 #ifdef WLAN_POLICY_MGR_ENABLE
349 QDF_STATUS wmi_unified_pdev_set_dual_mac_config_cmd(
350 		wmi_unified_t wmi_handle,
351 		struct policy_mgr_dual_mac_config *msg)
352 {
353 	if (wmi_handle->ops->send_pdev_set_dual_mac_config_cmd)
354 		return wmi_handle->ops->send_pdev_set_dual_mac_config_cmd(
355 				wmi_handle,
356 				msg);
357 
358 	return QDF_STATUS_E_FAILURE;
359 }
360 #endif /* WLAN_POLICY_MGR_ENABLE */
361 
362 QDF_STATUS wmi_unified_send_adapt_dwelltime_params_cmd(
363 			wmi_unified_t wmi_handle,
364 			struct wmi_adaptive_dwelltime_params *dwelltime_params)
365 {
366 	if (wmi_handle->ops->send_adapt_dwelltime_params_cmd)
367 		return wmi_handle->ops->
368 			send_adapt_dwelltime_params_cmd(wmi_handle,
369 				  dwelltime_params);
370 
371 	return QDF_STATUS_E_FAILURE;
372 }
373 
374 QDF_STATUS wmi_unified_send_dbs_scan_sel_params_cmd(
375 			wmi_unified_t wmi_handle,
376 			struct wmi_dbs_scan_sel_params *dbs_scan_params)
377 {
378 	if (wmi_handle->ops->send_dbs_scan_sel_params_cmd)
379 		return wmi_handle->ops->
380 			send_dbs_scan_sel_params_cmd(wmi_handle,
381 						     dbs_scan_params);
382 
383 	return QDF_STATUS_E_FAILURE;
384 }
385 
386 QDF_STATUS wmi_unified_set_arp_stats_req(wmi_unified_t wmi_handle,
387 					 struct set_arp_stats *req_buf)
388 {
389 	if (wmi_handle->ops->send_set_arp_stats_req_cmd)
390 		return wmi_handle->ops->send_set_arp_stats_req_cmd(wmi_handle,
391 								   req_buf);
392 
393 	return QDF_STATUS_E_FAILURE;
394 }
395 
396 QDF_STATUS wmi_unified_get_arp_stats_req(wmi_unified_t wmi_handle,
397 					 struct get_arp_stats *req_buf)
398 {
399 	if (wmi_handle->ops->send_get_arp_stats_req_cmd)
400 		return wmi_handle->ops->send_get_arp_stats_req_cmd(wmi_handle,
401 								   req_buf);
402 
403 	return QDF_STATUS_E_FAILURE;
404 }
405 
406 QDF_STATUS wmi_unified_peer_unmap_conf_send(wmi_unified_t wmi_handle,
407 					    uint8_t vdev_id,
408 					    uint32_t peer_id_cnt,
409 					    uint16_t *peer_id_list)
410 {
411 	if (wmi_handle->ops->send_peer_unmap_conf_cmd)
412 		return wmi_handle->ops->send_peer_unmap_conf_cmd(wmi_handle,
413 				  vdev_id, peer_id_cnt, peer_id_list);
414 
415 	return QDF_STATUS_E_FAILURE;
416 }
417 
418