xref: /wlan-driver/qca-wifi-host-cmn/os_if/linux/mlme/inc/osif_cm_util.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2012-2015, 2020-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-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 any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name /**
19*5113495bSYour Name  * DOC: osif_cm_util.h
20*5113495bSYour Name  *
21*5113495bSYour Name  * This header file maintains declarations of connect, disconnect, roam
22*5113495bSYour Name  * common apis.
23*5113495bSYour Name  */
24*5113495bSYour Name 
25*5113495bSYour Name #ifndef __OSIF_CM_UTIL_H
26*5113495bSYour Name #define __OSIF_CM_UTIL_H
27*5113495bSYour Name 
28*5113495bSYour Name #include <qca_vendor.h>
29*5113495bSYour Name #include "wlan_cm_ucfg_api.h"
30*5113495bSYour Name #include "wlan_cm_public_struct.h"
31*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
32*5113495bSYour Name #include "wlan_cm_roam_public_struct.h"
33*5113495bSYour Name #endif
34*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
35*5113495bSYour Name #include <cdp_txrx_mob_def.h>
36*5113495bSYour Name #endif
37*5113495bSYour Name 
38*5113495bSYour Name /**
39*5113495bSYour Name  * osif_cm_mac_to_qca_connect_fail_reason() - Convert to qca internal connect
40*5113495bSYour Name  * fail reason
41*5113495bSYour Name  * @internal_reason: Mac reason code of type @wlan_status_code
42*5113495bSYour Name  *
43*5113495bSYour Name  * Check if it is internal status code and convert it to the
44*5113495bSYour Name  * enum qca_sta_connect_fail_reason_codes.
45*5113495bSYour Name  *
46*5113495bSYour Name  * Return: Reason code of type enum qca_sta_connect_fail_reason_codes
47*5113495bSYour Name  */
48*5113495bSYour Name enum qca_sta_connect_fail_reason_codes
49*5113495bSYour Name osif_cm_mac_to_qca_connect_fail_reason(enum wlan_status_code internal_reason);
50*5113495bSYour Name 
51*5113495bSYour Name /**
52*5113495bSYour Name  * osif_cm_qca_reason_to_str() - return string conversion of qca reason code
53*5113495bSYour Name  * @reason: enum qca_disconnect_reason_codes
54*5113495bSYour Name  *
55*5113495bSYour Name  * This utility function helps log string conversion of qca reason code.
56*5113495bSYour Name  *
57*5113495bSYour Name  * Return: string conversion of reason code, if match found;
58*5113495bSYour Name  *         "Unknown" otherwise.
59*5113495bSYour Name  */
60*5113495bSYour Name const char *
61*5113495bSYour Name osif_cm_qca_reason_to_str(enum qca_disconnect_reason_codes reason);
62*5113495bSYour Name 
63*5113495bSYour Name /**
64*5113495bSYour Name  * osif_cm_mac_to_qca_reason() - Convert to qca internal disconnect reason
65*5113495bSYour Name  * @internal_reason: Mac reason code of type @wlan_reason_code
66*5113495bSYour Name  *
67*5113495bSYour Name  * Check if it is internal reason code and convert it to the
68*5113495bSYour Name  * enum qca_disconnect_reason_codes.
69*5113495bSYour Name  *
70*5113495bSYour Name  * Return: Reason code of type enum qca_disconnect_reason_codes
71*5113495bSYour Name  */
72*5113495bSYour Name enum qca_disconnect_reason_codes
73*5113495bSYour Name osif_cm_mac_to_qca_reason(enum wlan_reason_code internal_reason);
74*5113495bSYour Name 
75*5113495bSYour Name /**
76*5113495bSYour Name  * osif_cm_register_cb() - API to register connection manager
77*5113495bSYour Name  * callbacks.
78*5113495bSYour Name  *
79*5113495bSYour Name  * Return: QDF_STATUS
80*5113495bSYour Name  */
81*5113495bSYour Name QDF_STATUS osif_cm_register_cb(void);
82*5113495bSYour Name 
83*5113495bSYour Name /**
84*5113495bSYour Name  * osif_cm_osif_priv_init() - API to init osif priv data for connection manager
85*5113495bSYour Name  * @vdev: vdev pointer
86*5113495bSYour Name  *
87*5113495bSYour Name  * Return: QDF_STATUS
88*5113495bSYour Name  */
89*5113495bSYour Name QDF_STATUS osif_cm_osif_priv_init(struct wlan_objmgr_vdev *vdev);
90*5113495bSYour Name 
91*5113495bSYour Name /**
92*5113495bSYour Name  * osif_cm_osif_priv_deinit() - API to deinit osif priv data for connection
93*5113495bSYour Name  * manager
94*5113495bSYour Name  * @vdev: vdev pointer
95*5113495bSYour Name  *
96*5113495bSYour Name  * Return: QDF_STATUS
97*5113495bSYour Name  */
98*5113495bSYour Name QDF_STATUS osif_cm_osif_priv_deinit(struct wlan_objmgr_vdev *vdev);
99*5113495bSYour Name 
100*5113495bSYour Name /**
101*5113495bSYour Name  * osif_cm_reset_id_and_src_no_lock() - Function to resets last
102*5113495bSYour Name  * connection manager command id and source in osif
103*5113495bSYour Name  * @osif_priv: Pointer to vdev osif priv
104*5113495bSYour Name  *
105*5113495bSYour Name  * This function resets the last connection manager command id
106*5113495bSYour Name  * and source.
107*5113495bSYour Name  *
108*5113495bSYour Name  * Context: Any context. This function should be called by holding
109*5113495bSYour Name  * cmd id spinlock
110*5113495bSYour Name  * Return: None
111*5113495bSYour Name  */
112*5113495bSYour Name 
113*5113495bSYour Name void osif_cm_reset_id_and_src_no_lock(struct vdev_osif_priv *osif_priv);
114*5113495bSYour Name 
115*5113495bSYour Name /**
116*5113495bSYour Name  * osif_cm_reset_id_and_src() - Function to resets last
117*5113495bSYour Name  * connection manager command id and source in osif
118*5113495bSYour Name  * @vdev: vdev pointer
119*5113495bSYour Name  *
120*5113495bSYour Name  * This function resets the last connection manager command id
121*5113495bSYour Name  * and source.
122*5113495bSYour Name  *
123*5113495bSYour Name  * Context: Any context. Takes and release cmd id spinlock
124*5113495bSYour Name  * Return: None
125*5113495bSYour Name  */
126*5113495bSYour Name QDF_STATUS osif_cm_reset_id_and_src(struct wlan_objmgr_vdev *vdev);
127*5113495bSYour Name 
128*5113495bSYour Name /**
129*5113495bSYour Name  * enum osif_cb_type - Type of the update from osif to legacy module
130*5113495bSYour Name  * @OSIF_POST_USERSPACE_UPDATE: Indicates that when this update is received
131*5113495bSYour Name  * userspace is already updated.
132*5113495bSYour Name  * @OSIF_PRE_USERSPACE_UPDATE: Indicates that when this update is received
133*5113495bSYour Name  * userspace is not yet updated.
134*5113495bSYour Name  * @OSIF_NOT_HANDLED: Indicates that last command is not handled
135*5113495bSYour Name  */
136*5113495bSYour Name 
137*5113495bSYour Name enum osif_cb_type {
138*5113495bSYour Name 	OSIF_POST_USERSPACE_UPDATE,
139*5113495bSYour Name 	OSIF_PRE_USERSPACE_UPDATE,
140*5113495bSYour Name 	OSIF_NOT_HANDLED,
141*5113495bSYour Name };
142*5113495bSYour Name 
143*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
144*5113495bSYour Name typedef void (*osif_cm_connect_active_notify_cb)(uint8_t vdev_id);
145*5113495bSYour Name #endif
146*5113495bSYour Name 
147*5113495bSYour Name /**
148*5113495bSYour Name  * typedef osif_cm_connect_comp_cb  - Connect complete callback
149*5113495bSYour Name  * @vdev: vdev pointer
150*5113495bSYour Name  * @rsp: connect response
151*5113495bSYour Name  * @type: indicates update type
152*5113495bSYour Name  *
153*5113495bSYour Name  * This callback indicates connect complete to the legacy module
154*5113495bSYour Name  *
155*5113495bSYour Name  * Context: Any context.
156*5113495bSYour Name  * Return: QDF_STATUS
157*5113495bSYour Name  */
158*5113495bSYour Name typedef QDF_STATUS
159*5113495bSYour Name 	(*osif_cm_connect_comp_cb)(struct wlan_objmgr_vdev *vdev,
160*5113495bSYour Name 				   struct wlan_cm_connect_resp *rsp,
161*5113495bSYour Name 				   enum osif_cb_type type);
162*5113495bSYour Name 
163*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
164*5113495bSYour Name /**
165*5113495bSYour Name  * typedef osif_cm_get_vendor_handoff_params_cb  - process vendor handoff cb
166*5113495bSYour Name  * @psoc: psoc pointer
167*5113495bSYour Name  * @rsp: vendor handoff response
168*5113495bSYour Name  * @vendor_handoff_context: vendor handoff context
169*5113495bSYour Name  *
170*5113495bSYour Name  * return: none
171*5113495bSYour Name  */
172*5113495bSYour Name typedef QDF_STATUS
173*5113495bSYour Name (*osif_cm_get_vendor_handoff_params_cb)(struct wlan_objmgr_psoc *psoc,
174*5113495bSYour Name 					void *vendor_handoff_context);
175*5113495bSYour Name #endif
176*5113495bSYour Name 
177*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK
178*5113495bSYour Name /**
179*5113495bSYour Name  * typedef osif_cm_save_gtk_cb  - save gtk callback
180*5113495bSYour Name  * @vdev: vdev pointer
181*5113495bSYour Name  * @rsp: connect response
182*5113495bSYour Name  *
183*5113495bSYour Name  * this callback save gtk to the legacy module
184*5113495bSYour Name  *
185*5113495bSYour Name  * context: any context.
186*5113495bSYour Name  * return: qdf_status
187*5113495bSYour Name  */
188*5113495bSYour Name typedef QDF_STATUS (*osif_cm_save_gtk_cb)(struct wlan_objmgr_vdev *vdev,
189*5113495bSYour Name 					  struct wlan_cm_connect_resp *rsp);
190*5113495bSYour Name 
191*5113495bSYour Name /**
192*5113495bSYour Name  * typedef osif_cm_set_hlp_data_cb  - set hlp data for dhcp callback
193*5113495bSYour Name  * @dev: pointer to net device
194*5113495bSYour Name  * @vdev: vdev pointer
195*5113495bSYour Name  * @rsp: connect response
196*5113495bSYour Name  *
197*5113495bSYour Name  * this callback sets hlp data for dhcp to the legacy module
198*5113495bSYour Name  *
199*5113495bSYour Name  * context: any context.
200*5113495bSYour Name  * return: qdf_status
201*5113495bSYour Name  */
202*5113495bSYour Name typedef QDF_STATUS (*osif_cm_set_hlp_data_cb)(struct net_device *dev,
203*5113495bSYour Name 					      struct wlan_objmgr_vdev *vdev,
204*5113495bSYour Name 					      struct wlan_cm_connect_resp *rsp);
205*5113495bSYour Name #endif
206*5113495bSYour Name 
207*5113495bSYour Name /**
208*5113495bSYour Name  * typedef  osif_cm_disconnect_comp_cb: Disconnect complete callback
209*5113495bSYour Name  * @vdev: vdev pointer
210*5113495bSYour Name  * @rsp: disconnect response
211*5113495bSYour Name  * @type: indicates update type
212*5113495bSYour Name  *
213*5113495bSYour Name  * This callback indicates disconnect complete to the legacy module
214*5113495bSYour Name  *
215*5113495bSYour Name  * Context: Any context.
216*5113495bSYour Name  * Return: QDF_STATUS
217*5113495bSYour Name  */
218*5113495bSYour Name typedef QDF_STATUS
219*5113495bSYour Name 	(*osif_cm_disconnect_comp_cb)(struct wlan_objmgr_vdev *vdev,
220*5113495bSYour Name 				      struct wlan_cm_discon_rsp *rsp,
221*5113495bSYour Name 				      enum osif_cb_type type);
222*5113495bSYour Name 
223*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
224*5113495bSYour Name /**
225*5113495bSYour Name  * typedef osif_cm_get_scan_ie_params_cb  - get scan ie params cb
226*5113495bSYour Name  * @vdev: vdev pointer
227*5113495bSYour Name  * @scan_ie: pointer to scan ie element struct
228*5113495bSYour Name  * @dot11mode_filter: Pointer to dot11mode_filter enum
229*5113495bSYour Name  *
230*5113495bSYour Name  * Return: QDF_STATUS
231*5113495bSYour Name  */
232*5113495bSYour Name typedef QDF_STATUS
233*5113495bSYour Name (*osif_cm_get_scan_ie_params_cb)(struct wlan_objmgr_vdev *vdev,
234*5113495bSYour Name 				 struct element_info *scan_ie,
235*5113495bSYour Name 				 enum dot11_mode_filter *dot11mode_filter);
236*5113495bSYour Name 
237*5113495bSYour Name /**
238*5113495bSYour Name  * typedef osif_cm_netif_queue_ctrl_cb: Callback to update netif queue
239*5113495bSYour Name  * @vdev: vdev pointer
240*5113495bSYour Name  * @action: Action to take on netif queue
241*5113495bSYour Name  * @reason: netif reason type
242*5113495bSYour Name  *
243*5113495bSYour Name  * This callback indicates legacy modules to take the actions related to netif
244*5113495bSYour Name  * queue
245*5113495bSYour Name  *
246*5113495bSYour Name  * Context: Any context.
247*5113495bSYour Name  * Return: QDF_STATUS
248*5113495bSYour Name  */
249*5113495bSYour Name typedef QDF_STATUS
250*5113495bSYour Name 	(*osif_cm_netif_queue_ctrl_cb)(struct wlan_objmgr_vdev *vdev,
251*5113495bSYour Name 				       enum netif_action_type action,
252*5113495bSYour Name 				       enum netif_reason_type reason);
253*5113495bSYour Name 
254*5113495bSYour Name /**
255*5113495bSYour Name  * typedef os_if_cm_napi_serialize_ctrl_cb: Callback to update
256*5113495bSYour Name  * NAPI serialization
257*5113495bSYour Name  * @action: bool action to take on napi serialization
258*5113495bSYour Name  *
259*5113495bSYour Name  * This callback indicates legacy modules to take the actions
260*5113495bSYour Name  * related to napi serialization
261*5113495bSYour Name  *
262*5113495bSYour Name  * Context: Any context.
263*5113495bSYour Name  * Return: QDF_STATUS
264*5113495bSYour Name  */
265*5113495bSYour Name typedef QDF_STATUS
266*5113495bSYour Name 	(*os_if_cm_napi_serialize_ctrl_cb)(bool action);
267*5113495bSYour Name 
268*5113495bSYour Name /**
269*5113495bSYour Name  * typedef osif_cm_send_vdev_keys_cb  - send vdev keys cb
270*5113495bSYour Name  * @vdev: vdev pointer
271*5113495bSYour Name  * @key_index: key index value
272*5113495bSYour Name  * @pairwise: pairwise boolean value
273*5113495bSYour Name  * @cipher_type: cipher type enum value
274*5113495bSYour Name  *
275*5113495bSYour Name  * return: none
276*5113495bSYour Name  */
277*5113495bSYour Name typedef QDF_STATUS
278*5113495bSYour Name (*osif_cm_send_vdev_keys_cb)(struct wlan_objmgr_vdev *vdev,
279*5113495bSYour Name 			     uint8_t key_index,
280*5113495bSYour Name 			     bool pairwise,
281*5113495bSYour Name 			     enum wlan_crypto_cipher_type cipher_type);
282*5113495bSYour Name 
283*5113495bSYour Name /**
284*5113495bSYour Name  * osif_cm_unlink_bss() - function to unlink bss from kernel and scan database
285*5113495bSYour Name  * on connect timeouts reasons
286*5113495bSYour Name  * @vdev: vdev pointer
287*5113495bSYour Name  * @bssid: bssid to flush
288*5113495bSYour Name  *
289*5113495bSYour Name  * This function flush the bss from scan db of kernel and driver matching the
290*5113495bSYour Name  * bssid.
291*5113495bSYour Name  *
292*5113495bSYour Name  * Return: void
293*5113495bSYour Name  */
294*5113495bSYour Name void osif_cm_unlink_bss(struct wlan_objmgr_vdev *vdev,
295*5113495bSYour Name 			struct qdf_mac_addr *bssid);
296*5113495bSYour Name #else
297*5113495bSYour Name static inline
osif_cm_unlink_bss(struct wlan_objmgr_vdev * vdev,struct qdf_mac_addr * bssid)298*5113495bSYour Name void osif_cm_unlink_bss(struct wlan_objmgr_vdev *vdev,
299*5113495bSYour Name 			struct qdf_mac_addr *bssid) {}
300*5113495bSYour Name #endif
301*5113495bSYour Name 
302*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
303*5113495bSYour Name /**
304*5113495bSYour Name  * typedef osif_cm_roam_rt_stats_cb: Callback to send roam
305*5113495bSYour Name  * stats event
306*5113495bSYour Name  * @roam_stats: roam_stats_event pointer
307*5113495bSYour Name  * @idx: TLV idx for roam stats event
308*5113495bSYour Name  *
309*5113495bSYour Name  * This callback sends roam_stats_event to userspace
310*5113495bSYour Name  *
311*5113495bSYour Name  * Context: Any context.
312*5113495bSYour Name  * Return: void
313*5113495bSYour Name  */
314*5113495bSYour Name typedef void
315*5113495bSYour Name 	(*osif_cm_roam_rt_stats_cb)(struct roam_stats_event *roam_stats,
316*5113495bSYour Name 				    uint8_t idx);
317*5113495bSYour Name #endif
318*5113495bSYour Name 
319*5113495bSYour Name #ifdef WLAN_FEATURE_PREAUTH_ENABLE
320*5113495bSYour Name /**
321*5113495bSYour Name  * typedef osif_cm_ft_preauth_complete_cb: Callback to send fast
322*5113495bSYour Name  * transition event
323*5113495bSYour Name  * @vdev: vdev pointer
324*5113495bSYour Name  * @rsp: preauth response pointer
325*5113495bSYour Name  *
326*5113495bSYour Name  * This callback indicates legacy modules to send fast transition event
327*5113495bSYour Name  *
328*5113495bSYour Name  * Context: Any context.
329*5113495bSYour Name  * Return: QDF_STATUS
330*5113495bSYour Name  */
331*5113495bSYour Name typedef QDF_STATUS
332*5113495bSYour Name 	(*osif_cm_ft_preauth_complete_cb)(struct wlan_objmgr_vdev *vdev,
333*5113495bSYour Name 					  struct wlan_preauth_rsp *rsp);
334*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
335*5113495bSYour Name /**
336*5113495bSYour Name  * typedef osif_cm_cckm_preauth_complete_cb: Callback to send cckm preauth
337*5113495bSYour Name  * indication to the supplicant via wireless custom event
338*5113495bSYour Name  * @vdev: vdev pointer
339*5113495bSYour Name  * @rsp: preauth response pointer
340*5113495bSYour Name  *
341*5113495bSYour Name  * This callback indicates legacy modules to send cckm preauth indication
342*5113495bSYour Name  * to the supplicant via wireless custom event
343*5113495bSYour Name  *
344*5113495bSYour Name  * Context: Any context.
345*5113495bSYour Name  * Return: QDF_STATUS
346*5113495bSYour Name  */
347*5113495bSYour Name typedef QDF_STATUS
348*5113495bSYour Name 	(*osif_cm_cckm_preauth_complete_cb)(struct wlan_objmgr_vdev *vdev,
349*5113495bSYour Name 					    struct wlan_preauth_rsp *rsp);
350*5113495bSYour Name #endif
351*5113495bSYour Name #endif
352*5113495bSYour Name 
353*5113495bSYour Name #ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
354*5113495bSYour Name /**
355*5113495bSYour Name  * typedef os_if_cm_perfd_set_cpufreq_ctrl_cb: Callback to update
356*5113495bSYour Name  * CPU min freq
357*5113495bSYour Name  * @action: bool action to set or reset the CPU freq
358*5113495bSYour Name  *
359*5113495bSYour Name  * This callback indicates legacy modules to take the actions
360*5113495bSYour Name  * related to set/reset CPU freq
361*5113495bSYour Name  *
362*5113495bSYour Name  * Context: Any context.
363*5113495bSYour Name  * Return: QDF_STATUS
364*5113495bSYour Name  */
365*5113495bSYour Name typedef QDF_STATUS
366*5113495bSYour Name 	(*os_if_cm_perfd_set_cpufreq_ctrl_cb)(bool action);
367*5113495bSYour Name #endif
368*5113495bSYour Name 
369*5113495bSYour Name /**
370*5113495bSYour Name  * struct osif_cm_ops - connection manager legacy callbacks
371*5113495bSYour Name  * @connect_active_notify_cb: callback for connect active to legacy modules
372*5113495bSYour Name  * @connect_complete_cb: callback for connect complete to legacy
373*5113495bSYour Name  * modules
374*5113495bSYour Name  * @disconnect_complete_cb: callback for disconnect complete to
375*5113495bSYour Name  * legacy modules
376*5113495bSYour Name  * @netif_queue_control_cb: callback to legacy module to take
377*5113495bSYour Name  * actions on netif queue
378*5113495bSYour Name  * @napi_serialize_control_cb: callback to legacy module to take
379*5113495bSYour Name  * actions on napi serialization
380*5113495bSYour Name  * @save_gtk_cb : callback to legacy module to save gtk
381*5113495bSYour Name  * @send_vdev_keys_cb: callback to send vdev keys
382*5113495bSYour Name  * @get_scan_ie_params_cb: callback to get scan ie params
383*5113495bSYour Name  * @set_hlp_data_cb: callback to legacy module to save hlp data
384*5113495bSYour Name  * @roam_rt_stats_event_cb: callback to send roam stats to userspace
385*5113495bSYour Name  * @ft_preauth_complete_cb: callback to legacy module to send fast
386*5113495bSYour Name  * transition event
387*5113495bSYour Name  * @cckm_preauth_complete_cb: callback to legacy module to send cckm
388*5113495bSYour Name  * preauth indication to the supplicant via wireless custom event.
389*5113495bSYour Name  * @vendor_handoff_params_cb: callback to legacy module to send vendor handoff
390*5113495bSYour Name  * parameters to upper layer
391*5113495bSYour Name  * @perfd_set_cpufreq_cb: callback to update CPU min freq
392*5113495bSYour Name  */
393*5113495bSYour Name struct osif_cm_ops {
394*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
395*5113495bSYour Name 	osif_cm_connect_active_notify_cb connect_active_notify_cb;
396*5113495bSYour Name #endif
397*5113495bSYour Name 	osif_cm_connect_comp_cb connect_complete_cb;
398*5113495bSYour Name 	osif_cm_disconnect_comp_cb disconnect_complete_cb;
399*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
400*5113495bSYour Name 	osif_cm_netif_queue_ctrl_cb netif_queue_control_cb;
401*5113495bSYour Name 	os_if_cm_napi_serialize_ctrl_cb napi_serialize_control_cb;
402*5113495bSYour Name 	osif_cm_save_gtk_cb save_gtk_cb;
403*5113495bSYour Name 	osif_cm_send_vdev_keys_cb send_vdev_keys_cb;
404*5113495bSYour Name 	osif_cm_get_scan_ie_params_cb get_scan_ie_params_cb;
405*5113495bSYour Name #endif
406*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK
407*5113495bSYour Name 	osif_cm_set_hlp_data_cb set_hlp_data_cb;
408*5113495bSYour Name #endif
409*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
410*5113495bSYour Name 	osif_cm_roam_rt_stats_cb roam_rt_stats_event_cb;
411*5113495bSYour Name #endif
412*5113495bSYour Name #ifdef WLAN_FEATURE_PREAUTH_ENABLE
413*5113495bSYour Name 	osif_cm_ft_preauth_complete_cb ft_preauth_complete_cb;
414*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
415*5113495bSYour Name 	osif_cm_cckm_preauth_complete_cb cckm_preauth_complete_cb;
416*5113495bSYour Name #endif
417*5113495bSYour Name #endif
418*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
419*5113495bSYour Name 	osif_cm_get_vendor_handoff_params_cb vendor_handoff_params_cb;
420*5113495bSYour Name #endif
421*5113495bSYour Name #ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
422*5113495bSYour Name 	os_if_cm_perfd_set_cpufreq_ctrl_cb perfd_set_cpufreq_cb;
423*5113495bSYour Name #endif
424*5113495bSYour Name };
425*5113495bSYour Name 
426*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
427*5113495bSYour Name /**
428*5113495bSYour Name  * osif_cm_connect_active_notify() - Function to notify connect active
429*5113495bSYour Name  * @vdev_id: VDEV ID on which connect req is active
430*5113495bSYour Name  *
431*5113495bSYour Name  * This API notifies connect active to legacy module
432*5113495bSYour Name  */
433*5113495bSYour Name void osif_cm_connect_active_notify(uint8_t vdev_id);
434*5113495bSYour Name #endif
435*5113495bSYour Name 
436*5113495bSYour Name /**
437*5113495bSYour Name  * osif_cm_connect_comp_ind() - Function to indicate connect
438*5113495bSYour Name  * complete to legacy module
439*5113495bSYour Name  * @vdev: vdev pointer
440*5113495bSYour Name  * @rsp: connect response
441*5113495bSYour Name  * @type: indicates update type
442*5113495bSYour Name  *
443*5113495bSYour Name  * This function indicates connect complete to the legacy module
444*5113495bSYour Name  *
445*5113495bSYour Name  * Context: Any context.
446*5113495bSYour Name  * Return: QDF_STATUS
447*5113495bSYour Name  */
448*5113495bSYour Name QDF_STATUS osif_cm_connect_comp_ind(struct wlan_objmgr_vdev *vdev,
449*5113495bSYour Name 				    struct wlan_cm_connect_resp *rsp,
450*5113495bSYour Name 				    enum osif_cb_type type);
451*5113495bSYour Name 
452*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL
453*5113495bSYour Name /**
454*5113495bSYour Name  * osif_cm_vendor_handoff_params_cb() - Function to process vendor handoff
455*5113495bSYour Name  * event callback
456*5113495bSYour Name  * @psoc: psoc object pointer
457*5113495bSYour Name  * @vendor_handoff_context: vendor handoff context
458*5113495bSYour Name  *
459*5113495bSYour Name  * Return: QDF_STATUS
460*5113495bSYour Name  */
461*5113495bSYour Name QDF_STATUS osif_cm_vendor_handoff_params_cb(struct wlan_objmgr_psoc *psoc,
462*5113495bSYour Name 					    void *vendor_handoff_context);
463*5113495bSYour Name #endif
464*5113495bSYour Name 
465*5113495bSYour Name /**
466*5113495bSYour Name  * osif_cm_disconnect_comp_ind() - Function to indicate disconnect
467*5113495bSYour Name  * complete to legacy module
468*5113495bSYour Name  * @vdev: vdev pointer
469*5113495bSYour Name  * @rsp: disconnect response
470*5113495bSYour Name  * @type: indicates update type
471*5113495bSYour Name  *
472*5113495bSYour Name  * This function indicates disconnect complete to the legacy module
473*5113495bSYour Name  *
474*5113495bSYour Name  * Context: Any context.
475*5113495bSYour Name  * Return: QDF_STATUS
476*5113495bSYour Name  */
477*5113495bSYour Name QDF_STATUS osif_cm_disconnect_comp_ind(struct wlan_objmgr_vdev *vdev,
478*5113495bSYour Name 				       struct wlan_cm_discon_rsp *rsp,
479*5113495bSYour Name 				       enum osif_cb_type type);
480*5113495bSYour Name 
481*5113495bSYour Name #ifdef CONN_MGR_ADV_FEATURE
482*5113495bSYour Name /**
483*5113495bSYour Name  * osif_cm_netif_queue_ind() - Function to indicate netif queue update
484*5113495bSYour Name  * complete to legacy module
485*5113495bSYour Name  * @vdev: vdev pointer
486*5113495bSYour Name  * @action: Action to take on netif queue
487*5113495bSYour Name  * @reason: netif reason type
488*5113495bSYour Name  *
489*5113495bSYour Name  * This function indicates to take the actions related to netif queue
490*5113495bSYour Name  *
491*5113495bSYour Name  * Context: Any context.
492*5113495bSYour Name  * Return: QDF_STATUS
493*5113495bSYour Name  */
494*5113495bSYour Name QDF_STATUS osif_cm_netif_queue_ind(struct wlan_objmgr_vdev *vdev,
495*5113495bSYour Name 				   enum netif_action_type action,
496*5113495bSYour Name 				   enum netif_reason_type reason);
497*5113495bSYour Name 
498*5113495bSYour Name /**
499*5113495bSYour Name  * osif_cm_napi_serialize() - Function to indicate napi serialize
500*5113495bSYour Name  * action to legacy module
501*5113495bSYour Name  * @action: Action to take on napi serialization
502*5113495bSYour Name  *
503*5113495bSYour Name  * This function indicates to take the actions related to napi activities
504*5113495bSYour Name  *
505*5113495bSYour Name  * Context: Any context.
506*5113495bSYour Name  * Return: QDF_STATUS
507*5113495bSYour Name  */
508*5113495bSYour Name QDF_STATUS osif_cm_napi_serialize(bool action);
509*5113495bSYour Name 
510*5113495bSYour Name /**
511*5113495bSYour Name  * osif_cm_save_gtk() - Function to save gtk in legacy module
512*5113495bSYour Name  * @vdev: vdev pointer
513*5113495bSYour Name  * @rsp: Pointer to connect response
514*5113495bSYour Name  *
515*5113495bSYour Name  * This function saves gtk in legacy module
516*5113495bSYour Name  *
517*5113495bSYour Name  * Context: Any context.
518*5113495bSYour Name  * Return: QDF_STATUS
519*5113495bSYour Name  */
520*5113495bSYour Name QDF_STATUS osif_cm_save_gtk(struct wlan_objmgr_vdev *vdev,
521*5113495bSYour Name 			    struct wlan_cm_connect_resp *rsp);
522*5113495bSYour Name 
523*5113495bSYour Name /**
524*5113495bSYour Name  * osif_cm_send_vdev_keys() - Function to send vdev keys
525*5113495bSYour Name  * @vdev: vdev pointer
526*5113495bSYour Name  * @key_index: key index value
527*5113495bSYour Name  * @pairwise: pairwise bool value
528*5113495bSYour Name  * @cipher_type: cipher type value
529*5113495bSYour Name  *
530*5113495bSYour Name  * This function to send vdev keys
531*5113495bSYour Name  *
532*5113495bSYour Name  * Context: Any context.
533*5113495bSYour Name  * Return: QDF_STATUS
534*5113495bSYour Name  */
535*5113495bSYour Name QDF_STATUS
536*5113495bSYour Name osif_cm_send_vdev_keys(struct wlan_objmgr_vdev *vdev,
537*5113495bSYour Name 		       uint8_t key_index,
538*5113495bSYour Name 		       bool pairwise,
539*5113495bSYour Name 		       enum wlan_crypto_cipher_type cipher_type);
540*5113495bSYour Name #else
osif_cm_save_gtk(struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_resp * rsp)541*5113495bSYour Name static inline QDF_STATUS osif_cm_save_gtk(struct wlan_objmgr_vdev *vdev,
542*5113495bSYour Name 					  struct wlan_cm_connect_resp *rsp)
543*5113495bSYour Name {
544*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
545*5113495bSYour Name }
546*5113495bSYour Name #endif
547*5113495bSYour Name 
548*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK
549*5113495bSYour Name /**
550*5113495bSYour Name  * osif_cm_set_hlp_data() - Function to set hlp data for dhcp in legacy module
551*5113495bSYour Name  * @dev: Pointer to net device
552*5113495bSYour Name  * @vdev: vdev pointer
553*5113495bSYour Name  * @rsp: Pointer to connect response
554*5113495bSYour Name  *
555*5113495bSYour Name  * This function sets hlp data for dhcp in legacy module
556*5113495bSYour Name  *
557*5113495bSYour Name  * Context: Any context.
558*5113495bSYour Name  * Return: QDF_STATUS
559*5113495bSYour Name  */
560*5113495bSYour Name QDF_STATUS osif_cm_set_hlp_data(struct net_device *dev,
561*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
562*5113495bSYour Name 				struct wlan_cm_connect_resp *rsp);
563*5113495bSYour Name #else
osif_cm_set_hlp_data(struct net_device * dev,struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_resp * rsp)564*5113495bSYour Name static inline QDF_STATUS osif_cm_set_hlp_data(struct net_device *dev,
565*5113495bSYour Name 					      struct wlan_objmgr_vdev *vdev,
566*5113495bSYour Name 					      struct wlan_cm_connect_resp *rsp)
567*5113495bSYour Name {
568*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
569*5113495bSYour Name }
570*5113495bSYour Name #endif
571*5113495bSYour Name 
572*5113495bSYour Name /**
573*5113495bSYour Name  * osif_cm_set_legacy_cb() - Sets legacy callbacks to osif
574*5113495bSYour Name  * @osif_legacy_ops:  Function pointer to legacy ops structure
575*5113495bSYour Name  *
576*5113495bSYour Name  * API to set legacy callbacks to osif
577*5113495bSYour Name  * Context: Any context.
578*5113495bSYour Name  *
579*5113495bSYour Name  * Return: void
580*5113495bSYour Name  */
581*5113495bSYour Name void osif_cm_set_legacy_cb(struct osif_cm_ops *osif_legacy_ops);
582*5113495bSYour Name 
583*5113495bSYour Name /**
584*5113495bSYour Name  * osif_cm_reset_legacy_cb() - Resets legacy callbacks to osif
585*5113495bSYour Name  *
586*5113495bSYour Name  * API to reset legacy callbacks to osif
587*5113495bSYour Name  * Context: Any context.
588*5113495bSYour Name  *
589*5113495bSYour Name  * Return: void
590*5113495bSYour Name  */
591*5113495bSYour Name void osif_cm_reset_legacy_cb(void);
592*5113495bSYour Name 
593*5113495bSYour Name #ifdef WLAN_BOOST_CPU_FREQ_IN_ROAM
594*5113495bSYour Name /**
595*5113495bSYour Name  * osif_cm_perfd_set_cpufreq() - Function to CPU min freq
596*5113495bSYour Name  * action to legacy module
597*5113495bSYour Name  * @action: Action to set or reset the CPU freq
598*5113495bSYour Name  *
599*5113495bSYour Name  * This function indicates to take the actions related to set/reset the CPU freq
600*5113495bSYour Name  *
601*5113495bSYour Name  * Context: Any context.
602*5113495bSYour Name  * Return: QDF_STATUS
603*5113495bSYour Name  */
604*5113495bSYour Name QDF_STATUS osif_cm_perfd_set_cpufreq(bool action);
605*5113495bSYour Name #else
606*5113495bSYour Name static inline
osif_cm_perfd_set_cpufreq(bool action)607*5113495bSYour Name QDF_STATUS osif_cm_perfd_set_cpufreq(bool action)
608*5113495bSYour Name {
609*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
610*5113495bSYour Name }
611*5113495bSYour Name #endif
612*5113495bSYour Name 
613*5113495bSYour Name #endif /* __OSIF_CM_UTIL_H */
614