1 /*
2  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _WLAN_TWT_CFG_H
20 #define _WLAN_TWT_CFG_H
21 
22 #include <wlan_objmgr_psoc_obj.h>
23 
24 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
25 /**
26  * wlan_twt_cfg_init() - Initialize twt config params
27  * @psoc: Pointer to global psoc
28  *
29  * This function initializes the twt private cfg params
30  *
31  * Return: QDF_STATUS
32  */
33 QDF_STATUS wlan_twt_cfg_init(struct wlan_objmgr_psoc *psoc);
34 
35 /**
36  * wlan_twt_cfg_deinit() - De-initialize twt config params
37  * @psoc: Pointer to global psoc
38  *
39  * This function de-initializes the twt private cfg params
40  *
41  * Return: QDF_STATUS
42  */
43 QDF_STATUS wlan_twt_cfg_deinit(struct wlan_objmgr_psoc *psoc);
44 
45 /**
46  * wlan_twt_cfg_update() - Update twt config params
47  * @psoc: Pointer to global psoc
48  *
49  * This function updates the cfg param structure based on the
50  * intersection of target capabilities and other cfg params
51  *
52  * Return: QDF_STATUS
53  */
54 QDF_STATUS wlan_twt_cfg_update(struct wlan_objmgr_psoc *psoc);
55 
56 /**
57  * wlan_twt_cfg_get_requestor() - get cfg requestor
58  * @psoc: Pointer to global psoc
59  * @val: pointer to output variable
60  *
61  * Return: QDF_STATUS
62  */
63 QDF_STATUS
64 wlan_twt_cfg_get_requestor(struct wlan_objmgr_psoc *psoc, bool *val);
65 
66 /**
67  * wlan_twt_cfg_get_responder() - get cfg responder
68  * @psoc: Pointer to global psoc
69  * @val: pointer to output variable
70  *
71  * Return: QDF_STATUS
72  */
73 QDF_STATUS
74 wlan_twt_cfg_get_responder(struct wlan_objmgr_psoc *psoc, bool *val);
75 
76 /**
77  * wlan_twt_cfg_set_responder() - set cfg responder
78  * @psoc: Pointer to global psoc
79  * @val: value to be set
80  *
81  * Return: QDF_STATUS
82  */
83 QDF_STATUS
84 wlan_twt_cfg_set_responder(struct wlan_objmgr_psoc *psoc, bool val);
85 
86 /**
87  * wlan_twt_cfg_is_twt_enabled() - API to check if TWT is enabled
88  * @psoc: Pointer to PSOC object
89  *
90  * Return: True if TWT is enabled else false
91  */
92 bool wlan_twt_cfg_is_twt_enabled(struct wlan_objmgr_psoc *psoc);
93 
94 /**
95  * wlan_twt_cfg_get_congestion_timeout() - get congestion timeout
96  * @psoc: Pointer to global psoc
97  * @val: pointer to output variable
98  *
99  * Return: QDF_STATUS
100  */
101 QDF_STATUS
102 wlan_twt_cfg_get_congestion_timeout(struct wlan_objmgr_psoc *psoc,
103 				    uint32_t *val);
104 
105 /**
106  * wlan_twt_cfg_set_congestion_timeout() - set congestion timeout
107  * @psoc: Pointer to global psoc
108  * @val: value to be set
109  *
110  * Return: QDF_STATUS
111  */
112 QDF_STATUS
113 wlan_twt_cfg_set_congestion_timeout(struct wlan_objmgr_psoc *psoc,
114 				    uint32_t val);
115 
116 /**
117  * wlan_twt_cfg_get_requestor_flag() - get requestor flag
118  * @psoc: Pointer to global psoc
119  * @val: pointer to output variable
120  *
121  * Return: QDF_STATUS
122  */
123 QDF_STATUS
124 wlan_twt_cfg_get_requestor_flag(struct wlan_objmgr_psoc *psoc, bool *val);
125 
126 /**
127  * wlan_twt_cfg_set_requestor_flag() - set requestor flag
128  * @psoc: Pointer to global psoc
129  * @val: value to be set
130  *
131  * Return: QDF_STATUS
132  */
133 QDF_STATUS
134 wlan_twt_cfg_set_requestor_flag(struct wlan_objmgr_psoc *psoc, bool val);
135 
136 /**
137  * wlan_twt_cfg_get_responder_flag() - get responder flag
138  * @psoc: Pointer to global psoc
139  * @val: pointer to output variable
140  *
141  * Return: QDF_STATUS
142  */
143 QDF_STATUS
144 wlan_twt_cfg_get_responder_flag(struct wlan_objmgr_psoc *psoc, bool *val);
145 
146 /**
147  * wlan_twt_cfg_set_responder_flag() - set responder flag
148  * @psoc: Pointer to global psoc
149  * @val: value to be set
150  *
151  * Return: QDF_STATUS
152  */
153 QDF_STATUS
154 wlan_twt_cfg_set_responder_flag(struct wlan_objmgr_psoc *psoc, bool val);
155 
156 /**
157  * wlan_twt_cfg_get_flex_sched() - get flex scheduling
158  * @psoc: Pointer to global psoc
159  * @val: pointer to output variable
160  *
161  * Return: QDF_STATUS
162  */
163 QDF_STATUS
164 wlan_twt_cfg_get_flex_sched(struct wlan_objmgr_psoc *psoc, bool *val);
165 
166 /**
167  * wlan_twt_cfg_get_24ghz_enabled() - get 24ghz enable
168  * @psoc: Pointer to global psoc
169  * @val: pointer to output variable
170  *
171  * Return: QDF_STATUS
172  */
173 QDF_STATUS
174 wlan_twt_cfg_get_24ghz_enabled(struct wlan_objmgr_psoc *psoc, bool *val);
175 
176 /**
177  * wlan_twt_cfg_get_bcast_requestor() - get bcast requestor
178  * @psoc: Pointer to global psoc
179  * @val: pointer to output variable
180  *
181  * Return: QDF_STATUS
182  */
183 QDF_STATUS
184 wlan_twt_cfg_get_bcast_requestor(struct wlan_objmgr_psoc *psoc, bool *val);
185 
186 /**
187  * wlan_twt_cfg_get_bcast_responder() - get bcast responder
188  * @psoc: Pointer to global psoc
189  * @val: pointer to output variable
190  *
191  * Return: QDF_STATUS
192  */
193 QDF_STATUS
194 wlan_twt_cfg_get_bcast_responder(struct wlan_objmgr_psoc *psoc, bool *val);
195 
196 /**
197  * wlan_twt_cfg_get_rtwt_requestor() - get rtwt requestor
198  * @psoc: Pointer to global psoc
199  * @val: pointer to output variable
200  *
201  * Return: QDF_STATUS
202  */
203 QDF_STATUS
204 wlan_twt_cfg_get_rtwt_requestor(struct wlan_objmgr_psoc *psoc, bool *val);
205 
206 /**
207  * wlan_twt_cfg_get_rtwt_responder() - get rtwt responder
208  * @psoc: Pointer to global psoc
209  * @val: pointer to output variable
210  *
211  * Return: QDF_STATUS
212  */
213 QDF_STATUS
214 wlan_twt_cfg_get_rtwt_responder(struct wlan_objmgr_psoc *psoc, bool *val);
215 
216 /**
217  * wlan_twt_cfg_get_support_in_11n_mode() - Get TWT support in 11n mode
218  * @psoc: Pointer to global psoc
219  * @val: pointer to output variable
220  *
221  * Return: QDF_STATUS
222  */
223 QDF_STATUS
224 wlan_twt_cfg_get_support_in_11n_mode(struct wlan_objmgr_psoc *psoc,
225 				     bool *val);
226 /**
227  * wlan_twt_get_restricted_support() - Get rTWT support
228  * @psoc: Pointer to global psoc
229  * @val: pointer to output variable
230  *
231  * Return: QDF_STATUS
232  */
233 QDF_STATUS
234 wlan_twt_get_restricted_support(struct wlan_objmgr_psoc *psoc, bool *val);
235 
236 /**
237  * wlan_twt_get_pmo_allowed() - Get pmo allowed
238  * @psoc: psoc handler
239  *
240  * Return: True if twt pmo is allowed otherwise false
241  */
242 bool
243 wlan_twt_get_pmo_allowed(struct wlan_objmgr_psoc *psoc);
244 #else
245 
wlan_twt_cfg_init(struct wlan_objmgr_psoc * psoc)246 static inline QDF_STATUS wlan_twt_cfg_init(struct wlan_objmgr_psoc *psoc)
247 {
248 	return QDF_STATUS_SUCCESS;
249 }
250 
wlan_twt_cfg_deinit(struct wlan_objmgr_psoc * psoc)251 static inline QDF_STATUS wlan_twt_cfg_deinit(struct wlan_objmgr_psoc *psoc)
252 {
253 	return QDF_STATUS_SUCCESS;
254 }
255 
wlan_twt_cfg_update(struct wlan_objmgr_psoc * psoc)256 static inline QDF_STATUS wlan_twt_cfg_update(struct wlan_objmgr_psoc *psoc)
257 {
258 	return QDF_STATUS_SUCCESS;
259 }
260 
261 static inline QDF_STATUS
wlan_twt_cfg_get_requestor(struct wlan_objmgr_psoc * psoc,bool * val)262 wlan_twt_cfg_get_requestor(struct wlan_objmgr_psoc *psoc, bool *val)
263 {
264 	return QDF_STATUS_SUCCESS;
265 }
266 
267 static inline QDF_STATUS
wlan_twt_cfg_get_responder(struct wlan_objmgr_psoc * psoc,bool * val)268 wlan_twt_cfg_get_responder(struct wlan_objmgr_psoc *psoc, bool *val)
269 {
270 	return QDF_STATUS_SUCCESS;
271 }
272 
273 static inline QDF_STATUS
wlan_twt_cfg_set_responder(struct wlan_objmgr_psoc * psoc,bool val)274 wlan_twt_cfg_set_responder(struct wlan_objmgr_psoc *psoc, bool val)
275 {
276 	return QDF_STATUS_SUCCESS;
277 }
278 
279 static inline bool
wlan_twt_cfg_is_twt_enabled(struct wlan_objmgr_psoc * psoc)280 wlan_twt_cfg_is_twt_enabled(struct wlan_objmgr_psoc *psoc)
281 {
282 	return QDF_STATUS_SUCCESS;
283 }
284 
285 static inline QDF_STATUS
wlan_twt_cfg_get_congestion_timeout(struct wlan_objmgr_psoc * psoc,uint32_t * val)286 wlan_twt_cfg_get_congestion_timeout(struct wlan_objmgr_psoc *psoc,
287 				    uint32_t *val)
288 {
289 	return QDF_STATUS_SUCCESS;
290 }
291 
292 static inline QDF_STATUS
wlan_twt_cfg_set_congestion_timeout(struct wlan_objmgr_psoc * psoc,uint32_t val)293 wlan_twt_cfg_set_congestion_timeout(struct wlan_objmgr_psoc *psoc,
294 				    uint32_t val)
295 {
296 	return QDF_STATUS_SUCCESS;
297 }
298 
299 static inline QDF_STATUS
wlan_twt_cfg_get_requestor_flag(struct wlan_objmgr_psoc * psoc,bool * val)300 wlan_twt_cfg_get_requestor_flag(struct wlan_objmgr_psoc *psoc, bool *val)
301 {
302 	return QDF_STATUS_SUCCESS;
303 }
304 
305 static inline QDF_STATUS
wlan_twt_cfg_set_requestor_flag(struct wlan_objmgr_psoc * psoc,bool val)306 wlan_twt_cfg_set_requestor_flag(struct wlan_objmgr_psoc *psoc, bool val)
307 {
308 	return QDF_STATUS_SUCCESS;
309 }
310 
311 static inline QDF_STATUS
wlan_twt_cfg_get_responder_flag(struct wlan_objmgr_psoc * psoc,bool * val)312 wlan_twt_cfg_get_responder_flag(struct wlan_objmgr_psoc *psoc, bool *val)
313 {
314 	return QDF_STATUS_SUCCESS;
315 }
316 
317 static inline QDF_STATUS
wlan_twt_cfg_set_responder_flag(struct wlan_objmgr_psoc * psoc,bool val)318 wlan_twt_cfg_set_responder_flag(struct wlan_objmgr_psoc *psoc, bool val)
319 {
320 	return QDF_STATUS_SUCCESS;
321 }
322 
323 static inline QDF_STATUS
wlan_twt_cfg_get_flex_sched(struct wlan_objmgr_psoc * psoc,bool * val)324 wlan_twt_cfg_get_flex_sched(struct wlan_objmgr_psoc *psoc, bool *val)
325 {
326 	return QDF_STATUS_SUCCESS;
327 }
328 
329 static inline QDF_STATUS
wlan_twt_cfg_get_24ghz_enabled(struct wlan_objmgr_psoc * psoc,bool * val)330 wlan_twt_cfg_get_24ghz_enabled(struct wlan_objmgr_psoc *psoc, bool *val)
331 {
332 	return QDF_STATUS_SUCCESS;
333 }
334 
335 static inline QDF_STATUS
wlan_twt_cfg_get_bcast_requestor(struct wlan_objmgr_psoc * psoc,bool * val)336 wlan_twt_cfg_get_bcast_requestor(struct wlan_objmgr_psoc *psoc, bool *val)
337 {
338 	return QDF_STATUS_SUCCESS;
339 }
340 
341 static inline QDF_STATUS
wlan_twt_cfg_get_bcast_responder(struct wlan_objmgr_psoc * psoc,bool * val)342 wlan_twt_cfg_get_bcast_responder(struct wlan_objmgr_psoc *psoc, bool *val)
343 {
344 	return QDF_STATUS_SUCCESS;
345 }
346 
347 static inline QDF_STATUS
wlan_twt_cfg_get_support_in_11n_mode(struct wlan_objmgr_psoc * psoc,bool * val)348 wlan_twt_cfg_get_support_in_11n_mode(struct wlan_objmgr_psoc *psoc,
349 				     bool *val)
350 {
351 	return QDF_STATUS_SUCCESS;
352 }
353 
354 static inline QDF_STATUS
wlan_twt_get_restricted_support(struct wlan_objmgr_psoc * psoc,bool * val)355 wlan_twt_get_restricted_support(struct wlan_objmgr_psoc *psoc, bool *val)
356 {
357 	return QDF_STATUS_SUCCESS;
358 }
359 
360 static inline bool
wlan_twt_get_pmo_allowed(struct wlan_objmgr_psoc * psoc)361 wlan_twt_get_pmo_allowed(struct wlan_objmgr_psoc *psoc)
362 {
363 	return true;
364 }
365 #endif
366 
367 #endif /* End of _WLAN_TWT_CFG_H */
368