xref: /wlan-driver/qca-wifi-host-cmn/umac/cp_stats/core/src/wlan_cp_stats_obj_mgr_handler.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2018, 2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: wlan_cp_stats_obj_mgr_handler.h
22  *
23  * This header file provide declarations for APIs to handle events from object
24  * manager for registered events from wlan_cp_stats_init()
25  */
26 
27 #ifndef __WLAN_CP_STATS_OBJ_MGR_HANDLER_H__
28 #define __WLAN_CP_STATS_OBJ_MGR_HANDLER_H__
29 
30 #ifdef QCA_SUPPORT_CP_STATS
31 #include <wlan_objmgr_cmn.h>
32 #include <wlan_objmgr_global_obj.h>
33 #include <wlan_objmgr_psoc_obj.h>
34 #include <wlan_objmgr_pdev_obj.h>
35 #include <wlan_objmgr_vdev_obj.h>
36 #include <wlan_objmgr_peer_obj.h>
37 
38 #include "wlan_cp_stats_defs.h"
39 
40 /**
41  * wlan_cp_stats_psoc_obj_create_handler() - psoc create notification handler
42  * callback function
43  * @psoc:		pointer to psoc object
44  * @data:		pointer to arg data
45  *
46  * Return: QDF_STATUS - Success or Failure
47  */
48 QDF_STATUS wlan_cp_stats_psoc_obj_create_handler(
49 		struct wlan_objmgr_psoc *psoc, void *data);
50 
51 /**
52  * wlan_cp_stats_psoc_obj_destroy_handler() - psoc destroy notification handler
53  * callback function
54  * @psoc:		pointer to psoc object
55  * @data:		pointer to arg data
56  *
57  * Return: QDF_STATUS - Success or Failure
58  */
59 QDF_STATUS wlan_cp_stats_psoc_obj_destroy_handler(
60 		struct wlan_objmgr_psoc *psoc, void *data);
61 
62 /**
63  * wlan_cp_stats_pdev_obj_create_handler() - Pdev create notification handler
64  * callback function
65  * @pdev:		pointer to pdev object
66  * @data:		pointer to arg data
67  *
68  * Return: QDF_STATUS - Success or Failure
69  */
70 QDF_STATUS wlan_cp_stats_pdev_obj_create_handler(
71 		struct wlan_objmgr_pdev *pdev, void *data);
72 
73 /**
74  * wlan_cp_stats_pdev_obj_destroy_handler() - Pdev destroy notification handler
75  * callback function
76  * @pdev:		pointer to pdev object
77  * @data:		pointer to arg data
78  *
79  * Return: QDF_STATUS - Success or Failure
80  */
81 QDF_STATUS wlan_cp_stats_pdev_obj_destroy_handler(
82 		struct wlan_objmgr_pdev *pdev, void *data);
83 
84 /**
85  * wlan_cp_stats_vdev_obj_create_handler() - vdev create notification handler
86  * callback function
87  * @vdev:		pointer to vdev object
88  * @data:		pointer to arg data
89  *
90  * Return: QDF_STATUS - Success or Failure
91  */
92 QDF_STATUS wlan_cp_stats_vdev_obj_create_handler(
93 		struct wlan_objmgr_vdev *vdev, void *data);
94 
95 /**
96  * wlan_cp_stats_vdev_obj_destroy_handler() - vdev destroy notification handler
97  * callback function
98  * @vdev:		pointer to vdev object
99  * @data:		pointer to arg data
100  *
101  * Return: QDF_STATUS - Success or Failure
102  */
103 QDF_STATUS wlan_cp_stats_vdev_obj_destroy_handler(
104 		struct wlan_objmgr_vdev *vdev, void *data);
105 
106 /**
107  * wlan_cp_stats_peer_obj_create_handler() - peer create notification handler
108  * callback function
109  * @peer:		pointer to peer object
110  * @data:		pointer to arg data
111  *
112  * Return: QDF_STATUS - Success or Failure
113  */
114 QDF_STATUS wlan_cp_stats_peer_obj_create_handler(
115 		struct wlan_objmgr_peer *peer, void *data);
116 
117 /**
118  * wlan_cp_stats_peer_obj_destroy_handler() - peer destroy notification handler
119  * callback function
120  * @peer:		pointer to peer object
121  * @data:		pointer to arg data
122  *
123  * Return: QDF_STATUS - Success or Failure
124  */
125 QDF_STATUS wlan_cp_stats_peer_obj_destroy_handler(
126 		struct wlan_objmgr_peer *peer, void *data);
127 
128 #ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
129 /**
130  * wlan_cp_stats_infra_cp_register_resp_cb() - Register the response callback
131  * and cookie in the psoc mc_stats object
132  * @psoc: pointer to psoc object
133  * @req: pointer to request parameter structure
134  *
135  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
136  * failure
137  */
138 QDF_STATUS
139 wlan_cp_stats_infra_cp_register_resp_cb(struct wlan_objmgr_psoc *psoc,
140 					struct infra_cp_stats_cmd_info *req);
141 
142 /**
143  * wlan_cp_stats_infra_cp_deregister_resp_cb() - Deregister the response callback
144  * and cookie in the psoc mc_stats object
145  * @psoc: pointer to psoc object
146  *
147  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
148  * failure
149  */
150 QDF_STATUS
151 wlan_cp_stats_infra_cp_deregister_resp_cb(struct wlan_objmgr_psoc *psoc);
152 
153 /**
154  * wlan_cp_stats_infra_cp_get_context() - get the context and callback
155  * for sending response
156  * @psoc: pointer to psoc object
157  * @resp_cb: pointer to store the response callback
158  * @context: pointer to store context
159  *
160  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
161  * failure
162  */
163 QDF_STATUS
164 wlan_cp_stats_infra_cp_get_context(struct wlan_objmgr_psoc *psoc,
165 				   get_infra_cp_stats_cb *resp_cb,
166 				   void **context);
167 /**
168  * wlan_cp_stats_send_infra_cp_req() - API to send infra cp stats request to
169  * lmac
170  * @psoc: pointer to psoc object
171  * @req: pointer to infra cp stats request
172  *
173  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
174  * failure
175  */
176 QDF_STATUS
177 wlan_cp_stats_send_infra_cp_req(struct wlan_objmgr_psoc *psoc,
178 				struct infra_cp_stats_cmd_info *req);
179 #endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
180 
181 #ifdef WLAN_CONFIG_TELEMETRY_AGENT
182 /**
183  * wlan_cp_stats_send_telemetry_cp_req() - API to send telemetry cp stats
184  * request to lmac
185  * @pdev: pointer to pdev object
186  * @req: pointer to telemetry cp stats request
187  *
188  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
189  * failure
190  */
191 QDF_STATUS
192 wlan_cp_stats_send_telemetry_cp_req(struct wlan_objmgr_pdev *pdev,
193 				    struct infra_cp_stats_cmd_info *req);
194 #endif
195 
196 #if defined(WLAN_SUPPORT_TWT) && defined (WLAN_TWT_CONV_SUPPORTED)
197 /**
198  * wlan_cp_stats_twt_get_peer_session_params() - Retrieve peer twt session
199  * parameters
200  * @psoc: psoc object
201  * @params: array of pointer to store peer twt session parameters
202  *
203  * Return: total number of valid TWT sessions
204  */
205 int wlan_cp_stats_twt_get_peer_session_params(
206 					struct wlan_objmgr_psoc *psoc,
207 					struct twt_session_stats_info *params);
208 #endif
209 #ifdef WLAN_CHIPSET_STATS
210 /**
211  * wlan_cp_stats_get_chipset_stats_enable() - Returns INI
212  * CHIPSET_STATS_ENABLE
213  *
214  * @psoc: psoc object
215  *
216  * Return: True if Chipset Stats is enabled
217  *	   False if Chipset Stats is not supported or disabled
218  */
219 bool wlan_cp_stats_get_chipset_stats_enable(struct wlan_objmgr_psoc *psoc);
220 
221 /**
222  * wlan_cp_stats_cstats_qmi_event_handler() - chipset stats QMI event handler
223  *
224  * @cb_ctx: callback context
225  * @type : Type of stats
226  * @event: event data
227  * @event_len: event data length
228  *
229  * Return : 0 on success and -ve value on error
230  */
231 int wlan_cp_stats_cstats_qmi_event_handler(void *cb_ctx, uint16_t type,
232 					   void *event, int event_len);
233 
234 /**
235  * wlan_cp_stats_init_cfg() - update cp_stats_context with ini value
236  *
237  * @psoc: pointer to psoc
238  * @csc: pointer to cp_stats_context
239  *
240  * Return : void
241  */
242 void wlan_cp_stats_init_cfg(struct wlan_objmgr_psoc *psoc,
243 			    struct cp_stats_context *csc);
244 #else
wlan_cp_stats_init_cfg(struct wlan_objmgr_psoc * psoc,struct cp_stats_context * csc)245 static inline void wlan_cp_stats_init_cfg(struct wlan_objmgr_psoc *psoc,
246 					  struct cp_stats_context *csc)
247 {
248 }
249 #endif /* WLAN_CHIPSET_STATS */
250 
251 #endif /* QCA_SUPPORT_CP_STATS */
252 #endif /* __WLAN_CP_STATS_OBJ_MGR_HANDLER_H__ */
253