1 /*
2 * Copyright (c) 2018 The Linux Foundation. All rights reserved.
3 * Copyright (c) 2022 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: Declare private API which shall be used internally only
22 * in action_oui component. This file shall include prototypes of
23 * various notification handlers and logging functions.
24 *
25 * Note: This API should be never accessed out of action_oui component.
26 */
27
28 #ifndef _WLAN_ACTION_OUI_MAIN_H_
29 #define _WLAN_ACTION_OUI_MAIN_H_
30
31 #include <qdf_types.h>
32 #include "wlan_action_oui_public_struct.h"
33 #include "wlan_action_oui_priv.h"
34 #include "wlan_action_oui_objmgr.h"
35
36 #define action_oui_log(level, args...) \
37 QDF_TRACE(QDF_MODULE_ID_ACTION_OUI, level, ## args)
38
39 #define action_oui_logfl(level, format, args...) \
40 action_oui_log(level, FL(format), ## args)
41
42 #define action_oui_fatal(format, args...) \
43 action_oui_logfl(QDF_TRACE_LEVEL_FATAL, format, ## args)
44 #define action_oui_err(format, args...) \
45 action_oui_logfl(QDF_TRACE_LEVEL_ERROR, format, ## args)
46 #define action_oui_warn(format, args...) \
47 action_oui_logfl(QDF_TRACE_LEVEL_WARN, format, ## args)
48 #define action_oui_info(format, args...) \
49 action_oui_logfl(QDF_TRACE_LEVEL_INFO, format, ## args)
50 #define action_oui_debug(format, args...) \
51 action_oui_logfl(QDF_TRACE_LEVEL_DEBUG, format, ## args)
52
53 #define ACTION_OUI_ENTER() action_oui_debug("enter")
54 #define ACTION_OUI_EXIT() action_oui_debug("exit")
55
56 /**
57 * action_oui_psoc_create_notification(): Handler for psoc create notify.
58 * @psoc: psoc which is going to be created by objmgr
59 * @arg: argument for notification handler.
60 *
61 * Allocate and attach psoc private object.
62 *
63 * Return: QDF_STATUS status in case of success else return error.
64 */
65 QDF_STATUS
66 action_oui_psoc_create_notification(struct wlan_objmgr_psoc *psoc, void *arg);
67
68 /**
69 * action_oui_psoc_destroy_notification(): Handler for psoc destroy notify.
70 * @psoc: psoc which is going to be destroyed by objmgr
71 * @arg: argument for notification handler.
72 *
73 * Deallocate and detach psoc private object.
74 *
75 * Return QDF_STATUS status in case of success else return error
76 */
77 QDF_STATUS
78 action_oui_psoc_destroy_notification(struct wlan_objmgr_psoc *psoc, void *arg);
79
80 /**
81 * wlan_action_oui_search() - Check for OUIs and related info in IE data.
82 * @psoc: objmgr psoc object
83 * @attr: pointer to structure containing type of action, beacon IE data etc.,
84 * @action_id: type of action to be checked
85 *
86 * This is a wrapper function which invokes internal function to search
87 * for OUIs and related info (specified from ini file) in vendor specific
88 * data of beacon IE for given action.
89 *
90 * Return: If search is successful return true else false.
91 */
92 #ifdef WLAN_FEATURE_ACTION_OUI
93 bool wlan_action_oui_search(struct wlan_objmgr_psoc *psoc,
94 struct action_oui_search_attr *attr,
95 enum action_oui_id action_id);
96
97 /**
98 * wlan_action_oui_is_empty() - Check action oui present or not
99 * @psoc: psoc object
100 * @action_id: action oui id
101 *
102 * This function will check action oui present or not for specific action type.
103 *
104 * Return: True if no action oui for the action type.
105 */
106 bool wlan_action_oui_is_empty(struct wlan_objmgr_psoc *psoc,
107 enum action_oui_id action_id);
108
109 /**
110 * wlan_action_oui_cleanup() - Remove all of existing oui entry.
111 * @psoc_priv: action oui objmgr private context
112 * @action_id: type of action to be removed
113 *
114 * This is a wrapper function which invokes internal function to remove
115 * all of existing oui entry.
116 *
117 * Return: QDF_STATUS_SUCCESS If remove is successful.
118 */
119 QDF_STATUS
120 wlan_action_oui_cleanup(struct action_oui_psoc_priv *psoc_priv,
121 enum action_oui_id action_id);
122
123 /**
124 * action_oui_psoc_enable() - Notify action OUI psoc enable
125 * @psoc: objmgr psoc object
126 *
127 * Return: void
128 */
129 void action_oui_psoc_enable(struct wlan_objmgr_psoc *psoc);
130
131 /**
132 * action_oui_psoc_disable() - Notify action OUI psoc disable
133 * @psoc: objmgr psoc object
134 *
135 * Return: void
136 */
137 void action_oui_psoc_disable(struct wlan_objmgr_psoc *psoc);
138
139 #else
140 static inline
wlan_action_oui_search(struct wlan_objmgr_psoc * psoc,struct action_oui_search_attr * attr,enum action_oui_id action_id)141 bool wlan_action_oui_search(struct wlan_objmgr_psoc *psoc,
142 struct action_oui_search_attr *attr,
143 enum action_oui_id action_id)
144 {
145 return false;
146 }
147
148 static inline
wlan_action_oui_is_empty(struct wlan_objmgr_psoc * psoc,enum action_oui_id action_id)149 bool wlan_action_oui_is_empty(struct wlan_objmgr_psoc *psoc,
150 enum action_oui_id action_id)
151 {
152 return true;
153 }
154
155 static inline QDF_STATUS
wlan_action_oui_cleanup(struct action_oui_psoc_priv * psoc_priv,enum action_oui_id action_id)156 wlan_action_oui_cleanup(struct action_oui_psoc_priv *psoc_priv,
157 enum action_oui_id action_id)
158 {
159 return QDF_STATUS_SUCCESS;
160 }
161
162 static inline
action_oui_psoc_enable(struct wlan_objmgr_psoc * psoc)163 void action_oui_psoc_enable(struct wlan_objmgr_psoc *psoc)
164 {
165 }
166
167 static inline
action_oui_psoc_disable(struct wlan_objmgr_psoc * psoc)168 void action_oui_psoc_disable(struct wlan_objmgr_psoc *psoc)
169 {
170 }
171
172 #endif
173 #endif /* end of _WLAN_ACTION_OUI_MAIN_H_ */
174