xref: /wlan-dirver/qca-wifi-host-cmn/umac/cp_stats/core/src/wlan_cp_stats_obj_mgr_handler.h (revision 0ce3a8e5493253d9ed0eb4d5cc91ce576740ae1e)
1 /*
2  * Copyright (c) 2018, 2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 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_get_context() - get the context and callback
144  * for sending response
145  * @psoc: pointer to psoc object
146  * @resp_cb: pointer to store the response callback
147  * @context: pointer to store context
148  *
149  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
150  * failure
151  */
152 QDF_STATUS
153 wlan_cp_stats_infra_cp_get_context(struct wlan_objmgr_psoc *psoc,
154 				   get_infra_cp_stats_cb *resp_cb,
155 				   void **context);
156 /**
157  * wlan_cp_stats_send_infra_cp_req() - API to send infra cp stats request to
158  * lmac
159  * @psoc: pointer to psoc object
160  * @req: pointer to infra cp stats request
161  *
162  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
163  * failure
164  */
165 QDF_STATUS
166 wlan_cp_stats_send_infra_cp_req(struct wlan_objmgr_psoc *psoc,
167 				struct infra_cp_stats_cmd_info *req);
168 #endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
169 
170 #ifdef WLAN_TELEMETRY_STATS_SUPPORT
171 /**
172  * wlan_cp_stats_send_telemetry_cp_req() - API to send telemetry cp stats
173  * request to lmac
174  * @pdev: pointer to pdev object
175  * @req: pointer to telemetry cp stats request
176  *
177  * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
178  * failure
179  */
180 QDF_STATUS
181 wlan_cp_stats_send_telemetry_cp_req(struct wlan_objmgr_pdev *pdev,
182 				    struct infra_cp_stats_cmd_info *req);
183 #endif
184 
185 #if defined(WLAN_SUPPORT_TWT) && defined (WLAN_TWT_CONV_SUPPORTED)
186 /**
187  * wlan_cp_stats_twt_get_peer_session_params() - Retrieve peer twt session
188  * parameters
189  * @psoc: psoc object
190  * @params: array of pointer to store peer twt session parameters
191  *
192  * Return: total number of valid TWT sessions
193  */
194 int wlan_cp_stats_twt_get_peer_session_params(
195 					struct wlan_objmgr_psoc *psoc,
196 					struct twt_session_stats_info *params);
197 #endif
198 
199 #endif /* QCA_SUPPORT_CP_STATS */
200 #endif /* __WLAN_CP_STATS_OBJ_MGR_HANDLER_H__ */
201