wmi_unified_twt_api.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. /*
  2. * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
  3. * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. 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. #include "wmi_unified_priv.h"
  23. #include "wmi_unified_twt_api.h"
  24. #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
  25. #include <wlan_twt_public_structs.h>
  26. QDF_STATUS
  27. wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle,
  28. struct 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. return QDF_STATUS_E_FAILURE;
  34. }
  35. QDF_STATUS
  36. wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle,
  37. struct twt_disable_param *params)
  38. {
  39. if (wmi_handle->ops->send_twt_disable_cmd)
  40. return wmi_handle->ops->send_twt_disable_cmd(
  41. wmi_handle, params);
  42. return QDF_STATUS_E_FAILURE;
  43. }
  44. QDF_STATUS
  45. wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle,
  46. struct twt_add_dialog_param *params)
  47. {
  48. if (wmi_handle->ops->send_twt_add_dialog_cmd)
  49. return wmi_handle->ops->send_twt_add_dialog_cmd(
  50. wmi_handle, params);
  51. return QDF_STATUS_E_FAILURE;
  52. }
  53. QDF_STATUS
  54. wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle,
  55. struct twt_del_dialog_param *params)
  56. {
  57. if (wmi_handle->ops->send_twt_del_dialog_cmd)
  58. return wmi_handle->ops->send_twt_del_dialog_cmd(
  59. wmi_handle, params);
  60. return QDF_STATUS_E_FAILURE;
  61. }
  62. QDF_STATUS
  63. wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle,
  64. struct twt_pause_dialog_cmd_param *params)
  65. {
  66. if (wmi_handle->ops->send_twt_pause_dialog_cmd)
  67. return wmi_handle->ops->send_twt_pause_dialog_cmd(
  68. wmi_handle, params);
  69. return QDF_STATUS_E_FAILURE;
  70. }
  71. QDF_STATUS
  72. wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle,
  73. struct twt_nudge_dialog_cmd_param *params)
  74. {
  75. if (wmi_handle->ops->send_twt_nudge_dialog_cmd)
  76. return wmi_handle->ops->send_twt_nudge_dialog_cmd(
  77. wmi_handle, params);
  78. return QDF_STATUS_E_FAILURE;
  79. }
  80. QDF_STATUS wmi_unified_twt_resume_dialog_cmd(
  81. wmi_unified_t wmi_handle,
  82. struct twt_resume_dialog_cmd_param *params)
  83. {
  84. if (wmi_handle->ops->send_twt_resume_dialog_cmd)
  85. return wmi_handle->ops->send_twt_resume_dialog_cmd(
  86. wmi_handle, params);
  87. return QDF_STATUS_E_FAILURE;
  88. }
  89. #ifdef WLAN_SUPPORT_BCAST_TWT
  90. QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd(
  91. wmi_unified_t wmi_handle,
  92. struct twt_btwt_invite_sta_cmd_param *params)
  93. {
  94. if (wmi_handle->ops->send_twt_btwt_invite_sta_cmd)
  95. return wmi_handle->ops->send_twt_btwt_invite_sta_cmd(
  96. wmi_handle, params);
  97. return QDF_STATUS_E_FAILURE;
  98. }
  99. QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd(
  100. wmi_unified_t wmi_handle,
  101. struct twt_btwt_remove_sta_cmd_param *params)
  102. {
  103. if (wmi_handle->ops->send_twt_btwt_remove_sta_cmd)
  104. return wmi_handle->ops->send_twt_btwt_remove_sta_cmd(
  105. wmi_handle, params);
  106. return QDF_STATUS_E_FAILURE;
  107. }
  108. #endif
  109. QDF_STATUS wmi_extract_twt_enable_comp_event(
  110. wmi_unified_t wmi_handle,
  111. uint8_t *evt_buf,
  112. struct twt_enable_complete_event_param *params)
  113. {
  114. if (wmi_handle->ops->extract_twt_enable_comp_event)
  115. return wmi_handle->ops->extract_twt_enable_comp_event(
  116. wmi_handle, evt_buf, params);
  117. return QDF_STATUS_E_FAILURE;
  118. }
  119. QDF_STATUS wmi_extract_twt_disable_comp_event(
  120. wmi_unified_t wmi_handle,
  121. uint8_t *evt_buf,
  122. struct twt_disable_complete_event_param *params)
  123. {
  124. if (wmi_handle->ops->extract_twt_disable_comp_event)
  125. return wmi_handle->ops->extract_twt_disable_comp_event(
  126. wmi_handle, evt_buf, params);
  127. return QDF_STATUS_E_FAILURE;
  128. }
  129. QDF_STATUS wmi_extract_twt_add_dialog_comp_event(
  130. wmi_unified_t wmi_handle,
  131. uint8_t *evt_buf,
  132. struct twt_add_dialog_complete_event_param *params)
  133. {
  134. if (wmi_handle->ops->extract_twt_add_dialog_comp_event)
  135. return wmi_handle->ops->extract_twt_add_dialog_comp_event(
  136. wmi_handle, evt_buf, params);
  137. return QDF_STATUS_E_FAILURE;
  138. }
  139. QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params(
  140. wmi_unified_t wmi_handle, uint8_t *evt_buf,
  141. uint32_t evt_buf_len, uint32_t idx,
  142. struct twt_add_dialog_additional_params *additional_params)
  143. {
  144. if (wmi_handle->ops->extract_twt_add_dialog_comp_additional_params)
  145. return wmi_handle->ops->
  146. extract_twt_add_dialog_comp_additional_params(
  147. wmi_handle, evt_buf, evt_buf_len, idx,
  148. additional_params);
  149. return QDF_STATUS_E_FAILURE;
  150. }
  151. QDF_STATUS wmi_extract_twt_del_dialog_comp_event(
  152. wmi_unified_t wmi_handle,
  153. uint8_t *evt_buf,
  154. struct twt_del_dialog_complete_event_param *params)
  155. {
  156. if (wmi_handle->ops->extract_twt_del_dialog_comp_event)
  157. return wmi_handle->ops->extract_twt_del_dialog_comp_event(
  158. wmi_handle, evt_buf, params);
  159. return QDF_STATUS_E_FAILURE;
  160. }
  161. QDF_STATUS wmi_extract_twt_pause_dialog_comp_event(
  162. wmi_unified_t wmi_handle,
  163. uint8_t *evt_buf,
  164. struct twt_pause_dialog_complete_event_param *params)
  165. {
  166. if (wmi_handle->ops->extract_twt_pause_dialog_comp_event)
  167. return wmi_handle->ops->extract_twt_pause_dialog_comp_event(
  168. wmi_handle, evt_buf, params);
  169. return QDF_STATUS_E_FAILURE;
  170. }
  171. QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event(
  172. wmi_unified_t wmi_handle,
  173. uint8_t *evt_buf,
  174. struct twt_nudge_dialog_complete_event_param *params)
  175. {
  176. if (wmi_handle->ops->extract_twt_nudge_dialog_comp_event)
  177. return wmi_handle->ops->extract_twt_nudge_dialog_comp_event(
  178. wmi_handle, evt_buf, params);
  179. return QDF_STATUS_E_FAILURE;
  180. }
  181. QDF_STATUS wmi_extract_twt_resume_dialog_comp_event(
  182. wmi_unified_t wmi_handle,
  183. uint8_t *evt_buf,
  184. struct twt_resume_dialog_complete_event_param *params)
  185. {
  186. if (wmi_handle->ops->extract_twt_resume_dialog_comp_event)
  187. return wmi_handle->ops->extract_twt_resume_dialog_comp_event(
  188. wmi_handle, evt_buf, params);
  189. return QDF_STATUS_E_FAILURE;
  190. }
  191. QDF_STATUS wmi_extract_twt_notify_event(
  192. wmi_unified_t wmi_handle,
  193. uint8_t *evt_buf,
  194. struct twt_notify_event_param *params)
  195. {
  196. if (wmi_handle->ops->extract_twt_notify_event)
  197. return wmi_handle->ops->extract_twt_notify_event(wmi_handle,
  198. evt_buf,
  199. params);
  200. return QDF_STATUS_E_FAILURE;
  201. }
  202. #ifdef WLAN_SUPPORT_BCAST_TWT
  203. QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event(
  204. wmi_unified_t wmi_handle,
  205. uint8_t *evt_buf,
  206. struct twt_btwt_invite_sta_complete_event_param *params)
  207. {
  208. if (wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event)
  209. return wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event(
  210. wmi_handle, evt_buf, params);
  211. return QDF_STATUS_E_FAILURE;
  212. }
  213. QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event(
  214. wmi_unified_t wmi_handle,
  215. uint8_t *evt_buf,
  216. struct twt_btwt_remove_sta_complete_event_param *params)
  217. {
  218. if (wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event)
  219. return wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event(
  220. wmi_handle, evt_buf, params);
  221. return QDF_STATUS_E_FAILURE;
  222. }
  223. #endif
  224. QDF_STATUS wmi_extract_twt_session_stats_event(
  225. wmi_unified_t wmi_handle,
  226. uint8_t *evt_buf,
  227. struct twt_session_stats_event_param *params)
  228. {
  229. if (wmi_handle->ops->extract_twt_session_stats_event)
  230. return wmi_handle->ops->extract_twt_session_stats_event(
  231. wmi_handle, evt_buf, params);
  232. return QDF_STATUS_E_FAILURE;
  233. }
  234. QDF_STATUS wmi_extract_twt_session_stats_data(
  235. wmi_unified_t wmi_handle,
  236. uint8_t *evt_buf,
  237. struct twt_session_stats_event_param *params,
  238. struct twt_session_stats_info *session,
  239. uint32_t idx)
  240. {
  241. if (wmi_handle->ops->extract_twt_session_stats_data)
  242. return wmi_handle->ops->extract_twt_session_stats_data(
  243. wmi_handle, evt_buf, params, session, idx);
  244. return QDF_STATUS_E_FAILURE;
  245. }
  246. QDF_STATUS wmi_extract_twt_cap_service_ready_ext2(
  247. wmi_unified_t wmi_handle,
  248. uint8_t *evt_buf,
  249. struct wmi_twt_cap_bitmap_params *params)
  250. {
  251. if (wmi_handle->ops->extract_twt_cap_service_ready_ext2)
  252. return wmi_handle->ops->extract_twt_cap_service_ready_ext2(
  253. wmi_handle, evt_buf, params);
  254. return QDF_STATUS_E_FAILURE;
  255. }
  256. QDF_STATUS wmi_extract_twt_ack_comp_event(
  257. wmi_unified_t wmi_handle,
  258. uint8_t *evt_buf,
  259. struct twt_ack_complete_event_param *params)
  260. {
  261. if (wmi_handle->ops->extract_twt_ack_comp_event)
  262. return wmi_handle->ops->extract_twt_ack_comp_event(
  263. wmi_handle, evt_buf, params);
  264. return QDF_STATUS_E_FAILURE;
  265. }
  266. #elif WLAN_SUPPORT_TWT
  267. QDF_STATUS
  268. wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle,
  269. struct wmi_twt_enable_param *params)
  270. {
  271. if (wmi_handle->ops->send_twt_enable_cmd)
  272. return wmi_handle->ops->send_twt_enable_cmd(
  273. wmi_handle, params);
  274. return QDF_STATUS_E_FAILURE;
  275. }
  276. QDF_STATUS
  277. wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle,
  278. struct wmi_twt_disable_param *params)
  279. {
  280. if (wmi_handle->ops->send_twt_disable_cmd)
  281. return wmi_handle->ops->send_twt_disable_cmd(
  282. wmi_handle, params);
  283. return QDF_STATUS_E_FAILURE;
  284. }
  285. QDF_STATUS
  286. wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle,
  287. struct wmi_twt_add_dialog_param *params)
  288. {
  289. if (wmi_handle->ops->send_twt_add_dialog_cmd)
  290. return wmi_handle->ops->send_twt_add_dialog_cmd(
  291. wmi_handle, params);
  292. return QDF_STATUS_E_FAILURE;
  293. }
  294. QDF_STATUS
  295. wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle,
  296. struct wmi_twt_del_dialog_param *params)
  297. {
  298. if (wmi_handle->ops->send_twt_del_dialog_cmd)
  299. return wmi_handle->ops->send_twt_del_dialog_cmd(
  300. wmi_handle, params);
  301. return QDF_STATUS_E_FAILURE;
  302. }
  303. QDF_STATUS
  304. wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle,
  305. struct wmi_twt_pause_dialog_cmd_param *params)
  306. {
  307. if (wmi_handle->ops->send_twt_pause_dialog_cmd)
  308. return wmi_handle->ops->send_twt_pause_dialog_cmd(
  309. wmi_handle, params);
  310. return QDF_STATUS_E_FAILURE;
  311. }
  312. QDF_STATUS
  313. wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle,
  314. struct wmi_twt_nudge_dialog_cmd_param *params)
  315. {
  316. if (wmi_handle->ops->send_twt_nudge_dialog_cmd)
  317. return wmi_handle->ops->send_twt_nudge_dialog_cmd(
  318. wmi_handle, params);
  319. return QDF_STATUS_E_FAILURE;
  320. }
  321. QDF_STATUS wmi_unified_twt_resume_dialog_cmd(
  322. wmi_unified_t wmi_handle,
  323. struct wmi_twt_resume_dialog_cmd_param *params)
  324. {
  325. if (wmi_handle->ops->send_twt_resume_dialog_cmd)
  326. return wmi_handle->ops->send_twt_resume_dialog_cmd(
  327. wmi_handle, params);
  328. return QDF_STATUS_E_FAILURE;
  329. }
  330. #ifdef WLAN_SUPPORT_BCAST_TWT
  331. QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd(
  332. wmi_unified_t wmi_handle,
  333. struct wmi_twt_btwt_invite_sta_cmd_param *params)
  334. {
  335. if (wmi_handle->ops->send_twt_btwt_invite_sta_cmd)
  336. return wmi_handle->ops->send_twt_btwt_invite_sta_cmd(
  337. wmi_handle, params);
  338. return QDF_STATUS_E_FAILURE;
  339. }
  340. QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd(
  341. wmi_unified_t wmi_handle,
  342. struct wmi_twt_btwt_remove_sta_cmd_param *params)
  343. {
  344. if (wmi_handle->ops->send_twt_btwt_remove_sta_cmd)
  345. return wmi_handle->ops->send_twt_btwt_remove_sta_cmd(
  346. wmi_handle, params);
  347. return QDF_STATUS_E_FAILURE;
  348. }
  349. #endif
  350. QDF_STATUS wmi_extract_twt_enable_comp_event(
  351. wmi_unified_t wmi_handle,
  352. uint8_t *evt_buf,
  353. struct wmi_twt_enable_complete_event_param *params)
  354. {
  355. if (wmi_handle->ops->extract_twt_enable_comp_event)
  356. return wmi_handle->ops->extract_twt_enable_comp_event(
  357. wmi_handle, evt_buf, params);
  358. return QDF_STATUS_E_FAILURE;
  359. }
  360. QDF_STATUS wmi_extract_twt_disable_comp_event(
  361. wmi_unified_t wmi_handle,
  362. uint8_t *evt_buf,
  363. struct wmi_twt_disable_complete_event *params)
  364. {
  365. if (wmi_handle->ops->extract_twt_disable_comp_event)
  366. return wmi_handle->ops->extract_twt_disable_comp_event(
  367. wmi_handle, evt_buf, params);
  368. return QDF_STATUS_E_FAILURE;
  369. }
  370. QDF_STATUS wmi_extract_twt_add_dialog_comp_event(
  371. wmi_unified_t wmi_handle,
  372. uint8_t *evt_buf,
  373. struct wmi_twt_add_dialog_complete_event_param *params)
  374. {
  375. if (wmi_handle->ops->extract_twt_add_dialog_comp_event)
  376. return wmi_handle->ops->extract_twt_add_dialog_comp_event(
  377. wmi_handle, evt_buf, params);
  378. return QDF_STATUS_E_FAILURE;
  379. }
  380. QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params(
  381. wmi_unified_t wmi_handle, uint8_t *evt_buf,
  382. uint32_t evt_buf_len, uint32_t idx,
  383. struct wmi_twt_add_dialog_additional_params *additional_params)
  384. {
  385. if (wmi_handle->ops->extract_twt_add_dialog_comp_additional_params)
  386. return wmi_handle->ops->
  387. extract_twt_add_dialog_comp_additional_params(
  388. wmi_handle, evt_buf, evt_buf_len, idx,
  389. additional_params);
  390. return QDF_STATUS_E_FAILURE;
  391. }
  392. QDF_STATUS wmi_extract_twt_del_dialog_comp_event(
  393. wmi_unified_t wmi_handle,
  394. uint8_t *evt_buf,
  395. struct wmi_twt_del_dialog_complete_event_param *params)
  396. {
  397. if (wmi_handle->ops->extract_twt_del_dialog_comp_event)
  398. return wmi_handle->ops->extract_twt_del_dialog_comp_event(
  399. wmi_handle, evt_buf, params);
  400. return QDF_STATUS_E_FAILURE;
  401. }
  402. QDF_STATUS wmi_extract_twt_pause_dialog_comp_event(
  403. wmi_unified_t wmi_handle,
  404. uint8_t *evt_buf,
  405. struct wmi_twt_pause_dialog_complete_event_param *params)
  406. {
  407. if (wmi_handle->ops->extract_twt_pause_dialog_comp_event)
  408. return wmi_handle->ops->extract_twt_pause_dialog_comp_event(
  409. wmi_handle, evt_buf, params);
  410. return QDF_STATUS_E_FAILURE;
  411. }
  412. QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event(
  413. wmi_unified_t wmi_handle,
  414. uint8_t *evt_buf,
  415. struct wmi_twt_nudge_dialog_complete_event_param *params)
  416. {
  417. if (wmi_handle->ops->extract_twt_nudge_dialog_comp_event)
  418. return wmi_handle->ops->extract_twt_nudge_dialog_comp_event(
  419. wmi_handle, evt_buf, params);
  420. return QDF_STATUS_E_FAILURE;
  421. }
  422. QDF_STATUS wmi_extract_twt_resume_dialog_comp_event(
  423. wmi_unified_t wmi_handle,
  424. uint8_t *evt_buf,
  425. struct wmi_twt_resume_dialog_complete_event_param *params)
  426. {
  427. if (wmi_handle->ops->extract_twt_resume_dialog_comp_event)
  428. return wmi_handle->ops->extract_twt_resume_dialog_comp_event(
  429. wmi_handle, evt_buf, params);
  430. return QDF_STATUS_E_FAILURE;
  431. }
  432. QDF_STATUS wmi_extract_twt_notify_event(
  433. wmi_unified_t wmi_handle,
  434. uint8_t *evt_buf,
  435. struct wmi_twt_notify_event_param *params)
  436. {
  437. if (wmi_handle->ops->extract_twt_notify_event)
  438. return wmi_handle->ops->extract_twt_notify_event(wmi_handle,
  439. evt_buf,
  440. params);
  441. return QDF_STATUS_E_FAILURE;
  442. }
  443. #ifdef WLAN_SUPPORT_BCAST_TWT
  444. QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event(
  445. wmi_unified_t wmi_handle,
  446. uint8_t *evt_buf,
  447. struct wmi_twt_btwt_invite_sta_complete_event_param *params)
  448. {
  449. if (wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event)
  450. return wmi_handle->ops->extract_twt_btwt_invite_sta_comp_event(
  451. wmi_handle, evt_buf, params);
  452. return QDF_STATUS_E_FAILURE;
  453. }
  454. QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event(
  455. wmi_unified_t wmi_handle,
  456. uint8_t *evt_buf,
  457. struct wmi_twt_btwt_remove_sta_complete_event_param *params)
  458. {
  459. if (wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event)
  460. return wmi_handle->ops->extract_twt_btwt_remove_sta_comp_event(
  461. wmi_handle, evt_buf, params);
  462. return QDF_STATUS_E_FAILURE;
  463. }
  464. #endif
  465. QDF_STATUS wmi_extract_twt_session_stats_event(
  466. wmi_unified_t wmi_handle,
  467. uint8_t *evt_buf,
  468. struct wmi_twt_session_stats_event_param *params)
  469. {
  470. if (wmi_handle->ops->extract_twt_session_stats_event)
  471. return wmi_handle->ops->extract_twt_session_stats_event(
  472. wmi_handle, evt_buf, params);
  473. return QDF_STATUS_E_FAILURE;
  474. }
  475. QDF_STATUS wmi_extract_twt_session_stats_data(
  476. wmi_unified_t wmi_handle,
  477. uint8_t *evt_buf,
  478. struct wmi_twt_session_stats_event_param *params,
  479. struct wmi_host_twt_session_stats_info *session,
  480. uint32_t idx)
  481. {
  482. if (wmi_handle->ops->extract_twt_session_stats_data)
  483. return wmi_handle->ops->extract_twt_session_stats_data(
  484. wmi_handle, evt_buf, params, session, idx);
  485. return QDF_STATUS_E_FAILURE;
  486. }
  487. QDF_STATUS wmi_extract_twt_cap_service_ready_ext2(
  488. wmi_unified_t wmi_handle,
  489. uint8_t *evt_buf,
  490. struct wmi_twt_cap_bitmap_params *params)
  491. {
  492. if (wmi_handle->ops->extract_twt_cap_service_ready_ext2)
  493. return wmi_handle->ops->extract_twt_cap_service_ready_ext2(
  494. wmi_handle, evt_buf, params);
  495. return QDF_STATUS_E_FAILURE;
  496. }
  497. QDF_STATUS wmi_extract_twt_ack_comp_event(
  498. wmi_unified_t wmi_handle,
  499. uint8_t *evt_buf,
  500. struct wmi_twt_ack_complete_event_param *params)
  501. {
  502. if (wmi_handle->ops->extract_twt_ack_comp_event)
  503. return wmi_handle->ops->extract_twt_ack_comp_event(
  504. wmi_handle, evt_buf, params);
  505. return QDF_STATUS_E_FAILURE;
  506. }
  507. #endif