1 /*
2  * Copyright (c) 2020, The Linux Foundation. All rights reserved.
3  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 
18 /**
19  * DOC: contains Interface MGR init/deinit public api
20  */
21 
22 #ifndef _WLAN_IF_MGR_MAIN_API_H_
23 #define _WLAN_IF_MGR_MAIN_API_H_
24 
25 #ifdef WLAN_FEATURE_INTERFACE_MGR
26 
27 #include <qdf_atomic.h>
28 #include <wlan_objmgr_psoc_obj.h>
29 #include <wlan_objmgr_pdev_obj.h>
30 #include <wlan_objmgr_vdev_obj.h>
31 #include <wlan_if_mgr_public_struct.h>
32 
33 #define ifmgr_alert(params...) \
34 	QDF_TRACE_FATAL(QDF_MODULE_ID_IFMGR, params)
35 #define ifmgr_err(params...) \
36 	QDF_TRACE_ERROR(QDF_MODULE_ID_IFMGR, params)
37 #define ifmgr_warn(params...) \
38 	QDF_TRACE_WARN(QDF_MODULE_ID_IFMGR, params)
39 #define ifmgr_notice(params...) \
40 	QDF_TRACE_INFO(QDF_MODULE_ID_IFMGR, params)
41 #define ifmgr_info(params...) \
42 	QDF_TRACE_INFO(QDF_MODULE_ID_IFMGR, params)
43 #define ifmgr_debug(params...) \
44 	QDF_TRACE_DEBUG(QDF_MODULE_ID_IFMGR, params)
45 
46 /* Rate Limited Logs */
47 #define ifmgr_alert_rl(params...) \
48 	QDF_TRACE_FATAL_RL(QDF_MODULE_ID_IFMGR, params)
49 #define ifmgr_err_rl(params...) \
50 	QDF_TRACE_ERROR_RL(QDF_MODULE_ID_IFMGR, params)
51 #define ifmgr_warn_rl(params...) \
52 	QDF_TRACE_WARN_RL(QDF_MODULE_ID_IFMGR, params)
53 #define ifmgr_info_rl(params...) \
54 	QDF_TRACE_INFO_RL(QDF_MODULE_ID_IFMGR, params)
55 #define ifmgr_debug_rl(params...) \
56 	QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_IFMGR, params)
57 
58 #define ifmgr_nofl_alert(params...) \
59 	QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_IFMGR, params)
60 #define ifmgr_nofl_err(params...) \
61 	QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_IFMGR, params)
62 #define ifmgr_nofl_warn(params...) \
63 	QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_IFMGR, params)
64 #define ifmgr_nofl_info(params...) \
65 	QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_IFMGR, params)
66 #define ifmgr_nofl_debug(params...) \
67 	QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_IFMGR, params)
68 
69 #define ifmgr_hex_dump(level, data, buf_len) \
70 		qdf_trace_hex_dump(QDF_MODULE_ID_IFMGR, level, data, buf_len)
71 
72 /**
73  * wlan_if_mgr_init() - Interface manager module initialization API
74  *
75  * Return: QDF_STATUS
76  */
77 QDF_STATUS wlan_if_mgr_init(void);
78 
79 /**
80  * wlan_if_mgr_deinit() - interface manager module deinitialization API
81  *
82  * Return: QDF_STATUS
83  */
84 QDF_STATUS wlan_if_mgr_deinit(void);
85 
86 /**
87  * wlan_if_mgr_psoc_created_notification() - interface mgr psoc create handler
88  * @psoc: psoc object
89  * @arg_list: Argument list
90  *
91  * Return: QDF_STATUS
92  */
93 QDF_STATUS wlan_if_mgr_psoc_created_notification(struct wlan_objmgr_psoc *psoc,
94 						 void *arg_list);
95 
96 /**
97  * wlan_if_mgr_psoc_destroyed_notification() - scan psoc delete handler
98  * @psoc: psoc object
99  * @arg_list: Argument list
100  *
101  * Return: QDF_STATUS
102  */
103 QDF_STATUS wlan_if_mgr_psoc_destroyed_notification(struct wlan_objmgr_psoc *psoc,
104 						   void *arg_list);
105 #else
wlan_if_mgr_init(void)106 inline QDF_STATUS wlan_if_mgr_init(void)
107 {
108 	return QDF_STATUS_SUCCESS;
109 }
110 
wlan_if_mgr_deinit(void)111 QDF_STATUS wlan_if_mgr_deinit(void)
112 {
113 	return QDF_STATUS_SUCCESS;
114 }
115 #endif
116 #endif
117