xref: /wlan-dirver/qca-wifi-host-cmn/spectral/dispatcher/inc/wlan_spectral_tgt_api.h (revision 6d768494e5ce14eb1603a695c86739d12ecc6ec2)
1 /*
2  * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
3  *
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 #ifndef _WLAN_SPECTRAL_TGT_API_H_
21 #define _WLAN_SPECTRAL_TGT_API_H_
22 
23 #include <wlan_objmgr_cmn.h>
24 #include <qdf_types.h>
25 #include "../../core/spectral_cmn_api_i.h"
26 
27 /**
28  * tgt_get_pdev_target_handle() - Get pdev target_if handle
29  * @pdev: Pointer to pdev
30  *
31  * Get handle to pdev target_if internal Spectral data
32  *
33  * Return: Handle to pdev target_if internal Spectral data on success, NULL on
34  * failure
35  */
36 void *tgt_get_pdev_target_handle(struct wlan_objmgr_pdev *pdev);
37 
38 /**
39  * tgt_get_psoc_target_handle() - Get psoc target_if handle
40  * @psoc: Pointer to psoc
41  *
42  * Get handle to psoc target_if internal Spectral data
43  *
44  * Return: Handle to psoc target_if internal Spectral data on success, NULL on
45  * failure
46  */
47 void *tgt_get_psoc_target_handle(struct wlan_objmgr_psoc *psoc);
48 
49 /**
50  * tgt_spectral_control()- handler for demultiplexing requests from higher layer
51  * @pdev: Reference to global pdev object
52  * @sscan_req: pointer to Spectral scan request
53  *
54  * This function processes the spectral config command
55  * and appropriate handlers are invoked.
56  *
57  * Return: QDF_STATUS_SUCCESS/QDF_STATUS_E_FAILURE
58  */
59 QDF_STATUS tgt_spectral_control(struct wlan_objmgr_pdev *pdev,
60 				struct spectral_cp_request *sscan_req);
61 
62 /**
63  * tgt_pdev_spectral_init() - implementation for spectral init
64  * @pdev: Pointer to pdev
65  *
66  * Return: On success, pointer to Spectral target_if internal private data, on
67  * failure, NULL
68  */
69 void *tgt_pdev_spectral_init(struct wlan_objmgr_pdev *pdev);
70 
71 /**
72  * tgt_pdev_spectral_deinit() - implementation for spectral de-init
73  * @pdev: Pointer to pdev
74  *
75  * Return: None
76  */
77 void tgt_pdev_spectral_deinit(struct wlan_objmgr_pdev *pdev);
78 
79 /**
80  * tgt_psoc_spectral_init() - implementation for spectral init
81  * @psoc: Pointer to psoc
82  *
83  * Return: On success, pointer to Spectral psoc target_if internal private data,
84  * on failure, NULL
85  */
86 void *tgt_psoc_spectral_init(struct wlan_objmgr_psoc *psoc);
87 
88 /**
89  * tgt_psoc_spectral_deinit() - implementation for spectral de-init
90  * @psoc: Pointer to psoc
91  *
92  * Return: None
93  */
94 void tgt_psoc_spectral_deinit(struct wlan_objmgr_psoc *psoc);
95 
96 /**
97  * tgt_set_spectral_config() - Set spectral config
98  * @pdev: Pointer to pdev object
99  * @param: Pointer object describing Spectral parameter
100  * @smode: Spectral scan mode
101  * @err: Spectral control path error code
102  *
103  * Implementation for setting spectral config
104  *
105  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
106  */
107 QDF_STATUS tgt_set_spectral_config(struct wlan_objmgr_pdev *pdev,
108 				   const struct spectral_cp_param *param,
109 				   const enum spectral_scan_mode smode,
110 				   enum spectral_cp_error_code *err);
111 
112 /**
113  * tgt_get_spectral_config() - Get spectral configuration
114  * @pdev: Pointer to pdev object
115  * @param: Pointer to spectral_config structure in which the configuration
116  * should be returned
117  * @smode: Spectral scan mode
118  *
119  * Implementation for getting the current spectral configuration
120  *
121  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
122  */
123 QDF_STATUS tgt_get_spectral_config(struct wlan_objmgr_pdev *pdev,
124 				   struct spectral_config *sptrl_config,
125 				   const enum spectral_scan_mode smode);
126 
127 /**
128  * tgt_start_spectral_scan() - Start spectral scan
129  * @pdev: Pointer to pdev object
130  * @smode: Spectral scan mode
131  * @err: Spectral control path error code
132  *
133  * Implementation for starting spectral scan
134  *
135  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
136  */
137 QDF_STATUS tgt_start_spectral_scan(struct wlan_objmgr_pdev *pdev,
138 				   enum spectral_scan_mode smode,
139 				   enum spectral_cp_error_code *err);
140 
141 /**
142  * tgt_stop_spectral_scan() - Stop spectral scan
143  * @pdev: Pointer to pdev object
144  * @smode: Spectral scan mode
145  * @err: Spectral control path error code
146  *
147  * Implementation for stop spectral scan
148  *
149  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
150  */
151 QDF_STATUS tgt_stop_spectral_scan(struct wlan_objmgr_pdev *pdev,
152 				  enum spectral_scan_mode smode,
153 				  enum spectral_cp_error_code *err);
154 
155 /**
156  * tgt_is_spectral_active() - Get whether Spectral is active
157  * @pdev: Pointer to pdev object
158  * @smode: Spectral scan mode
159  *
160  * Implementation to get whether Spectral is active
161  *
162  * Return: True if Spectral is active, false if Spectral is not active
163  */
164 bool tgt_is_spectral_active(struct wlan_objmgr_pdev *pdev,
165 			    enum spectral_scan_mode smode);
166 
167 /**
168  * tgt_is_spectral_enabled() - Get whether Spectral is active
169  * @pdev: Pointer to pdev object
170  * @smode: Spectral scan mode
171  *
172  * Implementation to get whether Spectral is active
173  *
174  * Return: True if Spectral is active, false if Spectral is not active
175  */
176 bool tgt_is_spectral_enabled(struct wlan_objmgr_pdev *pdev,
177 			     enum spectral_scan_mode smode);
178 
179 /**
180  * tgt_set_debug_level() - Set debug level for Spectral
181  * @pdev: Pointer to pdev object
182  * @debug_level: Debug level
183  *
184  * Implementation to set the debug level for Spectral
185  *
186  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
187  */
188 QDF_STATUS tgt_set_debug_level(struct wlan_objmgr_pdev *pdev,
189 			       u_int32_t debug_level);
190 
191 /**
192  * tgt_get_debug_level() - Get debug level for Spectral
193  * @pdev: Pointer to pdev object
194  *
195  * Implementation to get the debug level for Spectral
196  *
197  * Return: Current debug level
198  */
199 uint32_t tgt_get_debug_level(struct wlan_objmgr_pdev *pdev);
200 
201 /**
202  * tgt_get_spectral_capinfo() - Get Spectral capability information
203  * @pdev: Pointer to pdev object
204  * @scaps: Buffer into which data should be copied
205  *
206  * Implementation to get the spectral capability information
207  *
208  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
209  */
210 QDF_STATUS tgt_get_spectral_capinfo(struct wlan_objmgr_pdev *pdev,
211 				    struct spectral_caps *scaps);
212 
213 /**
214  * tgt_get_spectral_diagstats() - Get Spectral diagnostic statistics
215  * @pdev:  Pointer to pdev object
216  * @stats: Buffer into which data should be copied
217  *
218  * Implementation to get the spectral diagnostic statistics
219  *
220  * Return: QDF_STATUS_SUCCESS on success, else QDF_STATUS_E_FAILURE
221  */
222 QDF_STATUS tgt_get_spectral_diagstats(struct wlan_objmgr_pdev *pdev,
223 				      struct spectral_diag_stats *stats);
224 
225 /**
226  * tgt_register_spectral_wmi_ops() - Register Spectral WMI operations
227  * @psoc: Pointer to psoc bject
228  * @wmi_ops: Pointer to the structure having Spectral WMI operations
229  *
230  * Implementation to register Spectral WMI operations in spectral
231  * internal data structure
232  *
233  * Return: QDF_STATUS
234  */
235 QDF_STATUS tgt_register_spectral_wmi_ops(struct wlan_objmgr_psoc *psoc,
236 					 struct spectral_wmi_ops *wmi_ops);
237 
238 /**
239  * tgt_register_spectral_tgt_ops() - Register Spectral target operations
240  * @psoc: Pointer to psoc bject
241  * @tgt_ops: Pointer to the structure having Spectral target operations
242  *
243  * Implementation to register Spectral target operations in spectral
244  * internal data structure
245  *
246  * Return: QDF_STATUS
247  */
248 QDF_STATUS tgt_register_spectral_tgt_ops(struct wlan_objmgr_psoc *psoc,
249 					 struct spectral_tgt_ops *tgt_ops);
250 
251 /**
252  * tgt_spectral_register_nl_cb() - Register Netlink callbacks
253  * @pdev: Pointer to pdev object
254  * @nl_cb: Netlink callbacks to register
255  *
256  * Return: void
257  */
258 void tgt_spectral_register_nl_cb(struct wlan_objmgr_pdev *pdev,
259 				 struct spectral_nl_cb *nl_cb);
260 
261 /**
262  * tgt_spectral_use_nl_bcast() - Get whether to use broadcast/unicast while
263  * sending Netlink messages to the application layer
264  * @pdev: Pointer to pdev object
265  *
266  * Return: true for broadcast, false for unicast
267  */
268 bool tgt_spectral_use_nl_bcast(struct wlan_objmgr_pdev *pdev);
269 
270 /**
271  * tgt_spectral_deregister_nl_cb() - De-register Netlink callbacks
272  * @pdev: Pointer to pdev object
273  *
274  * Return: void
275  */
276 void tgt_spectral_deregister_nl_cb(struct wlan_objmgr_pdev *pdev);
277 
278 /**
279  * tgt_spectral_process_report() - Process spectral report
280  * @pdev: Pointer to pdev object
281  * @payload: Pointer to spectral report buffer
282  *
283  * Return: status
284  */
285 int
286 tgt_spectral_process_report(struct wlan_objmgr_pdev *pdev,
287 			    void *payload);
288 
289 /**
290  * tgt_spectral_register_to_dbr() - Register to direct DMA
291  * @pdev: Pointer to pdev object
292  *
293  * Return: QDF_STATUS
294  */
295 QDF_STATUS
296 tgt_spectral_register_to_dbr(struct wlan_objmgr_pdev *pdev);
297 
298 /**
299  * tgt_spectral_unregister_to_dbr() - Register to direct DMA
300  * @pdev: Pointer to pdev object
301  *
302  * Return: QDF_STATUS
303  */
304 QDF_STATUS
305 tgt_spectral_unregister_to_dbr(struct wlan_objmgr_pdev *pdev);
306 
307 /**
308  * tgt_spectral_get_target_type() - Get target type
309  * @psoc: Pointer to psoc object
310  *
311  * Return: target type
312  */
313 uint32_t
314 tgt_spectral_get_target_type(struct wlan_objmgr_psoc *psoc);
315 
316 /**
317  * tgt_set_spectral_dma_debug() - Set DMA debug for Spectral
318  * @pdev: Pointer to pdev object
319  * @dma_debug_type: Type of Spectral DMA debug i.e., ring or buffer debug
320  * @dma_debug_enable: Value to be set for @dma_debug_type
321  *
322  * Return: QDF_STATUS of operation
323  */
324 QDF_STATUS tgt_set_spectral_dma_debug(struct wlan_objmgr_pdev *pdev,
325 				      enum spectral_dma_debug dma_debug_type,
326 				      bool dma_debug_enable);
327 
328 /**
329  * tgt_spectral_register_events() - Register Spectral WMI event handlers
330  * @psoc: Pointer to psoc object
331  *
332  * Return: QDF_STATUS of operation
333  */
334 QDF_STATUS
335 tgt_spectral_register_events(struct wlan_objmgr_psoc *psoc);
336 
337 /**
338  * tgt_spectral_unregister_events() - Unregister Spectral WMI event handlers
339  * @psoc: Pointer to psoc object
340  *
341  * Return: QDF_STATUS of operation
342  */
343 QDF_STATUS
344 tgt_spectral_unregister_events(struct wlan_objmgr_psoc *psoc);
345 #endif /* _WLAN_SPECTRAL_TGT_API_H_ */
346