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