1 /* 2 * Copyright (c) 2018-2021 The Linux Foundation. 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: Implement API's specific to TWT component. 20 */ 21 22 #ifndef _WMI_UNIFIED_TWT_API_H_ 23 #define _WMI_UNIFIED_TWT_API_H_ 24 25 #include "wmi_unified_twt_param.h" 26 27 28 /** 29 * wmi_unified_twt_enable_cmd() - Send WMI command to Enable TWT 30 * @wmi_handle: wmi handle 31 * @params: Parameters to be configured 32 * 33 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 34 */ 35 QDF_STATUS 36 wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle, 37 struct wmi_twt_enable_param *params); 38 39 /** 40 * wmi_unified_twt_disable_cmd() - Send WMI command to disable TWT 41 * @wmi_handle: wmi handle 42 * @params: Parameters to be configured 43 * 44 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 45 */ 46 QDF_STATUS 47 wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle, 48 struct wmi_twt_disable_param *params); 49 50 /** 51 * wmi_unified_twt_add_dialog_cmd() - Send WMI command to add TWT dialog 52 * @wmi_handle: wmi handle 53 * @params: Parameters to be configured 54 * 55 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 56 */ 57 QDF_STATUS 58 wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle, 59 struct wmi_twt_add_dialog_param *params); 60 61 /** 62 * wmi_unified_twt_del_dialog_cmd() - Send WMI command to delete TWT dialog 63 * @wmi_handle: wmi handle 64 * @params: Parameters to be configured 65 * 66 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 67 */ 68 QDF_STATUS 69 wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle, 70 struct wmi_twt_del_dialog_param *params); 71 72 /** 73 * wmi_unified_twt_pause_dialog_cmd() - Send WMI command to pause TWT dialog 74 * @wmi_handle: wmi handle 75 * @params: Parameters to be configured 76 * 77 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 78 */ 79 QDF_STATUS 80 wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle, 81 struct wmi_twt_pause_dialog_cmd_param *params); 82 83 /** 84 * wmi_unified_twt_nudge_dialog_cmd() - Send WMI command to nudge TWT dialog 85 * @wmi_handle: wmi handle 86 * @params: Parameters to be configured 87 * 88 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 89 */ 90 QDF_STATUS 91 wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle, 92 struct wmi_twt_nudge_dialog_cmd_param *params); 93 94 /** 95 * wmi_unified_twt_resume_dialog_cmd() - Send WMI command to resume TWT dialog 96 * @wmi_handle: wmi handle 97 * @params: Parameters to be configured 98 * 99 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 100 */ 101 QDF_STATUS wmi_unified_twt_resume_dialog_cmd( 102 wmi_unified_t wmi_handle, 103 struct wmi_twt_resume_dialog_cmd_param *params); 104 105 #ifdef WLAN_SUPPORT_BCAST_TWT 106 /** 107 * wmi_unified_twt_btwt_invite_sta_cmd() - Send WMI command for bTWT sta 108 * invitation 109 * @wmi_handle: wmi handle 110 * @params: Parameters to be configured 111 * 112 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 113 */ 114 QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd( 115 wmi_unified_t wmi_handle, 116 struct wmi_twt_btwt_invite_sta_cmd_param *params); 117 118 /** 119 * wmi_unified_twt_btwt_remove_sta_cmd() - Send WMI command for bTWT sta kickoff 120 * @wmi_handle: wmi handle 121 * @params: Parameters to be configured 122 * 123 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 124 */ 125 QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd( 126 wmi_unified_t wmi_handle, 127 struct wmi_twt_btwt_remove_sta_cmd_param *params); 128 #endif 129 130 /** 131 * wmi_extract_twt_enable_comp_event() - Extract WMI event params for TWT enable 132 * completion event 133 * @wmi_handle: wmi handle 134 * @evt_buf: Pointer event buffer 135 * @params: Parameters to extract 136 * 137 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 138 */ 139 QDF_STATUS wmi_extract_twt_enable_comp_event( 140 wmi_unified_t wmi_handle, 141 uint8_t *evt_buf, 142 struct wmi_twt_enable_complete_event_param *params); 143 144 /** 145 * wmi_extract_twt_disable_comp_event() - Extract WMI event params for TWT 146 * disable completion event 147 * @wmi_handle: wmi handle 148 * @evt_buf: Pointer event buffer 149 * @params: Parameters to extract 150 * 151 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 152 */ 153 QDF_STATUS wmi_extract_twt_disable_comp_event( 154 wmi_unified_t wmi_handle, 155 uint8_t *evt_buf, 156 struct wmi_twt_disable_complete_event *params); 157 158 /** 159 * wmi_extract_twt_add_dialog_comp_event() - Extract WMI event params for TWT 160 * add dialog completion event 161 * @wmi_hdl: wmi handle 162 * @evt_buf: Pointer event buffer 163 * @params: Parameters to extract 164 * 165 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 166 */ 167 QDF_STATUS wmi_extract_twt_add_dialog_comp_event( 168 wmi_unified_t wmi_handle, 169 uint8_t *evt_buf, 170 struct wmi_twt_add_dialog_complete_event_param *params); 171 172 /** 173 * wmi_extract_twt_add_dialog_comp_additional_params() - Extracts additional 174 * twt parameters, as part of add dialog completion event 175 * @wmi_hdl: wmi handle 176 * @evt_buf: Pointer event buffer 177 * @evt_buf_len: length of the add dialog event buffer 178 * @idx: index of num_twt_params to extract 179 * @additional_params: additional parameters to extract 180 * 181 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 182 */ 183 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params( 184 wmi_unified_t wmi_handle, uint8_t *evt_buf, 185 uint32_t evt_buf_len, uint32_t idx, 186 struct wmi_twt_add_dialog_additional_params *additional_params); 187 188 /** 189 * wmi_extract_twt_del_dialog_comp_event() - Extract WMI event params for TWT 190 * delete dialog completion event 191 * @wmi_hdl: wmi handle 192 * @evt_buf: Pointer event buffer 193 * @params: Parameters to extract 194 * 195 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 196 */ 197 QDF_STATUS wmi_extract_twt_del_dialog_comp_event( 198 wmi_unified_t wmi_handle, 199 uint8_t *evt_buf, 200 struct wmi_twt_del_dialog_complete_event_param *params); 201 202 /** 203 * wmi_extract_twt_pause_dialog_comp_event() - Extract WMI event params for TWT 204 * pause dialog completion event 205 * @wmi_handle: wmi handle 206 * @evt_buf: Pointer event buffer 207 * @params: Parameters to extract 208 * 209 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 210 */ 211 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event( 212 wmi_unified_t wmi_handle, 213 uint8_t *evt_buf, 214 struct wmi_twt_pause_dialog_complete_event_param *params); 215 216 /** 217 * wmi_extract_twt_nudge_dialog_comp_event() - Extract WMI event params for TWT 218 * nudge dialog completion event 219 * @wmi_handle: wmi handle 220 * @evt_buf: Pointer event buffer 221 * @params: Parameters to extract 222 * 223 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 224 */ 225 QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event( 226 wmi_unified_t wmi_handle, 227 uint8_t *evt_buf, 228 struct wmi_twt_nudge_dialog_complete_event_param *params); 229 230 /** 231 * wmi_extract_twt_resume_dialog_comp_event() - Extract WMI event params for TWT 232 * resume dialog completion event 233 * @wmi_handle: wmi handle 234 * @evt_buf: Pointer event buffer 235 * @params: Parameters to extract 236 * 237 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 238 */ 239 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event( 240 wmi_unified_t wmi_handle, 241 uint8_t *evt_buf, 242 struct wmi_twt_resume_dialog_complete_event_param *params); 243 244 /** 245 * wmi_extract_twt_notify_event() - Extract WMI event params for TWT 246 * notify event 247 * @wmi_handle: wmi handle 248 * @evt_buf: Pointer event buffer 249 * @params: Parameters to extract 250 * 251 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 252 */ 253 QDF_STATUS wmi_extract_twt_notify_event( 254 wmi_unified_t wmi_handle, 255 uint8_t *evt_buf, 256 struct wmi_twt_notify_event_param *params); 257 258 #ifdef WLAN_SUPPORT_BCAST_TWT 259 /** 260 * wmi_extract_twt_btwt_invite_sta_comp_event() - Extract WMI event params for 261 * BTWT sta invitation completion event 262 * @wmi_handle: wmi handle 263 * @evt_buf: Pointer event buffer 264 * @params: Parameters to extract 265 * 266 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 267 */ 268 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event( 269 wmi_unified_t wmi_handle, 270 uint8_t *evt_buf, 271 struct wmi_twt_btwt_invite_sta_complete_event_param *params); 272 273 /** 274 * wmi_extract_twt_btwt_remove_sta_comp_event() - Extract WMI event params for 275 * BTWT sta kickoff completion event 276 * @wmi_handle: wmi handle 277 * @evt_buf: Pointer event buffer 278 * @params: Parameters to extract 279 * 280 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 281 */ 282 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event( 283 wmi_unified_t wmi_handle, 284 uint8_t *evt_buf, 285 struct wmi_twt_btwt_remove_sta_complete_event_param *params); 286 #endif 287 288 /** 289 * wmi_extract_twt_session_stats_event() - Extract WMI event params for TWT 290 * session stats event 291 * @wmi_handle: wmi handle 292 * @evt_buf: Pointer event buffer 293 * @params: Parameters to extract 294 * 295 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 296 */ 297 QDF_STATUS wmi_extract_twt_session_stats_event( 298 wmi_unified_t wmi_handle, 299 uint8_t *evt_buf, 300 struct wmi_twt_session_stats_event_param *params); 301 302 /** 303 * wmi_extract_twt_session_stats_data() - Extract one TWT session from TWT 304 * session stats event 305 * @wmi_handle: wmi handle 306 * @evt_buf: Pointer event buffer 307 * @params: Parameters to extract 308 * @session: Session struct to save one TWT session 309 * @idx: TWT session index 310 * 311 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 312 */ 313 QDF_STATUS wmi_extract_twt_session_stats_data( 314 wmi_unified_t wmi_handle, 315 uint8_t *evt_buf, 316 struct wmi_twt_session_stats_event_param *params, 317 struct wmi_host_twt_session_stats_info *session, 318 uint32_t idx); 319 320 #ifdef WLAN_SUPPORT_TWT 321 void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle); 322 #else 323 static void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle) 324 { 325 return; 326 } 327 #endif 328 329 /** 330 * wmi_extract_twt_cap_service_ready_ext2: Extract TWT bitmap value 331 * received through extended 332 * service ready2 event 333 * @wmi_handle: WMI handle 334 * @evt_buf: Event buffer 335 * @param: Pointer to TWT bitmap param 336 * 337 * Return: QDF_STATUS_SUCCESS for success or error code 338 */ 339 QDF_STATUS wmi_extract_twt_cap_service_ready_ext2( 340 wmi_unified_t wmi_handle, 341 uint8_t *evt_buf, 342 struct wmi_twt_cap_bitmap_params *params); 343 344 /** 345 * wmi_extract_twt_ack_comp_event() - Extract WMI event params for TWT ack event 346 * 347 * @wmi_handle: wmi handle 348 * @evt_buf: Pointer event buffer 349 * @params: Parameters to extract 350 * 351 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 352 */ 353 QDF_STATUS wmi_extract_twt_ack_comp_event( 354 wmi_unified_t wmi_handle, 355 uint8_t *evt_buf, 356 struct wmi_twt_ack_complete_event_param *param); 357 358 #endif /* _WMI_UNIFIED_TWT_API_H_ */ 359