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 #include "wmi_unified_priv.h" 23 #include "wmi_unified_twt_api.h" 24 25 26 QDF_STATUS 27 wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle, 28 struct wmi_twt_enable_param *params) 29 { 30 if (wmi_handle->ops->send_twt_enable_cmd) 31 return wmi_handle->ops->send_twt_enable_cmd( 32 wmi_handle, params); 33 34 return QDF_STATUS_E_FAILURE; 35 } 36 37 QDF_STATUS 38 wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle, 39 struct wmi_twt_disable_param *params) 40 { 41 if (wmi_handle->ops->send_twt_disable_cmd) 42 return wmi_handle->ops->send_twt_disable_cmd( 43 wmi_handle, params); 44 45 return QDF_STATUS_E_FAILURE; 46 } 47 48 QDF_STATUS 49 wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle, 50 struct wmi_twt_add_dialog_param *params) 51 { 52 if (wmi_handle->ops->send_twt_add_dialog_cmd) 53 return wmi_handle->ops->send_twt_add_dialog_cmd( 54 wmi_handle, params); 55 56 return QDF_STATUS_E_FAILURE; 57 } 58 59 QDF_STATUS 60 wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle, 61 struct wmi_twt_del_dialog_param *params) 62 { 63 if (wmi_handle->ops->send_twt_del_dialog_cmd) 64 return wmi_handle->ops->send_twt_del_dialog_cmd( 65 wmi_handle, params); 66 67 return QDF_STATUS_E_FAILURE; 68 } 69 70 QDF_STATUS 71 wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle, 72 struct wmi_twt_pause_dialog_cmd_param *params) 73 { 74 if (wmi_handle->ops->send_twt_pause_dialog_cmd) 75 return wmi_handle->ops->send_twt_pause_dialog_cmd( 76 wmi_handle, params); 77 78 return QDF_STATUS_E_FAILURE; 79 } 80 81 QDF_STATUS 82 wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle, 83 struct wmi_twt_nudge_dialog_cmd_param *params) 84 { 85 if (wmi_handle->ops->send_twt_nudge_dialog_cmd) 86 return wmi_handle->ops->send_twt_nudge_dialog_cmd( 87 wmi_handle, params); 88 89 return QDF_STATUS_E_FAILURE; 90 } 91 92 QDF_STATUS wmi_unified_twt_resume_dialog_cmd( 93 wmi_unified_t wmi_handle, 94 struct wmi_twt_resume_dialog_cmd_param *params) 95 { 96 if (wmi_handle->ops->send_twt_resume_dialog_cmd) 97 return wmi_handle->ops->send_twt_resume_dialog_cmd( 98 wmi_handle, params); 99 100 return QDF_STATUS_E_FAILURE; 101 } 102 103 #ifdef WLAN_SUPPORT_BCAST_TWT 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 if (wmi_handle->ops->send_twt_btwt_invite_sta_cmd) 109 return wmi_handle->ops->send_twt_btwt_invite_sta_cmd( 110 wmi_handle, params); 111 112 return QDF_STATUS_E_FAILURE; 113 } 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 { 119 if (wmi_handle->ops->send_twt_btwt_remove_sta_cmd) 120 return wmi_handle->ops->send_twt_btwt_remove_sta_cmd( 121 wmi_handle, params); 122 123 return QDF_STATUS_E_FAILURE; 124 } 125 #endif 126 127 QDF_STATUS wmi_extract_twt_enable_comp_event( 128 wmi_unified_t wmi_handle, 129 uint8_t *evt_buf, 130 struct wmi_twt_enable_complete_event_param *params) 131 { 132 if (wmi_handle->ops->extract_twt_enable_comp_event) 133 return wmi_handle->ops->extract_twt_enable_comp_event( 134 wmi_handle, evt_buf, params); 135 136 return QDF_STATUS_E_FAILURE; 137 } 138 139 QDF_STATUS wmi_extract_twt_disable_comp_event( 140 wmi_unified_t wmi_handle, 141 uint8_t *evt_buf, 142 struct wmi_twt_disable_complete_event *params) 143 { 144 if (wmi_handle->ops->extract_twt_disable_comp_event) 145 return wmi_handle->ops->extract_twt_disable_comp_event( 146 wmi_handle, evt_buf, params); 147 148 return QDF_STATUS_E_FAILURE; 149 } 150 151 QDF_STATUS wmi_extract_twt_add_dialog_comp_event( 152 wmi_unified_t wmi_handle, 153 uint8_t *evt_buf, 154 struct wmi_twt_add_dialog_complete_event_param *params) 155 { 156 if (wmi_handle->ops->extract_twt_add_dialog_comp_event) 157 return wmi_handle->ops->extract_twt_add_dialog_comp_event( 158 wmi_handle, evt_buf, params); 159 160 return QDF_STATUS_E_FAILURE; 161 } 162 163 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params( 164 wmi_unified_t wmi_handle, uint8_t *evt_buf, 165 uint32_t evt_buf_len, uint32_t idx, 166 struct wmi_twt_add_dialog_additional_params *additional_params) 167 { 168 if (wmi_handle->ops->extract_twt_add_dialog_comp_additional_params) 169 return wmi_handle->ops-> 170 extract_twt_add_dialog_comp_additional_params( 171 wmi_handle, evt_buf, evt_buf_len, idx, 172 additional_params); 173 174 return QDF_STATUS_E_FAILURE; 175 } 176 177 QDF_STATUS wmi_extract_twt_del_dialog_comp_event( 178 wmi_unified_t wmi_handle, 179 uint8_t *evt_buf, 180 struct wmi_twt_del_dialog_complete_event_param *params) 181 { 182 if (wmi_handle->ops->extract_twt_del_dialog_comp_event) 183 return wmi_handle->ops->extract_twt_del_dialog_comp_event( 184 wmi_handle, evt_buf, params); 185 186 return QDF_STATUS_E_FAILURE; 187 } 188 189 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event( 190 wmi_unified_t wmi_handle, 191 uint8_t *evt_buf, 192 struct wmi_twt_pause_dialog_complete_event_param *params) 193 { 194 if (wmi_handle->ops->extract_twt_pause_dialog_comp_event) 195 return wmi_handle->ops->extract_twt_pause_dialog_comp_event( 196 wmi_handle, evt_buf, params); 197 198 return QDF_STATUS_E_FAILURE; 199 } 200 201 QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event( 202 wmi_unified_t wmi_handle, 203 uint8_t *evt_buf, 204 struct wmi_twt_nudge_dialog_complete_event_param *params) 205 { 206 if (wmi_handle->ops->extract_twt_nudge_dialog_comp_event) 207 return wmi_handle->ops->extract_twt_nudge_dialog_comp_event( 208 wmi_handle, evt_buf, params); 209 210 return QDF_STATUS_E_FAILURE; 211 } 212 213 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event( 214 wmi_unified_t wmi_handle, 215 uint8_t *evt_buf, 216 struct wmi_twt_resume_dialog_complete_event_param *params) 217 { 218 if (wmi_handle->ops->extract_twt_resume_dialog_comp_event) 219 return wmi_handle->ops->extract_twt_resume_dialog_comp_event( 220 wmi_handle, evt_buf, params); 221 222 return QDF_STATUS_E_FAILURE; 223 } 224 225 QDF_STATUS wmi_extract_twt_notify_event( 226 wmi_unified_t wmi_handle, 227 uint8_t *evt_buf, 228 struct wmi_twt_notify_event_param *params) 229 { 230 if (wmi_handle->ops->extract_twt_notify_event) 231 return wmi_handle->ops->extract_twt_notify_event(wmi_handle, 232 evt_buf, 233 params); 234 235 return QDF_STATUS_E_FAILURE; 236 } 237 238 #ifdef WLAN_SUPPORT_BCAST_TWT 239 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event( 240 wmi_unified_t wmi_handle, 241 uint8_t *evt_buf, 242 struct wmi_twt_btwt_invite_sta_complete_event_param *params) 243 { 244 if (wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event) 245 return wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event( 246 wmi_handle, evt_buf, params); 247 248 return QDF_STATUS_E_FAILURE; 249 } 250 251 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event( 252 wmi_unified_t wmi_handle, 253 uint8_t *evt_buf, 254 struct wmi_twt_btwt_remove_sta_complete_event_param *params) 255 { 256 if (wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event) 257 return wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event( 258 wmi_handle, evt_buf, params); 259 260 return QDF_STATUS_E_FAILURE; 261 } 262 #endif 263 264 QDF_STATUS wmi_extract_twt_session_stats_event( 265 wmi_unified_t wmi_handle, 266 uint8_t *evt_buf, 267 struct wmi_twt_session_stats_event_param *params) 268 { 269 if (wmi_handle->ops->extract_twt_session_stats_event) 270 return wmi_handle->ops->extract_twt_session_stats_event( 271 wmi_handle, evt_buf, params); 272 273 return QDF_STATUS_E_FAILURE; 274 } 275 276 QDF_STATUS wmi_extract_twt_session_stats_data( 277 wmi_unified_t wmi_handle, 278 uint8_t *evt_buf, 279 struct wmi_twt_session_stats_event_param *params, 280 struct wmi_host_twt_session_stats_info *session, 281 uint32_t idx) 282 { 283 if (wmi_handle->ops->extract_twt_session_stats_data) 284 return wmi_handle->ops->extract_twt_session_stats_data( 285 wmi_handle, evt_buf, params, session, idx); 286 287 return QDF_STATUS_E_FAILURE; 288 } 289 290 QDF_STATUS wmi_extract_twt_cap_service_ready_ext2( 291 wmi_unified_t wmi_handle, 292 uint8_t *evt_buf, 293 struct wmi_twt_cap_bitmap_params *params) 294 { 295 if (wmi_handle->ops->extract_twt_cap_service_ready_ext2) 296 return wmi_handle->ops->extract_twt_cap_service_ready_ext2( 297 wmi_handle, evt_buf, params); 298 299 return QDF_STATUS_E_FAILURE; 300 } 301 302 QDF_STATUS wmi_extract_twt_ack_comp_event( 303 wmi_unified_t wmi_handle, 304 uint8_t *evt_buf, 305 struct wmi_twt_ack_complete_event_param *params) 306 { 307 if (wmi_handle->ops->extract_twt_ack_comp_event) 308 return wmi_handle->ops->extract_twt_ack_comp_event( 309 wmi_handle, evt_buf, params); 310 311 return QDF_STATUS_E_FAILURE; 312 } 313