wlan_vdev_mlme.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. /*
  2. * Copyright (c) 2018 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: Define VDEV MLME structure and APIs
  20. */
  21. #ifndef _WLAN_VDEV_MLME_H_
  22. #define _WLAN_VDEV_MLME_H_
  23. struct vdev_mlme_obj;
  24. /**
  25. * struct vdev_mlme_proto - VDEV protocol strucutre
  26. */
  27. struct vdev_mlme_proto {
  28. };
  29. /**
  30. * enum beacon_update_op - Beacon update op type
  31. * @BEACON_INIT: Initialize beacon
  32. * @BEACON_REINIT: Re-initialize beacon
  33. * @BEACON_UPDATE: Update dynamic fields of beacon
  34. * @BEACON_CSA: Enable CSA IE
  35. * @BEACON_FREE: Beacon buffer free
  36. */
  37. enum beacon_update_op {
  38. BEACON_INIT,
  39. BEACON_REINIT,
  40. BEACON_UPDATE,
  41. BEACON_CSA,
  42. BEACON_FREE,
  43. };
  44. /**
  45. * enum vdev_cmd_type - Command type
  46. * @START_REQ: Start request
  47. * @RESTART_REQ: Restart request
  48. */
  49. enum vdev_cmd_type {
  50. START_REQ,
  51. RESTART_REQ,
  52. };
  53. /**
  54. * struct vdev_mlme_ops - VDEV MLME operation callbacks strucutre
  55. * @mlme_vdev_validate_basic_params: callback to validate VDEV basic params
  56. * @mlme_vdev_reset_proto_params: callback to Reset protocol params
  57. * @mlme_vdev_start_send: callback to initiate actions of VDEV
  58. * MLME start operation
  59. * @mlme_vdev_restart_send: callback to initiate actions of VDEV
  60. * MLME restart operation
  61. * @mlme_vdev_stop_start_send: callback to block start/restart VDEV
  62. * request command
  63. * @mlme_vdev_start_continue: callback to initiate operations on
  64. * LMAC/FW start response
  65. * @mlme_vdev_up_send: callback to initiate actions of VDEV
  66. * MLME up operation
  67. * @mlme_vdev_notify_up_complete: callback to notify VDEV MLME on moving
  68. * to UP state
  69. * @mlme_vdev_notify_roam_start: callback to initiate roaming
  70. * @mlme_vdev_update_beacon: callback to initiate beacon update
  71. * @mlme_vdev_disconnect_peers: callback to initiate disconnection of
  72. * peers
  73. * @mlme_vdev_dfs_cac_timer_stop: callback to stop the DFS CAC timer
  74. * @mlme_vdev_stop_send: callback to initiate actions of VDEV
  75. * MLME stop operation
  76. * @mlme_vdev_stop_continue: callback to initiate operations on
  77. * LMAC/FW stop response
  78. * @mlme_vdev_bss_peer_delete_continue: callback to initiate operations on BSS
  79. * peer delete completion
  80. * @mlme_vdev_down_send: callback to initiate actions of VDEV
  81. * MLME down operation
  82. * @mlme_vdev_ext_hdl_create: callback to invoke creation of legacy
  83. * vdev object
  84. * @mlme_vdev_ext_hdl_post_create: callback to invoke post creation actions
  85. * of legacy vdev object
  86. * @mlme_vdev_ext_hdl_destroy: callback to invoke destroy of legacy
  87. * vdev object
  88. * @mlme_vdev_enqueue_exp_cmd: callback to enqueue exception command
  89. * required by serialization
  90. */
  91. struct vdev_mlme_ops {
  92. QDF_STATUS (*mlme_vdev_validate_basic_params)(
  93. struct vdev_mlme_obj *vdev_mlme,
  94. uint16_t event_data_len, void *event_data);
  95. QDF_STATUS (*mlme_vdev_reset_proto_params)(
  96. struct vdev_mlme_obj *vdev_mlme,
  97. uint16_t event_data_len, void *event_data);
  98. QDF_STATUS (*mlme_vdev_start_send)(
  99. struct vdev_mlme_obj *vdev_mlme,
  100. uint16_t event_data_len, void *event_data);
  101. QDF_STATUS (*mlme_vdev_restart_send)(
  102. struct vdev_mlme_obj *vdev_mlme,
  103. uint16_t event_data_len, void *event_data);
  104. QDF_STATUS (*mlme_vdev_stop_start_send)(
  105. struct vdev_mlme_obj *vdev_mlme,
  106. enum vdev_cmd_type type,
  107. uint16_t event_data_len, void *event_data);
  108. QDF_STATUS (*mlme_vdev_start_continue)(
  109. struct vdev_mlme_obj *vdev_mlme,
  110. uint16_t event_data_len, void *event_data);
  111. QDF_STATUS (*mlme_vdev_sta_conn_start)(
  112. struct vdev_mlme_obj *vdev_mlme,
  113. uint16_t event_data_len, void *event_data);
  114. QDF_STATUS (*mlme_vdev_start_req_failed)(
  115. struct vdev_mlme_obj *vdev_mlme,
  116. uint16_t event_data_len, void *event_data);
  117. QDF_STATUS (*mlme_vdev_up_send)(
  118. struct vdev_mlme_obj *vdev_mlme,
  119. uint16_t event_data_len, void *event_data);
  120. QDF_STATUS (*mlme_vdev_notify_up_complete)(
  121. struct vdev_mlme_obj *vdev_mlme,
  122. uint16_t event_data_len, void *event_data);
  123. QDF_STATUS (*mlme_vdev_notify_roam_start)(
  124. struct vdev_mlme_obj *vdev_mlme,
  125. uint16_t event_data_len, void *event_data);
  126. QDF_STATUS (*mlme_vdev_update_beacon)(
  127. struct vdev_mlme_obj *vdev_mlme,
  128. enum beacon_update_op op,
  129. uint16_t event_data_len, void *event_data);
  130. QDF_STATUS (*mlme_vdev_disconnect_peers)(
  131. struct vdev_mlme_obj *vdev_mlme,
  132. uint16_t event_data_len, void *event_data);
  133. QDF_STATUS (*mlme_vdev_dfs_cac_timer_stop)(
  134. struct vdev_mlme_obj *vdev_mlme,
  135. uint16_t event_data_len, void *event_data);
  136. QDF_STATUS (*mlme_vdev_stop_send)(
  137. struct vdev_mlme_obj *vdev_mlme,
  138. uint16_t event_data_len, void *event_data);
  139. QDF_STATUS (*mlme_vdev_stop_continue)(
  140. struct vdev_mlme_obj *vdev_mlme,
  141. uint16_t event_data_len, void *event_data);
  142. QDF_STATUS (*mlme_vdev_down_send)(
  143. struct vdev_mlme_obj *vdev_mlme,
  144. uint16_t event_data_len, void *event_data);
  145. QDF_STATUS (*mlme_vdev_notify_down_complete)(
  146. struct vdev_mlme_obj *vdev_mlme,
  147. uint16_t event_data_len, void *event_data);
  148. QDF_STATUS (*mlme_vdev_ext_hdl_create)(
  149. struct vdev_mlme_obj *vdev_mlme);
  150. QDF_STATUS (*mlme_vdev_ext_hdl_post_create)(
  151. struct vdev_mlme_obj *vdev_mlme);
  152. QDF_STATUS (*mlme_vdev_ext_hdl_destroy)(
  153. struct vdev_mlme_obj *vdev_mlme);
  154. QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)(
  155. struct vdev_mlme_obj *vdev_mlme,
  156. uint8_t cmd_type);
  157. };
  158. /**
  159. * struct vdev_mlme_obj - VDEV MLME component object
  160. * @vdev_proto: VDEV MLME proto substructure
  161. * @sm_lock: VDEV SM lock
  162. * @sm_hdl: VDEV SM handle
  163. * @ops: VDEV MLME callback table
  164. * @ext_vdev_ptr: VDEV MLME legacy pointer
  165. */
  166. struct vdev_mlme_obj {
  167. struct vdev_mlme_proto vdev_proto;
  168. #ifdef VDEV_SM_LOCK_SUPPORT
  169. qdf_spinlock_t sm_lock;
  170. #endif
  171. struct wlan_sm *sm_hdl;
  172. struct wlan_objmgr_vdev *vdev;
  173. struct vdev_mlme_ops *ops;
  174. void *ext_vdev_ptr;
  175. };
  176. /**
  177. * mlme_vdev_validate_basic_params - Validate basic params
  178. * @vdev_mlme_obj: VDEV MLME comp object
  179. * @event_data_len: data size
  180. * @event_data: event data
  181. *
  182. * API validate MLME VDEV basic parameters
  183. *
  184. * Return: SUCCESS on successful validation
  185. * FAILURE, if any parameter is not initialized
  186. */
  187. static inline QDF_STATUS mlme_vdev_validate_basic_params(
  188. struct vdev_mlme_obj *vdev_mlme,
  189. uint16_t event_data_len, void *event_data)
  190. {
  191. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  192. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_validate_basic_params)
  193. ret = vdev_mlme->ops->mlme_vdev_validate_basic_params(
  194. vdev_mlme, event_data_len, event_data);
  195. return ret;
  196. }
  197. /**
  198. * mlme_vdev_reset_proto_params - Reset VDEV protocol params
  199. * @vdev_mlme_obj: VDEV MLME comp object
  200. * @event_data_len: data size
  201. * @event_data: event data
  202. *
  203. * API resets the protocol params fo vdev
  204. *
  205. * Return: SUCCESS on successful reset
  206. * FAILURE, if it fails due to any
  207. */
  208. static inline QDF_STATUS mlme_vdev_reset_proto_params(
  209. struct vdev_mlme_obj *vdev_mlme,
  210. uint16_t event_data_len, void *event_data)
  211. {
  212. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  213. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_reset_proto_params)
  214. ret = vdev_mlme->ops->mlme_vdev_reset_proto_params(
  215. vdev_mlme, event_data_len, event_data);
  216. return ret;
  217. }
  218. /**
  219. * mlme_vdev_start_send - Invokes VDEV start operation
  220. * @vdev_mlme_obj: VDEV MLME comp object
  221. * @event_data_len: data size
  222. * @event_data: event data
  223. *
  224. * API invokes VDEV start operation
  225. *
  226. * Return: SUCCESS on successful completion of start operation
  227. * FAILURE, if it fails due to any
  228. */
  229. static inline QDF_STATUS mlme_vdev_start_send(
  230. struct vdev_mlme_obj *vdev_mlme,
  231. uint16_t event_data_len, void *event_data)
  232. {
  233. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  234. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_start_send)
  235. ret = vdev_mlme->ops->mlme_vdev_start_send(
  236. vdev_mlme, event_data_len, event_data);
  237. return ret;
  238. }
  239. /**
  240. * mlme_vdev_restart_send - Invokes VDEV restart operation
  241. * @vdev_mlme_obj: VDEV MLME comp object
  242. * @event_data_len: data size
  243. * @event_data: event data
  244. *
  245. * API invokes VDEV restart operation
  246. *
  247. * Return: SUCCESS on successful completion of restart operation
  248. * FAILURE, if it fails due to any
  249. */
  250. static inline QDF_STATUS mlme_vdev_restart_send(
  251. struct vdev_mlme_obj *vdev_mlme,
  252. uint16_t event_data_len, void *event_data)
  253. {
  254. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  255. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_restart_send)
  256. ret = vdev_mlme->ops->mlme_vdev_restart_send(
  257. vdev_mlme, event_data_len, event_data);
  258. return ret;
  259. }
  260. /**
  261. * mlme_vdev_stop_start_send - Invoke block VDEV restart operation
  262. * @vdev_mlme_obj: VDEV MLME comp object
  263. * @restart: restart req/start req
  264. * @event_data_len: data size
  265. * @event_data: event data
  266. *
  267. * API invokes stops pending VDEV restart operation
  268. *
  269. * Return: SUCCESS alsways
  270. */
  271. static inline QDF_STATUS mlme_vdev_stop_start_send(
  272. struct vdev_mlme_obj *vdev_mlme,
  273. uint8_t restart,
  274. uint16_t event_data_len, void *event_data)
  275. {
  276. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  277. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_start_send)
  278. ret = vdev_mlme->ops->mlme_vdev_stop_start_send(
  279. vdev_mlme, restart, event_data_len, event_data);
  280. return ret;
  281. }
  282. /**
  283. * mlme_vdev_start_continue - VDEV start response handling
  284. * @vdev_mlme_obj: VDEV MLME comp object
  285. * @event_data_len: data size
  286. * @event_data: event data
  287. *
  288. * API invokes VDEV start response actions
  289. *
  290. * Return: SUCCESS on successful completion of start response operation
  291. * FAILURE, if it fails due to any
  292. */
  293. static inline QDF_STATUS mlme_vdev_start_continue(
  294. struct vdev_mlme_obj *vdev_mlme,
  295. uint16_t event_data_len, void *event_data)
  296. {
  297. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  298. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_start_continue)
  299. ret = vdev_mlme->ops->mlme_vdev_start_continue(
  300. vdev_mlme, event_data_len, event_data);
  301. return ret;
  302. }
  303. /**
  304. * mlme_vdev_start_req_failed - Invoke Station VDEV connection, if it pause
  305. * @vdev_mlme_obj: VDEV MLME comp object
  306. * @event_data_len: data size
  307. * @event_data: event data
  308. *
  309. * API invokes on START fail response
  310. *
  311. * Return: SUCCESS on successful invocation of callback
  312. * FAILURE, if it fails due to any
  313. */
  314. static inline QDF_STATUS mlme_vdev_start_req_failed(
  315. struct vdev_mlme_obj *vdev_mlme,
  316. uint16_t event_data_len, void *event_data)
  317. {
  318. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  319. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_start_req_failed)
  320. ret = vdev_mlme->ops->mlme_vdev_start_req_failed(
  321. vdev_mlme, event_data_len, event_data);
  322. return ret;
  323. }
  324. /**
  325. * mlme_vdev_sta_conn_start - Invoke Station VDEV connection, if it pause
  326. * @vdev_mlme_obj: VDEV MLME comp object
  327. * @event_data_len: data size
  328. * @event_data: event data
  329. *
  330. * API invokes connection SM to start station connection
  331. *
  332. * Return: SUCCESS on successful invocation of connection sm
  333. * FAILURE, if it fails due to any
  334. */
  335. static inline QDF_STATUS mlme_vdev_sta_conn_start(
  336. struct vdev_mlme_obj *vdev_mlme,
  337. uint16_t event_data_len, void *event_data)
  338. {
  339. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  340. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_sta_conn_start)
  341. ret = vdev_mlme->ops->mlme_vdev_sta_conn_start(
  342. vdev_mlme, event_data_len, event_data);
  343. return ret;
  344. }
  345. /**
  346. * mlme_vdev_up_send - VDEV up operation
  347. * @vdev_mlme_obj: VDEV MLME comp object
  348. * @event_data_len: data size
  349. * @event_data: event data
  350. *
  351. * API invokes VDEV up operations
  352. *
  353. * Return: SUCCESS on successful completion of up operation
  354. * FAILURE, if it fails due to any
  355. */
  356. static inline QDF_STATUS mlme_vdev_up_send(
  357. struct vdev_mlme_obj *vdev_mlme,
  358. uint16_t event_data_len, void *event_data)
  359. {
  360. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  361. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_up_send)
  362. ret = vdev_mlme->ops->mlme_vdev_up_send(
  363. vdev_mlme, event_data_len, event_data);
  364. return ret;
  365. }
  366. /**
  367. * mlme_vdev_notify_up_complete - VDEV up state transition notification
  368. * @vdev_mlme_obj: VDEV MLME comp object
  369. * @event_data_len: data size
  370. * @event_data: event data
  371. *
  372. * API notifies MLME on moving to UP state
  373. *
  374. * Return: SUCCESS on successful completion of up notification
  375. * FAILURE, if it fails due to any
  376. */
  377. static inline
  378. QDF_STATUS mlme_vdev_notify_up_complete(struct vdev_mlme_obj *vdev_mlme,
  379. uint16_t event_data_len, void *event_data)
  380. {
  381. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  382. if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_notify_up_complete)
  383. ret = vdev_mlme->ops->mlme_vdev_notify_up_complete(
  384. vdev_mlme, event_data_len, event_data);
  385. return ret;
  386. }
  387. /**
  388. * mlme_vdev_notify_roam_start - VDEV Roaming notification
  389. * @vdev_mlme_obj: VDEV MLME comp object
  390. * @event_len: data size
  391. * @event_data: event data
  392. *
  393. * API notifies MLME on roaming
  394. *
  395. * Return: SUCCESS on successful completion of up notification
  396. * FAILURE, if it fails due to any
  397. */
  398. static inline
  399. QDF_STATUS mlme_vdev_notify_roam_start(struct vdev_mlme_obj *vdev_mlme,
  400. uint16_t event_len, void *event_data)
  401. {
  402. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  403. if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_notify_roam_start)
  404. ret = vdev_mlme->ops->mlme_vdev_notify_roam_start(vdev_mlme,
  405. event_len,
  406. event_data);
  407. return ret;
  408. }
  409. /**
  410. * mlme_vdev_update_beacon - Updates beacon
  411. * @vdev_mlme_obj: VDEV MLME comp object
  412. * @op: beacon update type
  413. * @event_data_len: data size
  414. * @event_data: event data
  415. *
  416. * API updates/allocates/frees the beacon
  417. *
  418. * Return: SUCCESS on successful update of beacon
  419. * FAILURE, if it fails due to any
  420. */
  421. static inline
  422. QDF_STATUS mlme_vdev_update_beacon(struct vdev_mlme_obj *vdev_mlme,
  423. enum beacon_update_op op,
  424. uint16_t event_data_len, void *event_data)
  425. {
  426. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  427. if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_update_beacon)
  428. ret = vdev_mlme->ops->mlme_vdev_update_beacon(vdev_mlme, op,
  429. event_data_len, event_data);
  430. return ret;
  431. }
  432. /**
  433. * mlme_vdev_disconnect_peers - Disconnect peers
  434. * @vdev_mlme_obj: VDEV MLME comp object
  435. * @event_data_len: data size
  436. * @event_data: event data
  437. *
  438. * API trigger stations disconnection with AP VDEV or AP disconnection with STA
  439. * VDEV
  440. *
  441. * Return: SUCCESS on successful invocation of station disconnection
  442. * FAILURE, if it fails due to any
  443. */
  444. static inline QDF_STATUS mlme_vdev_disconnect_peers(
  445. struct vdev_mlme_obj *vdev_mlme,
  446. uint16_t event_data_len, void *event_data)
  447. {
  448. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  449. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_disconnect_peers)
  450. ret = vdev_mlme->ops->mlme_vdev_disconnect_peers(
  451. vdev_mlme, event_data_len, event_data);
  452. return ret;
  453. }
  454. /**
  455. * mlme_vdev_dfs_cac_timer_stop - Stop CAC timer
  456. * @vdev_mlme_obj: VDEV MLME comp object
  457. * @event_data_len: data size
  458. * @event_data: event data
  459. *
  460. * API stops the CAC timer through DFS API
  461. *
  462. * Return: SUCCESS on successful CAC timer stop
  463. * FAILURE, if it fails due to any
  464. */
  465. static inline QDF_STATUS mlme_vdev_dfs_cac_timer_stop(
  466. struct vdev_mlme_obj *vdev_mlme,
  467. uint16_t event_data_len, void *event_data)
  468. {
  469. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  470. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_dfs_cac_timer_stop)
  471. ret = vdev_mlme->ops->mlme_vdev_dfs_cac_timer_stop(
  472. vdev_mlme, event_data_len, event_data);
  473. return ret;
  474. }
  475. /**
  476. * mlme_vdev_stop_send - Invokes VDEV stop operation
  477. * @vdev_mlme_obj: VDEV MLME comp object
  478. * @event_data_len: data size
  479. * @event_data: event data
  480. *
  481. * API invokes VDEV stop operation
  482. *
  483. * Return: SUCCESS on successful completion of stop operation
  484. * FAILURE, if it fails due to any
  485. */
  486. static inline QDF_STATUS mlme_vdev_stop_send(
  487. struct vdev_mlme_obj *vdev_mlme,
  488. uint16_t event_data_len, void *event_data)
  489. {
  490. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  491. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_send)
  492. ret = vdev_mlme->ops->mlme_vdev_stop_send(
  493. vdev_mlme, event_data_len, event_data);
  494. return ret;
  495. }
  496. /**
  497. * mlme_vdev_stop_continue - VDEV stop response handling
  498. * @vdev_mlme_obj: VDEV MLME comp object
  499. * @event_data_len: data size
  500. * @event_data: event data
  501. *
  502. * API invokes VDEV stop response actions
  503. *
  504. * Return: SUCCESS on successful completion of stop response operation
  505. * FAILURE, if it fails due to any
  506. */
  507. static inline QDF_STATUS mlme_vdev_stop_continue(
  508. struct vdev_mlme_obj *vdev_mlme,
  509. uint16_t event_data_len, void *event_data)
  510. {
  511. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  512. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_continue)
  513. ret = vdev_mlme->ops->mlme_vdev_stop_continue(vdev_mlme,
  514. event_data_len,
  515. event_data);
  516. return ret;
  517. }
  518. /**
  519. * mlme_vdev_down_send - VDEV down operation
  520. * @vdev_mlme_obj: VDEV MLME comp object
  521. * @event_data_len: data size
  522. * @event_data: event data
  523. *
  524. * API invokes VDEV down operation
  525. *
  526. * Return: SUCCESS on successful completion of VDEV down operation
  527. * FAILURE, if it fails due to any
  528. */
  529. static inline QDF_STATUS mlme_vdev_down_send(
  530. struct vdev_mlme_obj *vdev_mlme,
  531. uint16_t event_data_len, void *event_data)
  532. {
  533. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  534. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_down_send)
  535. ret = vdev_mlme->ops->mlme_vdev_down_send(
  536. vdev_mlme, event_data_len, event_data);
  537. return ret;
  538. }
  539. /**
  540. * mlme_vdev_notify_down_complete - VDEV init state transition notification
  541. * @vdev_mlme_obj: VDEV MLME comp object
  542. * @event_data_len: data size
  543. * @event_data: event data
  544. *
  545. * API notifies MLME on moving to INIT state
  546. *
  547. * Return: SUCCESS on successful completion of down notification
  548. * FAILURE, if it fails due to any
  549. */
  550. static inline QDF_STATUS mlme_vdev_notify_down_complete(
  551. struct vdev_mlme_obj *vdev_mlme,
  552. uint16_t event_data_len, void *event_data)
  553. {
  554. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  555. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_notify_down_complete)
  556. ret = vdev_mlme->ops->mlme_vdev_notify_down_complete(
  557. vdev_mlme, event_data_len, event_data);
  558. return ret;
  559. }
  560. /**
  561. * mlme_vdev_ext_hdl_create - VDEV legacy pointer allocation
  562. * @vdev_mlme_obj: VDEV MLME comp object
  563. *
  564. * API invokes legacy pointer allocation and initialization
  565. *
  566. * Return: SUCCESS on successful creation of legacy handle
  567. * FAILURE, if it fails due to any
  568. */
  569. static inline QDF_STATUS mlme_vdev_ext_hdl_create(
  570. struct vdev_mlme_obj *vdev_mlme)
  571. {
  572. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  573. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_ext_hdl_create)
  574. ret = vdev_mlme->ops->mlme_vdev_ext_hdl_create(vdev_mlme);
  575. return ret;
  576. }
  577. /**
  578. * mlme_vdev_ext_hdl_post_create - VDEV post legacy pointer allocation
  579. * @vdev_mlme_obj: VDEV MLME comp object
  580. *
  581. * API invokes post legacy pointer allocation operation
  582. *
  583. * Return: SUCCESS on successful creation of legacy handle
  584. * FAILURE, if it fails due to any
  585. */
  586. static inline QDF_STATUS mlme_vdev_ext_hdl_post_create(
  587. struct vdev_mlme_obj *vdev_mlme)
  588. {
  589. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  590. if ((vdev_mlme->ops) &&
  591. vdev_mlme->ops->mlme_vdev_ext_hdl_post_create)
  592. ret = vdev_mlme->ops->mlme_vdev_ext_hdl_post_create(
  593. vdev_mlme);
  594. return ret;
  595. }
  596. /**
  597. * mlme_vdev_ext_hdl_destroy - VDEV legacy pointer free
  598. * @vdev_mlme_obj: VDEV MLME comp object
  599. *
  600. * API invokes legacy pointer free
  601. *
  602. * Return: SUCCESS on successful free of legacy handle
  603. * FAILURE, if it fails due to any
  604. */
  605. static inline QDF_STATUS mlme_vdev_ext_hdl_destroy(
  606. struct vdev_mlme_obj *vdev_mlme)
  607. {
  608. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  609. if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_ext_hdl_destroy)
  610. ret = vdev_mlme->ops->mlme_vdev_ext_hdl_destroy(vdev_mlme);
  611. return ret;
  612. }
  613. /**
  614. * mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd
  615. * @vdev_mlme_obj: VDEV MLME comp object
  616. * @cmd_type: Serialization command type
  617. *
  618. * API to enqueue the exception serialization command, used by
  619. * mlme-serialization wrapper layer
  620. *
  621. * Return: SUCCESS on successful enqueuing the command
  622. * Else FAILURE
  623. */
  624. static inline QDF_STATUS
  625. mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme,
  626. uint8_t cmd_type)
  627. {
  628. QDF_STATUS ret = QDF_STATUS_SUCCESS;
  629. if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_enqueue_exp_cmd)
  630. ret = vdev_mlme->ops->mlme_vdev_enqueue_exp_cmd(vdev_mlme,
  631. cmd_type);
  632. return ret;
  633. }
  634. #endif