xref: /wlan-driver/qcacld-3.0/core/sme/inc/sme_internal.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2024 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 #if !defined(__SMEINTERNAL_H)
21*5113495bSYour Name #define __SMEINTERNAL_H
22*5113495bSYour Name 
23*5113495bSYour Name /**
24*5113495bSYour Name  * \file  sme_internal.h
25*5113495bSYour Name  *
26*5113495bSYour Name  * \brief prototype for SME internal structures and APIs used for SME and MAC
27*5113495bSYour Name  */
28*5113495bSYour Name 
29*5113495bSYour Name /*--------------------------------------------------------------------------
30*5113495bSYour Name   Include Files
31*5113495bSYour Name   ------------------------------------------------------------------------*/
32*5113495bSYour Name #include "qdf_status.h"
33*5113495bSYour Name #include "qdf_lock.h"
34*5113495bSYour Name #include "qdf_trace.h"
35*5113495bSYour Name #include "qdf_mem.h"
36*5113495bSYour Name #include "qdf_types.h"
37*5113495bSYour Name #include "host_diag_core_event.h"
38*5113495bSYour Name #include "csr_link_list.h"
39*5113495bSYour Name #include "sme_power_save.h"
40*5113495bSYour Name #include "wmi_unified.h"
41*5113495bSYour Name #include "wmi_unified_param.h"
42*5113495bSYour Name 
43*5113495bSYour Name struct wma_twt_add_dialog_complete_event;
44*5113495bSYour Name struct wmi_twt_add_dialog_complete_event_param;
45*5113495bSYour Name struct wmi_twt_enable_complete_event_param;
46*5113495bSYour Name /*--------------------------------------------------------------------------
47*5113495bSYour Name   Type declarations
48*5113495bSYour Name   ------------------------------------------------------------------------*/
49*5113495bSYour Name 
50*5113495bSYour Name /* Mask can be only have one bit set */
51*5113495bSYour Name typedef enum eSmeCommandType {
52*5113495bSYour Name 	eSmeNoCommand = 0,
53*5113495bSYour Name 	/* this is not a command, it is to identify this is a CSR command */
54*5113495bSYour Name 	eSmeCsrCommandMask = 0x10000,
55*5113495bSYour Name 	eSmeCommandRoam,
56*5113495bSYour Name 	eSmeCommandWmStatusChange,
57*5113495bSYour Name 	/* QOS */
58*5113495bSYour Name 	eSmeQosCommandMask = 0x40000,   /* To identify Qos commands */
59*5113495bSYour Name 	eSmeCommandAddTs,
60*5113495bSYour Name 	eSmeCommandDelTs,
61*5113495bSYour Name 	e_sme_command_set_hw_mode,
62*5113495bSYour Name 	e_sme_command_nss_update,
63*5113495bSYour Name 	e_sme_command_set_dual_mac_config,
64*5113495bSYour Name 	e_sme_command_set_antenna_mode,
65*5113495bSYour Name 	e_sme_command_sap_ch_width_update,
66*5113495bSYour Name } eSmeCommandType;
67*5113495bSYour Name 
68*5113495bSYour Name typedef enum eSmeState {
69*5113495bSYour Name 	SME_STATE_STOP,
70*5113495bSYour Name 	SME_STATE_START,
71*5113495bSYour Name 	SME_STATE_READY,
72*5113495bSYour Name } eSmeState;
73*5113495bSYour Name 
74*5113495bSYour Name #define SME_IS_START(mac)  (SME_STATE_STOP != (mac)->sme.state)
75*5113495bSYour Name #define SME_IS_READY(mac)  (SME_STATE_READY == (mac)->sme.state)
76*5113495bSYour Name 
77*5113495bSYour Name /**
78*5113495bSYour Name  * struct stats_ext_event - stats_ext_event payload
79*5113495bSYour Name  * @vdev_id: ID of the vdev for the stats
80*5113495bSYour Name  * @event_data_len: length of the @event_data
81*5113495bSYour Name  * @event_data: actual ext stats
82*5113495bSYour Name  */
83*5113495bSYour Name struct stats_ext_event {
84*5113495bSYour Name 	uint32_t vdev_id;
85*5113495bSYour Name 	uint32_t event_data_len;
86*5113495bSYour Name 	uint8_t event_data[];
87*5113495bSYour Name };
88*5113495bSYour Name 
89*5113495bSYour Name /**
90*5113495bSYour Name  * typedef stats_ext_cb - stats ext callback
91*5113495bSYour Name  * @hdd_handle: Opaque handle to the HDD context
92*5113495bSYour Name  * @data: stats ext payload from firmware
93*5113495bSYour Name  */
94*5113495bSYour Name typedef void (*stats_ext_cb)(hdd_handle_t hdd_handle,
95*5113495bSYour Name 			     struct stats_ext_event *data);
96*5113495bSYour Name 
97*5113495bSYour Name /**
98*5113495bSYour Name  * typedef stats_ext2_cb - stats ext2 callback
99*5113495bSYour Name  * @hdd_handle: Opaque handle to the HDD context
100*5113495bSYour Name  * @data: stats ext2 payload from firmware
101*5113495bSYour Name  */
102*5113495bSYour Name typedef void (*stats_ext2_cb)(hdd_handle_t hdd_handle,
103*5113495bSYour Name 			      struct sir_sme_rx_aggr_hole_ind *data);
104*5113495bSYour Name 
105*5113495bSYour Name #define MAX_ACTIVE_CMD_STATS    16
106*5113495bSYour Name 
107*5113495bSYour Name typedef struct sActiveCmdStats {
108*5113495bSYour Name 	eSmeCommandType command;
109*5113495bSYour Name 	uint32_t reason;
110*5113495bSYour Name 	uint32_t sessionId;
111*5113495bSYour Name 	uint64_t timestamp;
112*5113495bSYour Name } tActiveCmdStats;
113*5113495bSYour Name 
114*5113495bSYour Name typedef struct sSelfRecoveryStats {
115*5113495bSYour Name 	tActiveCmdStats activeCmdStats[MAX_ACTIVE_CMD_STATS];
116*5113495bSYour Name 	uint8_t cmdStatsIndx;
117*5113495bSYour Name } tSelfRecoveryStats;
118*5113495bSYour Name 
119*5113495bSYour Name typedef void (*link_layer_stats_cb)(hdd_handle_t hdd_handle,
120*5113495bSYour Name 				    int indication_type,
121*5113495bSYour Name 				    tSirLLStatsResults *results,
122*5113495bSYour Name 				    void *cookie);
123*5113495bSYour Name 
124*5113495bSYour Name typedef void (*ext_scan_ind_cb)(hdd_handle_t hdd_handle,
125*5113495bSYour Name 				const uint16_t, void *);
126*5113495bSYour Name 
127*5113495bSYour Name /**
128*5113495bSYour Name  * typedef sme_link_speed_cb - sme_get_link_speed() callback function
129*5113495bSYour Name  * @info: link speed information
130*5113495bSYour Name  * @context: user context supplied to sme_get_link_speed()
131*5113495bSYour Name  *
132*5113495bSYour Name  * This is the signature of a callback function whose addresses is
133*5113495bSYour Name  * passed as the asynchronous callback function to sme_get_link_speed().
134*5113495bSYour Name  */
135*5113495bSYour Name 
136*5113495bSYour Name typedef void (*sme_link_speed_cb)(struct link_speed_info *info,
137*5113495bSYour Name 				  void *context);
138*5113495bSYour Name 
139*5113495bSYour Name typedef void (*ocb_callback)(void *context, void *response);
140*5113495bSYour Name typedef void (*sme_set_thermal_level_callback)(hdd_handle_t hdd_handle,
141*5113495bSYour Name 					       u_int8_t level);
142*5113495bSYour Name typedef void (*p2p_lo_callback)(void *context,
143*5113495bSYour Name 				struct sir_p2p_lo_event *event);
144*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT
145*5113495bSYour Name typedef void (*sme_send_oem_data_rsp_msg)(struct oem_data_rsp *);
146*5113495bSYour Name #endif
147*5113495bSYour Name 
148*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT
149*5113495bSYour Name /**
150*5113495bSYour Name  * typedef twt_enable_cb - TWT enable callback signature.
151*5113495bSYour Name  * @hdd_handle: Opaque HDD handle
152*5113495bSYour Name  * @params: TWT enable complete event parameters.
153*5113495bSYour Name  */
154*5113495bSYour Name typedef
155*5113495bSYour Name void (*twt_enable_cb)(hdd_handle_t hdd_handle,
156*5113495bSYour Name 		      struct wmi_twt_enable_complete_event_param *params);
157*5113495bSYour Name 
158*5113495bSYour Name /**
159*5113495bSYour Name  * typedef twt_disable_cb - TWT enable callback signature.
160*5113495bSYour Name  * @hdd_handle: Opaque HDD handle
161*5113495bSYour Name  */
162*5113495bSYour Name typedef void (*twt_disable_cb)(hdd_handle_t hdd_handle);
163*5113495bSYour Name 
164*5113495bSYour Name /**
165*5113495bSYour Name  * typedef twt_add_dialog_cb - TWT add dialog callback signature.
166*5113495bSYour Name  * @psoc: Pointer to global psoc
167*5113495bSYour Name  * @add_dialog_evt: pointer to event buf containing twt response parameters
168*5113495bSYour Name  * @renego_fail: Flag to indicate if its re-negotiation failure case
169*5113495bSYour Name  */
170*5113495bSYour Name typedef
171*5113495bSYour Name void (*twt_add_dialog_cb)(struct wlan_objmgr_psoc *psoc,
172*5113495bSYour Name 			  struct wma_twt_add_dialog_complete_event *add_dialog_evt,
173*5113495bSYour Name 			  bool renego_fail);
174*5113495bSYour Name 
175*5113495bSYour Name /**
176*5113495bSYour Name  * typedef twt_del_dialog_cb - TWT delete dialog callback signature.
177*5113495bSYour Name  * @psoc: Pointer to global psoc
178*5113495bSYour Name  * @params: TWT delete dialog complete event parameters.
179*5113495bSYour Name  */
180*5113495bSYour Name typedef void (*twt_del_dialog_cb)(
181*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc,
182*5113495bSYour Name 	struct wmi_twt_del_dialog_complete_event_param *params);
183*5113495bSYour Name 
184*5113495bSYour Name /**
185*5113495bSYour Name  * typedef twt_pause_dialog_cb - TWT pause dialog callback signature.
186*5113495bSYour Name  * @psoc: Pointer to global psoc
187*5113495bSYour Name  * @params: TWT pause dialog complete event parameters.
188*5113495bSYour Name  */
189*5113495bSYour Name typedef
190*5113495bSYour Name void (*twt_pause_dialog_cb)(struct wlan_objmgr_psoc *psoc,
191*5113495bSYour Name 			    struct wmi_twt_pause_dialog_complete_event_param *params);
192*5113495bSYour Name 
193*5113495bSYour Name /**
194*5113495bSYour Name  * typedef twt_nudge_dialog_cb - TWT nudge dialog callback signature.
195*5113495bSYour Name  * @psoc: Pointer to global psoc
196*5113495bSYour Name  * @params: TWT nudge dialog complete event parameters.
197*5113495bSYour Name  */
198*5113495bSYour Name typedef
199*5113495bSYour Name void (*twt_nudge_dialog_cb)(struct wlan_objmgr_psoc *psoc,
200*5113495bSYour Name 		      struct wmi_twt_nudge_dialog_complete_event_param *params);
201*5113495bSYour Name 
202*5113495bSYour Name /**
203*5113495bSYour Name  * typedef twt_resume_dialog_cb - TWT resume dialog callback signature.
204*5113495bSYour Name  * @psoc: Pointer to global psoc
205*5113495bSYour Name  * @params: TWT resume dialog complete event parameters.
206*5113495bSYour Name  */
207*5113495bSYour Name typedef
208*5113495bSYour Name void (*twt_resume_dialog_cb)(struct wlan_objmgr_psoc *psoc,
209*5113495bSYour Name 			     struct wmi_twt_resume_dialog_complete_event_param *params);
210*5113495bSYour Name 
211*5113495bSYour Name /**
212*5113495bSYour Name  * typedef twt_notify_cb - TWT notify callback signature.
213*5113495bSYour Name  * @psoc: Pointer to global psoc
214*5113495bSYour Name  * @params: TWT twt notify event parameters.
215*5113495bSYour Name  */
216*5113495bSYour Name typedef
217*5113495bSYour Name void (*twt_notify_cb)(struct wlan_objmgr_psoc *psoc,
218*5113495bSYour Name 		      struct wmi_twt_notify_event_param *params);
219*5113495bSYour Name 
220*5113495bSYour Name /**
221*5113495bSYour Name  * typedef twt_ack_comp_cb - TWT ack callback signature.
222*5113495bSYour Name  * @params: TWT ack complete event parameters.
223*5113495bSYour Name  * @context: TWT context
224*5113495bSYour Name  */
225*5113495bSYour Name typedef
226*5113495bSYour Name void (*twt_ack_comp_cb)(struct wmi_twt_ack_complete_event_param *params,
227*5113495bSYour Name 			void *context);
228*5113495bSYour Name 
229*5113495bSYour Name /**
230*5113495bSYour Name  * struct twt_callbacks - TWT response callback pointers
231*5113495bSYour Name  * @twt_enable_cb: TWT enable completion callback
232*5113495bSYour Name  * @twt_disable_cb: TWT disable completion callback
233*5113495bSYour Name  * @twt_add_dialog_cb: TWT add dialog completion callback
234*5113495bSYour Name  * @twt_del_dialog_cb: TWT delete dialog completion callback
235*5113495bSYour Name  * @twt_pause_dialog_cb: TWT pause dialog completion callback
236*5113495bSYour Name  * @twt_resume_dialog_cb: TWT resume dialog completion callback
237*5113495bSYour Name  * @twt_notify_cb: TWT notify event callback
238*5113495bSYour Name  * @twt_nudge_dialog_cb: TWT nudge dialog completion callback
239*5113495bSYour Name  * @twt_ack_comp_cb: TWT ack completion callback
240*5113495bSYour Name  */
241*5113495bSYour Name struct twt_callbacks {
242*5113495bSYour Name 	void (*twt_enable_cb)(hdd_handle_t hdd_handle,
243*5113495bSYour Name 			      struct wmi_twt_enable_complete_event_param *params);
244*5113495bSYour Name 	void (*twt_disable_cb)(hdd_handle_t hdd_handle);
245*5113495bSYour Name 	void (*twt_add_dialog_cb)(struct wlan_objmgr_psoc *psoc,
246*5113495bSYour Name 				  struct wma_twt_add_dialog_complete_event *add_dialog_event,
247*5113495bSYour Name 				  bool renego);
248*5113495bSYour Name 	void (*twt_del_dialog_cb)(struct wlan_objmgr_psoc *psoc,
249*5113495bSYour Name 				  struct wmi_twt_del_dialog_complete_event_param *params);
250*5113495bSYour Name 	void (*twt_pause_dialog_cb)(struct wlan_objmgr_psoc *psoc,
251*5113495bSYour Name 				    struct wmi_twt_pause_dialog_complete_event_param *params);
252*5113495bSYour Name 	void (*twt_resume_dialog_cb)(struct wlan_objmgr_psoc *psoc,
253*5113495bSYour Name 				     struct wmi_twt_resume_dialog_complete_event_param *params);
254*5113495bSYour Name 	void (*twt_notify_cb)(struct wlan_objmgr_psoc *psoc,
255*5113495bSYour Name 			      struct wmi_twt_notify_event_param *params);
256*5113495bSYour Name 	void (*twt_nudge_dialog_cb)(struct wlan_objmgr_psoc *psoc,
257*5113495bSYour Name 		    struct wmi_twt_nudge_dialog_complete_event_param *params);
258*5113495bSYour Name 	void (*twt_ack_comp_cb)(struct wmi_twt_ack_complete_event_param *params,
259*5113495bSYour Name 				void *context);
260*5113495bSYour Name };
261*5113495bSYour Name #endif
262*5113495bSYour Name 
263*5113495bSYour Name #ifdef FEATURE_WLAN_APF
264*5113495bSYour Name /**
265*5113495bSYour Name  * typedef apf_get_offload_cb - APF offload callback signature
266*5113495bSYour Name  * @context: Opaque context that the client can use to associate the
267*5113495bSYour Name  *    callback with the request
268*5113495bSYour Name  * @caps: APF offload capabilities as reported by firmware
269*5113495bSYour Name  */
270*5113495bSYour Name struct sir_apf_get_offload;
271*5113495bSYour Name typedef void (*apf_get_offload_cb)(void *context,
272*5113495bSYour Name 				   struct sir_apf_get_offload *caps);
273*5113495bSYour Name 
274*5113495bSYour Name /**
275*5113495bSYour Name  * typedef apf_read_mem_cb - APF read memory response callback
276*5113495bSYour Name  * @context: Opaque context that the client can use to associate the
277*5113495bSYour Name  *    callback with the request
278*5113495bSYour Name  * @evt: APF read memory response event parameters
279*5113495bSYour Name  */
280*5113495bSYour Name typedef void (*apf_read_mem_cb)(void *context,
281*5113495bSYour Name 				struct wmi_apf_read_memory_resp_event_params
282*5113495bSYour Name 									  *evt);
283*5113495bSYour Name #endif /* FEATURE_WLAN_APF */
284*5113495bSYour Name 
285*5113495bSYour Name /**
286*5113495bSYour Name  * typedef rssi_threshold_breached_cb - RSSI threshold breach callback
287*5113495bSYour Name  * @hdd_handle: Opaque handle to the HDD context
288*5113495bSYour Name  * @event: The RSSI breach event
289*5113495bSYour Name  */
290*5113495bSYour Name typedef void (*rssi_threshold_breached_cb)(hdd_handle_t hdd_handle,
291*5113495bSYour Name 					   struct rssi_breach_event *event);
292*5113495bSYour Name 
293*5113495bSYour Name /**
294*5113495bSYour Name  * typedef get_chain_rssi_callback - get chain rssi callback
295*5113495bSYour Name  * @context: Opaque context that the client can use to associate the
296*5113495bSYour Name  *    callback with the request
297*5113495bSYour Name  * @data: chain rssi result reported by firmware
298*5113495bSYour Name  */
299*5113495bSYour Name struct chain_rssi_result;
300*5113495bSYour Name typedef void (*get_chain_rssi_callback)(void *context,
301*5113495bSYour Name 					struct chain_rssi_result *data);
302*5113495bSYour Name 
303*5113495bSYour Name #ifdef FEATURE_FW_STATE
304*5113495bSYour Name /**
305*5113495bSYour Name  * typedef fw_state_callback - get firmware state callback
306*5113495bSYour Name  * @context: Opaque context that the client can use to associate the
307*5113495bSYour Name  *    callback with the request
308*5113495bSYour Name  */
309*5113495bSYour Name typedef void (*fw_state_callback)(void *context);
310*5113495bSYour Name #endif /* FEATURE_FW_STATE */
311*5113495bSYour Name 
312*5113495bSYour Name typedef void (*tx_queue_cb)(hdd_handle_t hdd_handle, uint32_t vdev_id,
313*5113495bSYour Name 			    enum netif_action_type action,
314*5113495bSYour Name 			    enum netif_reason_type reason);
315*5113495bSYour Name 
316*5113495bSYour Name /**
317*5113495bSYour Name  * typedef pwr_save_fail_cb - power save fail callback function
318*5113495bSYour Name  * @hdd_handle: HDD handle registered with SME
319*5113495bSYour Name  * @params: failure parameters
320*5113495bSYour Name  */
321*5113495bSYour Name struct chip_pwr_save_fail_detected_params;
322*5113495bSYour Name typedef void (*pwr_save_fail_cb)(hdd_handle_t hdd_handle,
323*5113495bSYour Name 			struct chip_pwr_save_fail_detected_params *params);
324*5113495bSYour Name 
325*5113495bSYour Name /**
326*5113495bSYour Name  * typedef bt_activity_info_cb - bluetooth activity callback function
327*5113495bSYour Name  * @hdd_handle: HDD handle registered with SME
328*5113495bSYour Name  * @bt_activity: bluetooth activity information
329*5113495bSYour Name  */
330*5113495bSYour Name typedef void (*bt_activity_info_cb)(hdd_handle_t hdd_handle,
331*5113495bSYour Name 				    uint32_t bt_activity);
332*5113495bSYour Name 
333*5113495bSYour Name /**
334*5113495bSYour Name  * typedef rso_cmd_status_cb - RSO command status  callback function
335*5113495bSYour Name  * @hdd_handle: HDD handle registered with SME
336*5113495bSYour Name  * @rso_status: Status of the operation
337*5113495bSYour Name  */
338*5113495bSYour Name typedef void (*rso_cmd_status_cb)(hdd_handle_t hdd_handle,
339*5113495bSYour Name 				  struct rso_cmd_status *rso_status);
340*5113495bSYour Name 
341*5113495bSYour Name /**
342*5113495bSYour Name  * typedef lost_link_info_cb - lost link indication callback function
343*5113495bSYour Name  * @hdd_handle: HDD handle registered with SME
344*5113495bSYour Name  * @lost_link_info: Information about the lost link
345*5113495bSYour Name  */
346*5113495bSYour Name typedef void (*lost_link_info_cb)(hdd_handle_t hdd_handle,
347*5113495bSYour Name 				  struct sir_lost_link_info *lost_link_info);
348*5113495bSYour Name /**
349*5113495bSYour Name  * typedef hidden_ssid_cb - hidden ssid rsp callback fun
350*5113495bSYour Name  * @hdd_handle: HDD handle registered with SME
351*5113495bSYour Name  * @vdev_id: Vdev Id
352*5113495bSYour Name  */
353*5113495bSYour Name typedef void (*hidden_ssid_cb)(hdd_handle_t hdd_handle,
354*5113495bSYour Name 				uint8_t vdev_id);
355*5113495bSYour Name 
356*5113495bSYour Name /**
357*5113495bSYour Name  * typedef bcn_report_cb - recv bcn callback fun
358*5113495bSYour Name  * @hdd_handle: HDD handle registered with SME
359*5113495bSYour Name  * @beacon_report: Beacon report structure
360*5113495bSYour Name  */
361*5113495bSYour Name typedef QDF_STATUS (*beacon_report_cb)
362*5113495bSYour Name 	(hdd_handle_t hdd_handle, struct wlan_beacon_report *beacon_report);
363*5113495bSYour Name 
364*5113495bSYour Name /**
365*5113495bSYour Name  * beacon_pause_cb : scan start callback fun
366*5113495bSYour Name  * @hdd_handler: HDD handler
367*5113495bSYour Name  * @vdev_id: vdev id
368*5113495bSYour Name  * @type: scan event type
369*5113495bSYour Name  * @is_disconnected: Driver is in dis connected state or not
370*5113495bSYour Name  */
371*5113495bSYour Name typedef void (*beacon_pause_cb)(hdd_handle_t hdd_handle,
372*5113495bSYour Name 				uint8_t vdev_id,
373*5113495bSYour Name 				enum scan_event_type type,
374*5113495bSYour Name 				bool is_disconnected);
375*5113495bSYour Name 
376*5113495bSYour Name /**
377*5113495bSYour Name  * typedef sme_get_isolation_cb - get isolation callback fun
378*5113495bSYour Name  * @param: isolation result reported by firmware
379*5113495bSYour Name  * @pcontext: Opaque context that the client can use to associate the
380*5113495bSYour Name  *    callback with the request
381*5113495bSYour Name  */
382*5113495bSYour Name typedef void (*sme_get_isolation_cb)(struct sir_isolation_resp *param,
383*5113495bSYour Name 				     void *pcontext);
384*5113495bSYour Name 
385*5113495bSYour Name #ifdef WLAN_FEATURE_MOTION_DETECTION
386*5113495bSYour Name typedef QDF_STATUS (*md_host_evt_cb)(void *hdd_ctx, struct sir_md_evt *event);
387*5113495bSYour Name typedef QDF_STATUS (*md_bl_evt_cb)(void *hdd_ctx, struct sir_md_bl_evt *event);
388*5113495bSYour Name #endif /* WLAN_FEATURE_MOTION_DETECTION */
389*5113495bSYour Name 
390*5113495bSYour Name struct sme_context {
391*5113495bSYour Name 	eSmeState state;
392*5113495bSYour Name 	qdf_mutex_t sme_global_lock;
393*5113495bSYour Name 	uint32_t sme_cmd_count;
394*5113495bSYour Name 	/* following pointer contains array of pointers for tSmeCmd* */
395*5113495bSYour Name 	void **sme_cmd_buf_addr;
396*5113495bSYour Name 	tDblLinkList sme_cmd_freelist;    /* preallocated roam cmd list */
397*5113495bSYour Name 	void *ll_stats_context;
398*5113495bSYour Name 	link_layer_stats_cb link_layer_stats_cb;
399*5113495bSYour Name 	void (*link_layer_stats_ext_cb)(hdd_handle_t callback_ctx,
400*5113495bSYour Name 					tSirLLStatsResults *rsp);
401*5113495bSYour Name #ifdef WLAN_POWER_DEBUG
402*5113495bSYour Name 	void *power_debug_stats_context;
403*5113495bSYour Name 	void (*power_stats_resp_callback)(struct power_stats_response *rsp,
404*5113495bSYour Name 						void *callback_context);
405*5113495bSYour Name 	void (*sme_power_debug_stats_callback)(
406*5113495bSYour Name 					struct mac_context *mac,
407*5113495bSYour Name 					struct power_stats_response *response);
408*5113495bSYour Name #endif
409*5113495bSYour Name #ifdef WLAN_FEATURE_BEACON_RECEPTION_STATS
410*5113495bSYour Name 	void *beacon_stats_context;
411*5113495bSYour Name 	void (*beacon_stats_resp_callback)(struct bcn_reception_stats_rsp *rsp,
412*5113495bSYour Name 					   void *callback_context);
413*5113495bSYour Name #endif
414*5113495bSYour Name #ifdef FEATURE_WLAN_AUTO_SHUTDOWN
415*5113495bSYour Name 	void (*auto_shutdown_cb)(void);
416*5113495bSYour Name #endif
417*5113495bSYour Name 	/* Maximum interfaces allowed by the host */
418*5113495bSYour Name 	uint8_t max_intf_count;
419*5113495bSYour Name 	stats_ext_cb stats_ext_cb;
420*5113495bSYour Name 	stats_ext2_cb stats_ext2_cb;
421*5113495bSYour Name 	/* linkspeed callback */
422*5113495bSYour Name 	sme_link_speed_cb link_speed_cb;
423*5113495bSYour Name 	void *link_speed_context;
424*5113495bSYour Name 
425*5113495bSYour Name 	sme_get_isolation_cb get_isolation_cb;
426*5113495bSYour Name 	void *get_isolation_cb_context;
427*5113495bSYour Name #ifdef FEATURE_WLAN_EXTSCAN
428*5113495bSYour Name 	ext_scan_ind_cb ext_scan_ind_cb;
429*5113495bSYour Name #endif /* FEATURE_WLAN_EXTSCAN */
430*5113495bSYour Name 	csr_link_status_callback link_status_callback;
431*5113495bSYour Name 	void *link_status_context;
432*5113495bSYour Name 	int (*get_tsf_cb)(void *pcb_cxt, struct stsf *ptsf);
433*5113495bSYour Name 	void *get_tsf_cxt;
434*5113495bSYour Name 	/* get temperature event context and callback */
435*5113495bSYour Name 	void *temperature_cb_context;
436*5113495bSYour Name 	void (*temperature_cb)(int temperature, void *context);
437*5113495bSYour Name 	uint8_t miracast_value;
438*5113495bSYour Name 	struct ps_global_info  ps_global_info;
439*5113495bSYour Name 	rssi_threshold_breached_cb rssi_threshold_breached_cb;
440*5113495bSYour Name 	sme_set_thermal_level_callback set_thermal_level_cb;
441*5113495bSYour Name 	void *apf_get_offload_context;
442*5113495bSYour Name #ifdef FEATURE_P2P_LISTEN_OFFLOAD
443*5113495bSYour Name 	p2p_lo_callback p2p_lo_event_callback;
444*5113495bSYour Name 	void *p2p_lo_event_context;
445*5113495bSYour Name #endif
446*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT
447*5113495bSYour Name 	sme_send_oem_data_rsp_msg oem_data_rsp_callback;
448*5113495bSYour Name #endif
449*5113495bSYour Name 	lost_link_info_cb lost_link_info_cb;
450*5113495bSYour Name 
451*5113495bSYour Name 	bool (*set_connection_info_cb)(bool);
452*5113495bSYour Name 	bool (*get_connection_info_cb)(uint8_t *session_id,
453*5113495bSYour Name 			enum scan_reject_states *reason);
454*5113495bSYour Name 	rso_cmd_status_cb rso_cmd_status_cb;
455*5113495bSYour Name 	pwr_save_fail_cb chip_power_save_fail_cb;
456*5113495bSYour Name 	bt_activity_info_cb bt_activity_info_cb;
457*5113495bSYour Name 	void *get_arp_stats_context;
458*5113495bSYour Name 	void (*get_arp_stats_cb)(void *, struct rsp_stats *, void *);
459*5113495bSYour Name 	get_chain_rssi_callback get_chain_rssi_cb;
460*5113495bSYour Name 	void *get_chain_rssi_context;
461*5113495bSYour Name #ifdef FEATURE_FW_STATE
462*5113495bSYour Name 	fw_state_callback fw_state_cb;
463*5113495bSYour Name 	void *fw_state_context;
464*5113495bSYour Name #endif /* FEATURE_FW_STATE */
465*5113495bSYour Name 	tx_queue_cb tx_queue_cb;
466*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT
467*5113495bSYour Name 	twt_enable_cb twt_enable_cb;
468*5113495bSYour Name 	twt_disable_cb twt_disable_cb;
469*5113495bSYour Name 	twt_add_dialog_cb twt_add_dialog_cb;
470*5113495bSYour Name 	twt_del_dialog_cb twt_del_dialog_cb;
471*5113495bSYour Name 	twt_pause_dialog_cb twt_pause_dialog_cb;
472*5113495bSYour Name 	twt_nudge_dialog_cb twt_nudge_dialog_cb;
473*5113495bSYour Name 	twt_resume_dialog_cb twt_resume_dialog_cb;
474*5113495bSYour Name 	twt_notify_cb twt_notify_cb;
475*5113495bSYour Name 	twt_ack_comp_cb twt_ack_comp_cb;
476*5113495bSYour Name 	void *twt_ack_context_cb;
477*5113495bSYour Name #endif
478*5113495bSYour Name #ifdef FEATURE_WLAN_APF
479*5113495bSYour Name 	apf_get_offload_cb apf_get_offload_cb;
480*5113495bSYour Name 	apf_read_mem_cb apf_read_mem_cb;
481*5113495bSYour Name #endif
482*5113495bSYour Name #ifdef WLAN_FEATURE_MOTION_DETECTION
483*5113495bSYour Name 	md_host_evt_cb md_host_evt_cb;
484*5113495bSYour Name 	md_bl_evt_cb md_bl_evt_cb;
485*5113495bSYour Name 	void *md_ctx;
486*5113495bSYour Name #endif /* WLAN_FEATURE_MOTION_DETECTION */
487*5113495bSYour Name 	/* hidden ssid rsp callback */
488*5113495bSYour Name 	hidden_ssid_cb hidden_ssid_cb;
489*5113495bSYour Name #ifdef WLAN_MWS_INFO_DEBUGFS
490*5113495bSYour Name 	void *mws_coex_info_ctx;
491*5113495bSYour Name 	void (*mws_coex_info_state_resp_callback)(void *coex_info_data,
492*5113495bSYour Name 						  void *context,
493*5113495bSYour Name 						  wmi_mws_coex_cmd_id cmd_id);
494*5113495bSYour Name #endif /* WLAN_MWS_INFO_DEBUGFS */
495*5113495bSYour Name 
496*5113495bSYour Name #ifdef WLAN_BCN_RECV_FEATURE
497*5113495bSYour Name 	beacon_report_cb beacon_report_cb;
498*5113495bSYour Name 	beacon_pause_cb beacon_pause_cb;
499*5113495bSYour Name #endif
500*5113495bSYour Name #ifdef FEATURE_OEM_DATA
501*5113495bSYour Name 	void (*oem_data_event_handler_cb)
502*5113495bSYour Name 			(const struct oem_data *oem_event_data,
503*5113495bSYour Name 			 uint8_t vdev_id);
504*5113495bSYour Name 	uint8_t oem_data_vdev_id;
505*5113495bSYour Name 	/* async oem event callback */
506*5113495bSYour Name 	void (*oem_data_async_event_handler_cb)
507*5113495bSYour Name 			(const struct oem_data *oem_event_data);
508*5113495bSYour Name #endif
509*5113495bSYour Name 
510*5113495bSYour Name 	QDF_STATUS (*pagefault_action_cb)(void *buf, uint32_t data);
511*5113495bSYour Name 
512*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT
513*5113495bSYour Name 	void (*latency_level_event_handler_cb)
514*5113495bSYour Name 			(const struct latency_level_data *event_data,
515*5113495bSYour Name 			 uint8_t vdev_id);
516*5113495bSYour Name #endif
517*5113495bSYour Name 
518*5113495bSYour Name 	sme_get_raom_scan_ch_callback roam_scan_ch_callback;
519*5113495bSYour Name 	void *roam_scan_ch_get_context;
520*5113495bSYour Name #ifdef FEATURE_MONITOR_MODE_SUPPORT
521*5113495bSYour Name 	void (*monitor_mode_cb)(uint8_t vdev_id);
522*5113495bSYour Name #endif
523*5113495bSYour Name #if defined(CLD_PM_QOS) && defined(WLAN_FEATURE_LL_MODE)
524*5113495bSYour Name 	void (*beacon_latency_event_cb)(uint32_t latency_level);
525*5113495bSYour Name #endif
526*5113495bSYour Name 	QDF_STATUS (*sme_vdev_del_cb)(mac_handle_t mac_handle,
527*5113495bSYour Name 				      struct wlan_objmgr_vdev *vdev);
528*5113495bSYour Name };
529*5113495bSYour Name 
530*5113495bSYour Name #endif /* #if !defined( __SMEINTERNAL_H ) */
531