wlan_mlme_cmn.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  1. /*
  2. * Copyright (c) 2019-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. /**
  17. * DOC: Define Common MLME structure and APIs
  18. */
  19. #ifndef _WLAN_MLME_CMN_H_
  20. #define _WLAN_MLME_CMN_H_
  21. #include <include/wlan_psoc_mlme.h>
  22. #include <include/wlan_pdev_mlme.h>
  23. #include <include/wlan_vdev_mlme.h>
  24. #ifdef FEATURE_CM_ENABLE
  25. #include "wlan_cm_public_struct.h"
  26. #endif
  27. #ifdef FEATURE_CM_ENABLE
  28. /**
  29. * mlme_cm_ops: connection manager osif callbacks
  30. * @mlme_cm_connect_complete_cb: Connect done callback
  31. * @vdev: vdev pointer
  32. * @rsp: connect response
  33. *
  34. * @mlme_cm_failed_candidate_cb: Callback to indicate failed candidate
  35. * @vdev: vdev pointer
  36. * @rsp: connect response
  37. *
  38. * @mlme_cm_update_id_and_src_cb: Callback to update connect id and
  39. * source of the connect request
  40. * @vdev: vdev pointer
  41. * @Source: Source of the connect req
  42. * @cm_id: connection manager id
  43. *
  44. * @mlme_cm_disconnect_complete_cb: Disconnect done callback
  45. * @vdev: vdev pointer
  46. * @rsp: Disconnect response
  47. *
  48. * @mlme_cm_disconnect_start_cb: Disconnect start callback
  49. * @vdev: vdev pointer
  50. *
  51. * @mlme_cm_roam_start_cb: Roam start callback
  52. * @vdev: vdev pointer
  53. *
  54. * @mlme_cm_roam_abort_cb: Roam abort callback
  55. * @vdev: vdev pointer
  56. */
  57. struct mlme_cm_ops {
  58. QDF_STATUS (*mlme_cm_connect_complete_cb)(
  59. struct wlan_objmgr_vdev *vdev,
  60. struct wlan_cm_connect_resp *rsp);
  61. QDF_STATUS (*mlme_cm_failed_candidate_cb)(
  62. struct wlan_objmgr_vdev *vdev,
  63. struct wlan_cm_connect_resp *rsp);
  64. QDF_STATUS (*mlme_cm_update_id_and_src_cb)(
  65. struct wlan_objmgr_vdev *vdev,
  66. enum wlan_cm_source source,
  67. wlan_cm_id cm_id);
  68. QDF_STATUS (*mlme_cm_disconnect_complete_cb)(
  69. struct wlan_objmgr_vdev *vdev,
  70. struct wlan_cm_discon_rsp *rsp);
  71. QDF_STATUS (*mlme_cm_disconnect_start_cb)(
  72. struct wlan_objmgr_vdev *vdev);
  73. #ifdef WLAN_FEATURE_ROAM_OFFLOAD
  74. QDF_STATUS (*mlme_cm_roam_start_cb)(struct wlan_objmgr_vdev *vdev);
  75. QDF_STATUS (*mlme_cm_roam_abort_cb)(struct wlan_objmgr_vdev *vdev);
  76. #endif
  77. };
  78. #endif
  79. /**
  80. * struct vdev_mlme_ext_ops - VDEV MLME legacy callbacks structure
  81. * @mlme_psoc_ext_hdl_create: callback to invoke creation of
  82. * legacy psoc object
  83. * @mlme_psoc_ext_hdl_destroy: callback to invoke destroy of legacy
  84. * psoc object
  85. * @mlme_pdev_ext_hdl_create: callback to invoke creation of
  86. * legacy pdev object
  87. * @mlme_pdev_ext_hdl_destroy: callback to invoke destroy of legacy
  88. * pdev object
  89. * @mlme_vdev_ext_hdl_create: callback to invoke creation of
  90. * legacy vdev object
  91. * @mlme_vdev_ext_hdl_post_create: callback to invoke post creation
  92. * actions of legacy vdev object
  93. * @mlme_vdev_ext_hdl_destroy: callback to invoke destroy of legacy
  94. * vdev object
  95. * @mlme_vdev_start_fw_send: callback to invoke vdev start
  96. * command
  97. * @mlme_vdev_stop_fw_send: callback to invoke vdev stop command
  98. * @mlme_vdev_down_fw_send: callback to invoke vdev down command
  99. * @mlme_multivdev_restart_fw_send: callback to invoke multivdev restart
  100. * command
  101. * @mlme_vdev_enqueue_exp_cmd: callback to enqueue exception
  102. * command
  103. * required by serialization
  104. * @mlme_multi_vdev_restart_resp: callback to process multivdev
  105. * restart response
  106. * @mlme_cm_ext_hdl_create_cb: callback to create ext cm context
  107. * @mlme_cm_ext_hdl_destroy_cb: callback to destroy ext cm context
  108. * @mlme_cm_ext_connect_start_ind_cb: callback to indicate connect start
  109. * @mlme_cm_ext_bss_select_ind_cb: callback to indicate candidate
  110. * select for connect
  111. * @mlme_cm_ext_bss_peer_create_req_cb: callback to bss peer create request
  112. * @mlme_cm_ext_connect_req_cb: callback for connect request to
  113. * VDEV/PEER SM
  114. * @mlme_cm_ext_connect_complete_ind_cb: callback to indicate connect
  115. * complete
  116. * @mlme_cm_ext_disconnect_start_ind_cb : callback to indicate disconnect
  117. * start
  118. * @mlme_cm_ext_disconnect_req_cb: callback to disconnect req to
  119. * VDEV/PEER SM
  120. * @mlme_cm_ext_bss_peer_delete_req_cb: callback to bss peer delete request
  121. * @mlme_cm_ext_disconnect_complete_ind_cb: callback to indicate disconnect
  122. * complete
  123. * @mlme_cm_ext_vdev_down_req_cb: callback to send vdev down to FW
  124. * @mlme_cm_ext_roam_start_ind_cb: callback to indicate roam start
  125. * @mlme_cm_ext_reassoc_req_cb: callback for reassoc request to
  126. * VDEV/PEER SM
  127. */
  128. struct mlme_ext_ops {
  129. QDF_STATUS (*mlme_psoc_ext_hdl_create)(
  130. struct psoc_mlme_obj *psoc_mlme);
  131. QDF_STATUS (*mlme_psoc_ext_hdl_destroy)(
  132. struct psoc_mlme_obj *pdev_mlme);
  133. QDF_STATUS (*mlme_pdev_ext_hdl_create)(
  134. struct pdev_mlme_obj *pdev_mlme);
  135. QDF_STATUS (*mlme_pdev_ext_hdl_destroy)(
  136. struct pdev_mlme_obj *pdev_mlme);
  137. QDF_STATUS (*mlme_vdev_ext_hdl_create)(
  138. struct vdev_mlme_obj *vdev_mlme);
  139. QDF_STATUS (*mlme_vdev_ext_hdl_post_create)(
  140. struct vdev_mlme_obj *vdev_mlme);
  141. QDF_STATUS (*mlme_vdev_ext_hdl_destroy)(
  142. struct vdev_mlme_obj *vdev_mlme);
  143. QDF_STATUS (*mlme_vdev_start_fw_send)(
  144. struct wlan_objmgr_vdev *vdev, uint8_t restart);
  145. QDF_STATUS (*mlme_vdev_stop_fw_send)(struct wlan_objmgr_vdev *vdev);
  146. QDF_STATUS (*mlme_vdev_down_fw_send)(struct wlan_objmgr_vdev *vdev);
  147. QDF_STATUS (*mlme_multivdev_restart_fw_send)(
  148. struct wlan_objmgr_pdev *pdev);
  149. QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)(
  150. struct vdev_mlme_obj *vdev_mlme,
  151. uint8_t cmd_type);
  152. QDF_STATUS (*mlme_vdev_ext_delete_rsp)(
  153. struct wlan_objmgr_psoc *psoc,
  154. struct vdev_delete_response *rsp);
  155. QDF_STATUS (*mlme_multi_vdev_restart_resp)(
  156. struct wlan_objmgr_psoc *psoc,
  157. struct multi_vdev_restart_resp *resp);
  158. #ifdef FEATURE_CM_ENABLE
  159. QDF_STATUS (*mlme_cm_ext_hdl_create_cb)(struct cnx_mgr *cm_ctx);
  160. QDF_STATUS (*mlme_cm_ext_hdl_destroy_cb)(struct cnx_mgr *cm_ctx);
  161. QDF_STATUS (*mlme_cm_ext_connect_start_ind_cb)(
  162. struct wlan_objmgr_vdev *vdev,
  163. struct wlan_cm_connect_req *req);
  164. QDF_STATUS (*mlme_cm_ext_bss_select_ind_cb)(
  165. struct wlan_objmgr_vdev *vdev,
  166. struct wlan_cm_vdev_connect_req *req);
  167. QDF_STATUS (*mlme_cm_ext_bss_peer_create_req_cb)(
  168. struct wlan_objmgr_vdev *vdev,
  169. struct qdf_mac_addr *peer_mac);
  170. QDF_STATUS (*mlme_cm_ext_connect_req_cb)(struct wlan_objmgr_vdev *vdev,
  171. struct wlan_cm_vdev_connect_req *req);
  172. QDF_STATUS (*mlme_cm_ext_connect_complete_ind_cb)(
  173. struct wlan_objmgr_vdev *vdev,
  174. struct wlan_cm_connect_resp *rsp);
  175. QDF_STATUS (*mlme_cm_ext_disconnect_start_ind_cb)(
  176. struct wlan_objmgr_vdev *vdev,
  177. struct wlan_cm_disconnect_req *req);
  178. QDF_STATUS (*mlme_cm_ext_disconnect_req_cb)
  179. (struct wlan_objmgr_vdev *vdev,
  180. struct wlan_cm_vdev_discon_req *req);
  181. QDF_STATUS (*mlme_cm_ext_bss_peer_delete_req_cb)(
  182. struct wlan_objmgr_vdev *vdev);
  183. QDF_STATUS (*mlme_cm_ext_disconnect_complete_ind_cb)(
  184. struct wlan_objmgr_vdev *vdev,
  185. struct wlan_cm_discon_rsp *rsp);
  186. QDF_STATUS (*mlme_cm_ext_vdev_down_req_cb)(
  187. struct wlan_objmgr_vdev *vdev);
  188. QDF_STATUS (*mlme_cm_ext_roam_start_ind_cb)(
  189. struct wlan_objmgr_vdev *vdev,
  190. struct wlan_cm_roam_req *req);
  191. QDF_STATUS (*mlme_cm_ext_reassoc_req_cb)(
  192. struct wlan_objmgr_vdev *vdev,
  193. struct wlan_cm_vdev_reassoc_req *req);
  194. #endif
  195. };
  196. /**
  197. * mlme_psoc_ops_ext_hdl_create() - Alloc PSOC mlme ext handle
  198. * @psoc_mlme: PSOC MLME comp object
  199. *
  200. * API to allocate PSOC MLME ext handle
  201. *
  202. * Return: SUCCESS on successful allocation
  203. * Else FAILURE
  204. */
  205. QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme);
  206. /**
  207. * mlme_psoc_ops_ext_hdl_destroy() - Destroy PSOC mlme ext handle
  208. * @psoc_mlme: PSOC MLME comp object
  209. *
  210. * API to free psoc MLME ext handle
  211. *
  212. * Return: SUCCESS on successful free
  213. * Else FAILURE
  214. */
  215. QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme);
  216. /**
  217. * mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle
  218. * @pdev_mlme_obj: PDEV MLME comp object
  219. *
  220. * API to allocate PDEV MLME ext handle
  221. *
  222. * Return: SUCCESS on successful allocation
  223. * Else FAILURE
  224. */
  225. QDF_STATUS mlme_pdev_ops_ext_hdl_create(struct pdev_mlme_obj *pdev_mlme);
  226. /**
  227. * mlme_pdev_ops_ext_hdl_destroy - Destroy PDEV mlme ext handle
  228. * @pdev_mlme_obj: PDEV MLME comp object
  229. *
  230. * API to free pdev MLME ext handle
  231. *
  232. * Return: SUCCESS on successful free
  233. * Else FAILURE
  234. */
  235. QDF_STATUS mlme_pdev_ops_ext_hdl_destroy(struct pdev_mlme_obj *pdev_mlme);
  236. /**
  237. * mlme_vdev_ops_ext_hdl_create - Alloc VDEV mlme ext handle
  238. * @vdev_mlme_obj: VDEV MLME comp object
  239. *
  240. * API to allocate VDEV MLME ext handle
  241. *
  242. * Return: SUCCESS on successful allocation
  243. * Else FAILURE
  244. */
  245. QDF_STATUS mlme_vdev_ops_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme);
  246. /**
  247. * mlme_vdev_ops_ext_hdl_post_create - Perform post VDEV mlme ext handle alloc
  248. * operations
  249. * @vdev_mlme_obj: VDEV MLME comp object
  250. *
  251. * API to perform post vdev MLME ext handle allocation operations
  252. *
  253. * Return: SUCCESS on initialization successful
  254. * Else FAILURE
  255. */
  256. QDF_STATUS mlme_vdev_ops_ext_hdl_post_create(struct vdev_mlme_obj *vdev_mlme);
  257. /**
  258. * mlme_vdev_ops_ext_hdl_destroy - Destroy VDEV mlme ext handle
  259. * @vdev_mlme_obj: VDEV MLME comp object
  260. *
  261. * API to free vdev MLME ext handle
  262. *
  263. * Return: SUCCESS on successful free
  264. * Else FAILURE
  265. */
  266. QDF_STATUS mlme_vdev_ops_ext_hdl_destroy(struct vdev_mlme_obj *vdev_mlme);
  267. /**
  268. * mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd
  269. * @vdev_mlme_obj: VDEV MLME comp object
  270. * @cmd_type: Serialization command type
  271. *
  272. * API to enqueue the exception serialization command, used by
  273. * mlme-serialization wrapper layer
  274. *
  275. * Return: SUCCESS on successful enqueuing the command
  276. * Else FAILURE
  277. */
  278. QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme,
  279. uint8_t cmd_type);
  280. /**
  281. * mlme_vdev_ops_start_fw_send - Send WMI START/RESTART commmand to FW
  282. * @vdev: VDEV object
  283. *
  284. * API to send WMI start/restart command to FW
  285. *
  286. * Return: SUCCESS on successful sending the command
  287. * Else FAILURE
  288. */
  289. QDF_STATUS mlme_vdev_ops_start_fw_send(struct wlan_objmgr_vdev *vdev,
  290. uint8_t restart);
  291. /**
  292. * mlme_vdev_ops_multivdev_restart_fw_cmd_send - Send WMI Multivdev restart
  293. * commmand to FW
  294. * @pdev: PDEV object
  295. *
  296. * API to send WMI multivdev restart command to FW
  297. *
  298. * Return: SUCCESS on successful sending the command
  299. * Else FAILURE
  300. */
  301. QDF_STATUS mlme_vdev_ops_multivdev_restart_fw_cmd_send(
  302. struct wlan_objmgr_pdev *pdev);
  303. /**
  304. * mlme_vdev_ops_stop_fw_send - Send WMI STOP commmand to FW
  305. * @vdev: VDEV object
  306. *
  307. * API to send WMI stop command to FW
  308. *
  309. * Return: SUCCESS on successful sending the command
  310. * Else FAILURE
  311. */
  312. QDF_STATUS mlme_vdev_ops_stop_fw_send(struct wlan_objmgr_vdev *vdev);
  313. /**
  314. * mlme_vdev_ops_down_fw_send - Send WMI Down commmand to FW
  315. * @vdev: VDEV object
  316. *
  317. * API to send WMI down command to FW
  318. *
  319. * Return: SUCCESS on successful sending the command
  320. * Else FAILURE
  321. */
  322. QDF_STATUS mlme_vdev_ops_down_fw_send(struct wlan_objmgr_vdev *vdev);
  323. /*
  324. * mlme_vdev_ops_ext_hdl_multivdev_restart_resp() - Handler multivdev restart
  325. * response event
  326. * @psoc: PSOC object manager handle
  327. * @resp: Restart response event
  328. *
  329. * Return: Success on successful handling of the response event,
  330. * Else failure
  331. */
  332. QDF_STATUS mlme_vdev_ops_ext_hdl_multivdev_restart_resp(
  333. struct wlan_objmgr_psoc *psoc,
  334. struct multi_vdev_restart_resp *resp);
  335. /**
  336. * mlme_set_ops_register_cb - Sets ops registration callback
  337. * @ops_cb: Function pointer
  338. *
  339. * API to set ops registration call back
  340. *
  341. * Return: void
  342. */
  343. typedef struct mlme_ext_ops *(*mlme_get_global_ops_cb)(void);
  344. void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb);
  345. /**
  346. * wlan_cmn_mlme_init - Initializes MLME component
  347. *
  348. * Registers callbacks with object manager for create/destroy
  349. *
  350. * Return: SUCCESS on successful registration
  351. * FAILURE, if registration fails
  352. */
  353. QDF_STATUS wlan_cmn_mlme_init(void);
  354. /**
  355. * wlan_cmn_mlme_deinit - Uninitializes MLME component
  356. *
  357. * Unregisters callbacks with object manager for create/destroy
  358. *
  359. * Return: SUCCESS on successful registration
  360. * FAILURE, if registration fails
  361. */
  362. QDF_STATUS wlan_cmn_mlme_deinit(void);
  363. /**
  364. * mlme_vdev_ops_ext_hdl_delete_rsp - Vdev Delete response ext handler
  365. * @psoc: PSOC object
  366. * @rsp: Vdev delete response received from the firmware
  367. *
  368. * API to invoke the legacy delete response handler for legacy cleanup
  369. *
  370. * Return: SUCCESS on successful deletion
  371. * FAILURE, if deletion fails
  372. */
  373. QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc,
  374. struct vdev_delete_response *rsp);
  375. #ifdef FEATURE_CM_ENABLE
  376. /**
  377. * mlme_cm_ext_hdl_create() - Connection manager callback to create ext
  378. * context
  379. * @cm_ctx: common cm context object
  380. *
  381. * Return: QDF_STATUS
  382. */
  383. QDF_STATUS mlme_cm_ext_hdl_create(struct cnx_mgr *cm_ctx);
  384. /**
  385. * mlme_cm_ext_hdl_destroy() - Connection manager callback to destroy ext
  386. * context
  387. * @cm_ctx: common cm context object
  388. *
  389. * Return: QDF_STATUS
  390. */
  391. QDF_STATUS mlme_cm_ext_hdl_destroy(struct cnx_mgr *cm_ctx);
  392. /**
  393. * mlme_cm_connect_start_ind() - Connection manager ext Connect start indication
  394. * @vdev: VDEV object
  395. * @req: Connection manager connect request
  396. *
  397. * Return: QDF_STATUS
  398. */
  399. QDF_STATUS mlme_cm_connect_start_ind(struct wlan_objmgr_vdev *vdev,
  400. struct wlan_cm_connect_req *req);
  401. /**
  402. * mlme_cm_bss_select_ind() - Connection manager ext Connect candidate
  403. * select indication, to do operations for the candidate
  404. * @vdev: VDEV object
  405. * @req: Vdev connect request
  406. *
  407. * Return: QDF_STATUS
  408. */
  409. QDF_STATUS mlme_cm_bss_select_ind(struct wlan_objmgr_vdev *vdev,
  410. struct wlan_cm_vdev_connect_req *req);
  411. /**
  412. * mlme_cm_bss_peer_create_req() - Connection manager ext bss peer create
  413. * request
  414. * @vdev: VDEV object
  415. * @peer_mac: Peer mac address
  416. *
  417. * Return: QDF_STATUS
  418. */
  419. QDF_STATUS mlme_cm_bss_peer_create_req(struct wlan_objmgr_vdev *vdev,
  420. struct qdf_mac_addr *peer_mac);
  421. /**
  422. * mlme_cm_connect_req() - Connection manager ext connect request to start vdev
  423. * and peer assoc state machine
  424. * @vdev: VDEV object
  425. * @req: Vdev connect request
  426. *
  427. * Context: The req is on stack, so the API need to make a copy, if it want to
  428. * use the req after return.
  429. *
  430. * Return: QDF_STATUS
  431. */
  432. QDF_STATUS mlme_cm_connect_req(struct wlan_objmgr_vdev *vdev,
  433. struct wlan_cm_vdev_connect_req *req);
  434. /**
  435. * mlme_cm_connect_complete_ind() - Connection manager ext connect complete
  436. * indication
  437. * @vdev: VDEV object
  438. * @rsp: Connection manager connect response
  439. *
  440. * Return: QDF_STATUS
  441. */
  442. QDF_STATUS mlme_cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
  443. struct wlan_cm_connect_resp *rsp);
  444. /**
  445. * mlme_cm_roam_start_ind() - Connection manager ext Connect start indication
  446. * @vdev: VDEV object
  447. * @req: Connection manager roam request
  448. *
  449. * Return: QDF_STATUS
  450. */
  451. QDF_STATUS mlme_cm_roam_start_ind(struct wlan_objmgr_vdev *vdev,
  452. struct wlan_cm_roam_req *req);
  453. /**
  454. * mlme_cm_reassoc_req() - Connection manager ext reassoc request
  455. * @vdev: VDEV object
  456. * @req: Vdev reassoc request
  457. *
  458. * Context: The req is on stack, so the API need to make a copy, if it want to
  459. * use the req after return.
  460. *
  461. * Return: QDF_STATUS
  462. */
  463. QDF_STATUS mlme_cm_reassoc_req(struct wlan_objmgr_vdev *vdev,
  464. struct wlan_cm_vdev_reassoc_req *req);
  465. /**
  466. * mlme_cm_disconnect_start_ind() - Connection manager ext disconnect start
  467. * indication
  468. * @vdev: VDEV object
  469. * @req: Connection manager disconnect request
  470. *
  471. * Return: QDF_STATUS
  472. */
  473. QDF_STATUS mlme_cm_disconnect_start_ind(struct wlan_objmgr_vdev *vdev,
  474. struct wlan_cm_disconnect_req *req);
  475. /**
  476. * mlme_cm_disconnect_req() - Connection manager ext disconnect
  477. * req to vdev and peer sm
  478. * @vdev: VDEV object
  479. * @req: vdev disconnect request
  480. *
  481. * Return: QDF_STATUS
  482. */
  483. QDF_STATUS mlme_cm_disconnect_req(struct wlan_objmgr_vdev *vdev,
  484. struct wlan_cm_vdev_discon_req *req);
  485. /**
  486. * mlme_cm_bss_peer_delete_req() - Connection manager ext bss peer delete
  487. * request
  488. * @vdev: VDEV object
  489. *
  490. * Return: QDF_STATUS
  491. */
  492. QDF_STATUS
  493. mlme_cm_bss_peer_delete_req(struct wlan_objmgr_vdev *vdev);
  494. /**
  495. * mlme_cm_disconnect_complete_ind() - Connection manager ext disconnect
  496. * complete indication
  497. * @vdev: VDEV object
  498. * @rsp: Connection manager disconnect response
  499. *
  500. * Return: QDF_STATUS
  501. */
  502. QDF_STATUS mlme_cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev,
  503. struct wlan_cm_discon_rsp *rsp);
  504. /**
  505. * mlme_cm_vdev_down() - Connection manager ext req to send vdev down to FW
  506. * @vdev: VDEV object
  507. *
  508. * Return: QDF_STATUS
  509. */
  510. QDF_STATUS mlme_cm_vdev_down_req(struct wlan_objmgr_vdev *vdev);
  511. /**
  512. * mlme_cm_osif_connect_complete() - Connect complete resp to osif
  513. * @vdev: vdev pointer
  514. * @rsp: Connect response
  515. *
  516. * Return: QDF_STATUS
  517. */
  518. QDF_STATUS mlme_cm_osif_connect_complete(struct wlan_objmgr_vdev *vdev,
  519. struct wlan_cm_connect_resp *rsp);
  520. /**
  521. * mlme_cm_osif_failed_candidate_ind() - Failed Candidate indication to osif
  522. * @vdev: vdev pointer
  523. * @rsp: Connect response
  524. *
  525. * Return: QDF_STATUS
  526. */
  527. QDF_STATUS
  528. mlme_cm_osif_failed_candidate_ind(struct wlan_objmgr_vdev *vdev,
  529. struct wlan_cm_connect_resp *rsp);
  530. /**
  531. * mlme_cm_osif_update_id_and_src() - Update connection id and source to osif
  532. * @vdev: vdev pointer
  533. * @source: source of request
  534. * @cm_id: connection manager id
  535. *
  536. * Return: QDF_STATUS
  537. */
  538. QDF_STATUS mlme_cm_osif_update_id_and_src(struct wlan_objmgr_vdev *vdev,
  539. enum wlan_cm_source source,
  540. wlan_cm_id cm_id);
  541. /**
  542. * mlme_cm_osif_disconnect_complete() - Disconnect complete osif response
  543. * @vdev: vdev pointer
  544. * @cm_conn_rsp: Connect response
  545. *
  546. * Return: QDF_STATUS
  547. */
  548. QDF_STATUS
  549. mlme_cm_osif_disconnect_complete(struct wlan_objmgr_vdev *vdev,
  550. struct wlan_cm_discon_rsp *rsp);
  551. /**
  552. * mlme_cm_osif_disconnect_start_ind() - osif Disconnect start indication
  553. * @vdev: vdev pointer
  554. * @cm_conn_rsp: Connect response
  555. *
  556. * Return: QDF_STATUS
  557. */
  558. QDF_STATUS mlme_cm_osif_disconnect_start_ind(struct wlan_objmgr_vdev *vdev);
  559. #ifdef WLAN_FEATURE_ROAM_OFFLOAD
  560. /**
  561. * mlme_cm_osif_roam_start_ind() - osif Roam start indication
  562. * @vdev: vdev pointer
  563. *
  564. * Return: QDF_STATUS
  565. */
  566. QDF_STATUS mlme_cm_osif_roam_start_ind(struct wlan_objmgr_vdev *vdev);
  567. /**
  568. * mlme_cm_osif_roam_abort_ind() - osif Roam abort indication
  569. * @vdev: vdev pointer
  570. *
  571. * Return: QDF_STATUS
  572. */
  573. QDF_STATUS mlme_cm_osif_roam_abort_ind(struct wlan_objmgr_vdev *vdev);
  574. #endif
  575. /**
  576. * typedef osif_cm_get_global_ops_cb() - Callback to get connection manager
  577. * global ops
  578. */
  579. typedef struct mlme_cm_ops *(*osif_cm_get_global_ops_cb)(void);
  580. /**
  581. * mlme_set_osif_cm_cb() - Sets ops registration callback
  582. * @cm_osif_ops: Function pointer
  583. *
  584. * API to set ops registration call back
  585. *
  586. * Return: void
  587. */
  588. void mlme_set_osif_cm_cb(osif_cm_get_global_ops_cb cm_osif_ops);
  589. #endif
  590. #endif