xref: /wlan-driver/qcacld-3.0/core/wma/inc/wma_internal.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2013-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  * 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_INTERNAL_H
21*5113495bSYour Name #define WMA_INTERNAL_H
22*5113495bSYour Name #include <cdp_txrx_handle.h>
23*5113495bSYour Name #if !defined(REMOVE_PKT_LOG)
24*5113495bSYour Name #include "pktlog_ac.h"
25*5113495bSYour Name #endif
26*5113495bSYour Name 
27*5113495bSYour Name /* ################### defines ################### */
28*5113495bSYour Name /*
29*5113495bSYour Name  * TODO: Following constant should be shared by firmware in
30*5113495bSYour Name  * wmi_unified.h. This will be done once wmi_unified.h is updated.
31*5113495bSYour Name  */
32*5113495bSYour Name #define WMI_PEER_STATE_AUTHORIZED 0x2
33*5113495bSYour Name 
34*5113495bSYour Name #define WMA_2_4_GHZ_MAX_FREQ  3000
35*5113495bSYour Name 
36*5113495bSYour Name /*AR9888/AR6320  noise floor approx value
37*5113495bSYour Name  * similar to the mentioned the WMA
38*5113495bSYour Name  */
39*5113495bSYour Name #define WMA_TGT_NOISE_FLOOR_DBM (-96)
40*5113495bSYour Name #define WMA_INVALID_PER_CHAIN_SNR  (0x80)
41*5113495bSYour Name #define WMA_INVALID_PER_CHAIN_RSSI (0xFF)
42*5113495bSYour Name 
43*5113495bSYour Name /*
44*5113495bSYour Name  * Make sure that link monitor and keep alive
45*5113495bSYour Name  * default values should be in sync with CFG.
46*5113495bSYour Name  */
47*5113495bSYour Name #define WMA_LINK_MONITOR_DEFAULT_TIME_SECS 10
48*5113495bSYour Name #define WMA_KEEP_ALIVE_DEFAULT_TIME_SECS   5
49*5113495bSYour Name 
50*5113495bSYour Name #define WMA_WMM_EXPO_TO_VAL(val)        ((1 << (val)) - 1)
51*5113495bSYour Name 
52*5113495bSYour Name #define INVALID_MCS_IDX 255
53*5113495bSYour Name 
54*5113495bSYour Name #define IS_MCS_HAS_DCM_RATE(val)  \
55*5113495bSYour Name 		((val) == 0 || (val) == 1 || \
56*5113495bSYour Name 		 (val) == 3 || (val) == 4)
57*5113495bSYour Name 
58*5113495bSYour Name #define LINK_STATUS_LEGACY      0
59*5113495bSYour Name #define LINK_STATUS_VHT         0x1
60*5113495bSYour Name #define LINK_STATUS_MIMO        0x2
61*5113495bSYour Name #define LINK_SUPPORT_VHT	0x4
62*5113495bSYour Name #define LINK_SUPPORT_MIMO	0x8
63*5113495bSYour Name 
64*5113495bSYour Name #define LINK_RATE_VHT           0x3
65*5113495bSYour Name 
66*5113495bSYour Name #define MAX_ENTRY_HOLD_REQ_QUEUE 2
67*5113495bSYour Name #define MAX_ENTRY_VDEV_RESP_QUEUE 10
68*5113495bSYour Name 
69*5113495bSYour Name /**
70*5113495bSYour Name  * struct index_data_rate_type - non vht data rate type
71*5113495bSYour Name  * @mcs_index: mcs rate index
72*5113495bSYour Name  * @ht20_rate: HT20 supported rate table
73*5113495bSYour Name  * @ht40_rate: HT40 supported rate table
74*5113495bSYour Name  */
75*5113495bSYour Name struct index_data_rate_type {
76*5113495bSYour Name 	uint8_t  mcs_index;
77*5113495bSYour Name 	uint16_t ht20_rate[2];
78*5113495bSYour Name 	uint16_t ht40_rate[2];
79*5113495bSYour Name };
80*5113495bSYour Name 
81*5113495bSYour Name /**
82*5113495bSYour Name  * struct index_vht_data_rate_type - vht data rate type
83*5113495bSYour Name  * @mcs_index: mcs rate index
84*5113495bSYour Name  * @ht20_rate: VHT20 supported rate table
85*5113495bSYour Name  * @ht40_rate: VHT40 supported rate table
86*5113495bSYour Name  * @ht80_rate: VHT80 supported rate table
87*5113495bSYour Name  * @ht160_rate: VHT160 supported rate table
88*5113495bSYour Name  */
89*5113495bSYour Name struct index_vht_data_rate_type {
90*5113495bSYour Name 	uint8_t mcs_index;
91*5113495bSYour Name 	uint16_t ht20_rate[2];
92*5113495bSYour Name 	uint16_t ht40_rate[2];
93*5113495bSYour Name 	uint16_t ht80_rate[2];
94*5113495bSYour Name 	uint16_t ht160_rate[2];
95*5113495bSYour Name };
96*5113495bSYour Name 
97*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
98*5113495bSYour Name #define MAX_HE_DCM_INDEX 2
99*5113495bSYour Name /**
100*5113495bSYour Name  * struct index_he_data_rate_type - he data rate type
101*5113495bSYour Name  * @beacon_rate_index: Beacon rate index
102*5113495bSYour Name  * @supported_he80_rate: he80 rate
103*5113495bSYour Name  * @supported_he40_rate: he40 rate
104*5113495bSYour Name  * @supported_he20_rate: he20 rate
105*5113495bSYour Name  * @supported_he160_rate: he160 rate
106*5113495bSYour Name  */
107*5113495bSYour Name struct index_he_data_rate_type {
108*5113495bSYour Name 	uint8_t beacon_rate_index;
109*5113495bSYour Name 	uint16_t supported_he20_rate[MAX_HE_DCM_INDEX][3];
110*5113495bSYour Name 	uint16_t supported_he40_rate[MAX_HE_DCM_INDEX][3];
111*5113495bSYour Name 	uint16_t supported_he80_rate[MAX_HE_DCM_INDEX][3];
112*5113495bSYour Name 	uint16_t supported_he160_rate[MAX_HE_DCM_INDEX][3];
113*5113495bSYour Name };
114*5113495bSYour Name #endif
115*5113495bSYour Name 
116*5113495bSYour Name struct wifi_scan_cmd_req_params;
117*5113495bSYour Name /*
118*5113495bSYour Name  * wma_main.c functions declarations
119*5113495bSYour Name  */
120*5113495bSYour Name 
121*5113495bSYour Name /**
122*5113495bSYour Name  * wma_send_msg_by_priority() - Send wma message to PE with priority.
123*5113495bSYour Name  * @wma_handle: wma handle
124*5113495bSYour Name  * @msg_type: message type
125*5113495bSYour Name  * @body_ptr: message body ptr
126*5113495bSYour Name  * @body_val: message body value
127*5113495bSYour Name  * @is_high_priority: if msg is high priority
128*5113495bSYour Name  *
129*5113495bSYour Name  * Return: none
130*5113495bSYour Name  */
131*5113495bSYour Name void wma_send_msg_by_priority(tp_wma_handle wma_handle, uint16_t msg_type,
132*5113495bSYour Name 		void *body_ptr, uint32_t body_val, bool is_high_priority);
133*5113495bSYour Name 
134*5113495bSYour Name /**
135*5113495bSYour Name  * wma_send_msg() - Send wma message to PE.
136*5113495bSYour Name  * @wma_handle: wma handle
137*5113495bSYour Name  * @msg_type: message type
138*5113495bSYour Name  * @body_ptr: message body ptr
139*5113495bSYour Name  * @body_val: message body value
140*5113495bSYour Name  *
141*5113495bSYour Name  * Return: none
142*5113495bSYour Name  */
143*5113495bSYour Name void wma_send_msg(tp_wma_handle wma_handle, uint16_t msg_type,
144*5113495bSYour Name 			 void *body_ptr, uint32_t body_val);
145*5113495bSYour Name 
146*5113495bSYour Name /**
147*5113495bSYour Name  * wma_send_msg_high_priority() - Send wma message to PE with high priority.
148*5113495bSYour Name  * @wma_handle: wma handle
149*5113495bSYour Name  * @msg_type: message type
150*5113495bSYour Name  * @body_ptr: message body ptr
151*5113495bSYour Name  * @body_val: message body value
152*5113495bSYour Name  *
153*5113495bSYour Name  * Return: none
154*5113495bSYour Name  */
155*5113495bSYour Name void wma_send_msg_high_priority(tp_wma_handle wma_handle, uint16_t msg_type,
156*5113495bSYour Name 			void *body_ptr, uint32_t body_val);
157*5113495bSYour Name 
158*5113495bSYour Name void wma_data_tx_ack_comp_hdlr(void *wma_context,
159*5113495bSYour Name 				      qdf_nbuf_t netbuf, int32_t status);
160*5113495bSYour Name 
161*5113495bSYour Name QDF_STATUS wma_set_ppsconfig(uint8_t vdev_id, uint16_t pps_param,
162*5113495bSYour Name 				    int value);
163*5113495bSYour Name 
164*5113495bSYour Name /*
165*5113495bSYour Name  * wma_scan_roam.c functions declarations
166*5113495bSYour Name  */
167*5113495bSYour Name 
168*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
169*5113495bSYour Name 
170*5113495bSYour Name #ifdef WLAN_FEATURE_FIPS
171*5113495bSYour Name /**
172*5113495bSYour Name  * wma_register_pmkid_req_event_handler() - Register pmkid request event handler
173*5113495bSYour Name  * @wma_handle: wma_handle
174*5113495bSYour Name  *
175*5113495bSYour Name  * This function register pmkid request event handler.
176*5113495bSYour Name  */
177*5113495bSYour Name void wma_register_pmkid_req_event_handler(tp_wma_handle wma_handle);
178*5113495bSYour Name 
179*5113495bSYour Name /**
180*5113495bSYour Name  * wma_roam_pmkid_request_event_handler() - Handles roam pmkid request event
181*5113495bSYour Name  * @handle: wma_handle
182*5113495bSYour Name  * @event: pmkid request event data pointer
183*5113495bSYour Name  * @len: length of the data
184*5113495bSYour Name  *
185*5113495bSYour Name  * Handles pmkid request event from firmware which is triggered after roam
186*5113495bSYour Name  * candidate selection.
187*5113495bSYour Name  */
188*5113495bSYour Name int wma_roam_pmkid_request_event_handler(void *handle,
189*5113495bSYour Name 					 uint8_t *event,
190*5113495bSYour Name 					 uint32_t len);
191*5113495bSYour Name #else
192*5113495bSYour Name static inline void
wma_register_pmkid_req_event_handler(tp_wma_handle wma_handle)193*5113495bSYour Name wma_register_pmkid_req_event_handler(tp_wma_handle wma_handle)
194*5113495bSYour Name {
195*5113495bSYour Name }
196*5113495bSYour Name 
197*5113495bSYour Name static inline int
wma_roam_pmkid_request_event_handler(void * handle,uint8_t * event,uint32_t len)198*5113495bSYour Name wma_roam_pmkid_request_event_handler(void *handle,
199*5113495bSYour Name 				     uint8_t *event,
200*5113495bSYour Name 				     uint32_t len)
201*5113495bSYour Name {
202*5113495bSYour Name 	return 0;
203*5113495bSYour Name }
204*5113495bSYour Name #endif /* WLAN_FEATURE_FIPS */
205*5113495bSYour Name 
206*5113495bSYour Name /**
207*5113495bSYour Name  * wma_roam_stats_event_handler() - Handle the WMI_ROAM_STATS_EVENTID
208*5113495bSYour Name  * from target
209*5113495bSYour Name  * @handle: wma_handle
210*5113495bSYour Name  * @event:  roam debug stats event data pointer
211*5113495bSYour Name  * @len: length of the data
212*5113495bSYour Name  *
213*5113495bSYour Name  * This function handles the roam debug stats from the target and logs it
214*5113495bSYour Name  * to kmsg. This WMI_ROAM_STATS_EVENTID event is received whenever roam
215*5113495bSYour Name  * scan trigger happens or when neighbor report is sent by the firmware.
216*5113495bSYour Name  *
217*5113495bSYour Name  * Return: Success or Failure status
218*5113495bSYour Name  */
219*5113495bSYour Name int wma_roam_stats_event_handler(WMA_HANDLE handle, uint8_t *event,
220*5113495bSYour Name 				 uint32_t len);
221*5113495bSYour Name 
222*5113495bSYour Name /**
223*5113495bSYour Name  * wma_roam_vdev_disconnect_event_handler() - Handles roam vdev disconnect event
224*5113495bSYour Name  * @handle: wma_handle
225*5113495bSYour Name  * @event: pmkid request event data pointer
226*5113495bSYour Name  * @len: length of the data
227*5113495bSYour Name  *
228*5113495bSYour Name  * @Return: 0 on sucees else error code
229*5113495bSYour Name  */
230*5113495bSYour Name int wma_roam_vdev_disconnect_event_handler(void *handle, uint8_t *event,
231*5113495bSYour Name 					   uint32_t len);
232*5113495bSYour Name 
233*5113495bSYour Name #else
wma_mlme_roam_synch_event_handler_cb(void * handle,uint8_t * event,uint32_t len)234*5113495bSYour Name static inline int wma_mlme_roam_synch_event_handler_cb(void *handle,
235*5113495bSYour Name 						       uint8_t *event,
236*5113495bSYour Name 						       uint32_t len)
237*5113495bSYour Name {
238*5113495bSYour Name 	return 0;
239*5113495bSYour Name }
240*5113495bSYour Name 
241*5113495bSYour Name static inline int
wma_roam_vdev_disconnect_event_handler(void * handle,uint8_t * event,uint32_t len)242*5113495bSYour Name wma_roam_vdev_disconnect_event_handler(void *handle, uint8_t *event,
243*5113495bSYour Name 				       uint32_t len)
244*5113495bSYour Name {
245*5113495bSYour Name 	return 0;
246*5113495bSYour Name }
247*5113495bSYour Name 
248*5113495bSYour Name static inline int
wma_roam_stats_event_handler(WMA_HANDLE handle,uint8_t * event,uint32_t len)249*5113495bSYour Name wma_roam_stats_event_handler(WMA_HANDLE handle, uint8_t *event,
250*5113495bSYour Name 			     uint32_t len)
251*5113495bSYour Name {
252*5113495bSYour Name 	return 0;
253*5113495bSYour Name }
254*5113495bSYour Name 
255*5113495bSYour Name static inline int
wma_roam_pmkid_request_event_handler(void * handle,uint8_t * event,uint32_t len)256*5113495bSYour Name wma_roam_pmkid_request_event_handler(void *handle,
257*5113495bSYour Name 				     uint8_t *event,
258*5113495bSYour Name 				     uint32_t len)
259*5113495bSYour Name {
260*5113495bSYour Name 	return 0;
261*5113495bSYour Name }
262*5113495bSYour Name #endif
263*5113495bSYour Name 
264*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
265*5113495bSYour Name /**
266*5113495bSYour Name  * wma_roam_scan_chan_list_event_handler() - roam scan chan list event handler
267*5113495bSYour Name  * @handle: wma handle
268*5113495bSYour Name  * @event: pointer to fw event
269*5113495bSYour Name  * @len: length of event
270*5113495bSYour Name  *
271*5113495bSYour Name  * Return: Success or Failure status
272*5113495bSYour Name  */
273*5113495bSYour Name int wma_roam_scan_chan_list_event_handler(WMA_HANDLE handle,
274*5113495bSYour Name 					  uint8_t *event,
275*5113495bSYour Name 					  uint32_t len);
276*5113495bSYour Name #else
277*5113495bSYour Name static inline int
wma_roam_scan_chan_list_event_handler(WMA_HANDLE handle,uint8_t * event,uint32_t len)278*5113495bSYour Name wma_roam_scan_chan_list_event_handler(WMA_HANDLE handle, uint8_t *event,
279*5113495bSYour Name 				      uint32_t len)
280*5113495bSYour Name {
281*5113495bSYour Name 	return 0;
282*5113495bSYour Name }
283*5113495bSYour Name #endif
284*5113495bSYour Name 
285*5113495bSYour Name QDF_STATUS wma_update_channel_list(WMA_HANDLE handle,
286*5113495bSYour Name 				   tSirUpdateChanList *chan_list);
287*5113495bSYour Name 
288*5113495bSYour Name QDF_STATUS wma_roam_scan_bmiss_cnt(tp_wma_handle wma_handle,
289*5113495bSYour Name 				   A_INT32 first_bcnt,
290*5113495bSYour Name 				   A_UINT32 final_bcnt, uint32_t vdev_id);
291*5113495bSYour Name 
292*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
293*5113495bSYour Name void wma_set_ric_req(tp_wma_handle wma, void *msg, uint8_t is_add_ts);
294*5113495bSYour Name #endif
295*5113495bSYour Name 
296*5113495bSYour Name #ifdef FEATURE_WLAN_EXTSCAN
297*5113495bSYour Name 
298*5113495bSYour Name int wma_extscan_start_stop_event_handler(void *handle,
299*5113495bSYour Name 					 uint8_t *cmd_param_info,
300*5113495bSYour Name 					 uint32_t len);
301*5113495bSYour Name 
302*5113495bSYour Name int wma_extscan_operations_event_handler(void *handle,
303*5113495bSYour Name 					 uint8_t *cmd_param_info,
304*5113495bSYour Name 					 uint32_t len);
305*5113495bSYour Name 
306*5113495bSYour Name int wma_extscan_table_usage_event_handler(void *handle,
307*5113495bSYour Name 					  uint8_t *cmd_param_info,
308*5113495bSYour Name 					  uint32_t len);
309*5113495bSYour Name 
310*5113495bSYour Name int wma_extscan_capabilities_event_handler(void *handle,
311*5113495bSYour Name 					   uint8_t *cmd_param_info,
312*5113495bSYour Name 					   uint32_t len);
313*5113495bSYour Name 
314*5113495bSYour Name int wma_extscan_hotlist_match_event_handler(void *handle,
315*5113495bSYour Name 					    uint8_t *cmd_param_info,
316*5113495bSYour Name 					    uint32_t len);
317*5113495bSYour Name 
318*5113495bSYour Name int wma_extscan_cached_results_event_handler(void *handle,
319*5113495bSYour Name 					     uint8_t *cmd_param_info,
320*5113495bSYour Name 					     uint32_t len);
321*5113495bSYour Name 
322*5113495bSYour Name int wma_extscan_change_results_event_handler(void *handle,
323*5113495bSYour Name 					     uint8_t *cmd_param_info,
324*5113495bSYour Name 					     uint32_t len);
325*5113495bSYour Name 
326*5113495bSYour Name int wma_passpoint_match_event_handler(void *handle,
327*5113495bSYour Name 				     uint8_t  *cmd_param_info,
328*5113495bSYour Name 				     uint32_t len);
329*5113495bSYour Name 
330*5113495bSYour Name #endif
331*5113495bSYour Name 
332*5113495bSYour Name #ifdef FEATURE_WLAN_EXTSCAN
333*5113495bSYour Name int wma_extscan_wow_event_callback(void *handle, void *event, uint32_t len);
334*5113495bSYour Name 
335*5113495bSYour Name void wma_register_extscan_event_handler(tp_wma_handle wma_handle);
336*5113495bSYour Name 
337*5113495bSYour Name /**
338*5113495bSYour Name  * wma_start_extscan() - start extscan command to fw.
339*5113495bSYour Name  * @wma: wma handle
340*5113495bSYour Name  * @params: extscan command request params
341*5113495bSYour Name  *
342*5113495bSYour Name  * This function sends start extscan request to fw.
343*5113495bSYour Name  *
344*5113495bSYour Name  * Return: QDF Status.
345*5113495bSYour Name  */
346*5113495bSYour Name QDF_STATUS wma_start_extscan(tp_wma_handle wma,
347*5113495bSYour Name 			     struct wifi_scan_cmd_req_params *pstart);
348*5113495bSYour Name 
349*5113495bSYour Name /**
350*5113495bSYour Name  * wma_stop_extscan() - stop extscan command to fw.
351*5113495bSYour Name  * @wma: wma handle
352*5113495bSYour Name  * @params: stop scan command request params
353*5113495bSYour Name  *
354*5113495bSYour Name  * This function sends stop extscan request to fw.
355*5113495bSYour Name  *
356*5113495bSYour Name  * Return: QDF Status.
357*5113495bSYour Name  */
358*5113495bSYour Name QDF_STATUS wma_stop_extscan(tp_wma_handle wma,
359*5113495bSYour Name 			    struct extscan_stop_req_params *params);
360*5113495bSYour Name 
361*5113495bSYour Name /**
362*5113495bSYour Name  * wma_extscan_start_hotlist_monitor() - start hotlist monitor
363*5113495bSYour Name  * @wma: wma handle
364*5113495bSYour Name  * @params: hotlist request params
365*5113495bSYour Name  *
366*5113495bSYour Name  * This function configures hotlist monitor in fw.
367*5113495bSYour Name  *
368*5113495bSYour Name  * Return: QDF status
369*5113495bSYour Name  */
370*5113495bSYour Name QDF_STATUS wma_extscan_start_hotlist_monitor(tp_wma_handle wma,
371*5113495bSYour Name 			struct extscan_bssid_hotlist_set_params *params);
372*5113495bSYour Name 
373*5113495bSYour Name /**
374*5113495bSYour Name  * wma_extscan_stop_hotlist_monitor() - stop hotlist monitor
375*5113495bSYour Name  * @wma: wma handle
376*5113495bSYour Name  * @params: hotlist request params
377*5113495bSYour Name  *
378*5113495bSYour Name  * This function configures hotlist monitor to stop in fw.
379*5113495bSYour Name  *
380*5113495bSYour Name  * Return: QDF status
381*5113495bSYour Name  */
382*5113495bSYour Name QDF_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
383*5113495bSYour Name 			struct extscan_bssid_hotlist_reset_params *params);
384*5113495bSYour Name 
385*5113495bSYour Name /**
386*5113495bSYour Name  * wma_extscan_start_change_monitor() - send start change monitor cmd
387*5113495bSYour Name  * @wma: wma handle
388*5113495bSYour Name  * @params: change monitor request params
389*5113495bSYour Name  *
390*5113495bSYour Name  * This function sends start change monitor request to fw.
391*5113495bSYour Name  *
392*5113495bSYour Name  * Return: QDF status
393*5113495bSYour Name  */
394*5113495bSYour Name QDF_STATUS
395*5113495bSYour Name wma_extscan_start_change_monitor(tp_wma_handle wma,
396*5113495bSYour Name 			struct extscan_set_sig_changereq_params *params);
397*5113495bSYour Name 
398*5113495bSYour Name /**
399*5113495bSYour Name  * wma_extscan_stop_change_monitor() - send stop change monitor cmd
400*5113495bSYour Name  * @wma: wma handle
401*5113495bSYour Name  * @params: change monitor request params
402*5113495bSYour Name  *
403*5113495bSYour Name  * This function sends stop change monitor request to fw.
404*5113495bSYour Name  *
405*5113495bSYour Name  * Return: QDF status
406*5113495bSYour Name  */
407*5113495bSYour Name QDF_STATUS
408*5113495bSYour Name wma_extscan_stop_change_monitor(tp_wma_handle wma,
409*5113495bSYour Name 			struct extscan_capabilities_reset_params *params);
410*5113495bSYour Name 
411*5113495bSYour Name /**
412*5113495bSYour Name  * wma_extscan_get_cached_results() - extscan get cached results
413*5113495bSYour Name  * @wma: wma handle
414*5113495bSYour Name  * @params: cached results parameters
415*5113495bSYour Name  *
416*5113495bSYour Name  * This function send request to fw to get cached results.
417*5113495bSYour Name  *
418*5113495bSYour Name  * Return: QDF status
419*5113495bSYour Name  */
420*5113495bSYour Name QDF_STATUS
421*5113495bSYour Name wma_extscan_get_cached_results(tp_wma_handle wma,
422*5113495bSYour Name 			       struct extscan_cached_result_params *params);
423*5113495bSYour Name 
424*5113495bSYour Name /**
425*5113495bSYour Name  * wma_extscan_get_capabilities() - extscan get capabilities
426*5113495bSYour Name  * @wma: wma handle
427*5113495bSYour Name  * @params: get capabilities params
428*5113495bSYour Name  *
429*5113495bSYour Name  * This function sends request to fw to get extscan capabilities.
430*5113495bSYour Name  *
431*5113495bSYour Name  * Return: QDF status
432*5113495bSYour Name  */
433*5113495bSYour Name QDF_STATUS
434*5113495bSYour Name wma_extscan_get_capabilities(tp_wma_handle wma,
435*5113495bSYour Name 			     struct extscan_capabilities_params *params);
436*5113495bSYour Name 
437*5113495bSYour Name /**
438*5113495bSYour Name  * wma_set_epno_network_list() - set epno network list
439*5113495bSYour Name  * @wma: WMA handle
440*5113495bSYour Name  * @req: epno config params request structure
441*5113495bSYour Name  *
442*5113495bSYour Name  * This function reads the incoming epno config request structure
443*5113495bSYour Name  * and constructs the WMI message to the firmware.
444*5113495bSYour Name  *
445*5113495bSYour Name  * Return: 0 on success, error number otherwise
446*5113495bSYour Name  */
447*5113495bSYour Name QDF_STATUS wma_set_epno_network_list(tp_wma_handle wma,
448*5113495bSYour Name 				     struct wifi_enhanced_pno_params *req);
449*5113495bSYour Name 
450*5113495bSYour Name /**
451*5113495bSYour Name  * wma_set_passpoint_network_list() - set passpoint network list
452*5113495bSYour Name  * @wma: WMA handle
453*5113495bSYour Name  * @params: passpoint network request structure
454*5113495bSYour Name  *
455*5113495bSYour Name  * This function sends the passpoint configs down to the firmware
456*5113495bSYour Name  *
457*5113495bSYour Name  * Return: QDF_STATUS enumeration
458*5113495bSYour Name  */
459*5113495bSYour Name QDF_STATUS
460*5113495bSYour Name wma_set_passpoint_network_list(tp_wma_handle wma,
461*5113495bSYour Name 			       struct wifi_passpoint_req_param *params);
462*5113495bSYour Name 
463*5113495bSYour Name /**
464*5113495bSYour Name  * wma_reset_passpoint_network_list() - reset passpoint network list
465*5113495bSYour Name  * @wma: WMA handle
466*5113495bSYour Name  * @params: passpoint network request structure
467*5113495bSYour Name  *
468*5113495bSYour Name  * This function sends down WMI command with network id set to wildcard id.
469*5113495bSYour Name  * firmware shall clear all the config entries
470*5113495bSYour Name  *
471*5113495bSYour Name  * Return: QDF_STATUS enumeration
472*5113495bSYour Name  */
473*5113495bSYour Name QDF_STATUS
474*5113495bSYour Name wma_reset_passpoint_network_list(tp_wma_handle wma,
475*5113495bSYour Name 				 struct wifi_passpoint_req_param *params);
476*5113495bSYour Name #endif
477*5113495bSYour Name 
478*5113495bSYour Name /**
479*5113495bSYour Name  * wma_scan_probe_setoui() - set scan probe OUI
480*5113495bSYour Name  * @wma: wma handle
481*5113495bSYour Name  * @set_oui: OUI parameters
482*5113495bSYour Name  *
483*5113495bSYour Name  * set scan probe OUI parameters in firmware
484*5113495bSYour Name  *
485*5113495bSYour Name  * Return: QDF status
486*5113495bSYour Name  */
487*5113495bSYour Name QDF_STATUS wma_scan_probe_setoui(tp_wma_handle wma,
488*5113495bSYour Name 				 struct scan_mac_oui *set_oui);
489*5113495bSYour Name 
490*5113495bSYour Name void wma_roam_better_ap_handler(tp_wma_handle wma, uint32_t vdev_id);
491*5113495bSYour Name 
492*5113495bSYour Name /*
493*5113495bSYour Name  * wma_dev_if.c functions declarations
494*5113495bSYour Name  */
495*5113495bSYour Name 
496*5113495bSYour Name /**
497*5113495bSYour Name  * wma_find_vdev_id_by_addr() - find vdev_id from mac address
498*5113495bSYour Name  * @wma: wma handle
499*5113495bSYour Name  * @addr: mac address
500*5113495bSYour Name  * @vdev_id: return vdev_id
501*5113495bSYour Name  *
502*5113495bSYour Name  * Return: SUCCESS or FAILURE
503*5113495bSYour Name  */
504*5113495bSYour Name QDF_STATUS wma_find_vdev_id_by_addr(tp_wma_handle wma, uint8_t *addr,
505*5113495bSYour Name 				    uint8_t *vdev_id);
506*5113495bSYour Name 
507*5113495bSYour Name bool wma_is_vdev_in_ap_mode(tp_wma_handle wma, uint8_t vdev_id);
508*5113495bSYour Name 
509*5113495bSYour Name /**
510*5113495bSYour Name  * wma_get_vdev_bssid() - Get BSSID from mlme_obj
511*5113495bSYour Name  * @vdev - pointer to vdev
512*5113495bSYour Name  *
513*5113495bSYour Name  * This API is used to get BSSID stored in vdev mlme object.
514*5113495bSYour Name  *
515*5113495bSYour Name  * Return: pointer to bssid on success else NULL.
516*5113495bSYour Name  */
517*5113495bSYour Name uint8_t *wma_get_vdev_bssid(struct wlan_objmgr_vdev *vdev);
518*5113495bSYour Name 
519*5113495bSYour Name /**
520*5113495bSYour Name  * wma_find_bssid_by_vdev_id() - Get the BSS ID corresponding to the vdev ID
521*5113495bSYour Name  * @wma - wma handle
522*5113495bSYour Name  * @vdev_id - vdev ID
523*5113495bSYour Name  *
524*5113495bSYour Name  * Return: Returns pointer to bssid on success,
525*5113495bSYour Name  *         otherwise returns NULL.
526*5113495bSYour Name  */
wma_find_bssid_by_vdev_id(tp_wma_handle wma,uint8_t vdev_id)527*5113495bSYour Name static inline uint8_t *wma_find_bssid_by_vdev_id(tp_wma_handle wma,
528*5113495bSYour Name 						 uint8_t vdev_id)
529*5113495bSYour Name {
530*5113495bSYour Name 	if (vdev_id >= wma->max_bssid)
531*5113495bSYour Name 		return NULL;
532*5113495bSYour Name 
533*5113495bSYour Name 	return wma_get_vdev_bssid(wma->interfaces[vdev_id].vdev);
534*5113495bSYour Name }
535*5113495bSYour Name 
536*5113495bSYour Name /**
537*5113495bSYour Name  * wma_find_vdev_id_by_bssid() - Get the corresponding vdev_id from BSSID
538*5113495bSYour Name  * @wma - wma handle
539*5113495bSYour Name  * @bssid - bssid address
540*5113495bSYour Name  * @vdev_id - vdev ID
541*5113495bSYour Name  *
542*5113495bSYour Name  * Return: SUCCESS or FAILURE.
543*5113495bSYour Name  */
544*5113495bSYour Name QDF_STATUS wma_find_vdev_id_by_bssid(tp_wma_handle wma, uint8_t *bssid,
545*5113495bSYour Name 				     uint8_t *vdev_id);
546*5113495bSYour Name 
547*5113495bSYour Name QDF_STATUS wma_vdev_set_param(wmi_unified_t wmi_handle, uint32_t if_id,
548*5113495bSYour Name 				uint32_t param_id, uint32_t param_value);
549*5113495bSYour Name 
550*5113495bSYour Name QDF_STATUS wma_remove_peer(tp_wma_handle wma, uint8_t *mac_addr,
551*5113495bSYour Name 			   uint8_t vdev_id, bool no_fw_peer_delete);
552*5113495bSYour Name 
553*5113495bSYour Name QDF_STATUS wma_peer_unmap_conf_send(tp_wma_handle wma,
554*5113495bSYour Name 				    struct send_peer_unmap_conf_params *msg);
555*5113495bSYour Name 
556*5113495bSYour Name /**
557*5113495bSYour Name  * wma_send_del_bss_response() - send delete bss resp
558*5113495bSYour Name  * @wma: wma handle
559*5113495bSYour Name  * @resp: pointer to del bss response
560*5113495bSYour Name  *
561*5113495bSYour Name  * Return: none
562*5113495bSYour Name  */
563*5113495bSYour Name void wma_send_del_bss_response(tp_wma_handle wma, struct del_bss_resp *resp);
564*5113495bSYour Name 
565*5113495bSYour Name /**
566*5113495bSYour Name  * __wma_handle_vdev_stop_rsp() - vdev stop response handler
567*5113495bSYour Name  * @resp_event: pointer to response received
568*5113495bSYour Name  *
569*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or QDF_ERROR code
570*5113495bSYour Name  */
571*5113495bSYour Name QDF_STATUS
572*5113495bSYour Name __wma_handle_vdev_stop_rsp(struct vdev_stop_response *resp_event);
573*5113495bSYour Name 
574*5113495bSYour Name void wma_hold_req_timer(void *data);
575*5113495bSYour Name struct wma_target_req *wma_fill_hold_req(tp_wma_handle wma,
576*5113495bSYour Name 				    uint8_t vdev_id, uint32_t msg_type,
577*5113495bSYour Name 				    uint8_t type, void *params,
578*5113495bSYour Name 				    uint32_t timeout);
579*5113495bSYour Name 
580*5113495bSYour Name /**
581*5113495bSYour Name  * wma_add_bss() - Add BSS request to fw as per opmode
582*5113495bSYour Name  * @wma: wma handle
583*5113495bSYour Name  * @params: add bss params
584*5113495bSYour Name  *
585*5113495bSYour Name  * Return: none
586*5113495bSYour Name  */
587*5113495bSYour Name void wma_add_bss(tp_wma_handle wma, struct bss_params *params);
588*5113495bSYour Name 
589*5113495bSYour Name /**
590*5113495bSYour Name  * wma_add_sta() - process add sta request as per opmode
591*5113495bSYour Name  * @wma: wma handle
592*5113495bSYour Name  * @add_Sta: add sta params
593*5113495bSYour Name  *
594*5113495bSYour Name  * Return: none
595*5113495bSYour Name  */
596*5113495bSYour Name void wma_add_sta(tp_wma_handle wma, tpAddStaParams add_sta);
597*5113495bSYour Name 
598*5113495bSYour Name /**
599*5113495bSYour Name  * wma_delete_sta() - process del sta request as per opmode
600*5113495bSYour Name  * @wma: wma handle
601*5113495bSYour Name  * @del_sta: delete sta params
602*5113495bSYour Name  *
603*5113495bSYour Name  * Return: none
604*5113495bSYour Name  */
605*5113495bSYour Name void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta);
606*5113495bSYour Name 
607*5113495bSYour Name /**
608*5113495bSYour Name  * wma_delete_bss() - process delete bss request from upper layer
609*5113495bSYour Name  * @wma: wma handle
610*5113495bSYour Name  * @vdev_id: vdev id
611*5113495bSYour Name  *
612*5113495bSYour Name  * Return: none
613*5113495bSYour Name  */
614*5113495bSYour Name void wma_delete_bss(tp_wma_handle wma, uint8_t vdev_id);
615*5113495bSYour Name 
616*5113495bSYour Name int32_t wma_find_vdev_by_type(tp_wma_handle wma, int32_t type);
617*5113495bSYour Name 
618*5113495bSYour Name /**
619*5113495bSYour Name  * wma_set_vdev_intrabss_fwd() - set intra_fwd value to wni_in.
620*5113495bSYour Name  * @wma_handle: wma handle
621*5113495bSYour Name  * @pdis_intra_fwd: Pointer to DisableIntraBssFwd struct
622*5113495bSYour Name  *
623*5113495bSYour Name  * Return: none
624*5113495bSYour Name  */
625*5113495bSYour Name void wma_set_vdev_intrabss_fwd(tp_wma_handle wma_handle,
626*5113495bSYour Name 				      tpDisableIntraBssFwd pdis_intra_fwd);
627*5113495bSYour Name 
628*5113495bSYour Name /**
629*5113495bSYour Name  * wma_delete_bss_ho_fail() - process delete bss request for handoff failure
630*5113495bSYour Name  * @wma: wma handle
631*5113495bSYour Name  * @vdev_id: vdev id
632*5113495bSYour Name  *
633*5113495bSYour Name  * Delete BSS in case of ROAM_HO_FAIL processing is handled separately in
634*5113495bSYour Name  * this routine. It needs to be done without sending any commands to firmware
635*5113495bSYour Name  * because firmware has already stopped and deleted peer and vdev is down.
636*5113495bSYour Name  * Relevant logic is aggregated from other routines. It changes the host
637*5113495bSYour Name  * data structures without sending VDEV_STOP, PEER_FLUSH_TIDS, PEER_DELETE
638*5113495bSYour Name  * and VDEV_DOWN commands to firmware.
639*5113495bSYour Name  *
640*5113495bSYour Name  * Return: none
641*5113495bSYour Name  */
642*5113495bSYour Name void wma_delete_bss_ho_fail(tp_wma_handle wma, uint8_t vdev_id);
643*5113495bSYour Name 
644*5113495bSYour Name uint32_t wma_get_bcn_rate_code(uint16_t rate);
645*5113495bSYour Name 
646*5113495bSYour Name /*
647*5113495bSYour Name  * wma_mgmt.c functions declarations
648*5113495bSYour Name  */
649*5113495bSYour Name #ifdef WLAN_WMI_BCN
650*5113495bSYour Name int wma_beacon_swba_handler(void *handle, uint8_t *event, uint32_t len);
651*5113495bSYour Name #endif
652*5113495bSYour Name 
653*5113495bSYour Name /**
654*5113495bSYour Name  * wma_peer_sta_kickout_event_handler() - kickout event handler
655*5113495bSYour Name  * @handle: wma handle
656*5113495bSYour Name  * @event: event data
657*5113495bSYour Name  * @len: data length
658*5113495bSYour Name  *
659*5113495bSYour Name  * Kickout event is received from firmware on observing beacon miss
660*5113495bSYour Name  * It handles kickout event for different modes and indicate to
661*5113495bSYour Name  * upper layers.
662*5113495bSYour Name  *
663*5113495bSYour Name  * Return: 0 for success or error code
664*5113495bSYour Name  */
665*5113495bSYour Name int wma_peer_sta_kickout_event_handler(void *handle, uint8_t *event,
666*5113495bSYour Name 				       uint32_t len);
667*5113495bSYour Name 
668*5113495bSYour Name /**
669*5113495bSYour Name  * wma_unified_bcntx_status_event_handler() - beacon tx status event handler
670*5113495bSYour Name  * @handle: wma handle
671*5113495bSYour Name  * @cmd_param_info: event data
672*5113495bSYour Name  * @len: data length
673*5113495bSYour Name  *
674*5113495bSYour Name  * WMI Handler for WMI_OFFLOAD_BCN_TX_STATUS_EVENTID event from firmware.
675*5113495bSYour Name  * This event is generated by FW when the beacon transmission is offloaded
676*5113495bSYour Name  * and the host performs beacon template modification using WMI_BCN_TMPL_CMDID
677*5113495bSYour Name  * The FW generates this event when the first successful beacon transmission
678*5113495bSYour Name  * after template update
679*5113495bSYour Name  *
680*5113495bSYour Name  * Return: 0 for success or error code
681*5113495bSYour Name  */
682*5113495bSYour Name int wma_unified_bcntx_status_event_handler(void *handle,
683*5113495bSYour Name 					   uint8_t *cmd_param_info,
684*5113495bSYour Name 					   uint32_t len);
685*5113495bSYour Name 
686*5113495bSYour Name void wma_set_sta_sa_query_param(tp_wma_handle wma,
687*5113495bSYour Name 				  uint8_t vdev_id);
688*5113495bSYour Name 
689*5113495bSYour Name void wma_set_sta_keep_alive(tp_wma_handle wma, uint8_t vdev_id,
690*5113495bSYour Name 				   uint32_t method, uint32_t timeperiod,
691*5113495bSYour Name 				   uint8_t *hostv4addr, uint8_t *destv4addr,
692*5113495bSYour Name 				   uint8_t *destmac);
693*5113495bSYour Name 
694*5113495bSYour Name /**
695*5113495bSYour Name  * wma_objmgr_set_peer_mlme_phymode() - set phymode to peer object
696*5113495bSYour Name  * @wma:      wma handle
697*5113495bSYour Name  * @mac_addr: mac addr of peer
698*5113495bSYour Name  * @phymode:  phymode value to set
699*5113495bSYour Name  *
700*5113495bSYour Name  * Return: None
701*5113495bSYour Name  */
702*5113495bSYour Name void wma_objmgr_set_peer_mlme_phymode(tp_wma_handle wma, uint8_t *mac_addr,
703*5113495bSYour Name 				      enum wlan_phymode phymode);
704*5113495bSYour Name 
705*5113495bSYour Name /**
706*5113495bSYour Name  * wma_objmgr_set_peer_mlme_nss() - set nss to peer object
707*5113495bSYour Name  * @wma:      wma handle
708*5113495bSYour Name  * @mac_addr: mac addr of peer
709*5113495bSYour Name  * @nss:  nss value to set
710*5113495bSYour Name  *
711*5113495bSYour Name  * Return: None
712*5113495bSYour Name  */
713*5113495bSYour Name void wma_objmgr_set_peer_mlme_nss(tp_wma_handle wma, uint8_t *mac_addr,
714*5113495bSYour Name 				  uint8_t nss);
715*5113495bSYour Name 
716*5113495bSYour Name /**
717*5113495bSYour Name  * wma_objmgr_get_peer_mlme_nss() - set nss to peer object
718*5113495bSYour Name  * @wma:      wma handle
719*5113495bSYour Name  * @mac_addr: mac addr of peer
720*5113495bSYour Name  *
721*5113495bSYour Name  * Return: Peer NSS
722*5113495bSYour Name  */
723*5113495bSYour Name uint8_t wma_objmgr_get_peer_mlme_nss(tp_wma_handle wma, uint8_t *mac_addr);
724*5113495bSYour Name 
725*5113495bSYour Name QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
726*5113495bSYour Name 					   tSirNwType nw_type,
727*5113495bSYour Name 					   tpAddStaParams params);
728*5113495bSYour Name 
729*5113495bSYour Name QDF_STATUS wmi_unified_vdev_set_gtx_cfg_send(wmi_unified_t wmi_handle,
730*5113495bSYour Name 				  uint32_t if_id,
731*5113495bSYour Name 				  gtx_config_t *gtx_info);
732*5113495bSYour Name 
733*5113495bSYour Name void wma_update_protection_mode(tp_wma_handle wma, uint8_t vdev_id,
734*5113495bSYour Name 			   uint8_t llbcoexist);
735*5113495bSYour Name 
736*5113495bSYour Name void wma_process_update_beacon_params(tp_wma_handle wma,
737*5113495bSYour Name 				 tUpdateBeaconParams *bcn_params);
738*5113495bSYour Name 
739*5113495bSYour Name /**
740*5113495bSYour Name  * wma_update_rts_params() - update cfg parameters to target
741*5113495bSYour Name  * @wma: wma handle
742*5113495bSYour Name  * @value: rts_threshold
743*5113495bSYour Name  *
744*5113495bSYour Name  * Return: none
745*5113495bSYour Name  */
746*5113495bSYour Name void wma_update_rts_params(tp_wma_handle wma, uint32_t value);
747*5113495bSYour Name 
748*5113495bSYour Name /**
749*5113495bSYour Name  * wma_update_frag_params() - update cfg parameters to target
750*5113495bSYour Name  * @wma: wma handle
751*5113495bSYour Name  * @value: frag_threshold
752*5113495bSYour Name  *
753*5113495bSYour Name  * Return: none
754*5113495bSYour Name  */
755*5113495bSYour Name void wma_update_frag_params(tp_wma_handle wma, uint32_t value);
756*5113495bSYour Name 
757*5113495bSYour Name QDF_STATUS wma_process_update_edca_param_req(WMA_HANDLE handle,
758*5113495bSYour Name 						    tEdcaParams *edca_params);
759*5113495bSYour Name 
760*5113495bSYour Name /**
761*5113495bSYour Name  * wma_tbttoffset_update_event_handler() - tbtt offset update handler
762*5113495bSYour Name  * @handle: wma handle
763*5113495bSYour Name  * @event: event buffer
764*5113495bSYour Name  * @len: data length
765*5113495bSYour Name  *
766*5113495bSYour Name  * Return: 0 for success or error code
767*5113495bSYour Name  */
768*5113495bSYour Name int wma_tbttoffset_update_event_handler(void *handle, uint8_t *event,
769*5113495bSYour Name 					       uint32_t len);
770*5113495bSYour Name 
771*5113495bSYour Name void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
772*5113495bSYour Name 				    tpSendProbeRespParams probe_rsp_info);
773*5113495bSYour Name 
774*5113495bSYour Name /**
775*5113495bSYour Name  * wma_set_ap_vdev_up() - send vdev up req
776*5113495bSYour Name  * @wma: wma handle
777*5113495bSYour Name  * @vdev_id: vdev id
778*5113495bSYour Name  *
779*5113495bSYour Name  * Return: QDF_STATUS
780*5113495bSYour Name  */
781*5113495bSYour Name QDF_STATUS wma_set_ap_vdev_up(tp_wma_handle wma, uint8_t vdev_id);
782*5113495bSYour Name 
783*5113495bSYour Name void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info);
784*5113495bSYour Name 
785*5113495bSYour Name void wma_set_keepalive_req(tp_wma_handle wma,
786*5113495bSYour Name 				  struct keep_alive_req *keepalive);
787*5113495bSYour Name 
788*5113495bSYour Name void wma_beacon_miss_handler(tp_wma_handle wma, uint32_t vdev_id,
789*5113495bSYour Name 			     int32_t rssi);
790*5113495bSYour Name 
791*5113495bSYour Name void wma_process_update_opmode(tp_wma_handle wma_handle,
792*5113495bSYour Name 				      tUpdateVHTOpMode *update_vht_opmode);
793*5113495bSYour Name 
794*5113495bSYour Name void wma_process_update_rx_nss(tp_wma_handle wma_handle,
795*5113495bSYour Name 				      tUpdateRxNss *update_rx_nss);
796*5113495bSYour Name 
797*5113495bSYour Name void wma_process_update_membership(tp_wma_handle wma_handle,
798*5113495bSYour Name 					  tUpdateMembership *membership);
799*5113495bSYour Name 
800*5113495bSYour Name void wma_process_update_userpos(tp_wma_handle wma_handle,
801*5113495bSYour Name 				       tUpdateUserPos *userpos);
802*5113495bSYour Name 
803*5113495bSYour Name /*
804*5113495bSYour Name  * wma_power.c functions declarations
805*5113495bSYour Name  */
806*5113495bSYour Name 
807*5113495bSYour Name /**
808*5113495bSYour Name  * wma_enable_sta_ps_mode() - enable sta powersave params in fw
809*5113495bSYour Name  * @ps_req: power save request
810*5113495bSYour Name  *
811*5113495bSYour Name  * Return: none
812*5113495bSYour Name  */
813*5113495bSYour Name void wma_enable_sta_ps_mode(tpEnablePsParams ps_req);
814*5113495bSYour Name 
815*5113495bSYour Name QDF_STATUS wma_unified_set_sta_ps_param(wmi_unified_t wmi_handle,
816*5113495bSYour Name 					    uint32_t vdev_id, uint32_t param,
817*5113495bSYour Name 					    uint32_t value);
818*5113495bSYour Name 
819*5113495bSYour Name QDF_STATUS wma_set_ap_peer_uapsd(tp_wma_handle wma, uint32_t vdev_id,
820*5113495bSYour Name 				     uint8_t *peer_addr, uint8_t uapsd_value,
821*5113495bSYour Name 				     uint8_t max_sp);
822*5113495bSYour Name 
823*5113495bSYour Name void wma_update_edca_params_for_ac(tSirMacEdcaParamRecord *edca_param,
824*5113495bSYour Name 				   struct wmi_host_wme_vparams *wmm_param,
825*5113495bSYour Name 				   int ac, bool mu_edca_param,
826*5113495bSYour Name 				   uint8_t *debug_str,
827*5113495bSYour Name 				   uint32_t debug_str_size, uint32_t *len);
828*5113495bSYour Name 
829*5113495bSYour Name void wma_set_tx_power(WMA_HANDLE handle,
830*5113495bSYour Name 			     tMaxTxPowerParams *tx_pwr_params);
831*5113495bSYour Name 
832*5113495bSYour Name void wma_set_max_tx_power(WMA_HANDLE handle,
833*5113495bSYour Name 				 tMaxTxPowerParams *tx_pwr_params);
834*5113495bSYour Name 
835*5113495bSYour Name void wma_disable_sta_ps_mode(tpDisablePsParams ps_req);
836*5113495bSYour Name 
837*5113495bSYour Name /**
838*5113495bSYour Name  * wma_enable_uapsd_mode() - enable uapsd mode in fw
839*5113495bSYour Name  * @wma: wma handle
840*5113495bSYour Name  * @ps_req: power save request
841*5113495bSYour Name  *
842*5113495bSYour Name  * Return: none
843*5113495bSYour Name  */
844*5113495bSYour Name void wma_enable_uapsd_mode(tp_wma_handle wma, tpEnableUapsdParams ps_req);
845*5113495bSYour Name 
846*5113495bSYour Name void wma_disable_uapsd_mode(tp_wma_handle wma, tpDisableUapsdParams ps_req);
847*5113495bSYour Name 
848*5113495bSYour Name QDF_STATUS wma_get_temperature(tp_wma_handle wma_handle);
849*5113495bSYour Name 
850*5113495bSYour Name int wma_pdev_temperature_evt_handler(void *handle, uint8_t *event,
851*5113495bSYour Name 					    uint32_t len);
852*5113495bSYour Name 
853*5113495bSYour Name QDF_STATUS wma_process_tx_power_limits(WMA_HANDLE handle,
854*5113495bSYour Name 				       struct tx_power_limit *ptxlim);
855*5113495bSYour Name 
856*5113495bSYour Name void wma_update_noa(struct beacon_info *beacon,
857*5113495bSYour Name 			   struct p2p_sub_element_noa *noa_ie);
858*5113495bSYour Name 
859*5113495bSYour Name void wma_update_probe_resp_noa(tp_wma_handle wma_handle,
860*5113495bSYour Name 				      struct p2p_sub_element_noa *noa_ie);
861*5113495bSYour Name 
862*5113495bSYour Name void wma_process_set_mimops_req(tp_wma_handle wma_handle,
863*5113495bSYour Name 				       tSetMIMOPS *mimops);
864*5113495bSYour Name 
865*5113495bSYour Name QDF_STATUS wma_set_mimops(tp_wma_handle wma, uint8_t vdev_id, int value);
866*5113495bSYour Name 
867*5113495bSYour Name QDF_STATUS wma_notify_modem_power_state(void *wma_ptr,
868*5113495bSYour Name 					tSirModemPowerStateInd *pReq);
869*5113495bSYour Name 
870*5113495bSYour Name QDF_STATUS wma_set_smps_params(tp_wma_handle wma, uint8_t vdev_id,
871*5113495bSYour Name 				      int value);
872*5113495bSYour Name 
873*5113495bSYour Name /*
874*5113495bSYour Name  * wma_data.c functions declarations
875*5113495bSYour Name  */
876*5113495bSYour Name /**
877*5113495bSYour Name  * wma_set_bss_rate_flags() - set rate flags based on BSS capability
878*5113495bSYour Name  * @wma: pointer to wma handle
879*5113495bSYour Name  * @vdev_id: vdev id
880*5113495bSYour Name  * @add_bss: pointer to bss params
881*5113495bSYour Name  *
882*5113495bSYour Name  * Return: none
883*5113495bSYour Name  */
884*5113495bSYour Name void wma_set_bss_rate_flags(tp_wma_handle wma, uint8_t vdev_id,
885*5113495bSYour Name 			    struct bss_params *add_bss);
886*5113495bSYour Name 
887*5113495bSYour Name /**
888*5113495bSYour Name  * wma_get_vht_rate_flags() - Return the VHT rate flags corresponding to the BW
889*5113495bSYour Name  * @ch_width: BW for which rate flags is required
890*5113495bSYour Name  *
891*5113495bSYour Name  * Return: Rate flags corresponding to ch_width
892*5113495bSYour Name  */
893*5113495bSYour Name enum tx_rate_info wma_get_vht_rate_flags(enum phy_ch_width ch_width);
894*5113495bSYour Name 
895*5113495bSYour Name /**
896*5113495bSYour Name  * wma_get_ht_rate_flags() - Return the HT rate flags corresponding to the BW
897*5113495bSYour Name  * @ch_width: BW for which rate flags is required
898*5113495bSYour Name  *
899*5113495bSYour Name  * Return: Rate flags corresponding to ch_width
900*5113495bSYour Name  */
901*5113495bSYour Name enum tx_rate_info wma_get_ht_rate_flags(enum phy_ch_width ch_width);
902*5113495bSYour Name 
903*5113495bSYour Name /**
904*5113495bSYour Name  * wma_get_he_rate_flags() - Return the HE rate flags corresponding to the BW
905*5113495bSYour Name  * @ch_width: BW for which rate flags is required
906*5113495bSYour Name  *
907*5113495bSYour Name  * Return: Rate flags corresponding to ch_width
908*5113495bSYour Name  */
909*5113495bSYour Name enum tx_rate_info wma_get_he_rate_flags(enum phy_ch_width ch_width);
910*5113495bSYour Name 
911*5113495bSYour Name /**
912*5113495bSYour Name  * wma_set_vht_txbf_cfg() - set VHT Tx beamforming capability to FW
913*5113495bSYour Name  * @mac: Global MAC context
914*5113495bSYour Name  * @vdev_id: VDEV id
915*5113495bSYour Name  *
916*5113495bSYour Name  * Return: None
917*5113495bSYour Name  */
918*5113495bSYour Name void wma_set_vht_txbf_cfg(struct mac_context *mac, uint8_t vdev_id);
919*5113495bSYour Name 
920*5113495bSYour Name int32_t wmi_unified_send_txbf(tp_wma_handle wma, tpAddStaParams params);
921*5113495bSYour Name 
922*5113495bSYour Name /**
923*5113495bSYour Name  * wma_check_txrx_chainmask() - check txrx chainmask
924*5113495bSYour Name  * @num_rf_chains: number of rf chains
925*5113495bSYour Name  * @cmd_value: command value
926*5113495bSYour Name  *
927*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
928*5113495bSYour Name  */
929*5113495bSYour Name QDF_STATUS wma_check_txrx_chainmask(int num_rf_chains, int cmd_value);
930*5113495bSYour Name 
931*5113495bSYour Name QDF_STATUS wma_set_enable_disable_mcc_adaptive_scheduler(uint32_t
932*5113495bSYour Name 						mcc_adaptive_scheduler);
933*5113495bSYour Name 
934*5113495bSYour Name QDF_STATUS wma_set_mcc_channel_time_latency
935*5113495bSYour Name 	(tp_wma_handle wma,
936*5113495bSYour Name 	uint32_t mcc_channel, uint32_t mcc_channel_time_latency);
937*5113495bSYour Name 
938*5113495bSYour Name QDF_STATUS wma_set_mcc_channel_time_quota
939*5113495bSYour Name 	(tp_wma_handle wma,
940*5113495bSYour Name 	uint32_t adapter_1_chan_number,
941*5113495bSYour Name 	uint32_t adapter_1_quota, uint32_t adapter_2_chan_number);
942*5113495bSYour Name 
943*5113495bSYour Name /**
944*5113495bSYour Name  * wma_process_rate_update_indate() - rate update indication
945*5113495bSYour Name  * @wma: wma handle
946*5113495bSYour Name  * @pRateUpdateParams: Rate update params
947*5113495bSYour Name  *
948*5113495bSYour Name  * This function update rate & short GI interval to fw based on params
949*5113495bSYour Name  * send by SME.
950*5113495bSYour Name  *
951*5113495bSYour Name  * Return: QDF status
952*5113495bSYour Name  */
953*5113495bSYour Name QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
954*5113495bSYour Name 					    tSirRateUpdateInd *
955*5113495bSYour Name 					    pRateUpdateParams);
956*5113495bSYour Name 
957*5113495bSYour Name QDF_STATUS wma_tx_attach(tp_wma_handle wma_handle);
958*5113495bSYour Name 
959*5113495bSYour Name QDF_STATUS wma_tx_detach(tp_wma_handle wma_handle);
960*5113495bSYour Name 
961*5113495bSYour Name #if defined(QCA_LL_LEGACY_TX_FLOW_CONTROL) || \
962*5113495bSYour Name 	defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(CONFIG_HL_SUPPORT)
963*5113495bSYour Name 
964*5113495bSYour Name /**
965*5113495bSYour Name  * wma_mcc_vdev_tx_pause_evt_handler() - pause event handler
966*5113495bSYour Name  * @handle: wma handle
967*5113495bSYour Name  * @event: event buffer
968*5113495bSYour Name  * @len: data length
969*5113495bSYour Name  *
970*5113495bSYour Name  * This function handle pause event from fw and pause/unpause
971*5113495bSYour Name  * vdev.
972*5113495bSYour Name  *
973*5113495bSYour Name  * Return: 0 for success or error code.
974*5113495bSYour Name  */
975*5113495bSYour Name int wma_mcc_vdev_tx_pause_evt_handler(void *handle, uint8_t *event,
976*5113495bSYour Name 					     uint32_t len);
977*5113495bSYour Name #endif
978*5113495bSYour Name 
979*5113495bSYour Name #if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
980*5113495bSYour Name QDF_STATUS wma_process_init_bad_peer_tx_ctl_info(tp_wma_handle wma,
981*5113495bSYour Name 					struct t_bad_peer_txtcl_config *config);
982*5113495bSYour Name #else
983*5113495bSYour Name static inline QDF_STATUS
wma_process_init_bad_peer_tx_ctl_info(tp_wma_handle wma,struct t_bad_peer_txtcl_config * config)984*5113495bSYour Name wma_process_init_bad_peer_tx_ctl_info(tp_wma_handle wma,
985*5113495bSYour Name 			struct t_bad_peer_txtcl_config *config)
986*5113495bSYour Name {
987*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
988*5113495bSYour Name }
989*5113495bSYour Name #endif
990*5113495bSYour Name 
991*5113495bSYour Name QDF_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
992*5113495bSYour Name 					 t_thermal_mgmt *pThermalParams);
993*5113495bSYour Name 
994*5113495bSYour Name QDF_STATUS wma_process_set_thermal_level(tp_wma_handle wma,
995*5113495bSYour Name 					 uint8_t thermal_level);
996*5113495bSYour Name 
997*5113495bSYour Name QDF_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
998*5113495bSYour Name 				       t_thermal_cmd_params thermal_info);
999*5113495bSYour Name 
1000*5113495bSYour Name int wma_thermal_mgmt_evt_handler(void *handle, uint8_t *event,
1001*5113495bSYour Name 					uint32_t len);
1002*5113495bSYour Name /*
1003*5113495bSYour Name  * wma_utils.c functions declarations
1004*5113495bSYour Name  */
1005*5113495bSYour Name 
1006*5113495bSYour Name #ifdef WLAN_FEATURE_STATS_EXT
1007*5113495bSYour Name /**
1008*5113495bSYour Name  * wma_stats_ext_event_handler() - extended stats event handler
1009*5113495bSYour Name  * @handle:     wma handle
1010*5113495bSYour Name  * @event_buf:  event buffer received from fw
1011*5113495bSYour Name  * @len:        length of data
1012*5113495bSYour Name  *
1013*5113495bSYour Name  * Return: 0 for success or error code
1014*5113495bSYour Name  */
1015*5113495bSYour Name int wma_stats_ext_event_handler(void *handle, uint8_t *event_buf,
1016*5113495bSYour Name 				       uint32_t len);
1017*5113495bSYour Name #endif
1018*5113495bSYour Name 
1019*5113495bSYour Name enum eSmpsModeValue host_map_smps_mode(A_UINT32 fw_smps_mode);
1020*5113495bSYour Name int wma_smps_mode_to_force_mode_param(uint8_t smps_mode);
1021*5113495bSYour Name 
1022*5113495bSYour Name #ifdef WLAN_FEATURE_LINK_LAYER_STATS
1023*5113495bSYour Name void wma_register_ll_stats_event_handler(tp_wma_handle wma_handle);
1024*5113495bSYour Name 
1025*5113495bSYour Name /**
1026*5113495bSYour Name  * wma_process_ll_stats_clear_req() - clear link layer stats
1027*5113495bSYour Name  * @wma: wma handle
1028*5113495bSYour Name  * @clearReq: ll stats clear request command params
1029*5113495bSYour Name  *
1030*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
1031*5113495bSYour Name  */
1032*5113495bSYour Name QDF_STATUS wma_process_ll_stats_clear_req
1033*5113495bSYour Name 	(tp_wma_handle wma, const tpSirLLStatsClearReq clearReq);
1034*5113495bSYour Name 
1035*5113495bSYour Name QDF_STATUS wma_process_ll_stats_set_req
1036*5113495bSYour Name 	(tp_wma_handle wma, const tpSirLLStatsSetReq setReq);
1037*5113495bSYour Name 
1038*5113495bSYour Name /**
1039*5113495bSYour Name  * wma_process_ll_stats_get_req() - link layer stats get request
1040*5113495bSYour Name  * @wma:wma handle
1041*5113495bSYour Name  * @getReq:ll stats get request command params
1042*5113495bSYour Name  *
1043*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
1044*5113495bSYour Name  */
1045*5113495bSYour Name QDF_STATUS wma_process_ll_stats_get_req
1046*5113495bSYour Name 	(tp_wma_handle wma, const tpSirLLStatsGetReq getReq);
1047*5113495bSYour Name 
1048*5113495bSYour Name int wma_unified_link_iface_stats_event_handler(void *handle,
1049*5113495bSYour Name 					       uint8_t *cmd_param_info,
1050*5113495bSYour Name 					       uint32_t len);
1051*5113495bSYour Name void wma_config_stats_ext_threshold(tp_wma_handle wma,
1052*5113495bSYour Name 				    struct sir_ll_ext_stats_threshold *thresh);
1053*5113495bSYour Name #endif
1054*5113495bSYour Name 
1055*5113495bSYour Name void wma_post_link_status(tAniGetLinkStatus *pGetLinkStatus,
1056*5113495bSYour Name 			  uint8_t link_status);
1057*5113495bSYour Name 
1058*5113495bSYour Name /**
1059*5113495bSYour Name  * wma_link_status_event_handler() - link status event handler
1060*5113495bSYour Name  * @handle: wma handle
1061*5113495bSYour Name  * @cmd_param_info: data from event
1062*5113495bSYour Name  * @len: length
1063*5113495bSYour Name  *
1064*5113495bSYour Name  * Return: 0 for success or error code
1065*5113495bSYour Name  */
1066*5113495bSYour Name int wma_link_status_event_handler(void *handle, uint8_t *cmd_param_info,
1067*5113495bSYour Name 				  uint32_t len);
1068*5113495bSYour Name 
1069*5113495bSYour Name /**
1070*5113495bSYour Name  * wma_rso_cmd_status_event_handler() - RSO Command status event handler
1071*5113495bSYour Name  * @vdev_id: VDEV id
1072*5113495bSYour Name  * @notif: roam notification
1073*5113495bSYour Name  *
1074*5113495bSYour Name  * This function is used to send RSO command status to upper layer
1075*5113495bSYour Name  *
1076*5113495bSYour Name  * Return: 0 for success
1077*5113495bSYour Name  */
1078*5113495bSYour Name int wma_rso_cmd_status_event_handler(uint8_t vdev_id, uint32_t notif);
1079*5113495bSYour Name 
1080*5113495bSYour Name QDF_STATUS wma_send_link_speed(uint32_t link_speed);
1081*5113495bSYour Name 
1082*5113495bSYour Name int wma_link_speed_event_handler(void *handle, uint8_t *cmd_param_info,
1083*5113495bSYour Name 				 uint32_t len);
1084*5113495bSYour Name 
1085*5113495bSYour Name int wma_unified_debug_print_event_handler(void *handle, uint8_t *datap,
1086*5113495bSYour Name 					  uint32_t len);
1087*5113495bSYour Name 
1088*5113495bSYour Name /**
1089*5113495bSYour Name  * wma_peer_phymode() - get phymode
1090*5113495bSYour Name  * @nw_type: nw type
1091*5113495bSYour Name  * @sta_type: sta type
1092*5113495bSYour Name  * @is_ht: is ht supported
1093*5113495bSYour Name  * @ch_width: supported channel width
1094*5113495bSYour Name  * @is_vht: is vht supported
1095*5113495bSYour Name  * @is_he: is HE supported
1096*5113495bSYour Name  * @is_eht: is EHT supported
1097*5113495bSYour Name  *
1098*5113495bSYour Name  * Return: host phymode
1099*5113495bSYour Name  */
1100*5113495bSYour Name enum wlan_phymode
1101*5113495bSYour Name wma_peer_phymode(tSirNwType nw_type, uint8_t sta_type,
1102*5113495bSYour Name 		 uint8_t is_ht, uint8_t ch_width,
1103*5113495bSYour Name 		 uint8_t is_vht, bool is_he, bool is_eht);
1104*5113495bSYour Name 
1105*5113495bSYour Name int32_t wma_txrx_fw_stats_reset(tp_wma_handle wma_handle,
1106*5113495bSYour Name 				uint8_t vdev_id, uint32_t value);
1107*5113495bSYour Name 
1108*5113495bSYour Name int32_t wma_set_txrx_fw_stats_level(tp_wma_handle wma_handle,
1109*5113495bSYour Name 				    uint8_t vdev_id, uint32_t value);
1110*5113495bSYour Name 
1111*5113495bSYour Name /*
1112*5113495bSYour Name  * wma_features.c functions declarations
1113*5113495bSYour Name  */
1114*5113495bSYour Name 
1115*5113495bSYour Name /**
1116*5113495bSYour Name  * wma_sar_register_event_handlers() - Register SAR event handlers
1117*5113495bSYour Name  * @handle: WMA Handle
1118*5113495bSYour Name  *
1119*5113495bSYour Name  * Function to be called during WMA initialization to register SAR
1120*5113495bSYour Name  * event handlers with WMI
1121*5113495bSYour Name  *
1122*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if registration is successful, otherwise
1123*5113495bSYour Name  *         an error enumeration
1124*5113495bSYour Name  */
1125*5113495bSYour Name QDF_STATUS wma_sar_register_event_handlers(WMA_HANDLE handle);
1126*5113495bSYour Name 
1127*5113495bSYour Name void wma_process_link_status_req(tp_wma_handle wma,
1128*5113495bSYour Name 				 tAniGetLinkStatus *pGetLinkStatus);
1129*5113495bSYour Name 
1130*5113495bSYour Name /**
1131*5113495bSYour Name  * wma_get_isolation() - get antenna isolation
1132*5113495bSYour Name  * @handle: wma interface
1133*5113495bSYour Name  *
1134*5113495bSYour Name  * This function will send WMI_COEX_GET_ANTENNA_ISOLATION_CMDID to FW
1135*5113495bSYour Name  *
1136*5113495bSYour Name  * Return: 0 on success, otherwise error value
1137*5113495bSYour Name  */
1138*5113495bSYour Name QDF_STATUS wma_get_isolation(tp_wma_handle wma);
1139*5113495bSYour Name 
1140*5113495bSYour Name int wma_profile_data_report_event_handler(void *handle, uint8_t *event_buf,
1141*5113495bSYour Name 				       uint32_t len);
1142*5113495bSYour Name 
1143*5113495bSYour Name QDF_STATUS wma_unified_fw_profiling_cmd(wmi_unified_t wmi_handle,
1144*5113495bSYour Name 				uint32_t cmd, uint32_t value1, uint32_t value2);
1145*5113495bSYour Name 
1146*5113495bSYour Name int wma_unified_csa_offload_enable(tp_wma_handle wma, uint8_t vdev_id);
1147*5113495bSYour Name 
1148*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS
1149*5113495bSYour Name int wma_tdls_event_handler(void *handle, uint8_t *event, uint32_t len);
1150*5113495bSYour Name #endif
1151*5113495bSYour Name 
1152*5113495bSYour Name int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len);
1153*5113495bSYour Name 
1154*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT
1155*5113495bSYour Name int wma_oem_data_response_handler(void *handle, uint8_t *datap,
1156*5113495bSYour Name 				  uint32_t len);
1157*5113495bSYour Name #endif
1158*5113495bSYour Name 
1159*5113495bSYour Name #if !defined(REMOVE_PKT_LOG)
1160*5113495bSYour Name QDF_STATUS wma_pktlog_wmi_send_cmd(WMA_HANDLE handle,
1161*5113495bSYour Name 				   struct ath_pktlog_wmi_params *params);
1162*5113495bSYour Name #endif
1163*5113495bSYour Name 
1164*5113495bSYour Name int wma_wow_wakeup_host_event(void *handle, uint8_t *event,
1165*5113495bSYour Name 				     uint32_t len);
1166*5113495bSYour Name 
1167*5113495bSYour Name int wma_d0_wow_disable_ack_event(void *handle, uint8_t *event, uint32_t len);
1168*5113495bSYour Name 
1169*5113495bSYour Name int wma_pdev_resume_event_handler(void *handle, uint8_t *event, uint32_t len);
1170*5113495bSYour Name 
1171*5113495bSYour Name void wma_del_ts_req(tp_wma_handle wma, struct del_ts_params *msg);
1172*5113495bSYour Name 
1173*5113495bSYour Name /**
1174*5113495bSYour Name  * wma_aggr_qos_req() - send aggr qos request to fw
1175*5113495bSYour Name  * @wma: handle to wma
1176*5113495bSYour Name  * @pAggrQosRspMsg - combined struct for all ADD_TS requests.
1177*5113495bSYour Name  *
1178*5113495bSYour Name  * A function to handle WMA_AGGR_QOS_REQ. This will send out
1179*5113495bSYour Name  * ADD_TS requests to firmware in loop for all the ACs with
1180*5113495bSYour Name  * active flow.
1181*5113495bSYour Name  *
1182*5113495bSYour Name  * Return: none
1183*5113495bSYour Name  */
1184*5113495bSYour Name void wma_aggr_qos_req(tp_wma_handle wma,
1185*5113495bSYour Name 		      struct aggr_add_ts_param *pAggrQosRspMsg);
1186*5113495bSYour Name 
1187*5113495bSYour Name void wma_add_ts_req(tp_wma_handle wma, struct add_ts_param *msg);
1188*5113495bSYour Name 
1189*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
1190*5113495bSYour Name QDF_STATUS wma_process_tsm_stats_req(tp_wma_handle wma_handler,
1191*5113495bSYour Name 				     void *pTsmStatsMsg);
1192*5113495bSYour Name void wma_config_plm(tp_wma_handle wma, struct plm_req_params *plm);
1193*5113495bSYour Name #endif
1194*5113495bSYour Name 
1195*5113495bSYour Name QDF_STATUS wma_process_mcbc_set_filter_req(tp_wma_handle wma_handle,
1196*5113495bSYour Name 					   tSirRcvFltMcAddrList * mcbc_param);
1197*5113495bSYour Name 
1198*5113495bSYour Name QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
1199*5113495bSYour Name 						tSirAddPeriodicTxPtrn *pattern);
1200*5113495bSYour Name 
1201*5113495bSYour Name QDF_STATUS wma_process_del_periodic_tx_ptrn_ind(WMA_HANDLE handle,
1202*5113495bSYour Name 						tSirDelPeriodicTxPtrn *
1203*5113495bSYour Name 						pDelPeriodicTxPtrnParams);
1204*5113495bSYour Name 
1205*5113495bSYour Name #ifdef WLAN_FEATURE_STATS_EXT
1206*5113495bSYour Name /**
1207*5113495bSYour Name  * wma_stats_ext_req() - request ext stats from fw
1208*5113495bSYour Name  * @wma_ptr: wma handle
1209*5113495bSYour Name  * @preq: stats ext params
1210*5113495bSYour Name  *
1211*5113495bSYour Name  * Return: QDF status
1212*5113495bSYour Name  */
1213*5113495bSYour Name QDF_STATUS wma_stats_ext_req(void *wma_ptr, tpStatsExtRequest preq);
1214*5113495bSYour Name #endif
1215*5113495bSYour Name 
1216*5113495bSYour Name #ifdef WLAN_FEATURE_EXTWOW_SUPPORT
1217*5113495bSYour Name QDF_STATUS wma_enable_ext_wow(tp_wma_handle wma, tpSirExtWoWParams params);
1218*5113495bSYour Name 
1219*5113495bSYour Name int wma_set_app_type1_params_in_fw(tp_wma_handle wma,
1220*5113495bSYour Name 				   tpSirAppType1Params appType1Params);
1221*5113495bSYour Name 
1222*5113495bSYour Name QDF_STATUS wma_set_app_type2_params_in_fw(tp_wma_handle wma,
1223*5113495bSYour Name 				   tpSirAppType2Params appType2Params);
1224*5113495bSYour Name #endif
1225*5113495bSYour Name 
1226*5113495bSYour Name #ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1227*5113495bSYour Name int wma_auto_shutdown_event_handler(void *handle, uint8_t *event,
1228*5113495bSYour Name 				    uint32_t len);
1229*5113495bSYour Name 
1230*5113495bSYour Name /**
1231*5113495bSYour Name  * wma_set_auto_shutdown_timer_req() - sets auto shutdown timer in firmware
1232*5113495bSYour Name  * @wma_handle: wma handle
1233*5113495bSYour Name  * @auto_sh_cmd: auto shutdown timer params
1234*5113495bSYour Name  *
1235*5113495bSYour Name  * Return: QDF status
1236*5113495bSYour Name  */
1237*5113495bSYour Name QDF_STATUS
1238*5113495bSYour Name wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
1239*5113495bSYour Name 				struct auto_shutdown_cmd *auto_sh_cmd);
1240*5113495bSYour Name #endif
1241*5113495bSYour Name 
1242*5113495bSYour Name #ifdef WLAN_FEATURE_TSF
1243*5113495bSYour Name int wma_vdev_tsf_handler(void *handle, uint8_t *data, uint32_t data_len);
1244*5113495bSYour Name QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle, uint32_t vdev_id);
1245*5113495bSYour Name QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle, uint32_t vdev_id);
1246*5113495bSYour Name QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin);
1247*5113495bSYour Name 
1248*5113495bSYour Name #ifdef WLAN_FEATURE_TSF_AUTO_REPORT
1249*5113495bSYour Name /**
1250*5113495bSYour Name  * wma_set_tsf_auto_report() - Set TSF auto report in firmware
1251*5113495bSYour Name  * @wma_handle: wma handle
1252*5113495bSYour Name  * @vdev_id: vdev id
1253*5113495bSYour Name  * @param_id: enum GEN_PARAM
1254*5113495bSYour Name  * @ena: true for enable, and false for disable
1255*5113495bSYour Name  *
1256*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success, otherwise for failure
1257*5113495bSYour Name  */
1258*5113495bSYour Name QDF_STATUS wma_set_tsf_auto_report(WMA_HANDLE handle, uint32_t vdev_id,
1259*5113495bSYour Name 				   uint32_t param_id, bool ena);
1260*5113495bSYour Name #else /* !WLAN_FEATURE_TSF_AUTO_REPORT */
wma_set_tsf_auto_report(WMA_HANDLE handle,uint32_t vdev_id,uint32_t param_id,bool ena)1261*5113495bSYour Name static inline QDF_STATUS wma_set_tsf_auto_report(WMA_HANDLE handle,
1262*5113495bSYour Name 						 uint32_t vdev_id,
1263*5113495bSYour Name 						 uint32_t param_id, bool ena)
1264*5113495bSYour Name {
1265*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
1266*5113495bSYour Name }
1267*5113495bSYour Name #endif /* WLAN_FEATURE_TSF_AUTO_REPORT */
1268*5113495bSYour Name 
1269*5113495bSYour Name #else
wma_capture_tsf(tp_wma_handle wma_handle,uint32_t vdev_id)1270*5113495bSYour Name static inline QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle,
1271*5113495bSYour Name 					uint32_t vdev_id)
1272*5113495bSYour Name {
1273*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1274*5113495bSYour Name }
1275*5113495bSYour Name 
wma_reset_tsf_gpio(tp_wma_handle wma_handle,uint32_t vdev_id)1276*5113495bSYour Name static inline QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle,
1277*5113495bSYour Name 					 uint32_t vdev_id)
1278*5113495bSYour Name {
1279*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1280*5113495bSYour Name }
1281*5113495bSYour Name 
wma_vdev_tsf_handler(void * handle,uint8_t * data,uint32_t data_len)1282*5113495bSYour Name static inline int wma_vdev_tsf_handler(void *handle, uint8_t *data,
1283*5113495bSYour Name 					uint32_t data_len)
1284*5113495bSYour Name {
1285*5113495bSYour Name 	return 0;
1286*5113495bSYour Name }
1287*5113495bSYour Name 
wma_set_tsf_gpio_pin(WMA_HANDLE handle,uint32_t pin)1288*5113495bSYour Name static inline QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin)
1289*5113495bSYour Name {
1290*5113495bSYour Name 	return QDF_STATUS_E_INVAL;
1291*5113495bSYour Name }
1292*5113495bSYour Name #endif
1293*5113495bSYour Name 
1294*5113495bSYour Name QDF_STATUS wma_set_wisa_params(tp_wma_handle wma, struct sir_wisa_params *wisa);
1295*5113495bSYour Name 
1296*5113495bSYour Name #ifdef DHCP_SERVER_OFFLOAD
1297*5113495bSYour Name /**
1298*5113495bSYour Name  * wma_process_dhcpserver_offload() - enable DHCP server offload
1299*5113495bSYour Name  * @wma_handle: wma handle
1300*5113495bSYour Name  * @params: DHCP server offload information
1301*5113495bSYour Name  *
1302*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
1303*5113495bSYour Name  */
1304*5113495bSYour Name QDF_STATUS
1305*5113495bSYour Name wma_process_dhcpserver_offload(tp_wma_handle wma_handle,
1306*5113495bSYour Name 			       struct dhcp_offload_info_params *params);
1307*5113495bSYour Name #endif
1308*5113495bSYour Name 
1309*5113495bSYour Name #ifdef WLAN_FEATURE_GPIO_LED_FLASHING
1310*5113495bSYour Name QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle,
1311*5113495bSYour Name 				struct flashing_req_params *flashing);
1312*5113495bSYour Name #endif
1313*5113495bSYour Name 
1314*5113495bSYour Name /**
1315*5113495bSYour Name  * wma_sar_rsp_evt_handler() -  process sar response event from FW.
1316*5113495bSYour Name  * @handle: ol scn handle
1317*5113495bSYour Name  * @event: event buffer
1318*5113495bSYour Name  * @len: buffer length
1319*5113495bSYour Name  *
1320*5113495bSYour Name  * Return: 0 for success or error code
1321*5113495bSYour Name  */
1322*5113495bSYour Name int wma_sar_rsp_evt_handler(ol_scn_t handle, uint8_t *event, uint32_t len);
1323*5113495bSYour Name 
1324*5113495bSYour Name #ifdef FEATURE_WLAN_CH_AVOID
1325*5113495bSYour Name QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
1326*5113495bSYour Name 					   tSirChAvoidUpdateReq *
1327*5113495bSYour Name 					   ch_avoid_update_req);
1328*5113495bSYour Name #endif
1329*5113495bSYour Name 
1330*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS
1331*5113495bSYour Name int wma_update_tdls_peer_state(WMA_HANDLE handle,
1332*5113495bSYour Name 			       struct tdls_peer_update_state *peer_state);
1333*5113495bSYour Name #endif
1334*5113495bSYour Name 
1335*5113495bSYour Name void wma_set_vdev_mgmt_rate(tp_wma_handle wma, uint8_t vdev_id);
1336*5113495bSYour Name void wma_set_sap_keepalive(tp_wma_handle wma, uint8_t vdev_id);
1337*5113495bSYour Name 
1338*5113495bSYour Name #ifdef FEATURE_RSSI_MONITOR
1339*5113495bSYour Name int wma_rssi_breached_event_handler(void *handle,
1340*5113495bSYour Name 				u_int8_t  *cmd_param_info, u_int32_t len);
1341*5113495bSYour Name #else /* FEATURE_RSSI_MONITOR */
1342*5113495bSYour Name static inline
wma_rssi_breached_event_handler(void * handle,u_int8_t * cmd_param_info,u_int32_t len)1343*5113495bSYour Name int wma_rssi_breached_event_handler(void *handle,
1344*5113495bSYour Name 				u_int8_t  *cmd_param_info, u_int32_t len)
1345*5113495bSYour Name {
1346*5113495bSYour Name 	return 0;
1347*5113495bSYour Name }
1348*5113495bSYour Name #endif /* FEATURE_RSSI_MONITOR */
1349*5113495bSYour Name 
1350*5113495bSYour Name QDF_STATUS wma_process_cfg_action_frm_tb_ppdu(tp_wma_handle wma,
1351*5113495bSYour Name 				   struct cfg_action_frm_tb_ppdu *cfg_info);
1352*5113495bSYour Name 
1353*5113495bSYour Name QDF_STATUS wma_process_set_ie_info(tp_wma_handle wma,
1354*5113495bSYour Name 				   struct vdev_ie_info *ie_info);
1355*5113495bSYour Name int wma_peer_assoc_conf_handler(void *handle, uint8_t *cmd_param_info,
1356*5113495bSYour Name 				uint32_t len);
1357*5113495bSYour Name 
1358*5113495bSYour Name /**
1359*5113495bSYour Name  * wma_peer_create_confirm_handler  - Handle peer create confirmation
1360*5113495bSYour Name  * result
1361*5113495bSYour Name  * @handle: wma_handle
1362*5113495bSYour Name  * @evt_param_info: event data
1363*5113495bSYour Name  * @len: event length
1364*5113495bSYour Name  *
1365*5113495bSYour Name  * Return: 0 on success. Error value on failure
1366*5113495bSYour Name  */
1367*5113495bSYour Name int wma_peer_create_confirm_handler(void *handle, uint8_t *evt_param_info,
1368*5113495bSYour Name 				    uint32_t len);
1369*5113495bSYour Name 
1370*5113495bSYour Name int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
1371*5113495bSYour Name 				uint32_t len);
1372*5113495bSYour Name 
1373*5113495bSYour Name void wma_remove_req(tp_wma_handle wma, uint8_t vdev_id,
1374*5113495bSYour Name 		    uint8_t type);
1375*5113495bSYour Name 
1376*5113495bSYour Name /**
1377*5113495bSYour Name  * wma_find_remove_req_msgtype() - find and remove request for vdev id
1378*5113495bSYour Name  * @wma: wma handle
1379*5113495bSYour Name  * @vdev_id: vdev id
1380*5113495bSYour Name  * @msg_type: message request type
1381*5113495bSYour Name  *
1382*5113495bSYour Name  * Find target request for given vdev id & sub type of request.
1383*5113495bSYour Name  * Remove the same from active list.
1384*5113495bSYour Name  *
1385*5113495bSYour Name  * Return: Success if request found, failure other wise
1386*5113495bSYour Name  */
1387*5113495bSYour Name struct wma_target_req *wma_find_remove_req_msgtype(tp_wma_handle wma,
1388*5113495bSYour Name 						   uint8_t vdev_id,
1389*5113495bSYour Name 						   uint32_t msg_type);
1390*5113495bSYour Name 
1391*5113495bSYour Name /**
1392*5113495bSYour Name  * wma_remove_peer_req  - Remove the peer create
1393*5113495bSYour Name  * request from WMA queue
1394*5113495bSYour Name  * @wma: wma handle
1395*5113495bSYour Name  * @vdev_id: vdev id
1396*5113495bSYour Name  * @type: peer type
1397*5113495bSYour Name  * @peer_addr: peer address
1398*5113495bSYour Name  */
1399*5113495bSYour Name void wma_remove_peer_req(tp_wma_handle wma, uint8_t vdev_id,
1400*5113495bSYour Name 			 uint8_t type, struct qdf_mac_addr *peer_addr);
1401*5113495bSYour Name 
1402*5113495bSYour Name QDF_STATUS wma_process_hal_pwr_dbg_cmd(WMA_HANDLE handle,
1403*5113495bSYour Name 				       struct sir_mac_pwr_dbg_cmd *
1404*5113495bSYour Name 				       sir_pwr_dbg_params);
1405*5113495bSYour Name 
1406*5113495bSYour Name /**
1407*5113495bSYour Name  * wma_lost_link_info_handler() - collect lost link information and inform SME
1408*5113495bSYour Name  * @wma: WMA handle
1409*5113495bSYour Name  * @vdev_id: vdev ID
1410*5113495bSYour Name  * @rssi: rssi at disconnection time
1411*5113495bSYour Name  *
1412*5113495bSYour Name  * Return: none
1413*5113495bSYour Name  */
1414*5113495bSYour Name void wma_lost_link_info_handler(tp_wma_handle wma, uint32_t vdev_id,
1415*5113495bSYour Name 				int32_t rssi);
1416*5113495bSYour Name int wma_unified_power_debug_stats_event_handler(void *handle,
1417*5113495bSYour Name 			uint8_t *cmd_param_info, uint32_t len);
1418*5113495bSYour Name /**
1419*5113495bSYour Name  * wma_unified_beacon_debug_stats_event_handler() - collect beacon debug stats
1420*5113495bSYour Name  * @handle: WMA handle
1421*5113495bSYour Name  * @cmd_param_info: data from event
1422*5113495bSYour Name  * @len: length
1423*5113495bSYour Name  *
1424*5113495bSYour Name  * Return: 0 for success or error code
1425*5113495bSYour Name  */
1426*5113495bSYour Name int wma_unified_beacon_debug_stats_event_handler(void *handle,
1427*5113495bSYour Name 						 uint8_t *cmd_param_info,
1428*5113495bSYour Name 						 uint32_t len);
1429*5113495bSYour Name 
1430*5113495bSYour Name #if defined(CLD_PM_QOS) && defined(WLAN_FEATURE_LL_MODE)
1431*5113495bSYour Name /**
1432*5113495bSYour Name  * wma_vdev_bcn_latency_event_handler() - Get the latency info received in bcn
1433*5113495bSYour Name  * @handle: WMA handle
1434*5113495bSYour Name  * @event: data in event
1435*5113495bSYour Name  * @len: length
1436*5113495bSYour Name  *
1437*5113495bSYour Name  * Return: 0 for success or error code
1438*5113495bSYour Name  */
1439*5113495bSYour Name int wma_vdev_bcn_latency_event_handler(void *handle, uint8_t *event,
1440*5113495bSYour Name 				       uint32_t len);
1441*5113495bSYour Name #else
wma_vdev_bcn_latency_event_handler(void * handle,uint8_t * event,uint32_t len)1442*5113495bSYour Name static inline int wma_vdev_bcn_latency_event_handler(void *handle,
1443*5113495bSYour Name 						     uint8_t *event,
1444*5113495bSYour Name 						     uint32_t len)
1445*5113495bSYour Name {
1446*5113495bSYour Name 	return 0;
1447*5113495bSYour Name }
1448*5113495bSYour Name #endif
1449*5113495bSYour Name 
1450*5113495bSYour Name #ifdef FEATURE_WLAN_DIAG_SUPPORT
1451*5113495bSYour Name /**
1452*5113495bSYour Name  * wma_sta_kickout_event()- send sta kickout event
1453*5113495bSYour Name  * @kickout_reason - reasoncode for kickout
1454*5113495bSYour Name  * @macaddr[QDF_MAC_ADDR_SIZE]: Peer mac address
1455*5113495bSYour Name  * @vdev_id: Unique id for identifying the VDEV
1456*5113495bSYour Name  *
1457*5113495bSYour Name  * This function sends sta kickout diag event
1458*5113495bSYour Name  *
1459*5113495bSYour Name  * Return: void.
1460*5113495bSYour Name  */
1461*5113495bSYour Name void wma_sta_kickout_event(uint32_t kickout_reason, uint8_t vdev_id,
1462*5113495bSYour Name 							uint8_t *macaddr);
1463*5113495bSYour Name #else
wma_sta_kickout_event(uint32_t kickout_reason,uint8_t vdev_id,uint8_t * macaddr)1464*5113495bSYour Name static inline void wma_sta_kickout_event(uint32_t kickout_reason,
1465*5113495bSYour Name 					uint8_t vdev_id, uint8_t *macaddr)
1466*5113495bSYour Name {
1467*5113495bSYour Name 
1468*5113495bSYour Name };
1469*5113495bSYour Name #endif /* FEATURE_WLAN_DIAG_SUPPORT */
1470*5113495bSYour Name 
1471*5113495bSYour Name /**
1472*5113495bSYour Name  * wma_get_rcpi_req() - get rcpi request
1473*5113495bSYour Name  * @handle: wma handle
1474*5113495bSYour Name  * @rcpi_request: rcpi params
1475*5113495bSYour Name  *
1476*5113495bSYour Name  * Return: none
1477*5113495bSYour Name  */
1478*5113495bSYour Name QDF_STATUS wma_get_rcpi_req(WMA_HANDLE handle,
1479*5113495bSYour Name 			    struct sme_rcpi_req *rcpi_request);
1480*5113495bSYour Name 
1481*5113495bSYour Name /**
1482*5113495bSYour Name  * wma_rcpi_event_handler() - rcpi event handler
1483*5113495bSYour Name  * @handle: wma handle
1484*5113495bSYour Name  * @cmd_param_info: data from event
1485*5113495bSYour Name  * @len: length
1486*5113495bSYour Name  *
1487*5113495bSYour Name  * Return: 0 for success or error code
1488*5113495bSYour Name  */
1489*5113495bSYour Name int wma_rcpi_event_handler(void *handle, uint8_t *cmd_param_info,
1490*5113495bSYour Name 			   uint32_t len);
1491*5113495bSYour Name 
1492*5113495bSYour Name /**
1493*5113495bSYour Name  * wma_acquire_wakelock() - acquire the given wakelock
1494*5113495bSYour Name  * @wl: the wakelock to acquire
1495*5113495bSYour Name  * @msec: the wakelock duration in milliseconds
1496*5113495bSYour Name  *
1497*5113495bSYour Name  * This also acquires the wma runtime pm lock.
1498*5113495bSYour Name  *
1499*5113495bSYour Name  * Return: None
1500*5113495bSYour Name  */
1501*5113495bSYour Name void wma_acquire_wakelock(qdf_wake_lock_t *wl, uint32_t msec);
1502*5113495bSYour Name 
1503*5113495bSYour Name /**
1504*5113495bSYour Name  * wma_release_wakelock() - release the given wakelock
1505*5113495bSYour Name  * @wl: the wakelock to release
1506*5113495bSYour Name  *
1507*5113495bSYour Name  * This also releases the wma runtime pm lock.
1508*5113495bSYour Name  *
1509*5113495bSYour Name  * Return: None
1510*5113495bSYour Name  */
1511*5113495bSYour Name void wma_release_wakelock(qdf_wake_lock_t *wl);
1512*5113495bSYour Name 
1513*5113495bSYour Name /**
1514*5113495bSYour Name  * wma_send_vdev_stop_to_fw() - send the vdev stop command to firmware
1515*5113495bSYour Name  * @wma: a reference to the global WMA handle
1516*5113495bSYour Name  * @vdev_id: the Id of the vdev to stop
1517*5113495bSYour Name  *
1518*5113495bSYour Name  * Consumers should call wma_release_wakelock() upon receipt of the vdev stop
1519*5113495bSYour Name  * response from firmware to avoid power penalties.
1520*5113495bSYour Name  *
1521*5113495bSYour Name  * Return: QDF_STATUS
1522*5113495bSYour Name  */
1523*5113495bSYour Name QDF_STATUS wma_send_vdev_stop_to_fw(t_wma_handle *wma, uint8_t vdev_id);
1524*5113495bSYour Name 
1525*5113495bSYour Name int wma_get_arp_stats_handler(void *handle, uint8_t *data, uint32_t data_len);
1526*5113495bSYour Name 
1527*5113495bSYour Name /**
1528*5113495bSYour Name  * wma_send_vdev_down_to_fw() - send the vdev down command to firmware
1529*5113495bSYour Name  * @wma: a reference to the global WMA handle
1530*5113495bSYour Name  * @vdev_id: the Id of the vdev to down
1531*5113495bSYour Name  *
1532*5113495bSYour Name  * This also releases the vdev start wakelock.
1533*5113495bSYour Name  *
1534*5113495bSYour Name  * Return: QDF_STATUS
1535*5113495bSYour Name  */
1536*5113495bSYour Name QDF_STATUS wma_send_vdev_down_to_fw(t_wma_handle *wma, uint8_t vdev_id);
1537*5113495bSYour Name 
1538*5113495bSYour Name /*
1539*5113495bSYour Name  * wma_rx_aggr_failure_event_handler - event handler to handle rx aggr failure
1540*5113495bSYour Name  * @handle: the wma handle
1541*5113495bSYour Name  * @event_buf: buffer with event
1542*5113495bSYour Name  * @len: buffer length
1543*5113495bSYour Name  *
1544*5113495bSYour Name  * This function receives rx aggregation failure event and then pass to upper
1545*5113495bSYour Name  * layer
1546*5113495bSYour Name  *
1547*5113495bSYour Name  * Return: 0 on success
1548*5113495bSYour Name  */
1549*5113495bSYour Name int wma_rx_aggr_failure_event_handler(void *handle, u_int8_t *event_buf,
1550*5113495bSYour Name 							u_int32_t len);
1551*5113495bSYour Name 
1552*5113495bSYour Name /**
1553*5113495bSYour Name  * wma_wlan_bt_activity_evt_handler - event handler to handle bt activity
1554*5113495bSYour Name  * @handle: the WMA handle
1555*5113495bSYour Name  * @event: buffer with the event parameters
1556*5113495bSYour Name  * @len: length of the buffer
1557*5113495bSYour Name  *
1558*5113495bSYour Name  * This function receives BT activity event from firmware and passes the event
1559*5113495bSYour Name  * information to upper layers
1560*5113495bSYour Name  *
1561*5113495bSYour Name  * Return: 0 on success
1562*5113495bSYour Name  */
1563*5113495bSYour Name int wma_wlan_bt_activity_evt_handler(void *handle, uint8_t *event,
1564*5113495bSYour Name 				     uint32_t len);
1565*5113495bSYour Name 
1566*5113495bSYour Name /**
1567*5113495bSYour Name  * wma_pdev_div_info_evt_handler - event handler to handle antenna info
1568*5113495bSYour Name  * @handle: the wma handle
1569*5113495bSYour Name  * @event_buf: buffer with event
1570*5113495bSYour Name  * @len: buffer length
1571*5113495bSYour Name  *
1572*5113495bSYour Name  * This function receives antenna info from firmware and passes the event
1573*5113495bSYour Name  * to upper layer
1574*5113495bSYour Name  *
1575*5113495bSYour Name  * Return: 0 on success
1576*5113495bSYour Name  */
1577*5113495bSYour Name int wma_pdev_div_info_evt_handler(void *handle, u_int8_t *event_buf,
1578*5113495bSYour Name 	u_int32_t len);
1579*5113495bSYour Name 
1580*5113495bSYour Name /**
1581*5113495bSYour Name  * wma_update_beacon_interval() - update beacon interval in fw
1582*5113495bSYour Name  * @wma: wma handle
1583*5113495bSYour Name  * @vdev_id: vdev id
1584*5113495bSYour Name  * @beaconInterval: becon interval
1585*5113495bSYour Name  *
1586*5113495bSYour Name  * Return: none
1587*5113495bSYour Name  */
1588*5113495bSYour Name void
1589*5113495bSYour Name wma_update_beacon_interval(tp_wma_handle wma, uint8_t vdev_id,
1590*5113495bSYour Name 				uint16_t beaconInterval);
1591*5113495bSYour Name 
1592*5113495bSYour Name #define RESET_BEACON_INTERVAL_TIMEOUT 200
1593*5113495bSYour Name 
1594*5113495bSYour Name struct wma_beacon_interval_reset_req {
1595*5113495bSYour Name 	qdf_timer_t event_timeout;
1596*5113495bSYour Name 	uint8_t vdev_id;
1597*5113495bSYour Name 	uint16_t interval;
1598*5113495bSYour Name };
1599*5113495bSYour Name 
1600*5113495bSYour Name /**
1601*5113495bSYour Name  * wma_fill_beacon_interval_reset_req() - req to reset beacon interval
1602*5113495bSYour Name  * @wma: wma handle
1603*5113495bSYour Name  * @vdev_id: vdev id
1604*5113495bSYour Name  * @beacon_interval: beacon interval
1605*5113495bSYour Name  * @timeout: timeout val
1606*5113495bSYour Name  *
1607*5113495bSYour Name  * Return: status
1608*5113495bSYour Name  */
1609*5113495bSYour Name int wma_fill_beacon_interval_reset_req(tp_wma_handle wma, uint8_t vdev_id,
1610*5113495bSYour Name 				uint16_t beacon_interval, uint32_t timeout);
1611*5113495bSYour Name /*
1612*5113495bSYour Name  * wma_is_vdev_valid() - check the vdev status
1613*5113495bSYour Name  * @vdev_id: vdev identifier
1614*5113495bSYour Name  *
1615*5113495bSYour Name  * This function verifies the vdev validity
1616*5113495bSYour Name  *
1617*5113495bSYour Name  * Return: 'true' on valid vdev else 'false'
1618*5113495bSYour Name  */
1619*5113495bSYour Name bool wma_is_vdev_valid(uint32_t vdev_id);
1620*5113495bSYour Name 
1621*5113495bSYour Name /**
1622*5113495bSYour Name  * wma_vdev_obss_detection_info_handler - event handler to handle obss detection
1623*5113495bSYour Name  * @handle: the wma handle
1624*5113495bSYour Name  * @event: buffer with event
1625*5113495bSYour Name  * @len: buffer length
1626*5113495bSYour Name  *
1627*5113495bSYour Name  * This function receives obss detection info from firmware which is used to
1628*5113495bSYour Name  * decide obss protection.
1629*5113495bSYour Name  *
1630*5113495bSYour Name  * Return: 0 on success
1631*5113495bSYour Name  */
1632*5113495bSYour Name int wma_vdev_obss_detection_info_handler(void *handle, uint8_t *event,
1633*5113495bSYour Name 					 uint32_t len);
1634*5113495bSYour Name 
1635*5113495bSYour Name /**
1636*5113495bSYour Name  * wma_vdev_bss_color_collision_info_handler - event handler to
1637*5113495bSYour Name  *  handle obss color collision detection.
1638*5113495bSYour Name  * @handle: the wma handle
1639*5113495bSYour Name  * @event: buffer with event
1640*5113495bSYour Name  * @len: buffer length
1641*5113495bSYour Name  *
1642*5113495bSYour Name  * This function receives obss color collision detection info from firmware
1643*5113495bSYour Name  * which is used to select new bss color.
1644*5113495bSYour Name  *
1645*5113495bSYour Name  * Return: 0 on success
1646*5113495bSYour Name  */
1647*5113495bSYour Name int wma_vdev_bss_color_collision_info_handler(void *handle,
1648*5113495bSYour Name 					      uint8_t *event,
1649*5113495bSYour Name 					      uint32_t len);
1650*5113495bSYour Name 
1651*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT
1652*5113495bSYour Name /**
1653*5113495bSYour Name  * wma_register_twt_events - Register TWT wmi event handlers
1654*5113495bSYour Name  * @handle: wma handle
1655*5113495bSYour Name  *
1656*5113495bSYour Name  * Return: None
1657*5113495bSYour Name  */
1658*5113495bSYour Name void wma_register_twt_events(tp_wma_handle wma_handle);
1659*5113495bSYour Name #endif
1660*5113495bSYour Name 
1661*5113495bSYour Name /**
1662*5113495bSYour Name  * wma_get_roam_scan_stats() - Get roam scan stats request
1663*5113495bSYour Name  * @handle: wma handle
1664*5113495bSYour Name  * @req: request details
1665*5113495bSYour Name  *
1666*5113495bSYour Name  * Return: QDF_STATUS
1667*5113495bSYour Name  */
1668*5113495bSYour Name QDF_STATUS wma_get_roam_scan_stats(WMA_HANDLE handle,
1669*5113495bSYour Name 				   struct sir_roam_scan_stats *req);
1670*5113495bSYour Name 
1671*5113495bSYour Name /**
1672*5113495bSYour Name  * wma_roam_scan_stats_event_handler() - roam scan stats event handler
1673*5113495bSYour Name  * @handle: wma handle
1674*5113495bSYour Name  * @event: event data
1675*5113495bSYour Name  * @len: length of data
1676*5113495bSYour Name  *
1677*5113495bSYour Name  * Return: Success or Failure status
1678*5113495bSYour Name  */
1679*5113495bSYour Name int wma_roam_scan_stats_event_handler(void *handle, uint8_t *event,
1680*5113495bSYour Name 				      uint32_t len);
1681*5113495bSYour Name 
1682*5113495bSYour Name /**
1683*5113495bSYour Name  * wma_send_vdev_down() - send del bss req to firmware
1684*5113495bSYour Name  * @wma: wma handle.
1685*5113495bSYour Name  * @req: pointer to del bss response
1686*5113495bSYour Name  *
1687*5113495bSYour Name  * This function sends del bss resp to upper layer
1688*5113495bSYour Name  *
1689*5113495bSYour Name  * Return: Success or Failure status
1690*5113495bSYour Name  */
1691*5113495bSYour Name QDF_STATUS wma_send_vdev_down(tp_wma_handle wma, struct del_bss_resp *req);
1692*5113495bSYour Name 
1693*5113495bSYour Name /**
1694*5113495bSYour Name  * wma_cold_boot_cal_event_handler() - Cold boot cal event handler
1695*5113495bSYour Name  * @wma_ctx: wma handle
1696*5113495bSYour Name  * @event_buff: event data
1697*5113495bSYour Name  * @len: length of data
1698*5113495bSYour Name  *
1699*5113495bSYour Name  * Return: Success or Failure status
1700*5113495bSYour Name  */
1701*5113495bSYour Name int wma_cold_boot_cal_event_handler(void *wma_ctx, uint8_t *event_buff,
1702*5113495bSYour Name 				    uint32_t len);
1703*5113495bSYour Name 
1704*5113495bSYour Name #ifdef FEATURE_OEM_DATA
1705*5113495bSYour Name /**
1706*5113495bSYour Name  * wma_oem_event_handler() - oem data event handler
1707*5113495bSYour Name  * @wma_ctx: wma handle
1708*5113495bSYour Name  * @event_buff: event data
1709*5113495bSYour Name  * @len: length of event buffer
1710*5113495bSYour Name  *
1711*5113495bSYour Name  * Return: Success or Failure status
1712*5113495bSYour Name  */
1713*5113495bSYour Name int wma_oem_event_handler(void *wma_ctx, uint8_t *event_buff, uint32_t len);
1714*5113495bSYour Name #endif
1715*5113495bSYour Name 
1716*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT
1717*5113495bSYour Name /**
1718*5113495bSYour Name  * wma_latency_level_event_handler() - latency level event handler
1719*5113495bSYour Name  * @wma_ctx: wma handle
1720*5113495bSYour Name  * @event_buff: event data
1721*5113495bSYour Name  * @len: length of event buffer
1722*5113495bSYour Name  *
1723*5113495bSYour Name  * Return: Success or Failure status
1724*5113495bSYour Name  */
1725*5113495bSYour Name int wma_latency_level_event_handler(void *wma_ctx, uint8_t *event_buff,
1726*5113495bSYour Name 				    uint32_t len);
1727*5113495bSYour Name #endif
1728*5113495bSYour Name 
1729*5113495bSYour Name /**
1730*5113495bSYour Name  * wma_get_ani_level_evt_handler - event handler to fetch ani level
1731*5113495bSYour Name  * @handle: the wma handle
1732*5113495bSYour Name  * @event_buf: buffer with event
1733*5113495bSYour Name  * @len: buffer length
1734*5113495bSYour Name  *
1735*5113495bSYour Name  * This function receives ani level from firmware and passes the event
1736*5113495bSYour Name  * to upper layer
1737*5113495bSYour Name  *
1738*5113495bSYour Name  * Return: 0 on success
1739*5113495bSYour Name  */
1740*5113495bSYour Name int wma_get_ani_level_evt_handler(void *handle, uint8_t *event_buf,
1741*5113495bSYour Name 				  uint32_t len);
1742*5113495bSYour Name /**
1743*5113495bSYour Name  * wma_mcs_rate_match() - find the match mcs rate
1744*5113495bSYour Name  * @raw_rate: the rate to look up
1745*5113495bSYour Name  * @is_he: if it is he rate
1746*5113495bSYour Name  * @nss1_rate: the nss1 rate
1747*5113495bSYour Name  * @nss2_rate: the nss2 rate
1748*5113495bSYour Name  * @nss: the nss in use
1749*5113495bSYour Name  * @guard_interval: to get guard interval from rate
1750*5113495bSYour Name  *
1751*5113495bSYour Name  * This is a helper function to find the match of the tx_rate
1752*5113495bSYour Name  * and return nss/guard interval.
1753*5113495bSYour Name  *
1754*5113495bSYour Name  * Return: the found rate or 0 otherwise
1755*5113495bSYour Name  */
1756*5113495bSYour Name uint16_t wma_mcs_rate_match(uint16_t raw_rate, bool is_he,
1757*5113495bSYour Name 			    const uint16_t *nss1_rate,
1758*5113495bSYour Name 			    const uint16_t *nss2_rate,
1759*5113495bSYour Name 			    uint8_t *nss, enum txrate_gi *guard_interval);
1760*5113495bSYour Name 
1761*5113495bSYour Name /**
1762*5113495bSYour Name  * wma_update_edca_pifs_param() - Update edca/pifs param
1763*5113495bSYour Name  * @handle: wma handle
1764*5113495bSYour Name  * @edca_pifs_param: pointer to edca_pifs_vparam struct
1765*5113495bSYour Name  *
1766*5113495bSYour Name  * This is a helper function to update edca/pifs param for ll sap
1767*5113495bSYour Name  *
1768*5113495bSYour Name  * Return: QDF_STATUS
1769*5113495bSYour Name  */
1770*5113495bSYour Name QDF_STATUS
1771*5113495bSYour Name wma_update_edca_pifs_param(WMA_HANDLE handle,
1772*5113495bSYour Name 			   struct edca_pifs_vparam *edca_pifs_param);
1773*5113495bSYour Name 
1774*5113495bSYour Name /**
1775*5113495bSYour Name  * wma_update_bss_peer_phy_mode() - Update phymode of peer object
1776*5113495bSYour Name  * @des_chan: des_chan object which has channel information
1777*5113495bSYour Name  * @vdev: pointer to vdev object
1778*5113495bSYour Name  *
1779*5113495bSYour Name  * This is a helper function to update phymode of peer object
1780*5113495bSYour Name  *
1781*5113495bSYour Name  * Return: QDF_STATUS
1782*5113495bSYour Name  */
1783*5113495bSYour Name QDF_STATUS
1784*5113495bSYour Name wma_update_bss_peer_phy_mode(struct wlan_channel *des_chan,
1785*5113495bSYour Name 			     struct wlan_objmgr_vdev *vdev);
1786*5113495bSYour Name #endif
1787