1 /*
2  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-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: declare UCFG APIs for TWT exposed by the mlme component
20  */
21 
22 #ifndef _WLAN_MLME_TWT_UCFG_API_H_
23 #define _WLAN_MLME_TWT_UCFG_API_H_
24 
25 #include <cfg_ucfg_api.h>
26 #include <wlan_mlme_public_struct.h>
27 #include <wlan_mlme_twt_public_struct.h>
28 #include <wlan_objmgr_psoc_obj.h>
29 #include <wlan_objmgr_global_obj.h>
30 #include <wlan_mlme_api.h>
31 #include <wlan_mlme_main.h>
32 #include <wlan_mlme_twt_api.h>
33 
34 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) && \
35 	defined(WLAN_TWT_CONV_SUPPORTED)
36 static inline
ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)37 QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc,
38 				      struct qdf_mac_addr *peer_mac,
39 				      uint8_t dialog_id)
40 {
41 	return QDF_STATUS_E_NOSUPPORT;
42 }
43 
44 static inline bool
ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)45 ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc)
46 {
47 	return QDF_STATUS_E_NOSUPPORT;
48 }
49 
50 static inline QDF_STATUS
ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc * psoc,bool * val)51 ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc,
52 			    bool *val)
53 {
54 	*val = false;
55 	return QDF_STATUS_E_NOSUPPORT;
56 }
57 
58 static inline QDF_STATUS
ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc * psoc,bool val)59 ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc,
60 			    bool val)
61 {
62 	return QDF_STATUS_E_NOSUPPORT;
63 }
64 
65 static inline QDF_STATUS
ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc * psoc,bool * val)66 ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc,
67 			    bool *val)
68 {
69 	*val = false;
70 	return QDF_STATUS_E_NOSUPPORT;
71 }
72 
73 static inline QDF_STATUS
ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc * psoc,bool val)74 ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc,
75 			    bool val)
76 {
77 	return QDF_STATUS_E_NOSUPPORT;
78 }
79 
80 static inline bool
ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)81 ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc,
82 			    struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
83 {
84 	return 0;
85 }
86 
87 static inline void
ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,bool is_set)88 ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc *psoc,
89 			     struct qdf_mac_addr *peer_mac,
90 			     uint8_t dialog_id, bool is_set)
91 {}
92 
93 static inline
ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_session_state state)94 void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
95 				     struct qdf_mac_addr *peer_mac,
96 				     uint8_t dialog_id,
97 				     enum wlan_twt_session_state state)
98 {}
99 
100 static inline enum wlan_twt_session_state
ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)101 ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
102 				struct qdf_mac_addr *peer_mac,
103 				uint8_t dialog_id)
104 {
105 	return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
106 }
107 
108 static inline QDF_STATUS
ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool val)109 ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val)
110 {
111 	return QDF_STATUS_E_NOSUPPORT;
112 }
113 
114 static inline QDF_STATUS
ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool * val)115 ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val)
116 {
117 	*val = false;
118 	return QDF_STATUS_E_NOSUPPORT;
119 }
120 
121 static inline QDF_STATUS
ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)122 ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc,
123 			       struct qdf_mac_addr *peer_mac,
124 			       uint8_t dialog_id)
125 {
126 	return QDF_STATUS_E_NOSUPPORT;
127 }
128 
129 static inline QDF_STATUS
ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd)130 ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc *psoc,
131 				      struct qdf_mac_addr *peer_mac,
132 				      uint8_t dialog_id,
133 				      enum wlan_twt_commands cmd)
134 {
135 	return QDF_STATUS_E_FAILURE;
136 }
137 
138 #elif defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX)
139 /**
140  * ucfg_mlme_get_twt_requestor() - Get twt requestor
141  * @psoc: pointer to psoc object
142  * @val:  Pointer to the value which will be filled for the caller
143  *
144  * Return: QDF Status
145  */
146 QDF_STATUS
147 ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc,
148 			    bool *val);
149 
150 /**
151  * ucfg_mlme_set_twt_requestor() - Set twt requestor
152  * @psoc: pointer to psoc object
153  * @val:  value that needs to set to this config
154  *
155  * Return: QDF Status
156  */
157 QDF_STATUS
158 ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc,
159 			    bool val);
160 
161 /**
162  * ucfg_mlme_get_twt_responder() - Get twt responder
163  * @psoc: pointer to psoc object
164  * @val:  Pointer to the value which will be filled for the caller
165  *
166  * Return: QDF Status
167  */
168 QDF_STATUS
169 ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc,
170 			    bool *val);
171 
172 /**
173  * ucfg_mlme_set_twt_responder() - Set twt responder
174  * @psoc: pointer to psoc object
175  * @val:  value that needs to set to this config
176  *
177  * Return: QDF Status
178  */
179 QDF_STATUS
180 ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc,
181 			    bool val);
182 
183 /**
184  * ucfg_mlme_get_twt_congestion_timeout() - Get twt congestion timeout
185  * @psoc: pointer to psoc object
186  * @val:  Pointer to the value which will be filled for the caller
187  *
188  * Return: QDF Status
189  */
190 QDF_STATUS
191 ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc,
192 				     uint32_t *val);
193 
194 /**
195  * ucfg_mlme_set_twt_congestion_timeout() - Set twt congestion timeout
196  * @psoc: pointer to psoc object
197  * @val:  value that needs to set to this config
198  *
199  * Return: QDF Status
200  */
201 QDF_STATUS
202 ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc,
203 				     uint32_t val);
204 
205 /**
206  * ucfg_mlme_is_twt_enabled() - Get global twt config support
207  * @psoc: pointer to psoc object
208  *
209  * Return: True if TWT is enabled else false.
210  */
211 static inline bool
ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)212 ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc)
213 {
214 	return mlme_is_twt_enabled(psoc);
215 }
216 
217 /**
218  * ucfg_mlme_set_enable_twt() - Set global twt config support
219  * @psoc: pointer to psoc object
220  * @val:  value that needs to set to this config
221  *
222  * Return: QDF Status
223  */
224 QDF_STATUS
225 ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc *psoc,
226 			 bool val);
227 
228 /*
229  * ucfg_mlme_get_twt_bcast_requestor() - Get twt requestor enabled
230  * @psoc: pointer to psoc object
231  * @val:  Pointer to the value which will be filled for the caller
232  *
233  * Return: QDF Status
234  */
235 QDF_STATUS
236 ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc,
237 				  bool *val);
238 
239 /**
240  * ucfg_mlme_get_twt_bcast_responder() - Get twt responder enabled
241  * @psoc: pointer to psoc object
242  * @val:  Pointer to the value which will be filled for the caller
243  *
244  * Return: QDF Status
245  */
246 QDF_STATUS
247 ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc *psoc,
248 				  bool *val);
249 /*
250  * 1. If both of the new service caps
251  * WMI_SERVICE_BROADCAST_TWT_REQUESTER And
252  * WMI_SERVICE_BROADCAST_TWT_RESPONDER are enabled then the old
253  * WMI_SERVICE_BROADCAST_TWT will be set to 1.
254  *
255  * 2.a. If any of the new service caps in case of new firmware:
256  * WMI_SERVICE_BROADCAST_TWT_REQUESTER And
257  * WMI_SERVICE_BROADCAST_TWT_RESPONDER is DISABLED then the old
258  * WMI_SERVICE_BROADCAST_TWT will be set to 0.
259  *
260  * 2.b In case of new firmware wants to disable broadcast TWT:
261  * all 3 WMI_SERVICE_BROADCAST_TWT_REQUESTER,
262  * WMI_SERVICE_BROADCAST_TWT_RESPONDER &
263  * WMI_SERVICE_BROADCAST_TWT will be disabled.
264  *
265  * 2.c IN case of old firmware:
266  * WMI_SERVICE_BROADCAST_TWT will be 1 and
267  * WMI_SERVICE_BROADCAST_TWT_REQUESTER,
268  * WMI_SERVICE_BROADCAST_TWT_RESPONDER will be 0.
269  *
270  * bcast_requestor_cfg/bcast_responder_cfg is intersection of
271  * "enable_twt", "twt_bcast_req_resp_config" ini and above target
272  * service cap combination.
273  */
274 
275 /**
276  * ucfg_mlme_set_twt_bcast_requestor() - Set Global twt bcast requestor support
277  * @psoc: pointer to psoc object
278  * @val:  Value to be set to config
279  *
280  * The caller of ucfg_mlme_set_twt_bcast_requestor() updates with the
281  * intersection of "enable_twt", "twt_bcast_req_resp_config" ini and the
282  * WMI_SERVICE_BROADCAST_TWT_REQUESTOR, WMI_SERVICE_BROADCAST_TWT
283  * combination.
284  *
285  * Return: QDF Status
286  */
287 QDF_STATUS
288 ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc,
289 				  bool val);
290 
291 /**
292  * ucfg_mlme_set_twt_bcast_responder() - Set Global twt bcast responder support
293  * @psoc: pointer to psoc object
294  * @val:  Value to be set to config
295  *
296  * The caller of ucfg_mlme_set_twt_bcast_requestor() updates with the
297  * intersection of "enable_twt", "twt_bcast_req_resp_config" ini and the
298  * WMI_SERVICE_BROADCAST_TWT_RESPONDER, WMI_SERVICE_BROADCAST_TWT
299  * combination.
300  *
301  * Return: QDF Status
302  */
303 QDF_STATUS
304 ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc *psoc,
305 				  bool val);
306 
307 /**
308  * ucfg_mlme_set_twt_requestor_flag() - Set twt requestor flag
309  * @psoc: pointer to psoc object
310  * @val: Value to be set to config
311  *
312  * Return: QDF Status
313  */
314 QDF_STATUS ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc,
315 					    bool val);
316 
317 /**
318  * ucfg_mlme_set_twt_responder_flag() - Set twt responder flag
319  * @psoc: pointer to psoc object
320  * @val: Value to be set to config
321  *
322  * Return: QDF Status
323  */
324 QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc,
325 					    bool val);
326 /**
327  * ucfg_mlme_set_twt_res_service_cap() - Set twt responder service capability
328  * @psoc: pointer to psoc object
329  * @val: Value to be set to config
330  *
331  * Return: QDF Status
332  */
333 QDF_STATUS
334 ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val);
335 
336 /**
337  * ucfg_mlme_get_twt_res_service_cap() - Get twt responder service capability
338  * @psoc: pointer to psoc object
339  * @val: Value to be set to config
340  *
341  * Return: QDF Status
342  */
343 QDF_STATUS
344 ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val);
345 
346 /**
347  * ucfg_mlme_reset_twt_active_cmd() - Reset twt active cmd if ack fail
348  * This is to handle back to back command. If ack failed for active
349  * command then reset this command to allow new twt command.
350  * @psoc: pointer to psoc object
351  * @peer_mac: peer mac address
352  * @dialog_id: dialog id
353  *
354  * Return: QDF Status
355  */
356 QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc,
357 					  struct qdf_mac_addr *peer_mac,
358 					  uint8_t dialog_id);
359 
360 /**
361  * ucfg_mlme_is_twt_setup_in_progress() - Get TWT setup in progress for
362  * given dialog id
363  * @psoc: Pointer to global PSOC object
364  * @peer_mac: Global peer mac address
365  * @dialog_id: Dialog id
366  *
367  * Return: True if already the TWT setup is in progress
368  */
369 static inline bool
ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)370 ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc *psoc,
371 				   struct qdf_mac_addr *peer_mac,
372 				   uint8_t dialog_id)
373 {
374 	return mlme_is_twt_setup_in_progress(psoc, peer_mac, dialog_id);
375 }
376 
377 /**
378  * ucfg_mlme_is_max_twt_sessions_reached() - Check if the maximum number of
379  * TWT sessions reached or not excluding the given dialog_id
380  * @psoc: Pointer to global PSOC object
381  * @peer_mac: Global peer mac address
382  * @dialog_id: dialog id
383  *
384  * Check if the number of active TWT sessions is equal to the maximum number
385  * of TWT sessions supported. Only count the TWT session slot if it not
386  * TWT_ALL_SESSIONS_DIALOG_ID and dialog id is different from input dialog_id,
387  * because if same dialog_id already exists in the TWT sessions, we should
388  * return false since re-negotiation is supported on existing dialog_id.
389  *
390  * Return: True if slot is available for dialog_id, false otherwise
391  */
392 static inline bool
ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)393 ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc *psoc,
394 				      struct qdf_mac_addr *peer_mac,
395 				      uint8_t dialog_id)
396 {
397 	return mlme_is_max_twt_sessions_reached(psoc, peer_mac, dialog_id);
398 }
399 
400 /**
401  * ucfg_mlme_twt_is_command_in_progress() - Check if given command is in
402  * progress
403  * @psoc: Pointer to global PSOC object
404  * @peer_mac: Global peer mac address
405  * @dialog_id: TWT session dialog id
406  * @cmd: TWT command
407  * @active_cmd: Fill active command in this output parameter
408  *
409  * Return: True if given command is in progress
410  */
411 static inline bool
ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd,enum wlan_twt_commands * active_cmd)412 ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc *psoc,
413 				     struct qdf_mac_addr *peer_mac,
414 				     uint8_t dialog_id,
415 				     enum wlan_twt_commands cmd,
416 				     enum wlan_twt_commands *active_cmd)
417 {
418 	return mlme_twt_is_command_in_progress(psoc, peer_mac, dialog_id,
419 					       cmd, active_cmd);
420 }
421 
422 static inline QDF_STATUS
ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd)423 ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc *psoc,
424 				      struct qdf_mac_addr *peer_mac,
425 				      uint8_t dialog_id,
426 				      enum wlan_twt_commands cmd)
427 {
428 	return mlme_set_twt_command_in_progress(psoc, peer_mac, dialog_id, cmd);
429 }
430 
431 /**
432  * ucfg_mlme_set_twt_setup_done() - Set TWT setup done flag
433  * @psoc: Pointer to global PSOC object
434  * @peer_mac: Global peer mac address
435  * @dialog_id: TWT session dialog id
436  * @is_set: true if setup done flag needs to be set
437  *
438  * Return: None
439  */
440 static inline void
ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,bool is_set)441 ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc *psoc,
442 			     struct qdf_mac_addr *peer_mac,
443 			     uint8_t dialog_id, bool is_set)
444 {
445 	mlme_set_twt_setup_done(psoc, peer_mac, dialog_id, is_set);
446 }
447 
448 /**
449  * ucfg_mlme_is_twt_setup_done() - Get if the TWT setup for given dialog id
450  * is complete.
451  * @psoc: Pointer to global psoc object
452  * @peer_mac:  Pointer to peer mac address
453  * @dialog_id: TWT session dialog id
454  *
455  * Return: True if TWT setup is successful for the dialog id
456  */
457 static inline bool
ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)458 ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc,
459 			    struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
460 {
461 	return mlme_is_twt_setup_done(psoc, peer_mac, dialog_id);
462 }
463 
464 /**
465  * ucfg_mlme_is_flexible_twt_enabled() - Get if flexible TWT is enabled
466  * @psoc: Pointer to global psoc object
467  *
468  * Return: True if flexible TWT is supported
469  */
470 static inline
ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc * psoc)471 bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc)
472 {
473 	return mlme_is_flexible_twt_enabled(psoc);
474 }
475 
476 /**
477  * ucfg_mlme_get_twt_peer_capabilities() - Get peer capabilities
478  * @psoc: Pointer to global psoc object
479  * @peer_mac: Pointer to peer mac address
480  *
481  * Return: Peer capabilities bitmap
482  */
483 static inline
ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)484 uint8_t ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc *psoc,
485 					    struct qdf_mac_addr *peer_mac)
486 {
487 	return mlme_get_twt_peer_capabilities(psoc, peer_mac);
488 }
489 
490 /**
491  * ucfg_mlme_get_twt_peer_bcast_capabilities() - Get peer broadcast capabilities
492  * @psoc: Pointer to global psoc object
493  * @peer_mac: Pointer to peer mac address
494  *
495  * Return: Return True if peer responder capabilities support else False
496  */
497 bool ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc *psoc,
498 					       struct qdf_mac_addr *peer_mac);
499 
500 /**
501  * ucfg_mlme_get_twt_peer_responder_capabilities() - Get peer responder
502  * capabilities
503  * @psoc: Pointer to global psoc object
504  * @peer_mac: Pointer to peer mac address
505  *
506  * Return: Return True if peer responder capabilities support else False
507  */
508 bool ucfg_mlme_get_twt_peer_responder_capabilities(
509 						struct wlan_objmgr_psoc *psoc,
510 						struct qdf_mac_addr *peer_mac);
511 
512 /**
513  * ucfg_mlme_init_twt_context() - Initialize TWT context
514  * @psoc: Pointer to global psoc object
515  * @peer_mac: Pointer to peer mac address
516  * @dialog_id: Dialog id
517  *
518  * Return: QDF_STATUS
519  */
520 static inline
ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)521 QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc,
522 				      struct qdf_mac_addr *peer_mac,
523 				      uint8_t dialog_id)
524 {
525 	return mlme_init_twt_context(psoc, peer_mac, dialog_id);
526 }
527 
528 /**
529  * ucfg_mlme_is_24ghz_twt_enabled() - Get if host triggered TWT is enabled on
530  * 2.4Ghz band.
531  * @psoc: Pointer to global psoc object
532  *
533  * Return: True if host TWT is enabled on 2.4 Ghz band.
534  */
535 static inline bool
ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc * psoc)536 ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc *psoc)
537 {
538 	return mlme_is_24ghz_twt_enabled(psoc);
539 }
540 
541 /**
542  * ucfg_mlme_set_twt_nudge_tgt_cap() - Set TWT nudge target capability.
543  * @psoc: Pointer to global psoc object
544  * @val: Value to set
545  *
546  * Return: QDF_STATUS
547  */
548 QDF_STATUS
549 ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val);
550 
551 /**
552  * ucfg_mlme_get_twt_nudge_tgt_cap() - Get TWT Nudge target capability
553  * @psoc: Pointer to global psoc object
554  * @val: Value to set
555  *
556  * Return: QDF_STATUS
557  */
558 QDF_STATUS
559 ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val);
560 
561 /**
562  * ucfg_mlme_set_twt_all_twt_tgt_cap() - Set TWT all dialog support target
563  * @psoc: Pointer to global psoc object
564  * @val: Value to set
565  *
566  * Return: QDF_STATUS
567  */
568 QDF_STATUS
569 ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val);
570 
571 /**
572  * ucfg_mlme_get_twt_all_twt_tgt_cap()  - Get TWT all dialog support target
573  * capability
574  * @psoc: Pointer to global psoc object
575  * @val: Value to set
576  *
577  * Return: QDF_STATUS
578  */
579 QDF_STATUS
580 ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val);
581 
582 /**
583  * ucfg_mlme_set_twt_statistics_tgt_cap()  - Set TWT statistics target
584  * capability
585  * @psoc: Pointer to global psoc object
586  * @val: Value to set
587  *
588  * Return: QDF_STATUS
589  */
590 QDF_STATUS
591 ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val);
592 
593 /**
594  * ucfg_mlme_get_twt_statistics_tgt_cap() - Get TWT statistics target capability
595  * @psoc: Pointer to global psoc object
596  * @val: Value to set
597  *
598  * Return: QDF_STATUS
599  */
600 QDF_STATUS
601 ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val);
602 
603 /**
604  * ucfg_mlme_set_twt_session_state()  - Set TWT session state
605  * @psoc: Pointer to global psoc object
606  * @peer_mac:  Pointer to peer mac address
607  * @dialog_id: TWT session dialog id
608  * @state: TWT state
609  *
610  * Return: None
611  */
612 static inline
ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_session_state state)613 void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
614 				     struct qdf_mac_addr *peer_mac,
615 				     uint8_t dialog_id,
616 				     enum wlan_twt_session_state state)
617 {
618 	mlme_set_twt_session_state(psoc, peer_mac, dialog_id, state);
619 }
620 
621 /**
622  * ucfg_mlme_get_twt_session_state()  - Get TWT session state
623  * @psoc: Pointer to global psoc object
624  * @peer_mac:  Pointer to peer mac address
625  * @dialog_id: TWT session dialog id
626  *
627  * Return: enum wlan_twt_session_state
628  */
629 static inline enum wlan_twt_session_state
ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)630 ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
631 				struct qdf_mac_addr *peer_mac,
632 				uint8_t dialog_id)
633 {
634 	return mlme_get_twt_session_state(psoc, peer_mac, dialog_id);
635 }
636 #else
637 static inline QDF_STATUS
ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc * psoc,bool * val)638 ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc,
639 			    bool *val)
640 {
641 	*val = false;
642 	return QDF_STATUS_E_NOSUPPORT;
643 }
644 
645 static inline QDF_STATUS
ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc * psoc,bool val)646 ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc,
647 			    bool val)
648 {
649 	return QDF_STATUS_E_NOSUPPORT;
650 }
651 
652 static inline QDF_STATUS
ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc * psoc,bool * val)653 ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc,
654 			    bool *val)
655 {
656 	*val = false;
657 	return QDF_STATUS_E_NOSUPPORT;
658 }
659 
660 static inline QDF_STATUS
ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc * psoc,bool val)661 ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc,
662 			    bool val)
663 {
664 	return QDF_STATUS_E_NOSUPPORT;
665 }
666 
667 static inline QDF_STATUS
ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc * psoc,uint32_t * val)668 ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc,
669 				     uint32_t *val)
670 {
671 	*val = 0;
672 	return QDF_STATUS_E_NOSUPPORT;
673 }
674 
675 static inline QDF_STATUS
ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc * psoc,uint32_t val)676 ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc,
677 				     uint32_t val)
678 {
679 	return QDF_STATUS_E_NOSUPPORT;
680 }
681 
682 static inline bool
ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc * psoc)683 ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc)
684 {
685 	return QDF_STATUS_E_NOSUPPORT;
686 }
687 
688 static inline QDF_STATUS
ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc * psoc,bool val)689 ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc *psoc,
690 			 bool val)
691 {
692 	return QDF_STATUS_E_NOSUPPORT;
693 }
694 
695 static inline bool
ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)696 ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc,
697 			    struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
698 {
699 	return 0;
700 }
701 
702 static inline void
ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,bool is_set)703 ucfg_mlme_set_twt_setup_done(struct wlan_objmgr_psoc *psoc,
704 			     struct qdf_mac_addr *peer_mac,
705 			     uint8_t dialog_id, bool is_set)
706 {}
707 
708 static inline bool
ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)709 ucfg_mlme_is_twt_setup_in_progress(struct wlan_objmgr_psoc *psoc,
710 				   struct qdf_mac_addr *peer_mac,
711 				   uint8_t dialog_id)
712 {
713 	return false;
714 }
715 
716 static inline bool
ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)717 ucfg_mlme_is_max_twt_sessions_reached(struct wlan_objmgr_psoc *psoc,
718 				      struct qdf_mac_addr *peer_mac,
719 				      uint8_t dialog_id)
720 {
721 	return false;
722 }
723 
724 static inline QDF_STATUS
ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd)725 ucfg_mlme_set_twt_command_in_progress(struct wlan_objmgr_psoc *psoc,
726 				      struct qdf_mac_addr *peer_mac,
727 				      uint8_t dialog_id,
728 				      enum wlan_twt_commands cmd)
729 {
730 	return QDF_STATUS_E_FAILURE;
731 }
732 
733 static inline bool
ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_commands cmd,enum wlan_twt_commands * active_cmd)734 ucfg_mlme_twt_is_command_in_progress(struct wlan_objmgr_psoc *psoc,
735 				     struct qdf_mac_addr *peer_mac,
736 				     uint8_t dialog_id,
737 				     enum wlan_twt_commands cmd,
738 				     enum wlan_twt_commands *active_cmd)
739 {
740 	return false;
741 }
742 
743 static inline QDF_STATUS
ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc * psoc,bool * val)744 ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc,
745 				  bool *val)
746 {
747 	*val = false;
748 	return QDF_STATUS_E_NOSUPPORT;
749 }
750 
751 static inline QDF_STATUS
ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc * psoc,bool val)752 ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc,
753 				  bool val)
754 {
755 	return QDF_STATUS_E_NOSUPPORT;
756 }
757 
758 static inline QDF_STATUS
ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc * psoc,bool * val)759 ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc *psoc,
760 				  bool *val)
761 {
762 	*val = false;
763 	return QDF_STATUS_E_NOSUPPORT;
764 }
765 
766 static inline QDF_STATUS
ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc * psoc,bool val)767 ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc *psoc,
768 				  bool val)
769 {
770 	return QDF_STATUS_E_NOSUPPORT;
771 }
772 
773 static inline QDF_STATUS
ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc * psoc,bool val)774 ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc,
775 				 bool val)
776 {
777 	return QDF_STATUS_E_NOSUPPORT;
778 }
779 
780 static inline QDF_STATUS
ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc * psoc,bool val)781 ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc,
782 				 bool val)
783 {
784 	return QDF_STATUS_E_NOSUPPORT;
785 }
786 
787 static inline
ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc * psoc)788 bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc)
789 {
790 	return false;
791 }
792 
793 static inline
ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)794 uint8_t ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc *psoc,
795 					    struct qdf_mac_addr *peer_mac)
796 {
797 	return 0;
798 }
799 
800 static inline
ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)801 bool ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc *psoc,
802 					       struct qdf_mac_addr *peer_mac)
803 {
804 	return false;
805 }
806 
807 static inline
ucfg_mlme_get_twt_peer_responder_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)808 bool ucfg_mlme_get_twt_peer_responder_capabilities(
809 						struct wlan_objmgr_psoc *psoc,
810 						struct qdf_mac_addr *peer_mac)
811 {
812 	return false;
813 }
814 
815 static inline
ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)816 QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc,
817 				      struct qdf_mac_addr *peer_mac,
818 				      uint8_t dialog_id)
819 {
820 	return QDF_STATUS_E_NOSUPPORT;
821 }
822 
823 static inline bool
ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc * psoc)824 ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc *psoc)
825 {
826 	return false;
827 }
828 
829 static inline QDF_STATUS
ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc * psoc,bool * val)830 ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val)
831 {
832 	*val = false;
833 	return QDF_STATUS_E_NOSUPPORT;
834 }
835 
836 static inline QDF_STATUS
ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc * psoc,bool * val)837 ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val)
838 {
839 	*val = false;
840 	return QDF_STATUS_E_NOSUPPORT;
841 }
842 
843 static inline QDF_STATUS
ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc * psoc,bool * val)844 ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val)
845 {
846 	*val = false;
847 	return QDF_STATUS_E_NOSUPPORT;
848 }
849 
850 static inline QDF_STATUS
ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc * psoc,bool val)851 ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val)
852 {
853 	return QDF_STATUS_E_NOSUPPORT;
854 }
855 
856 static inline QDF_STATUS
ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc * psoc,bool val)857 ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val)
858 {
859 	return QDF_STATUS_E_NOSUPPORT;
860 }
861 
862 static inline QDF_STATUS
ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc * psoc,bool val)863 ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val)
864 {
865 	return QDF_STATUS_E_NOSUPPORT;
866 }
867 
868 static inline
ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id,enum wlan_twt_session_state state)869 void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
870 				     struct qdf_mac_addr *peer_mac,
871 				     uint8_t dialog_id,
872 				     enum wlan_twt_session_state state)
873 {}
874 
875 static inline enum wlan_twt_session_state
ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)876 ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
877 				struct qdf_mac_addr *peer_mac,
878 				uint8_t dialog_id)
879 {
880 	return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
881 }
882 
883 static inline QDF_STATUS
ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool val)884 ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val)
885 {
886 	return QDF_STATUS_E_NOSUPPORT;
887 }
888 
889 static inline QDF_STATUS
ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc * psoc,bool * val)890 ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val)
891 {
892 	*val = false;
893 	return QDF_STATUS_E_NOSUPPORT;
894 }
895 
896 static inline QDF_STATUS
ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t dialog_id)897 ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc,
898 			       struct qdf_mac_addr *peer_mac,
899 			       uint8_t dialog_id)
900 {
901 	return QDF_STATUS_E_NOSUPPORT;
902 }
903 
904 #endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */
905 #endif /* _WLAN_MLME_TWT_UCFG_API_H_ */
906