wmi_unified_roam_api.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. /*
  2. * Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #include <osdep.h>
  17. #include <wmi.h>
  18. #include <wmi_unified_priv.h>
  19. #include <wmi_unified_roam_param.h>
  20. #include <wmi_unified_roam_api.h>
  21. #ifdef FEATURE_LFR_SUBNET_DETECTION
  22. QDF_STATUS
  23. wmi_unified_set_gateway_params_cmd(wmi_unified_t wmi_handle,
  24. struct gateway_update_req_param *req)
  25. {
  26. if (wmi_handle->ops->send_set_gateway_params_cmd)
  27. return wmi_handle->ops->send_set_gateway_params_cmd(wmi_handle,
  28. req);
  29. return QDF_STATUS_E_FAILURE;
  30. }
  31. #endif /* FEATURE_LFR_SUBNET_DETECTION */
  32. #ifdef FEATURE_RSSI_MONITOR
  33. QDF_STATUS
  34. wmi_unified_set_rssi_monitoring_cmd(wmi_unified_t wmi_handle,
  35. struct rssi_monitor_param *req)
  36. {
  37. if (wmi_handle->ops->send_set_rssi_monitoring_cmd)
  38. return wmi_handle->ops->send_set_rssi_monitoring_cmd(wmi_handle,
  39. req);
  40. return QDF_STATUS_E_FAILURE;
  41. }
  42. #endif /* FEATURE_RSSI_MONITOR */
  43. QDF_STATUS wmi_unified_roam_scan_offload_rssi_thresh_cmd(
  44. wmi_unified_t wmi_handle,
  45. struct wlan_roam_offload_scan_rssi_params *roam_req)
  46. {
  47. if (wmi_handle->ops->send_roam_scan_offload_rssi_thresh_cmd)
  48. return wmi_handle->ops->send_roam_scan_offload_rssi_thresh_cmd(
  49. wmi_handle, roam_req);
  50. return QDF_STATUS_E_FAILURE;
  51. }
  52. QDF_STATUS
  53. wmi_unified_roam_scan_offload_scan_period(
  54. wmi_unified_t wmi_handle,
  55. struct wlan_roam_scan_period_params *param)
  56. {
  57. if (wmi_handle->ops->send_roam_scan_offload_scan_period_cmd)
  58. return wmi_handle->ops->send_roam_scan_offload_scan_period_cmd(
  59. wmi_handle, param);
  60. return QDF_STATUS_E_FAILURE;
  61. }
  62. QDF_STATUS wmi_unified_roam_mawc_params_cmd(
  63. wmi_unified_t wmi_handle,
  64. struct wlan_roam_mawc_params *params)
  65. {
  66. if (wmi_handle->ops->send_roam_mawc_params_cmd)
  67. return wmi_handle->ops->send_roam_mawc_params_cmd(wmi_handle,
  68. params);
  69. return QDF_STATUS_E_FAILURE;
  70. }
  71. QDF_STATUS
  72. wmi_unified_roam_scan_filter_cmd(wmi_unified_t wmi_handle,
  73. struct roam_scan_filter_params *roam_req)
  74. {
  75. if (wmi_handle->ops->send_roam_scan_filter_cmd)
  76. return wmi_handle->ops->send_roam_scan_filter_cmd(wmi_handle,
  77. roam_req);
  78. return QDF_STATUS_E_FAILURE;
  79. }
  80. #ifdef FEATURE_WLAN_ESE
  81. QDF_STATUS wmi_unified_plm_stop_cmd(wmi_unified_t wmi_handle,
  82. const struct plm_req_params *plm)
  83. {
  84. if (wmi_handle->ops->send_plm_stop_cmd)
  85. return wmi_handle->ops->send_plm_stop_cmd(wmi_handle, plm);
  86. return QDF_STATUS_E_FAILURE;
  87. }
  88. QDF_STATUS wmi_unified_plm_start_cmd(wmi_unified_t wmi_handle,
  89. const struct plm_req_params *plm)
  90. {
  91. if (wmi_handle->ops->send_plm_start_cmd)
  92. return wmi_handle->ops->send_plm_start_cmd(wmi_handle, plm);
  93. return QDF_STATUS_E_FAILURE;
  94. }
  95. #endif /* FEATURE_WLAN_ESE */
  96. #ifdef WLAN_FEATURE_ROAM_OFFLOAD
  97. QDF_STATUS wmi_unified_set_ric_req_cmd(wmi_unified_t wmi_handle, void *msg,
  98. uint8_t is_add_ts)
  99. {
  100. if (wmi_handle->ops->send_set_ric_req_cmd)
  101. return wmi_handle->ops->send_set_ric_req_cmd(wmi_handle, msg,
  102. is_add_ts);
  103. return QDF_STATUS_E_FAILURE;
  104. }
  105. QDF_STATUS wmi_unified_roam_synch_complete_cmd(wmi_unified_t wmi_handle,
  106. uint8_t vdev_id)
  107. {
  108. if (wmi_handle->ops->send_process_roam_synch_complete_cmd)
  109. return wmi_handle->ops->send_process_roam_synch_complete_cmd(
  110. wmi_handle, vdev_id);
  111. return QDF_STATUS_E_FAILURE;
  112. }
  113. QDF_STATUS wmi_unified_roam_invoke_cmd(wmi_unified_t wmi_handle,
  114. struct roam_invoke_req *roaminvoke)
  115. {
  116. if (wmi_handle->ops->send_roam_invoke_cmd)
  117. return wmi_handle->ops->send_roam_invoke_cmd(wmi_handle,
  118. roaminvoke);
  119. return QDF_STATUS_E_FAILURE;
  120. }
  121. QDF_STATUS
  122. wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
  123. struct wlan_roam_disconnect_params *req)
  124. {
  125. if (wmi_handle->ops->send_disconnect_roam_params)
  126. return wmi_handle->ops->send_disconnect_roam_params(wmi_handle,
  127. req);
  128. return QDF_STATUS_E_FAILURE;
  129. }
  130. QDF_STATUS
  131. wmi_unified_send_idle_roam_params(wmi_unified_t wmi_handle,
  132. struct wlan_roam_idle_params *req)
  133. {
  134. if (wmi_handle->ops->send_idle_roam_params)
  135. return wmi_handle->ops->send_idle_roam_params(wmi_handle,
  136. req);
  137. return QDF_STATUS_E_FAILURE;
  138. }
  139. QDF_STATUS
  140. wmi_unified_send_roam_preauth_status(wmi_unified_t wmi_handle,
  141. struct wmi_roam_auth_status_params *params)
  142. {
  143. if (wmi_handle->ops->send_roam_preauth_status)
  144. return wmi_handle->ops->send_roam_preauth_status(wmi_handle,
  145. params);
  146. return QDF_STATUS_E_FAILURE;
  147. }
  148. QDF_STATUS wmi_unified_vdev_set_pcl_cmd(wmi_unified_t wmi_handle,
  149. struct set_pcl_cmd_params *params)
  150. {
  151. if (wmi_handle->ops->send_vdev_set_pcl_cmd)
  152. return wmi_handle->ops->send_vdev_set_pcl_cmd(wmi_handle,
  153. params);
  154. return QDF_STATUS_E_FAILURE;
  155. }
  156. #endif /* WLAN_FEATURE_ROAM_OFFLOAD */
  157. QDF_STATUS wmi_unified_roam_scan_offload_mode_cmd(
  158. wmi_unified_t wmi_handle,
  159. struct wlan_roam_scan_offload_params *rso_cfg)
  160. {
  161. if (wmi_handle->ops->send_roam_scan_offload_mode_cmd)
  162. return wmi_handle->ops->send_roam_scan_offload_mode_cmd(
  163. wmi_handle, rso_cfg);
  164. return QDF_STATUS_E_FAILURE;
  165. }
  166. QDF_STATUS wmi_unified_send_roam_scan_offload_ap_cmd(
  167. wmi_unified_t wmi_handle,
  168. struct ap_profile_params *ap_profile)
  169. {
  170. if (wmi_handle->ops->send_roam_scan_offload_ap_profile_cmd)
  171. return wmi_handle->ops->send_roam_scan_offload_ap_profile_cmd(
  172. wmi_handle, ap_profile);
  173. return QDF_STATUS_E_FAILURE;
  174. }
  175. QDF_STATUS wmi_unified_roam_scan_offload_cmd(wmi_unified_t wmi_handle,
  176. uint32_t command,
  177. uint32_t vdev_id)
  178. {
  179. if (wmi_handle->ops->send_roam_scan_offload_cmd)
  180. return wmi_handle->ops->send_roam_scan_offload_cmd(wmi_handle,
  181. command,
  182. vdev_id);
  183. return QDF_STATUS_E_FAILURE;
  184. }
  185. QDF_STATUS
  186. wmi_unified_roam_scan_offload_chan_list_cmd(
  187. wmi_unified_t wmi_handle,
  188. struct wlan_roam_scan_channel_list *rso_ch_info)
  189. {
  190. if (wmi_handle->ops->send_roam_scan_offload_chan_list_cmd)
  191. return wmi_handle->ops->send_roam_scan_offload_chan_list_cmd(
  192. wmi_handle, rso_ch_info);
  193. return QDF_STATUS_E_FAILURE;
  194. }
  195. QDF_STATUS wmi_unified_roam_scan_offload_rssi_change_cmd(
  196. wmi_unified_t wmi_handle,
  197. struct wlan_roam_rssi_change_params *params)
  198. {
  199. if (wmi_handle->ops->send_roam_scan_offload_rssi_change_cmd)
  200. return wmi_handle->ops->send_roam_scan_offload_rssi_change_cmd(
  201. wmi_handle, params);
  202. return QDF_STATUS_E_FAILURE;
  203. }
  204. QDF_STATUS
  205. wmi_unified_set_per_roam_config(wmi_unified_t wmi_handle,
  206. struct wlan_per_roam_config_req *req_buf)
  207. {
  208. if (wmi_handle->ops->send_per_roam_config_cmd)
  209. return wmi_handle->ops->send_per_roam_config_cmd(wmi_handle,
  210. req_buf);
  211. return QDF_STATUS_E_FAILURE;
  212. }
  213. QDF_STATUS wmi_unified_send_limit_off_chan_cmd(
  214. wmi_unified_t wmi_handle,
  215. struct wmi_limit_off_chan_param *limit_off_chan_param)
  216. {
  217. if (wmi_handle->ops->send_limit_off_chan_cmd)
  218. return wmi_handle->ops->send_limit_off_chan_cmd(wmi_handle,
  219. limit_off_chan_param);
  220. return QDF_STATUS_E_FAILURE;
  221. }
  222. #ifdef WLAN_FEATURE_FILS_SK
  223. QDF_STATUS wmi_unified_roam_send_hlp_cmd(wmi_unified_t wmi_handle,
  224. struct hlp_params *req_buf)
  225. {
  226. if (wmi_handle->ops->send_roam_scan_hlp_cmd)
  227. return wmi_handle->ops->send_roam_scan_hlp_cmd(wmi_handle,
  228. req_buf);
  229. return QDF_STATUS_E_FAILURE;
  230. }
  231. #endif /* WLAN_FEATURE_FILS_SK */
  232. QDF_STATUS wmi_unified_send_btm_config(wmi_unified_t wmi_handle,
  233. struct wlan_roam_btm_config *params)
  234. {
  235. if (wmi_handle->ops->send_btm_config)
  236. return wmi_handle->ops->send_btm_config(wmi_handle,
  237. params);
  238. return QDF_STATUS_E_FAILURE;
  239. }
  240. QDF_STATUS wmi_unified_send_bss_load_config(
  241. wmi_unified_t wmi_handle,
  242. struct wlan_roam_bss_load_config *params)
  243. {
  244. if (wmi_handle->ops->send_roam_bss_load_config)
  245. return wmi_handle->ops->send_roam_bss_load_config(wmi_handle,
  246. params);
  247. return QDF_STATUS_E_FAILURE;
  248. }
  249. QDF_STATUS
  250. wmi_unified_offload_11k_cmd(wmi_unified_t wmi_handle,
  251. struct wlan_roam_11k_offload_params *params)
  252. {
  253. if (wmi_handle->ops->send_offload_11k_cmd)
  254. return wmi_handle->ops->send_offload_11k_cmd(wmi_handle,
  255. params);
  256. return QDF_STATUS_E_FAILURE;
  257. }
  258. QDF_STATUS wmi_unified_invoke_neighbor_report_cmd(
  259. wmi_unified_t wmi_handle,
  260. struct wmi_invoke_neighbor_report_params *params)
  261. {
  262. if (wmi_handle->ops->send_invoke_neighbor_report_cmd)
  263. return wmi_handle->ops->send_invoke_neighbor_report_cmd(
  264. wmi_handle, params);
  265. return QDF_STATUS_E_FAILURE;
  266. }
  267. QDF_STATUS wmi_unified_get_roam_scan_ch_list(wmi_unified_t wmi_handle,
  268. uint8_t vdev_id)
  269. {
  270. if (wmi_handle->ops->send_roam_scan_ch_list_req_cmd)
  271. return wmi_handle->ops->send_roam_scan_ch_list_req_cmd(
  272. wmi_handle, vdev_id);
  273. return QDF_STATUS_E_FAILURE;
  274. }
  275. #ifdef WLAN_FEATURE_ROAM_OFFLOAD
  276. QDF_STATUS wmi_unified_set_roam_triggers(wmi_unified_t wmi_handle,
  277. struct wlan_roam_triggers *triggers)
  278. {
  279. if (wmi_handle->ops->send_set_roam_trigger_cmd)
  280. return wmi_handle->ops->send_set_roam_trigger_cmd(wmi_handle,
  281. triggers);
  282. return QDF_STATUS_E_FAILURE;
  283. }
  284. #ifdef ROAM_TARGET_IF_CONVERGENCE
  285. QDF_STATUS wmi_extract_roam_sync_event(wmi_unified_t wmi_handle, void *evt_buf,
  286. uint32_t len,
  287. struct roam_offload_synch_ind **sync_ind)
  288. {
  289. if (wmi_handle->ops->extract_roam_sync_event)
  290. return wmi_handle->ops->extract_roam_sync_event(wmi_handle,
  291. evt_buf,
  292. len,
  293. sync_ind);
  294. return QDF_STATUS_E_FAILURE;
  295. }
  296. QDF_STATUS
  297. wmi_extract_roam_sync_frame_event(wmi_unified_t wmi_handle, void *event,
  298. uint32_t len,
  299. struct roam_synch_frame_ind *frame_ptr)
  300. {
  301. if (wmi_handle->ops->extract_roam_sync_frame_event)
  302. return wmi_handle->ops->extract_roam_sync_frame_event(wmi_handle,
  303. event,
  304. len,
  305. frame_ptr);
  306. return QDF_STATUS_E_FAILURE;
  307. }
  308. QDF_STATUS
  309. wmi_extract_roam_event(wmi_unified_t wmi_handle, uint8_t *event,
  310. uint32_t data_len,
  311. struct roam_offload_roam_event *roam_event)
  312. {
  313. if (wmi_handle->ops->extract_roam_event)
  314. return wmi_handle->ops->extract_roam_event(wmi_handle, event,
  315. data_len,
  316. roam_event);
  317. return QDF_STATUS_E_FAILURE;
  318. }
  319. QDF_STATUS
  320. wmi_extract_btm_blacklist_event(wmi_unified_t wmi_handle,
  321. uint8_t *event, uint32_t data_len,
  322. struct roam_blacklist_event **dst_list)
  323. {
  324. if (wmi_handle->ops->extract_btm_bl_event)
  325. return wmi_handle->ops->extract_btm_bl_event(wmi_handle,
  326. event,
  327. data_len,
  328. dst_list);
  329. return QDF_STATUS_E_FAILURE;
  330. }
  331. QDF_STATUS
  332. wmi_extract_vdev_disconnect_event(wmi_unified_t wmi_handle,
  333. uint8_t *event, uint32_t data_len,
  334. struct vdev_disconnect_event_data *data)
  335. {
  336. if (wmi_handle->ops->extract_vdev_disconnect_event)
  337. return wmi_handle->ops->extract_vdev_disconnect_event(
  338. wmi_handle, event, data_len, data);
  339. return QDF_STATUS_E_FAILURE;
  340. }
  341. QDF_STATUS
  342. wmi_extract_roam_scan_chan_list(wmi_unified_t wmi_handle,
  343. uint8_t *event, uint32_t data_len,
  344. struct cm_roam_scan_ch_resp **data)
  345. {
  346. if (wmi_handle->ops->extract_roam_scan_chan_list)
  347. return wmi_handle->ops->extract_roam_scan_chan_list(
  348. wmi_handle, event, data_len, data);
  349. return QDF_STATUS_E_FAILURE;
  350. }
  351. #endif /* ROAM_TARGET_IF_CONVERGENCE */
  352. #endif