1 2 /* 3 * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 /** 20 * DOC: Implement API's specific to TWT component. 21 */ 22 23 #ifndef _WMI_UNIFIED_TWT_API_H_ 24 #define _WMI_UNIFIED_TWT_API_H_ 25 26 #include "wmi_unified_twt_param.h" 27 28 29 /** 30 * wmi_unified_twt_enable_cmd() - Send WMI command to Enable TWT 31 * @wmi_handle: wmi handle 32 * @params: Parameters to be configured 33 * 34 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 35 */ 36 QDF_STATUS 37 wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle, 38 struct wmi_twt_enable_param *params); 39 40 /** 41 * wmi_unified_twt_disable_cmd() - Send WMI command to disable TWT 42 * @wmi_handle: wmi handle 43 * @params: Parameters to be configured 44 * 45 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 46 */ 47 QDF_STATUS 48 wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle, 49 struct wmi_twt_disable_param *params); 50 51 /** 52 * wmi_unified_twt_add_dialog_cmd() - Send WMI command to add TWT dialog 53 * @wmi_handle: wmi handle 54 * @params: Parameters to be configured 55 * 56 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 57 */ 58 QDF_STATUS 59 wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle, 60 struct wmi_twt_add_dialog_param *params); 61 62 /** 63 * wmi_unified_twt_del_dialog_cmd() - Send WMI command to delete TWT dialog 64 * @wmi_handle: wmi handle 65 * @params: Parameters to be configured 66 * 67 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 68 */ 69 QDF_STATUS 70 wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle, 71 struct wmi_twt_del_dialog_param *params); 72 73 /** 74 * wmi_unified_twt_pause_dialog_cmd() - Send WMI command to pause TWT dialog 75 * @wmi_handle: wmi handle 76 * @params: Parameters to be configured 77 * 78 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 79 */ 80 QDF_STATUS 81 wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle, 82 struct wmi_twt_pause_dialog_cmd_param *params); 83 84 /** 85 * wmi_unified_twt_resume_dialog_cmd() - Send WMI command to resume TWT dialog 86 * @wmi_handle: wmi handle 87 * @params: Parameters to be configured 88 * 89 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 90 */ 91 QDF_STATUS wmi_unified_twt_resume_dialog_cmd( 92 wmi_unified_t wmi_handle, 93 struct wmi_twt_resume_dialog_cmd_param *params); 94 95 #ifdef WLAN_SUPPORT_BCAST_TWT 96 /** 97 * wmi_unified_twt_btwt_invite_sta_cmd() - Send WMI command for bTWT sta 98 * invitation 99 * @wmi_handle: wmi handle 100 * @params: Parameters to be configured 101 * 102 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 103 */ 104 QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd( 105 wmi_unified_t wmi_handle, 106 struct wmi_twt_btwt_invite_sta_cmd_param *params); 107 108 /** 109 * wmi_unified_twt_btwt_remove_sta_cmd() - Send WMI command for bTWT sta kickoff 110 * @wmi_handle: wmi handle 111 * @params: Parameters to be configured 112 * 113 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 114 */ 115 QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd( 116 wmi_unified_t wmi_handle, 117 struct wmi_twt_btwt_remove_sta_cmd_param *params); 118 #endif 119 120 /** 121 * wmi_extract_twt_enable_comp_event() - Extract WMI event params for TWT enable 122 * completion event 123 * @wmi_handle: wmi handle 124 * @evt_buf: Pointer event buffer 125 * @params: Parameters to extract 126 * 127 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 128 */ 129 QDF_STATUS wmi_extract_twt_enable_comp_event( 130 wmi_unified_t wmi_handle, 131 uint8_t *evt_buf, 132 struct wmi_twt_enable_complete_event_param *params); 133 134 /** 135 * wmi_extract_twt_disable_comp_event() - Extract WMI event params for TWT 136 * disable completion event 137 * @wmi_handle: wmi handle 138 * @evt_buf: Pointer event buffer 139 * @params: Parameters to extract 140 * 141 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 142 */ 143 QDF_STATUS wmi_extract_twt_disable_comp_event( 144 wmi_unified_t wmi_handle, 145 uint8_t *evt_buf, 146 struct wmi_twt_disable_complete_event *params); 147 148 /** 149 * wmi_extract_twt_add_dialog_comp_event() - Extract WMI event params for TWT 150 * add dialog completion event 151 * @wmi_hdl: wmi handle 152 * @evt_buf: Pointer event buffer 153 * @params: Parameters to extract 154 * 155 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 156 */ 157 QDF_STATUS wmi_extract_twt_add_dialog_comp_event( 158 wmi_unified_t wmi_handle, 159 uint8_t *evt_buf, 160 struct wmi_twt_add_dialog_complete_event_param *params); 161 162 /** 163 * wmi_extract_twt_add_dialog_comp_additional_params() - Extracts additional 164 * twt parameters, as part of add dialog completion event 165 * @wmi_hdl: wmi handle 166 * @evt_buf: Pointer event buffer 167 * @evt_buf_len: length of the add dialog event buffer 168 * @idx: index of num_twt_params to extract 169 * @additional_params: additional parameters to extract 170 * 171 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 172 */ 173 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params( 174 wmi_unified_t wmi_handle, uint8_t *evt_buf, 175 uint32_t evt_buf_len, uint32_t idx, 176 struct wmi_twt_add_dialog_additional_params *additional_params); 177 178 /** 179 * wmi_extract_twt_del_dialog_comp_event() - Extract WMI event params for TWT 180 * delete dialog completion event 181 * @wmi_hdl: wmi handle 182 * @evt_buf: Pointer event buffer 183 * @params: Parameters to extract 184 * 185 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 186 */ 187 QDF_STATUS wmi_extract_twt_del_dialog_comp_event( 188 wmi_unified_t wmi_handle, 189 uint8_t *evt_buf, 190 struct wmi_twt_del_dialog_complete_event_param *params); 191 192 /** 193 * wmi_extract_twt_pause_dialog_comp_event() - Extract WMI event params for TWT 194 * pause dialog completion event 195 * @wmi_handle: wmi handle 196 * @evt_buf: Pointer event buffer 197 * @params: Parameters to extract 198 * 199 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 200 */ 201 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event( 202 wmi_unified_t wmi_handle, 203 uint8_t *evt_buf, 204 struct wmi_twt_pause_dialog_complete_event_param *params); 205 206 /** 207 * wmi_extract_twt_resume_dialog_comp_event() - Extract WMI event params for TWT 208 * resume dialog completion event 209 * @wmi_handle: wmi handle 210 * @evt_buf: Pointer event buffer 211 * @params: Parameters to extract 212 * 213 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 214 */ 215 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event( 216 wmi_unified_t wmi_handle, 217 uint8_t *evt_buf, 218 struct wmi_twt_resume_dialog_complete_event_param *params); 219 220 #ifdef WLAN_SUPPORT_BCAST_TWT 221 /** 222 * wmi_extract_twt_btwt_invite_sta_comp_event() - Extract WMI event params for 223 * BTWT sta invitation completion event 224 * @wmi_handle: wmi handle 225 * @evt_buf: Pointer event buffer 226 * @params: Parameters to extract 227 * 228 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 229 */ 230 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event( 231 wmi_unified_t wmi_handle, 232 uint8_t *evt_buf, 233 struct wmi_twt_btwt_invite_sta_complete_event_param *params); 234 235 /** 236 * wmi_extract_twt_btwt_remove_sta_comp_event() - Extract WMI event params for 237 * BTWT sta kickoff completion event 238 * @wmi_handle: wmi handle 239 * @evt_buf: Pointer event buffer 240 * @params: Parameters to extract 241 * 242 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 243 */ 244 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event( 245 wmi_unified_t wmi_handle, 246 uint8_t *evt_buf, 247 struct wmi_twt_btwt_remove_sta_complete_event_param *params); 248 #endif 249 250 /** 251 * wmi_extract_twt_session_stats_event() - Extract WMI event params for TWT 252 * session stats event 253 * @wmi_handle: wmi handle 254 * @evt_buf: Pointer event buffer 255 * @params: Parameters to extract 256 * 257 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 258 */ 259 QDF_STATUS wmi_extract_twt_session_stats_event( 260 wmi_unified_t wmi_handle, 261 uint8_t *evt_buf, 262 struct wmi_twt_session_stats_event_param *params); 263 264 /** 265 * wmi_extract_twt_session_stats_data() - Extract one TWT session from TWT 266 * session stats event 267 * @wmi_handle: wmi handle 268 * @evt_buf: Pointer event buffer 269 * @params: Parameters to extract 270 * @session: Session struct to save one TWT session 271 * @idx: TWT session index 272 * 273 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 274 */ 275 QDF_STATUS wmi_extract_twt_session_stats_data( 276 wmi_unified_t wmi_handle, 277 uint8_t *evt_buf, 278 struct wmi_twt_session_stats_event_param *params, 279 struct wmi_host_twt_session_stats_info *session, 280 uint32_t idx); 281 282 #ifdef WLAN_SUPPORT_TWT 283 void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle); 284 #else 285 static void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle) 286 { 287 return; 288 } 289 #endif 290 291 #endif /* _WMI_UNIFIED_TWT_API_H_ */ 292