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 * DOC: wlan_twt_api.h 20 */ 21 #ifndef _WLAN_TWT_API_H_ 22 #define _WLAN_TWT_API_H_ 23 24 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED) 25 #include <wlan_objmgr_psoc_obj.h> 26 #include <wlan_objmgr_global_obj.h> 27 #include <wlan_lmac_if_def.h> 28 #include <wlan_twt_public_structs.h> 29 30 #define twt_alert(params...) \ 31 QDF_TRACE_FATAL(QDF_MODULE_ID_TWT, params) 32 #define twt_err(params...) \ 33 QDF_TRACE_ERROR(QDF_MODULE_ID_TWT, params) 34 #define twt_warn(params...) \ 35 QDF_TRACE_WARN(QDF_MODULE_ID_TWT, params) 36 #define twt_notice(params...) \ 37 QDF_TRACE_INFO(QDF_MODULE_ID_TWT, params) 38 #define twt_debug(params...) \ 39 QDF_TRACE_DEBUG(QDF_MODULE_ID_TWT, params) 40 41 #define twt_nofl_alert(params...) \ 42 QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_TWT, params) 43 #define twt_nofl_err(params...) \ 44 QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_TWT, params) 45 #define twt_nofl_warn(params...) \ 46 QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_TWT, params) 47 #define twt_nofl_notice(params...) \ 48 QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_TWT, params) 49 #define twt_nofl_debug(params...) \ 50 QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_TWT, params) 51 52 /** 53 * twt_psoc_enable() - twt psoc enable 54 * @psoc: psoc handle 55 * 56 * return: QDF_STATUS 57 */ 58 QDF_STATUS twt_psoc_enable(struct wlan_objmgr_psoc *psoc); 59 60 /** 61 * twt_psoc_disable() - twt psoc disable 62 * @psoc: psoc handle 63 * 64 * return: QDF_STATUS 65 */ 66 QDF_STATUS twt_psoc_disable(struct wlan_objmgr_psoc *psoc); 67 68 /** 69 * wlan_twt_init() - twt init 70 * 71 * return: QDF_STATUS 72 */ 73 QDF_STATUS wlan_twt_init(void); 74 75 /** 76 * wlan_twt_deinit() - twt de-init 77 * 78 * return: QDF_STATUS 79 */ 80 QDF_STATUS wlan_twt_deinit(void); 81 82 /** 83 * wlan_twt_get_tx_ops() - get tx ops 84 * @psoc: psoc handle 85 * 86 * return: QDF_STATUS 87 */ 88 struct wlan_lmac_if_twt_tx_ops * 89 wlan_twt_get_tx_ops(struct wlan_objmgr_psoc *psoc); 90 91 /** 92 * wlan_twt_get_rx_ops() - get rx ops 93 * @psoc: psoc handle 94 * 95 * return: QDF_STATUS 96 */ 97 struct wlan_lmac_if_twt_rx_ops * 98 wlan_twt_get_rx_ops(struct wlan_objmgr_psoc *psoc); 99 100 /** 101 * wlan_twt_psoc_get_comp_private_obj() - get twt priv obj 102 * @psoc: psoc handle 103 * 104 * return: QDF_STATUS 105 */ 106 struct twt_psoc_priv_obj* 107 wlan_twt_psoc_get_comp_private_obj(struct wlan_objmgr_psoc *psoc); 108 109 /** 110 * wlan_set_peer_twt_capabilities() - set peer twt capabilities 111 * @psoc: psoc handle 112 * @peer_mac: peer mac address 113 * @peer_cap: TWT peer capability bitmap. Refer enum 114 * wlan_twt_capabilities for representation. 115 * 116 * return: QDF_STATUS 117 */ 118 QDF_STATUS 119 wlan_set_peer_twt_capabilities(struct wlan_objmgr_psoc *psoc, 120 struct qdf_mac_addr *peer_mac, 121 uint8_t peer_cap); 122 /** 123 * wlan_twt_psoc_set_pmo_enable() - twt psoc set enable 124 * @psoc: psoc handle 125 * @reason: twt enable reason 126 * 127 * return: QDF_STATUS 128 */ 129 QDF_STATUS 130 wlan_twt_psoc_set_pmo_enable(struct wlan_objmgr_psoc *psoc, 131 enum twt_disable_reason reason); 132 /** 133 * wlan_twt_psoc_set_pmo_disable() - twt psoc set disable 134 * @psoc: psoc handle 135 * @reason: twt disable reason 136 * 137 * return: QDF_STATUS 138 */ 139 QDF_STATUS 140 wlan_twt_psoc_set_pmo_disable(struct wlan_objmgr_psoc *psoc, 141 enum twt_disable_reason reason); 142 143 #else 144 static inline twt_psoc_enable(struct wlan_objmgr_psoc * psoc)145 QDF_STATUS twt_psoc_enable(struct wlan_objmgr_psoc *psoc) 146 { 147 return QDF_STATUS_SUCCESS; 148 } 149 150 static inline twt_psoc_disable(struct wlan_objmgr_psoc * psoc)151 QDF_STATUS twt_psoc_disable(struct wlan_objmgr_psoc *psoc) 152 { 153 return QDF_STATUS_SUCCESS; 154 } 155 156 static inline wlan_twt_init(void)157 QDF_STATUS wlan_twt_init(void) 158 { 159 return QDF_STATUS_SUCCESS; 160 } 161 162 static inline wlan_twt_deinit(void)163 QDF_STATUS wlan_twt_deinit(void) 164 { 165 return QDF_STATUS_SUCCESS; 166 } 167 168 static inline wlan_set_peer_twt_capabilities(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac,uint8_t peer_cap)169 QDF_STATUS wlan_set_peer_twt_capabilities(struct wlan_objmgr_psoc *psoc, 170 struct qdf_mac_addr *peer_mac, 171 uint8_t peer_cap) 172 { 173 return QDF_STATUS_SUCCESS; 174 } 175 176 QDF_STATUS 177 wlan_twt_psoc_set_pmo_enable(struct wlan_objmgr_psoc *psoc, 178 enum twt_disable_reason reason); 179 180 QDF_STATUS 181 wlan_twt_psoc_set_pmo_disable(struct wlan_objmgr_psoc *psoc, 182 enum twt_disable_reason reason); 183 #endif 184 #endif /* _WLAN_TWT_API_H_ */ 185