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