/* * Copyright (c) 2021, The Linux Foundation. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /** * DOC: declare UCFG APIs for TWT exposed by the mlme component */ #ifndef _WLAN_MLME_TWT_UCFG_API_H_ #define _WLAN_MLME_TWT_UCFG_API_H_ #include #include #include #include #include #include #include #include #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) && \ defined(WLAN_TWT_CONV_SUPPORTED) static inline QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return QDF_STATUS_E_NOSUPPORT; } static inline bool ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline bool ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return 0; } 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) {} static inline void 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) {} 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) { return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED; } static inline QDF_STATUS ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } 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) { return QDF_STATUS_E_NOSUPPORT; } 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) { return QDF_STATUS_E_FAILURE; } #elif defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) /** * ucfg_mlme_get_twt_requestor() - Get twt requestor * @psoc: pointer to psoc object * @val: Pointer to the value which will be filled for the caller * * Return: QDF Status */ QDF_STATUS ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_set_twt_requestor() - Set twt requestor * @psoc: pointer to psoc object * @val: value that needs to set to this config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_get_twt_responder() - Get twt responder * @psoc: pointer to psoc object * @val: Pointer to the value which will be filled for the caller * * Return: QDF Status */ QDF_STATUS ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_set_twt_responder() - Set twt responder * @psoc: pointer to psoc object * @val: value that needs to set to this config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_get_twt_congestion_timeout() - Get twt congestion timeout * @psoc: pointer to psoc object * @val: Pointer to the value which will be filled for the caller * * Return: QDF Status */ QDF_STATUS ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, uint32_t *val); /** * ucfg_mlme_set_twt_congestion_timeout() - Set twt congestion timeout * @psoc: pointer to psoc object * @val: value that needs to set to this config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, uint32_t val); /** * ucfg_mlme_is_twt_enabled() - Get global twt config support * @psoc: pointer to psoc object * * Return: True if TWT is enabled else false. */ static inline bool ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc) { return mlme_is_twt_enabled(psoc); } /** * ucfg_mlme_set_enable_twt() - Set global twt config support * @psoc: pointer to psoc object * @val: value that needs to set to this config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc *psoc, bool val); /* * ucfg_mlme_get_twt_bcast_requestor() - Get twt requestor enabled * @psoc: pointer to psoc object * @val: Pointer to the value which will be filled for the caller * * Return: QDF Status */ QDF_STATUS ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_get_twt_bcast_responder() - Get twt responder enabled * @psoc: pointer to psoc object * @val: Pointer to the value which will be filled for the caller * * Return: QDF Status */ QDF_STATUS ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, bool *val); /* * 1. If both of the new service caps * WMI_SERVICE_BROADCAST_TWT_REQUESTER And * WMI_SERVICE_BROADCAST_TWT_RESPONDER are enabled then the old * WMI_SERVICE_BROADCAST_TWT will be set to 1. * * 2.a. If any of the new service caps in case of new firmware: * WMI_SERVICE_BROADCAST_TWT_REQUESTER And * WMI_SERVICE_BROADCAST_TWT_RESPONDER is DISABLED then the old * WMI_SERVICE_BROADCAST_TWT will be set to 0. * * 2.b In case of new firmware wants to disable broadcast TWT: * all 3 WMI_SERVICE_BROADCAST_TWT_REQUESTER, * WMI_SERVICE_BROADCAST_TWT_RESPONDER & * WMI_SERVICE_BROADCAST_TWT will be disabled. * * 2.c IN case of old firmware: * WMI_SERVICE_BROADCAST_TWT will be 1 and * WMI_SERVICE_BROADCAST_TWT_REQUESTER, * WMI_SERVICE_BROADCAST_TWT_RESPONDER will be 0. * * bcast_requestor_cfg/bcast_responder_cfg is intersection of * "enable_twt", "twt_bcast_req_resp_config" ini and above target * service cap combination. */ /** * ucfg_mlme_set_twt_bcast_requestor() - Set Global twt bcast requestor support * @psoc: pointer to psoc object * @val: Value to be set to config * * The caller of ucfg_mlme_set_twt_bcast_requestor() updates with the * intersection of "enable_twt", "twt_bcast_req_resp_config" ini and the * WMI_SERVICE_BROADCAST_TWT_REQUESTOR, WMI_SERVICE_BROADCAST_TWT * combination. * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_set_twt_bcast_responder() - Set Global twt bcast responder support * @psoc: pointer to psoc object * @val: Value to be set to config * * The caller of ucfg_mlme_set_twt_bcast_requestor() updates with the * intersection of "enable_twt", "twt_bcast_req_resp_config" ini and the * WMI_SERVICE_BROADCAST_TWT_RESPONDER, WMI_SERVICE_BROADCAST_TWT * combination. * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_set_twt_requestor_flag() - Set twt requestor flag * @psoc: pointer to psoc object * @val: Value to be set to config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_set_twt_responder_flag() - Set twt responder flag * @psoc: pointer to psoc object * @val: Value to be set to config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_set_twt_res_service_cap() - Set twt responder service capability * @psoc: pointer to psoc object * @val: Value to be set to config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_get_twt_res_service_cap() - Get twt responder service capability * @psoc: pointer to psoc object * @val: Value to be set to config * * Return: QDF Status */ QDF_STATUS ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_reset_twt_active_cmd() - Reset twt active cmd if ack fail * This is to handle back to back command. If ack failed for active * command then reset this command to allow new twt command. * @psoc: pointer to psoc object * @peer_mac: peer mac address * @dialog_id: dialog id * * Return: QDF Status */ QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id); /** * ucfg_mlme_is_twt_setup_in_progress() - Get TWT setup in progress for * given dialog id * @psoc: Pointer to global PSOC object * @peer_mac: Global peer mac address * @dialog_id: Dialog id * * Return: True if already the TWT setup is in progress */ 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) { return mlme_is_twt_setup_in_progress(psoc, peer_mac, dialog_id); } /** * ucfg_mlme_is_max_twt_sessions_reached() - Check if the maximum number of * TWT sessions reached or not excluding the given dialog_id * @psoc: Pointer to global PSOC object * @peer_mac: Global peer mac address * @dialog_id: dialog id * * Check if the number of active TWT sessions is equal to the maximum number * of TWT sessions supported. Only count the TWT session slot if it not * TWT_ALL_SESSIONS_DIALOG_ID and dialog id is different from input dialog_id, * because if same dialog_id already exists in the TWT sessions, we should * return false since re-negotiation is supported on existing dialog_id. * * Return: True if slot is available for dialog_id, false otherwise */ 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) { return mlme_is_max_twt_sessions_reached(psoc, peer_mac, dialog_id); } /** * ucfg_mlme_twt_is_command_in_progress() - Check if given command is in * progress * @psoc: Pointer to global PSOC object * @peer_mac: Global peer mac address * @dialog_id: TWT session dialog id * @cmd: TWT command * @active_cmd: Fill active command in this output parameter * * Return: True if given command is in progress */ 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) { return mlme_twt_is_command_in_progress(psoc, peer_mac, dialog_id, cmd, active_cmd); } 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) { return mlme_set_twt_command_in_progress(psoc, peer_mac, dialog_id, cmd); } /** * ucfg_mlme_set_twt_setup_done() - Set TWT setup done flag * @psoc: Pointer to global PSOC object * @peer_mac: Global peer mac address * @dialog_id: TWT session dialog id * @is_set: true if setup done flag needs to be set * * Return: None */ 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) { mlme_set_twt_setup_done(psoc, peer_mac, dialog_id, is_set); } /** * ucfg_mlme_is_twt_setup_done() - Get if the TWT setup for given dialog id * is complete. * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * @dialog_id: TWT session dialog id * * Return: True if TWT setup is successful for the dialog id */ static inline bool ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return mlme_is_twt_setup_done(psoc, peer_mac, dialog_id); } /** * ucfg_mlme_is_flexible_twt_enabled() - Get if flexible TWT is enabled * @psoc: Pointer to global psoc object * * Return: True if flexible TWT is supported */ static inline bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc) { return mlme_is_flexible_twt_enabled(psoc); } /** * ucfg_mlme_get_twt_peer_capabilities() - Get peer capabilities * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * * Return: Peer capabilities bitmap */ static inline uint8_t ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac) { return mlme_get_twt_peer_capabilities(psoc, peer_mac); } /** * ucfg_mlme_get_twt_peer_bcast_capabilities() - Get peer broadcast capabilities * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * * Return: Return True if peer responder capabilities support else False */ bool ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac); /** * ucfg_mlme_get_twt_peer_responder_capabilities() - Get peer responder * capabilities * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * * Return: Return True if peer responder capabilities support else False */ bool ucfg_mlme_get_twt_peer_responder_capabilities( struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac); /** * ucfg_mlme_init_twt_context() - Initialize TWT context * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * @dialog_id: Dialog id * * Return: QDF_STATUS */ static inline QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return mlme_init_twt_context(psoc, peer_mac, dialog_id); } /** * ucfg_mlme_is_24ghz_twt_enabled() - Get if host triggered TWT is enabled on * 2.4Ghz band. * @psoc: Pointer to global psoc object * * Return: True if host TWT is enabled on 2.4 Ghz band. */ static inline bool ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc *psoc) { return mlme_is_24ghz_twt_enabled(psoc); } /** * ucfg_mlme_set_twt_nudge_tgt_cap() - Set TWT nudge target capability. * @psoc: Pointer to global psoc object * @val: Value to set * * Return: QDF_STATUS */ QDF_STATUS ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_get_twt_nudge_tgt_cap() - Get TWT Nudge target capability * @psoc: Pointer to global psoc object * @val: Value to set * * Return: QDF_STATUS */ QDF_STATUS ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_set_twt_all_twt_tgt_cap() - Set TWT all dialog support target * @psoc: Pointer to global psoc object * @val: Value to set * * Return: QDF_STATUS */ QDF_STATUS ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_get_twt_all_twt_tgt_cap() - Get TWT all dialog support target * capability * @psoc: Pointer to global psoc object * @val: Value to set * * Return: QDF_STATUS */ QDF_STATUS ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_set_twt_statistics_tgt_cap() - Set TWT statistics target * capability * @psoc: Pointer to global psoc object * @val: Value to set * * Return: QDF_STATUS */ QDF_STATUS ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_get_twt_statistics_tgt_cap() - Get TWT statistics target capability * @psoc: Pointer to global psoc object * @val: Value to set * * Return: QDF_STATUS */ QDF_STATUS ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val); /** * ucfg_mlme_set_twt_session_state() - Set TWT session state * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * @dialog_id: TWT session dialog id * @state: TWT state * * Return: None */ static inline void 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) { mlme_set_twt_session_state(psoc, peer_mac, dialog_id, state); } /** * ucfg_mlme_get_twt_session_state() - Get TWT session state * @psoc: Pointer to global psoc object * @peer_mac: Pointer to peer mac address * @dialog_id: TWT session dialog id * * Return: enum wlan_twt_session_state */ 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) { return mlme_get_twt_session_state(psoc, peer_mac, dialog_id); } #else static inline QDF_STATUS ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_requestor(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_responder(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_responder(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, uint32_t *val) { *val = 0; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc, uint32_t val) { return QDF_STATUS_E_NOSUPPORT; } static inline bool ucfg_mlme_is_twt_enabled(struct wlan_objmgr_psoc *psoc) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_enable_twt(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline bool ucfg_mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return 0; } 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) {} 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) { return false; } 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) { return false; } 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) { return QDF_STATUS_E_FAILURE; } 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) { return false; } static inline QDF_STATUS ucfg_mlme_get_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_bcast_requestor(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_bcast_responder(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc) { return false; } static inline uint8_t ucfg_mlme_get_twt_peer_capabilities(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac) { return 0; } static inline bool ucfg_mlme_get_twt_peer_bcast_capabilities(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac) { return false; } static inline bool ucfg_mlme_get_twt_peer_responder_capabilities( struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac) { return false; } static inline QDF_STATUS ucfg_mlme_init_twt_context(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return QDF_STATUS_E_NOSUPPORT; } static inline bool ucfg_mlme_is_24ghz_twt_enabled(struct wlan_objmgr_psoc *psoc) { return false; } static inline QDF_STATUS ucfg_mlme_get_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_nudge_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_all_twt_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline void 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) {} 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) { return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED; } static inline QDF_STATUS ucfg_mlme_set_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool val) { return QDF_STATUS_E_NOSUPPORT; } static inline QDF_STATUS ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val) { *val = false; return QDF_STATUS_E_NOSUPPORT; } 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) { return QDF_STATUS_E_NOSUPPORT; } #endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */ #endif /* _WLAN_MLME_TWT_UCFG_API_H_ */