xref: /wlan-driver/qcacld-3.0/core/wma/inc/wma_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-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 #ifndef WMA_API_H
21*5113495bSYour Name #define WMA_API_H
22*5113495bSYour Name 
23*5113495bSYour Name #include "osdep.h"
24*5113495bSYour Name #include "ani_global.h"
25*5113495bSYour Name #include "a_types.h"
26*5113495bSYour Name #include "osapi_linux.h"
27*5113495bSYour Name #include "wmi_unified.h"
28*5113495bSYour Name #ifdef NOT_YET
29*5113495bSYour Name #include "htc_api.h"
30*5113495bSYour Name #endif
31*5113495bSYour Name #include "lim_global.h"
32*5113495bSYour Name #include "cds_utils.h"
33*5113495bSYour Name #include "scheduler_api.h"
34*5113495bSYour Name #include "wlan_policy_mgr_api.h"
35*5113495bSYour Name #include "wma_sar_public_structs.h"
36*5113495bSYour Name #include <cdp_txrx_ops.h>
37*5113495bSYour Name #include "include/wlan_vdev_mlme.h"
38*5113495bSYour Name #include "wlan_mlme_vdev_mgr_interface.h"
39*5113495bSYour Name 
40*5113495bSYour Name typedef void *WMA_HANDLE;
41*5113495bSYour Name 
42*5113495bSYour Name /**
43*5113495bSYour Name  * enum GEN_PARAM - general parameters
44*5113495bSYour Name  * @GEN_VDEV_PARAM_AMPDU: Set ampdu size
45*5113495bSYour Name  * @GEN_VDEV_PARAM_AMSDU: Set amsdu size
46*5113495bSYour Name  * @GEN_PARAM_CRASH_INJECT: inject crash
47*5113495bSYour Name  * @GEN_PARAM_CAPTURE_TSF: read tsf
48*5113495bSYour Name  * @GEN_PARAM_RESET_TSF_GPIO: reset tsf gpio
49*5113495bSYour Name  * @GEN_VDEV_ROAM_SYNCH_DELAY: roam sync delay
50*5113495bSYour Name  * @GEN_VDEV_PARAM_TX_AMPDU: Set tx ampdu size
51*5113495bSYour Name  * @GEN_VDEV_PARAM_RX_AMPDU: Set rx ampdu size
52*5113495bSYour Name  * @GEN_VDEV_PARAM_TX_AMSDU: Set tx amsdu size
53*5113495bSYour Name  * @GEN_VDEV_PARAM_RX_AMSDU: Set rx amsdu size
54*5113495bSYour Name  * @GEN_PARAM_TSF_AUTO_REPORT_ENABLE: Enable auto report of clock delta change
55*5113495bSYour Name  * @GEN_PARAM_TSF_AUTO_REPORT_DISABLE: Disable auto report of clock delta change
56*5113495bSYour Name  */
57*5113495bSYour Name enum GEN_PARAM {
58*5113495bSYour Name 	GEN_VDEV_PARAM_AMPDU = 0x1,
59*5113495bSYour Name 	GEN_VDEV_PARAM_AMSDU,
60*5113495bSYour Name 	GEN_PARAM_CRASH_INJECT,
61*5113495bSYour Name 	GEN_PARAM_CAPTURE_TSF,
62*5113495bSYour Name 	GEN_PARAM_RESET_TSF_GPIO,
63*5113495bSYour Name 	GEN_VDEV_ROAM_SYNCH_DELAY,
64*5113495bSYour Name 	GEN_VDEV_PARAM_TX_AMPDU,
65*5113495bSYour Name 	GEN_VDEV_PARAM_RX_AMPDU,
66*5113495bSYour Name 	GEN_VDEV_PARAM_TX_AMSDU,
67*5113495bSYour Name 	GEN_VDEV_PARAM_RX_AMSDU,
68*5113495bSYour Name 	GEN_PARAM_TSF_AUTO_REPORT_ENABLE,
69*5113495bSYour Name 	GEN_PARAM_TSF_AUTO_REPORT_DISABLE,
70*5113495bSYour Name };
71*5113495bSYour Name 
72*5113495bSYour Name /**
73*5113495bSYour Name  * struct wma_caps_per_phy - various caps per phy
74*5113495bSYour Name  * @ht_2g: entire HT cap for 2G band in terms of 32 bit flag
75*5113495bSYour Name  * @ht_5g: entire HT cap for 5G band in terms of 32 bit flag
76*5113495bSYour Name  * @vht_2g: entire VHT cap for 2G band in terms of 32 bit flag
77*5113495bSYour Name  * @vht_5g: entire VHT cap for 5G band in terms of 32 bit flag
78*5113495bSYour Name  * @he_2g: entire HE cap for 2G band in terms of 32 bit flag
79*5113495bSYour Name  * @he_5g: entire HE cap for 5G band in terms of 32 bit flag
80*5113495bSYour Name  * @tx_chain_mask_2G: tx chain mask for 2g
81*5113495bSYour Name  * @rx_chain_mask_2G: rx chain mask for 2g
82*5113495bSYour Name  * @tx_chain_mask_5G: tx chain mask for 5g
83*5113495bSYour Name  * @rx_chain_mask_5G: rx chain mask for 5g
84*5113495bSYour Name  */
85*5113495bSYour Name struct wma_caps_per_phy {
86*5113495bSYour Name 	uint32_t ht_2g;
87*5113495bSYour Name 	uint32_t ht_5g;
88*5113495bSYour Name 	uint32_t vht_2g;
89*5113495bSYour Name 	uint32_t vht_5g;
90*5113495bSYour Name 	uint32_t he_2g[PSOC_HOST_MAX_MAC_SIZE];
91*5113495bSYour Name 	uint32_t he_5g[PSOC_HOST_MAX_MAC_SIZE];
92*5113495bSYour Name 	uint32_t tx_chain_mask_2G;
93*5113495bSYour Name 	uint32_t rx_chain_mask_2G;
94*5113495bSYour Name 	uint32_t tx_chain_mask_5G;
95*5113495bSYour Name 	uint32_t rx_chain_mask_5G;
96*5113495bSYour Name };
97*5113495bSYour Name 
98*5113495bSYour Name struct wma_ps_params {
99*5113495bSYour Name 	enum wmi_sta_ps_scheme_cfg opm_mode;
100*5113495bSYour Name 	uint16_t ps_ito;
101*5113495bSYour Name 	uint16_t spec_wake;
102*5113495bSYour Name };
103*5113495bSYour Name 
104*5113495bSYour Name /**
105*5113495bSYour Name  * enum wma_sta_ps_scheme_cfg - STA power save schemes
106*5113495bSYour Name  * @WMA_STA_PS_OPM_CONSERVATIVE - Conservative OPM mode
107*5113495bSYour Name  * @WMA_STA_PS_OPM_AGGRESSIVE - Aggressive OPM mode
108*5113495bSYour Name  * @WMA_STA_PS_USER_DEF - User defined OPM mode
109*5113495bSYour Name  */
110*5113495bSYour Name enum wma_sta_ps_scheme_cfg {
111*5113495bSYour Name 	WMA_STA_PS_OPM_CONSERVATIVE = 0,
112*5113495bSYour Name 	WMA_STA_PS_OPM_AGGRESSIVE = 1,
113*5113495bSYour Name 	WMA_STA_PS_USER_DEF = 2,
114*5113495bSYour Name };
115*5113495bSYour Name 
116*5113495bSYour Name #define VDEV_CMD 1
117*5113495bSYour Name #define PDEV_CMD 2
118*5113495bSYour Name #define GEN_CMD  3
119*5113495bSYour Name #define DBG_CMD  4
120*5113495bSYour Name #define PPS_CMD  5
121*5113495bSYour Name #define QPOWER_CMD 6
122*5113495bSYour Name #define GTX_CMD  7
123*5113495bSYour Name 
124*5113495bSYour Name typedef void (*wma_peer_authorized_fp) (uint32_t vdev_id);
125*5113495bSYour Name 
126*5113495bSYour Name 
127*5113495bSYour Name QDF_STATUS wma_pre_start(void);
128*5113495bSYour Name 
129*5113495bSYour Name QDF_STATUS wma_mc_process_handler(struct scheduler_msg *msg);
130*5113495bSYour Name 
131*5113495bSYour Name QDF_STATUS wma_start(void);
132*5113495bSYour Name 
133*5113495bSYour Name /**
134*5113495bSYour Name  * wma_stop() - wma stop function.
135*5113495bSYour Name  *
136*5113495bSYour Name  * Performs all of the operations required to stop the WMA layer
137*5113495bSYour Name  *
138*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, QDF Error on failure
139*5113495bSYour Name  */
140*5113495bSYour Name QDF_STATUS wma_stop(void);
141*5113495bSYour Name 
142*5113495bSYour Name QDF_STATUS wma_close(void);
143*5113495bSYour Name 
144*5113495bSYour Name QDF_STATUS wma_wmi_service_close(void);
145*5113495bSYour Name 
146*5113495bSYour Name QDF_STATUS wma_wmi_work_close(void);
147*5113495bSYour Name 
148*5113495bSYour Name int wma_rx_ready_event(void *handle, uint8_t *ev, uint32_t len);
149*5113495bSYour Name 
150*5113495bSYour Name int  wma_rx_service_ready_event(void *handle, uint8_t *ev, uint32_t len);
151*5113495bSYour Name 
152*5113495bSYour Name int wma_rx_service_ready_ext_event(void *handle, uint8_t *ev, uint32_t len);
153*5113495bSYour Name 
154*5113495bSYour Name /**
155*5113495bSYour Name  * wma_rx_service_ready_ext2_event() - evt handler for service ready ext2 event.
156*5113495bSYour Name  * @handle: wma handle
157*5113495bSYour Name  * @ev: params of the service ready extended event
158*5113495bSYour Name  * @len: param length
159*5113495bSYour Name  *
160*5113495bSYour Name  * Return: none
161*5113495bSYour Name  */
162*5113495bSYour Name int wma_rx_service_ready_ext2_event(void *handle, uint8_t *ev, uint32_t len);
163*5113495bSYour Name 
164*5113495bSYour Name QDF_STATUS wma_wait_for_ready_event(WMA_HANDLE handle);
165*5113495bSYour Name 
166*5113495bSYour Name int wma_cli_get_command(int vdev_id, int param_id, int vpdev);
167*5113495bSYour Name int wma_cli_set_command(int vdev_id, int param_id, int sval, int vpdev);
168*5113495bSYour Name int wma_cli_set2_command(int vdev_id, int param_id, int sval1,
169*5113495bSYour Name 			 int sval2, int vpdev);
170*5113495bSYour Name 
171*5113495bSYour Name /**
172*5113495bSYour Name  * wma_get_fw_phy_mode_for_freq_cb() - Callback to get current PHY Mode.
173*5113495bSYour Name  * @freq: channel freq
174*5113495bSYour Name  * @chan_width: maximum channel width possible
175*5113495bSYour Name  * @phy_mode: firmware PHY Mode
176*5113495bSYour Name  *
177*5113495bSYour Name  * Return: None
178*5113495bSYour Name  */
179*5113495bSYour Name void wma_get_fw_phy_mode_for_freq_cb(uint32_t freq, uint32_t chan_width,
180*5113495bSYour Name 				     uint32_t  *phy_mode);
181*5113495bSYour Name /**
182*5113495bSYour Name  * wma_get_phy_mode_cb() - Callback to get current PHY Mode.
183*5113495bSYour Name  * @freq: channel frequency
184*5113495bSYour Name  * @chan_width: maximum channel width possible
185*5113495bSYour Name  * @phy_mode: PHY Mode
186*5113495bSYour Name  *
187*5113495bSYour Name  * Return: None
188*5113495bSYour Name  */
189*5113495bSYour Name void wma_get_phy_mode_cb(qdf_freq_t freq, uint32_t chan_width,
190*5113495bSYour Name 			 enum wlan_phymode  *phy_mode);
191*5113495bSYour Name 
192*5113495bSYour Name QDF_STATUS wma_set_htconfig(uint8_t vdev_id, uint16_t ht_capab, int value);
193*5113495bSYour Name 
194*5113495bSYour Name QDF_STATUS wma_set_peer_param(void *wma_ctx, uint8_t *peer_addr,
195*5113495bSYour Name 		  uint32_t param_id,
196*5113495bSYour Name 		  uint32_t param_value, uint32_t vdev_id);
197*5113495bSYour Name QDF_STATUS wma_get_link_speed(WMA_HANDLE handle,
198*5113495bSYour Name 			      struct link_speed_info *pLinkSpeed);
199*5113495bSYour Name #ifdef NOT_YET
200*5113495bSYour Name QDF_STATUS wma_update_channel_list(WMA_HANDLE handle, void *scan_chan_info);
201*5113495bSYour Name #endif
202*5113495bSYour Name 
203*5113495bSYour Name /**
204*5113495bSYour Name  * wma_get_vdev_address_by_vdev_id() - lookup MAC address from vdev ID
205*5113495bSYour Name  * @vdev_id: vdev id
206*5113495bSYour Name  *
207*5113495bSYour Name  * Return: mac address
208*5113495bSYour Name  */
209*5113495bSYour Name uint8_t *wma_get_vdev_address_by_vdev_id(uint8_t vdev_id);
210*5113495bSYour Name struct wma_txrx_node *wma_get_interface_by_vdev_id(uint8_t vdev_id);
211*5113495bSYour Name QDF_STATUS wma_get_connection_info(uint8_t vdev_id,
212*5113495bSYour Name 		struct policy_mgr_vdev_entry_info *conn_table_entry);
213*5113495bSYour Name QDF_STATUS wma_ndi_update_connection_info(uint8_t vdev_id,
214*5113495bSYour Name 		struct nan_datapath_channel_info *ndp_chan_info);
215*5113495bSYour Name 
216*5113495bSYour Name #ifdef WLAN_FEATURE_PKT_CAPTURE
217*5113495bSYour Name int wma_get_rmf_status(uint8_t vdev_id);
218*5113495bSYour Name #endif
219*5113495bSYour Name 
220*5113495bSYour Name bool wma_is_vdev_up(uint8_t vdev_id);
221*5113495bSYour Name 
222*5113495bSYour Name void *wma_get_beacon_buffer_by_vdev_id(uint8_t vdev_id, uint32_t *buffer_size);
223*5113495bSYour Name 
224*5113495bSYour Name bool wma_get_fw_wlan_feat_caps(enum cap_bitmap feature);
225*5113495bSYour Name void wma_set_fw_wlan_feat_caps(enum cap_bitmap feature);
226*5113495bSYour Name 
227*5113495bSYour Name QDF_STATUS wma_post_ctrl_msg(struct mac_context *mac, struct scheduler_msg *pMsg);
228*5113495bSYour Name 
229*5113495bSYour Name void wma_update_intf_hw_mode_params(uint32_t vdev_id, uint32_t mac_id,
230*5113495bSYour Name 				uint32_t cfgd_hw_mode_index);
231*5113495bSYour Name 
232*5113495bSYour Name QDF_STATUS wma_get_caps_for_phyidx_hwmode(struct wma_caps_per_phy *caps_per_phy,
233*5113495bSYour Name 		enum hw_mode_dbs_capab hw_mode, enum cds_band_type band);
234*5113495bSYour Name bool wma_is_rx_ldpc_supported_for_channel(uint32_t ch_freq);
235*5113495bSYour Name 
236*5113495bSYour Name #ifdef WLAN_FEATURE_LINK_LAYER_STATS
237*5113495bSYour Name int wma_unified_radio_tx_mem_free(void *handle);
238*5113495bSYour Name 
239*5113495bSYour Name /*
240*5113495bSYour Name  * wma_unified_link_stats_results_mem_free() - Free the memory for
241*5113495bSYour Name  * link_stats_results->results allocated when event comes.
242*5113495bSYour Name  * @link_stats_results: pointer to the memory that is to be freed
243*5113495bSYour Name  *
244*5113495bSYour Name  * Return: None
245*5113495bSYour Name  */
246*5113495bSYour Name void
247*5113495bSYour Name wma_unified_link_stats_results_mem_free(tSirLLStatsResults *link_stats_results);
248*5113495bSYour Name 
249*5113495bSYour Name #else /* WLAN_FEATURE_LINK_LAYER_STATS */
wma_unified_radio_tx_mem_free(void * handle)250*5113495bSYour Name static inline int wma_unified_radio_tx_mem_free(void *handle)
251*5113495bSYour Name {
252*5113495bSYour Name 	return 0;
253*5113495bSYour Name }
254*5113495bSYour Name #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
255*5113495bSYour Name 
256*5113495bSYour Name /**
257*5113495bSYour Name  * wma_form_unit_test_cmd_and_send() - to form a wma command and send it to FW
258*5113495bSYour Name  * @vdev_id: vdev id to be filled while forming the command
259*5113495bSYour Name  * @module_id: module id given by user to be filled in the command
260*5113495bSYour Name  * @arg_count: number of argument count
261*5113495bSYour Name  * @arg: pointer to argument list
262*5113495bSYour Name  *
263*5113495bSYour Name  * This API exposed to HDD layer which takes the argument from user and forms
264*5113495bSYour Name  * the wma unit test command to be sent down to firmware
265*5113495bSYour Name  *
266*5113495bSYour Name  * Return: QDF_STATUS based on overall success
267*5113495bSYour Name  */
268*5113495bSYour Name QDF_STATUS wma_form_unit_test_cmd_and_send(uint32_t vdev_id,
269*5113495bSYour Name 		uint32_t module_id, uint32_t arg_count, uint32_t *arg);
270*5113495bSYour Name 
271*5113495bSYour Name QDF_STATUS wma_remove_beacon_filter(WMA_HANDLE wma,
272*5113495bSYour Name 				struct beacon_filter_param *filter_params);
273*5113495bSYour Name 
274*5113495bSYour Name QDF_STATUS wma_add_beacon_filter(WMA_HANDLE wma,
275*5113495bSYour Name 				struct beacon_filter_param *filter_params);
276*5113495bSYour Name QDF_STATUS wma_send_adapt_dwelltime_params(WMA_HANDLE handle,
277*5113495bSYour Name 			struct adaptive_dwelltime_params *dwelltime_params);
278*5113495bSYour Name 
279*5113495bSYour Name /**
280*5113495bSYour Name  * wma_send_dbs_scan_selection_params() - send DBS scan selection configuration
281*5113495bSYour Name  * params to firmware
282*5113495bSYour Name  * @handle: wma handler
283*5113495bSYour Name  * @dbs_scan_params: pointer to wmi_dbs_scan_sel_params
284*5113495bSYour Name  *
285*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success and QDF failure reason code for failure
286*5113495bSYour Name  */
287*5113495bSYour Name QDF_STATUS wma_send_dbs_scan_selection_params(WMA_HANDLE handle,
288*5113495bSYour Name 			struct wmi_dbs_scan_sel_params *dbs_scan_params);
289*5113495bSYour Name QDF_STATUS wma_set_tx_power_scale(uint8_t vdev_id, int value);
290*5113495bSYour Name QDF_STATUS wma_set_tx_power_scale_decr_db(uint8_t vdev_id, int value);
291*5113495bSYour Name QDF_STATUS wma_enable_disable_imps(uint32_t pdev_id, uint32_t param_val);
292*5113495bSYour Name 
293*5113495bSYour Name bool wma_is_csa_offload_enabled(void);
294*5113495bSYour Name /**
295*5113495bSYour Name  * wma_is_mbssid_enabled - checks MBSSID support
296*5113495bSYour Name  *
297*5113495bSYour Name  * Return: true or false
298*5113495bSYour Name  */
299*5113495bSYour Name bool wma_is_mbssid_enabled(void);
300*5113495bSYour Name 
301*5113495bSYour Name #ifdef FEATURE_P2P_LISTEN_OFFLOAD
302*5113495bSYour Name bool wma_is_p2p_lo_capable(void);
303*5113495bSYour Name #else
wma_is_p2p_lo_capable(void)304*5113495bSYour Name static inline bool wma_is_p2p_lo_capable(void)
305*5113495bSYour Name {
306*5113495bSYour Name 	return 0;
307*5113495bSYour Name }
308*5113495bSYour Name #endif
309*5113495bSYour Name bool wma_capability_enhanced_mcast_filter(void);
310*5113495bSYour Name void wma_process_pdev_hw_mode_trans_ind(void *wma,
311*5113495bSYour Name 	wmi_pdev_hw_mode_transition_event_fixed_param *fixed_param,
312*5113495bSYour Name 	wmi_pdev_set_hw_mode_response_vdev_mac_entry *vdev_mac_entry,
313*5113495bSYour Name 	struct cm_hw_mode_trans_ind *hw_mode_trans_ind);
314*5113495bSYour Name 
315*5113495bSYour Name /**
316*5113495bSYour Name  * wma_set_cts2self_for_p2p_go() - set CTS2SELF command for P2P GO.
317*5113495bSYour Name  * @wma_handle:                  pointer to wma handle.
318*5113495bSYour Name  * @cts2self_for_p2p_go:         value needs to set to firmware.
319*5113495bSYour Name  *
320*5113495bSYour Name  * At the time of driver startup, inform about ini parma to FW that
321*5113495bSYour Name  * if legacy client connects to P2P GO, stop using NOA for P2P GO.
322*5113495bSYour Name  *
323*5113495bSYour Name  * Return: QDF_STATUS.
324*5113495bSYour Name  */
325*5113495bSYour Name QDF_STATUS wma_set_cts2self_for_p2p_go(void *wma_handle,
326*5113495bSYour Name 		uint32_t cts2self_for_p2p_go);
327*5113495bSYour Name 
328*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
329*5113495bSYour Name /**
330*5113495bSYour Name  * wma_get_roam_scan_ch() - API to get roam scan channel list.
331*5113495bSYour Name  * @wma: pointer to wma handle.
332*5113495bSYour Name  * @vdev_id: vdev id
333*5113495bSYour Name  *
334*5113495bSYour Name  * Return: QDF_STATUS.
335*5113495bSYour Name  */
336*5113495bSYour Name QDF_STATUS wma_get_roam_scan_ch(wmi_unified_t wma,
337*5113495bSYour Name 				uint8_t vdev_id);
338*5113495bSYour Name #else
339*5113495bSYour Name static inline
wma_get_roam_scan_ch(wmi_unified_t wma,uint8_t vdev_id)340*5113495bSYour Name QDF_STATUS wma_get_roam_scan_ch(wmi_unified_t wma,
341*5113495bSYour Name 				uint8_t vdev_id)
342*5113495bSYour Name {
343*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
344*5113495bSYour Name }
345*5113495bSYour Name #endif
346*5113495bSYour Name 
347*5113495bSYour Name /**
348*5113495bSYour Name  * wma_set_tx_rx_aggr_size() - set tx rx aggregation size
349*5113495bSYour Name  * @vdev_id: vdev id
350*5113495bSYour Name  * @tx_size: tx aggr size
351*5113495bSYour Name  * @rx_size: rx aggr size
352*5113495bSYour Name  * @aggr_type: aggregation type
353*5113495bSYour Name  *
354*5113495bSYour Name  *  This function try to set the aggregation size.
355*5113495bSYour Name  *
356*5113495bSYour Name  *  Return: QDF_STATUS enumeration
357*5113495bSYour Name  */
358*5113495bSYour Name QDF_STATUS wma_set_tx_rx_aggr_size(uint8_t vdev_id,
359*5113495bSYour Name 				   uint32_t tx_size,
360*5113495bSYour Name 				   uint32_t rx_size,
361*5113495bSYour Name 				   wmi_vdev_custom_aggr_type_t aggr_type);
362*5113495bSYour Name /**
363*5113495bSYour Name  * wma_set_tx_rx_aggr_size_per_ac() - set aggregation size per ac
364*5113495bSYour Name  * @wma_handle: pointer to wma handle.
365*5113495bSYour Name  * @vdev_id: vdev_id
366*5113495bSYour Name  * @qos_aggr: QoS data
367*5113495bSYour Name  * @aggr_type: aggregation type
368*5113495bSYour Name  *
369*5113495bSYour Name  * This function try to set the aggregation size per AC.
370*5113495bSYour Name  *
371*5113495bSYour Name  * Return: QDF_STATUS enumeration
372*5113495bSYour Name  */
373*5113495bSYour Name QDF_STATUS
374*5113495bSYour Name wma_set_tx_rx_aggr_size_per_ac(WMA_HANDLE wma_handle,
375*5113495bSYour Name 			       uint8_t vdev_id,
376*5113495bSYour Name 			       struct wlan_mlme_qos *qos_aggr,
377*5113495bSYour Name 			       wmi_vdev_custom_aggr_type_t aggr_type);
378*5113495bSYour Name 
379*5113495bSYour Name /**
380*5113495bSYour Name  * wma_set_vdev_sw_retry_th() - set sw retry threshold per vdev
381*5113495bSYour Name  * @vdev_id: vdev id
382*5113495bSYour Name  * @sw_retry_count: sw retry number
383*5113495bSYour Name  * @retry_type: SW vdev retry type
384*5113495bSYour Name  *
385*5113495bSYour Name  * This function sends WMI command to set the sw retry threshold per vdev.
386*5113495bSYour Name  *
387*5113495bSYour Name  * Return: QDF_STATUS.
388*5113495bSYour Name  */
389*5113495bSYour Name QDF_STATUS wma_set_vdev_sw_retry_th(uint8_t vdev_id, uint8_t sw_retry_count,
390*5113495bSYour Name 				    wmi_vdev_custom_sw_retry_type_t retry_type);
391*5113495bSYour Name 
392*5113495bSYour Name /**
393*5113495bSYour Name  * wma_set_sw_retry_threshold_per_ac() - set sw retry threshold per AC for tx
394*5113495bSYour Name  * @handle: wma handle
395*5113495bSYour Name  * @vdev_id: vdev id
396*5113495bSYour Name  * @qos_aggr: pointer to QOS TX/RX aggregation values
397*5113495bSYour Name  *
398*5113495bSYour Name  * This function sends WMI command to set the sw retry threshold per AC
399*5113495bSYour Name  * for Tx.
400*5113495bSYour Name  *
401*5113495bSYour Name  * Return: QDF_STATUS.
402*5113495bSYour Name  */
403*5113495bSYour Name QDF_STATUS wma_set_sw_retry_threshold_per_ac
404*5113495bSYour Name 	(WMA_HANDLE handle,
405*5113495bSYour Name 	 uint8_t vdev_id, struct wlan_mlme_qos *qos_aggr);
406*5113495bSYour Name 
407*5113495bSYour Name /**
408*5113495bSYour Name  * wma_set_sw_retry_threshold() - set sw retry threshold for tx
409*5113495bSYour Name  * @qos_aggr: pointer to wlan_mlme_qos
410*5113495bSYour Name  *
411*5113495bSYour Name  * This function sends WMI command to set the sw retry threshold for Tx.
412*5113495bSYour Name  *
413*5113495bSYour Name  * Return: QDF_STATUS.
414*5113495bSYour Name  */
415*5113495bSYour Name QDF_STATUS wma_set_sw_retry_threshold(struct wlan_mlme_qos *qos_aggr);
416*5113495bSYour Name 
417*5113495bSYour Name /**
418*5113495bSYour Name  * wma_get_sar_limit() - get SAR limits from the target
419*5113495bSYour Name  * @handle: wma handle
420*5113495bSYour Name  * @callback: Callback function to invoke with the results
421*5113495bSYour Name  * @context: Opaque context to pass back to caller in the callback
422*5113495bSYour Name  *
423*5113495bSYour Name  *  This function sends WMI command to get SAR limits.
424*5113495bSYour Name  *
425*5113495bSYour Name  *  Return: QDF_STATUS enumeration
426*5113495bSYour Name  */
427*5113495bSYour Name QDF_STATUS wma_get_sar_limit(WMA_HANDLE handle,
428*5113495bSYour Name 			     wma_sar_cb callback, void *context);
429*5113495bSYour Name 
430*5113495bSYour Name /**
431*5113495bSYour Name  * wma_set_sar_limit() - set sar limits in the target
432*5113495bSYour Name  * @handle: wma handle
433*5113495bSYour Name  * @sar_limit_params: sar limit cmd params
434*5113495bSYour Name  *
435*5113495bSYour Name  *  This function sends WMI command to set SAR limits.
436*5113495bSYour Name  *
437*5113495bSYour Name  *  Return: QDF_STATUS enumeration
438*5113495bSYour Name  */
439*5113495bSYour Name QDF_STATUS wma_set_sar_limit(WMA_HANDLE handle,
440*5113495bSYour Name 		struct sar_limit_cmd_params *sar_limit_params);
441*5113495bSYour Name 
442*5113495bSYour Name /**
443*5113495bSYour Name  * wma_send_coex_config_cmd() - Send coex config params
444*5113495bSYour Name  * @wma_handle: wma handle
445*5113495bSYour Name  * @coex_cfg_params: struct to coex cofig params
446*5113495bSYour Name  *
447*5113495bSYour Name  * This function sends WMI command to send coex cofig params
448*5113495bSYour Name  *
449*5113495bSYour Name  * Return: QDF_STATUS
450*5113495bSYour Name  */
451*5113495bSYour Name QDF_STATUS wma_send_coex_config_cmd(WMA_HANDLE wma_handle,
452*5113495bSYour Name 				    struct coex_config_params *coex_cfg_params);
453*5113495bSYour Name 
454*5113495bSYour Name /**
455*5113495bSYour Name  * wma_set_power_config() - update power config in wma
456*5113495bSYour Name  * @vdev_id:	the Id of the vdev to configure
457*5113495bSYour Name  * @power:	new power value
458*5113495bSYour Name  *
459*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error number otherwise
460*5113495bSYour Name  */
461*5113495bSYour Name QDF_STATUS wma_set_power_config(uint8_t vdev_id,
462*5113495bSYour Name 				enum wma_sta_ps_scheme_cfg power);
463*5113495bSYour Name 
464*5113495bSYour Name /**
465*5113495bSYour Name  * wma_set_power_config_ito() - update power save inactivity timeout
466*5113495bSYour Name  * @vdev_id:	the Id of the vdev to configure
467*5113495bSYour Name  * @ps_ito:	new power save inactivity timeout in milliseconds
468*5113495bSYour Name  *
469*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error number otherwise
470*5113495bSYour Name  */
471*5113495bSYour Name QDF_STATUS wma_set_power_config_ito(uint8_t vdev_id, uint16_t ps_ito);
472*5113495bSYour Name 
473*5113495bSYour Name /**
474*5113495bSYour Name  * wma_set_power_config_spec_wake() - update opm speculative wake interval
475*5113495bSYour Name  * @vdev_id:	the Id of the vdev to configure
476*5113495bSYour Name  * @spec_wake:	new opm speculative wake interval in milliseconds
477*5113495bSYour Name  *
478*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error number otherwise
479*5113495bSYour Name  */
480*5113495bSYour Name QDF_STATUS wma_set_power_config_spec_wake(uint8_t vdev_id, uint16_t spec_wake);
481*5113495bSYour Name 
482*5113495bSYour Name #ifdef FEATURE_WLAN_D0WOW
wma_d0_wow_is_supported(void)483*5113495bSYour Name static inline bool wma_d0_wow_is_supported(void)
484*5113495bSYour Name {
485*5113495bSYour Name 	return true;
486*5113495bSYour Name }
487*5113495bSYour Name #else
wma_d0_wow_is_supported(void)488*5113495bSYour Name static inline bool wma_d0_wow_is_supported(void)
489*5113495bSYour Name {
490*5113495bSYour Name 	return false;
491*5113495bSYour Name }
492*5113495bSYour Name #endif
493*5113495bSYour Name 
494*5113495bSYour Name /**
495*5113495bSYour Name  * wma_store_pdev() - store pdev
496*5113495bSYour Name  * @wma_ctx:	wma context
497*5113495bSYour Name  * @pdev:	pdev context
498*5113495bSYour Name  *
499*5113495bSYour Name  * Return: void
500*5113495bSYour Name  */
501*5113495bSYour Name void wma_store_pdev(void *wma_ctx, struct wlan_objmgr_pdev *pdev);
502*5113495bSYour Name 
503*5113495bSYour Name #ifdef WLAN_FEATURE_LINK_LAYER_STATS
504*5113495bSYour Name /**
505*5113495bSYour Name  * wmi_to_sir_peer_type() - convert peer type from WMI to SIR enum
506*5113495bSYour Name  * @type: enum wmi_peer_type
507*5113495bSYour Name  *
508*5113495bSYour Name  * Return: tSirWifiPeerType
509*5113495bSYour Name  */
510*5113495bSYour Name tSirWifiPeerType wmi_to_sir_peer_type(enum wmi_peer_type type);
511*5113495bSYour Name #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
512*5113495bSYour Name 
513*5113495bSYour Name QDF_STATUS wma_crash_inject(WMA_HANDLE wma_handle, uint32_t type,
514*5113495bSYour Name 			    uint32_t delay_time_ms);
515*5113495bSYour Name 
516*5113495bSYour Name /**
517*5113495bSYour Name  * wma_critical_events_in_flight() - get the number of critical events in flight
518*5113495bSYour Name  *
519*5113495bSYour Name  * This API gets the number of events in flight which should prevent power
520*5113495bSYour Name  * collapse.
521*5113495bSYour Name  *
522*5113495bSYour Name  * Return: the number of critical events in flight
523*5113495bSYour Name  */
524*5113495bSYour Name uint32_t wma_critical_events_in_flight(void);
525*5113495bSYour Name 
526*5113495bSYour Name #ifdef FEATURE_WLAN_DYNAMIC_CVM
527*5113495bSYour Name /**
528*5113495bSYour Name  * wma_set_vc_mode_config() - set voltage corner mode config to FW.
529*5113495bSYour Name  * @wma_handle:	pointer to wma handle.
530*5113495bSYour Name  * @vc_bitmap:	value needs to set to firmware.
531*5113495bSYour Name  *
532*5113495bSYour Name  * At the time of driver startup, set operating voltage corner mode
533*5113495bSYour Name  * for differenet phymode and bw configurations.
534*5113495bSYour Name  *
535*5113495bSYour Name  * Return: QDF_STATUS.
536*5113495bSYour Name  */
537*5113495bSYour Name QDF_STATUS wma_set_vc_mode_config(void *wma_handle,
538*5113495bSYour Name 		uint32_t vc_bitmap);
539*5113495bSYour Name #endif
540*5113495bSYour Name 
541*5113495bSYour Name QDF_STATUS wma_process_dhcp_ind(WMA_HANDLE wma_handle,
542*5113495bSYour Name 				tAniDHCPInd *ta_dhcp_ind);
543*5113495bSYour Name 
544*5113495bSYour Name /**
545*5113495bSYour Name  * wma_wmi_stop() - send wmi stop cmd
546*5113495bSYour Name  *
547*5113495bSYour Name  *  Return: None
548*5113495bSYour Name  */
549*5113495bSYour Name void wma_wmi_stop(void);
550*5113495bSYour Name 
551*5113495bSYour Name /**
552*5113495bSYour Name  * wma_get_mcs_idx() - get mcs index
553*5113495bSYour Name  * @raw_rate: raw rate from fw
554*5113495bSYour Name  * @rate_flags: rate flags
555*5113495bSYour Name  * @is_he_mcs_12_13_supported: is he mcs12/13 supported
556*5113495bSYour Name  * @nss: nss
557*5113495bSYour Name  * @dcm: dcm
558*5113495bSYour Name  * @guard_interval: guard interval
559*5113495bSYour Name  * @mcs_rate_flag: mcs rate flags
560*5113495bSYour Name  *
561*5113495bSYour Name  *  Return: mcs index
562*5113495bSYour Name  */
563*5113495bSYour Name uint8_t wma_get_mcs_idx(uint16_t raw_rate, enum tx_rate_info rate_flags,
564*5113495bSYour Name 			bool is_he_mcs_12_13_supported,
565*5113495bSYour Name 			uint8_t *nss, uint8_t *dcm,
566*5113495bSYour Name 			enum txrate_gi *guard_interval,
567*5113495bSYour Name 			enum tx_rate_info *mcs_rate_flag);
568*5113495bSYour Name 
569*5113495bSYour Name /**
570*5113495bSYour Name  * wma_get_hidden_ssid_restart_in_progress() - check if hidden ssid restart is
571*5113495bSYour Name  * in progress
572*5113495bSYour Name  * @iface: iface pointer
573*5113495bSYour Name  *
574*5113495bSYour Name  * Return: true if hidden ssid restart is in progress else false
575*5113495bSYour Name  */
576*5113495bSYour Name bool wma_get_hidden_ssid_restart_in_progress(struct wma_txrx_node *iface);
577*5113495bSYour Name 
578*5113495bSYour Name /**
579*5113495bSYour Name  * wma_get_channel_switch_in_progress() - check if channel switch is in progress
580*5113495bSYour Name  * @iface: iface pointer
581*5113495bSYour Name  *
582*5113495bSYour Name  * Return: true if channel switch is in progress else false
583*5113495bSYour Name  */
584*5113495bSYour Name bool wma_get_channel_switch_in_progress(struct wma_txrx_node *iface);
585*5113495bSYour Name 
586*5113495bSYour Name /**
587*5113495bSYour Name  * wma_sta_mlme_vdev_start_continue() - VDEV start response handling
588*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
589*5113495bSYour Name  * @data_len: data size
590*5113495bSYour Name  * @data: event data
591*5113495bSYour Name  *
592*5113495bSYour Name  * API invokes VDEV start response actions
593*5113495bSYour Name  *
594*5113495bSYour Name  * Return: SUCCESS on successful completion of start response operation
595*5113495bSYour Name  *         FAILURE, if it fails due to any
596*5113495bSYour Name  */
597*5113495bSYour Name QDF_STATUS wma_sta_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
598*5113495bSYour Name 					    uint16_t data_len, void *data);
599*5113495bSYour Name 
600*5113495bSYour Name /**
601*5113495bSYour Name  * wma_ap_mlme_vdev_start_continue() - VDEV start response handling
602*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
603*5113495bSYour Name  * @data_len: data size
604*5113495bSYour Name  * @data: event data
605*5113495bSYour Name  *
606*5113495bSYour Name  * API invokes VDEV start response actions
607*5113495bSYour Name  *
608*5113495bSYour Name  * Return: SUCCESS on successful completion of start response operation
609*5113495bSYour Name  *         FAILURE, if it fails due to any
610*5113495bSYour Name  */
611*5113495bSYour Name QDF_STATUS wma_ap_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
612*5113495bSYour Name 					   uint16_t data_len, void *data);
613*5113495bSYour Name 
614*5113495bSYour Name /**
615*5113495bSYour Name  * wma_sta_vdev_up_send() - Send VDEV UP command
616*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
617*5113495bSYour Name  * @data_len: data size
618*5113495bSYour Name  * @data: event data
619*5113495bSYour Name  *
620*5113495bSYour Name  * API invokes VDEV UP Command
621*5113495bSYour Name  *
622*5113495bSYour Name  * Return: SUCCESS on successful completion of start response operation
623*5113495bSYour Name  *         FAILURE, if it fails due to any
624*5113495bSYour Name  */
625*5113495bSYour Name QDF_STATUS wma_sta_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
626*5113495bSYour Name 				uint16_t data_len, void *data);
627*5113495bSYour Name 
628*5113495bSYour Name /**
629*5113495bSYour Name  * wma_mlme_vdev_stop_continue() - VDEV stop response handling
630*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
631*5113495bSYour Name  * @data_len: data size
632*5113495bSYour Name  * @data: event data
633*5113495bSYour Name  *
634*5113495bSYour Name  * API invokes VDEV stop response actions
635*5113495bSYour Name  *
636*5113495bSYour Name  * Return: SUCCESS on successful completion of stop response operation
637*5113495bSYour Name  *         FAILURE, if it fails due to any
638*5113495bSYour Name  */
639*5113495bSYour Name QDF_STATUS wma_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
640*5113495bSYour Name 				       uint16_t data_len, void *data);
641*5113495bSYour Name 
642*5113495bSYour Name /**
643*5113495bSYour Name  * wma_ap_mlme_vdev_down_send() - VDEV down operation
644*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
645*5113495bSYour Name  * @data_len: data size
646*5113495bSYour Name  * @data: event data
647*5113495bSYour Name  *
648*5113495bSYour Name  * API invokes VDEV down operation
649*5113495bSYour Name  *
650*5113495bSYour Name  * Return: SUCCESS on successful completion of VDEV down operation
651*5113495bSYour Name  *         FAILURE, if it fails due to any
652*5113495bSYour Name  */
653*5113495bSYour Name QDF_STATUS wma_ap_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
654*5113495bSYour Name 				      uint16_t data_len, void *data);
655*5113495bSYour Name 
656*5113495bSYour Name /**
657*5113495bSYour Name  * wma_mlme_vdev_notify_down_complete() - VDEV init state transition
658*5113495bSYour Name  * notification
659*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
660*5113495bSYour Name  * @data_len: data size
661*5113495bSYour Name  * @data: event data
662*5113495bSYour Name  *
663*5113495bSYour Name  * API notifies MLME on moving to INIT state
664*5113495bSYour Name  *
665*5113495bSYour Name  * Return: SUCCESS on successful completion of down notification
666*5113495bSYour Name  *         FAILURE, if it fails due to any
667*5113495bSYour Name  */
668*5113495bSYour Name QDF_STATUS
669*5113495bSYour Name wma_mlme_vdev_notify_down_complete(struct vdev_mlme_obj *vdev_mlme,
670*5113495bSYour Name 				   uint16_t data_len, void *data);
671*5113495bSYour Name 
672*5113495bSYour Name /**
673*5113495bSYour Name  * wma_ap_mlme_vdev_stop_start_send() - handle vdev stop during start req
674*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
675*5113495bSYour Name  * @type: restart req or start req
676*5113495bSYour Name  * @data_len: data size
677*5113495bSYour Name  * @data: event data
678*5113495bSYour Name  *
679*5113495bSYour Name  * API handle vdev stop during start req
680*5113495bSYour Name  *
681*5113495bSYour Name  * Return: SUCCESS alsways
682*5113495bSYour Name  */
683*5113495bSYour Name QDF_STATUS wma_ap_mlme_vdev_stop_start_send(struct vdev_mlme_obj *vdev_mlme,
684*5113495bSYour Name 					    enum vdev_cmd_type type,
685*5113495bSYour Name 					    uint16_t data_len, void *data);
686*5113495bSYour Name 
687*5113495bSYour Name /**
688*5113495bSYour Name  * wma_post_vdev_create_setup() - Post vdev create setup
689*5113495bSYour Name  * @vdev: vdev obj
690*5113495bSYour Name  *
691*5113495bSYour Name  * This API is invoked after vded is created to perform post
692*5113495bSYour Name  * vdev create operations i.e. creating peer and setting vdev params.
693*5113495bSYour Name  *
694*5113495bSYour Name  * Return: SUCCESS on successful post vdev operations, FAILURE, if it
695*5113495bSYour Name  *         fails due to any
696*5113495bSYour Name  */
697*5113495bSYour Name QDF_STATUS wma_post_vdev_create_setup(struct wlan_objmgr_vdev *vdev);
698*5113495bSYour Name 
699*5113495bSYour Name /**
700*5113495bSYour Name  * wma_vdev_create_set_param() - vdev_create_set_param
701*5113495bSYour Name  * @vdev: vdev obj
702*5113495bSYour Name  *
703*5113495bSYour Name  * This API is invoked after vdev is created to perform post
704*5113495bSYour Name  * vdev create operations i.e. creating peer and setting vdev params.
705*5113495bSYour Name  *
706*5113495bSYour Name  * Return: SUCCESS on successful post vdev operations, FAILURE, if it
707*5113495bSYour Name  *         fails due to any
708*5113495bSYour Name  */
709*5113495bSYour Name QDF_STATUS wma_vdev_create_set_param(struct wlan_objmgr_vdev *vdev);
710*5113495bSYour Name 
711*5113495bSYour Name /**
712*5113495bSYour Name  * wma_send_multi_pdev_vdev_set_params - sends dev(vdev/pdev) set params
713*5113495bSYour Name  * @param_type: enum of type mlme_dev_setparam
714*5113495bSYour Name  * @dev_id: id of the particular vdev/pdev
715*5113495bSYour Name  * @param: Array of structure dev_set_param with @n_params combined
716*5113495bSYour Name  * @n_params: number of params that are combined in @param
717*5113495bSYour Name  *
718*5113495bSYour Name  * Return: SUCCESS on successful post vdev operations, FAILURE, if it
719*5113495bSYour Name  *         fails due to any
720*5113495bSYour Name  */
721*5113495bSYour Name QDF_STATUS
722*5113495bSYour Name wma_send_multi_pdev_vdev_set_params(enum mlme_dev_setparam param_type,
723*5113495bSYour Name 				    uint8_t dev_id,
724*5113495bSYour Name 				    struct dev_set_param *param,
725*5113495bSYour Name 				    uint8_t n_params);
726*5113495bSYour Name 
727*5113495bSYour Name /**
728*5113495bSYour Name  * wma_validate_txrx_chain_mask - validates tx/rx chain mask set params
729*5113495bSYour Name  * @paramid: paramid of chainmask
730*5113495bSYour Name  * @paramvalue: param value
731*5113495bSYour Name  *
732*5113495bSYour Name  * Return: SUCCESS on successful post vdev operations, FAILURE, if it
733*5113495bSYour Name  *         fails due to any
734*5113495bSYour Name  */
735*5113495bSYour Name QDF_STATUS
736*5113495bSYour Name wma_validate_txrx_chain_mask(uint32_t paramid, uint32_t paramvalue);
737*5113495bSYour Name 
738*5113495bSYour Name /**
739*5113495bSYour Name  * wma_vdev_set_data_tx_callback() - Set dp vdev tx callback
740*5113495bSYour Name  * @vdev: vdev obj
741*5113495bSYour Name  *
742*5113495bSYour Name  * This API is used to set dp dev tx callback.
743*5113495bSYour Name  *
744*5113495bSYour Name  * Return: SUCCESS on successful post vdev operations, FAILURE, if it
745*5113495bSYour Name  *         fails due to any
746*5113495bSYour Name  */
747*5113495bSYour Name QDF_STATUS wma_vdev_set_data_tx_callback(struct wlan_objmgr_vdev *vdev);
748*5113495bSYour Name 
749*5113495bSYour Name /**
750*5113495bSYour Name  * wma_mon_mlme_vdev_start_continue() - VDEV start response handling
751*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
752*5113495bSYour Name  * @data_len: data size
753*5113495bSYour Name  * @data: event data
754*5113495bSYour Name  *
755*5113495bSYour Name  * API invokes VDEV start response actions
756*5113495bSYour Name  *
757*5113495bSYour Name  * Return: SUCCESS on successful completion of start response operation
758*5113495bSYour Name  *         FAILURE, if it fails due to any
759*5113495bSYour Name  */
760*5113495bSYour Name QDF_STATUS wma_mon_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
761*5113495bSYour Name 					    uint16_t data_len, void *data);
762*5113495bSYour Name 
763*5113495bSYour Name /**
764*5113495bSYour Name  * wma_mon_mlme_vdev_up_send() - Send VDEV UP command
765*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
766*5113495bSYour Name  * @data_len: data size
767*5113495bSYour Name  * @data: event data
768*5113495bSYour Name  *
769*5113495bSYour Name  * API invokes VDEV UP Command
770*5113495bSYour Name  *
771*5113495bSYour Name  * Return: SUCCESS on successful completion of start response operation
772*5113495bSYour Name  *         FAILURE, if it fails due to any
773*5113495bSYour Name  */
774*5113495bSYour Name QDF_STATUS wma_mon_mlme_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
775*5113495bSYour Name 				     uint16_t data_len, void *data);
776*5113495bSYour Name 
777*5113495bSYour Name /**
778*5113495bSYour Name  * wma_mon_mlme_vdev_stop_send() - VDEV stop operation
779*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
780*5113495bSYour Name  * @data_len: data size
781*5113495bSYour Name  * @data: event data
782*5113495bSYour Name  *
783*5113495bSYour Name  * API invokes VDEV stop operation
784*5113495bSYour Name  *
785*5113495bSYour Name  * Return: SUCCESS on successful completion of VDEV stop operation
786*5113495bSYour Name  *         FAILURE, if it fails due to any
787*5113495bSYour Name  */
788*5113495bSYour Name QDF_STATUS wma_mon_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
789*5113495bSYour Name 				       uint16_t data_len, void *data);
790*5113495bSYour Name 
791*5113495bSYour Name /**
792*5113495bSYour Name  * wma_mon_mlme_vdev_down_send() - VDEV down operation
793*5113495bSYour Name  * @vdev_mlme:  VDEV MLME comp object
794*5113495bSYour Name  * @data_len: data size
795*5113495bSYour Name  * @data: event data
796*5113495bSYour Name  *
797*5113495bSYour Name  * API invokes VDEV down operation
798*5113495bSYour Name  *
799*5113495bSYour Name  * Return: SUCCESS on successful completion of VDEV down operation
800*5113495bSYour Name  *         FAILURE, if it fails due to any
801*5113495bSYour Name  */
802*5113495bSYour Name QDF_STATUS wma_mon_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
803*5113495bSYour Name 				       uint16_t data_len, void *data);
804*5113495bSYour Name 
805*5113495bSYour Name /**
806*5113495bSYour Name  * wma_vdev_detach_callback() - VDEV delete response handler
807*5113495bSYour Name  * @rsp: pointer to vdev delete response
808*5113495bSYour Name  *
809*5113495bSYour Name  * This API processes vdev delete response and gives to upper layers
810*5113495bSYour Name  *
811*5113495bSYour Name  * Return: SUCCESS on successful completion of VDEV delete operation
812*5113495bSYour Name  *         FAILURE, if it fails due to any
813*5113495bSYour Name  */
814*5113495bSYour Name QDF_STATUS wma_vdev_detach_callback(struct vdev_delete_response *rsp);
815*5113495bSYour Name 
816*5113495bSYour Name /**
817*5113495bSYour Name  * wma_vdev_stop_resp_handler() - vdev stop response handler
818*5113495bSYour Name  * @vdev_mlme: vdev mlme obj
819*5113495bSYour Name  * @rsp: vdev stup response
820*5113495bSYour Name  *
821*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
822*5113495bSYour Name  */
823*5113495bSYour Name QDF_STATUS wma_vdev_stop_resp_handler(struct vdev_mlme_obj *vdev_mlme,
824*5113495bSYour Name 				struct vdev_stop_response *rsp);
825*5113495bSYour Name 
826*5113495bSYour Name /**
827*5113495bSYour Name  * wma_vdev_start_resp_handler() - vdev start response handler
828*5113495bSYour Name  * @vdev_mlme: vdev mlme obj
829*5113495bSYour Name  * @rsp: vdev start response
830*5113495bSYour Name  *
831*5113495bSYour Name  * Return: QDF status
832*5113495bSYour Name  */
833*5113495bSYour Name QDF_STATUS wma_vdev_start_resp_handler(struct vdev_mlme_obj *vdev_mlme,
834*5113495bSYour Name 				       struct vdev_start_response *rsp);
835*5113495bSYour Name 
836*5113495bSYour Name #ifdef FEATURE_WLM_STATS
837*5113495bSYour Name /**
838*5113495bSYour Name  * typedef wma_wlm_stats_cb() - Callback function for WLM stats
839*5113495bSYour Name  * @cookie: Cookie provided by client during callback registration
840*5113495bSYour Name  * @data: Hex ASCII representation of the WLM stats
841*5113495bSYour Name  */
842*5113495bSYour Name typedef void (*wma_wlm_stats_cb)(void *cookie, const char *data);
843*5113495bSYour Name 
844*5113495bSYour Name /**
845*5113495bSYour Name  * wma_wlm_stats_req() - Send a req to WLAN Latency Manager in FW
846*5113495bSYour Name  * @vdev_id: vdev id to be sent to FW's WLM
847*5113495bSYour Name  * @bitmask: A bitmask which is requested by user to be sent to FW's WLM
848*5113495bSYour Name  * @max_size: Size of user's buffer to store the response
849*5113495bSYour Name  * @cb: A callback to be called to once response is available
850*5113495bSYour Name  * @cookie: A cookie to be used by callback to retrieve the context of req
851*5113495bSYour Name  *
852*5113495bSYour Name  * This API is used to send a message to WLAN latency manager component
853*5113495bSYour Name  * in FW to retrieve some latency related data and send it to user space.
854*5113495bSYour Name  * Driver is just a pass-through for user to interact with FW.
855*5113495bSYour Name  *
856*5113495bSYour Name  * Return: 0 on success and non-zero for error
857*5113495bSYour Name  */
858*5113495bSYour Name int wma_wlm_stats_req(int vdev_id, uint32_t bitmask, uint32_t max_size,
859*5113495bSYour Name 		      wma_wlm_stats_cb cb, void *cookie);
860*5113495bSYour Name 
861*5113495bSYour Name /**
862*5113495bSYour Name  * wma_wlm_stats_rsp() - Handler to handle the response from FW's WLM component
863*5113495bSYour Name  * @wma_ctx: WMA context
864*5113495bSYour Name  * @event: WMI TLV event data
865*5113495bSYour Name  * @len: WMI TLV length
866*5113495bSYour Name  *
867*5113495bSYour Name  * This API is registered with WMI component in order to handle the response
868*5113495bSYour Name  * coming from FW's WLM correspondence to WLM REQ to FW. This API takes the
869*5113495bSYour Name  * data coming as HEX stream and write in to CHAR buffer as HEX CHAR stream
870*5113495bSYour Name  * and send this char buffer to user space through callback.
871*5113495bSYour Name  *
872*5113495bSYour Name  * Return: 0 on success and non-zero for error
873*5113495bSYour Name  */
874*5113495bSYour Name int wma_wlm_stats_rsp(void *wma_ctx, uint8_t *event, uint32_t len);
875*5113495bSYour Name #endif /* FEATURE_WLM_STATS */
876*5113495bSYour Name 
877*5113495bSYour Name /**
878*5113495bSYour Name  * wma_vdev_self_peer_create() - create self peer in objmgr
879*5113495bSYour Name  * @vdev_mlme: vdev mlme component private object
880*5113495bSYour Name  *
881*5113495bSYour Name  * Create the self peer in firmware for beaconing vdev's and create then
882*5113495bSYour Name  * object manager self-peer for the vdev.
883*5113495bSYour Name  *
884*5113495bSYour Name  * Return: QDF_STATUS
885*5113495bSYour Name  */
886*5113495bSYour Name QDF_STATUS wma_vdev_self_peer_create(struct vdev_mlme_obj *vdev_mlme);
887*5113495bSYour Name 
888*5113495bSYour Name /**
889*5113495bSYour Name  * wma_cleanup_vdev() - cleanup wma layers vdev
890*5113495bSYour Name  * @vdev: Object manager vdev
891*5113495bSYour Name  *
892*5113495bSYour Name  * This function cleansup the wma layers vdev related data.
893*5113495bSYour Name  *
894*5113495bSYour Name  * Return: None
895*5113495bSYour Name  */
896*5113495bSYour Name void wma_cleanup_vdev(struct wlan_objmgr_vdev *vdev);
897*5113495bSYour Name 
898*5113495bSYour Name /**
899*5113495bSYour Name  * wma_set_wakeup_logs_to_console() - Enable/disable wakeup logs to console
900*5113495bSYour Name  * @value: boolean value
901*5113495bSYour Name  *
902*5113495bSYour Name  * API to enable/disable wow host wakeup event logs to console.
903*5113495bSYour Name  *
904*5113495bSYour Name  * Return: None
905*5113495bSYour Name  */
906*5113495bSYour Name void wma_set_wakeup_logs_to_console(bool value);
907*5113495bSYour Name #endif /* WMA_API_H */
908