wlan_pmo_ucfg_api.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059
  1. /*
  2. * Copyright (c) 2017-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: Declare public API related to the pmo called by north bound HDD/OSIF
  20. */
  21. #ifndef _WLAN_PMO_UCFG_API_H_
  22. #define _WLAN_PMO_UCFG_API_H_
  23. #include "wlan_pmo_arp_public_struct.h"
  24. #include "wlan_pmo_ns_public_struct.h"
  25. #include "wlan_pmo_gtk_public_struct.h"
  26. #include "wlan_pmo_mc_addr_filtering.h"
  27. #include "wlan_pmo_mc_addr_filtering_public_struct.h"
  28. #include "wlan_pmo_wow_public_struct.h"
  29. #include "wlan_pmo_common_public_struct.h"
  30. #include "wlan_pmo_obj_mgmt_api.h"
  31. #include "wlan_pmo_pkt_filter_public_struct.h"
  32. #include "wlan_pmo_hw_filter_public_struct.h"
  33. #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
  34. /**
  35. * ucfg_pmo_get_apf_instruction_size() - get the current APF instruction size
  36. * @psoc: the psoc to query
  37. *
  38. * Return: APF instruction size
  39. */
  40. uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc);
  41. /**
  42. * ucfg_pmo_get_num_packet_filters() - get the number of packet filters
  43. * @psoc: the psoc to query
  44. *
  45. * Return: number of packet filters
  46. */
  47. uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc);
  48. /**
  49. * ucfg_pmo_get_num_wow_filters() - get the supported number of WoW filters
  50. * @psoc: the psoc to query
  51. *
  52. * Return: number of WoW filters supported
  53. */
  54. uint8_t ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc);
  55. /**
  56. * ucfg_pmo_is_ap_mode_supports_arp_ns() - Check ap mode support arp&ns offload
  57. * @psoc: objmgr psoc
  58. * @vdev_opmode: vdev opmode
  59. *
  60. * Return: true in case support else false
  61. */
  62. bool ucfg_pmo_is_ap_mode_supports_arp_ns(struct wlan_objmgr_psoc *psoc,
  63. enum QDF_OPMODE vdev_opmode);
  64. /**
  65. * ucfg_pmo_is_vdev_connected() - to check whether peer is associated or not
  66. * @vdev: objmgr vdev
  67. *
  68. * Return: true in case success else false
  69. */
  70. bool ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
  71. /**
  72. * ucfg_pmo_is_vdev_supports_offload() - check offload is supported on vdev
  73. * @vdev: objmgr vdev
  74. *
  75. * Return: true in case success else false
  76. */
  77. bool ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev);
  78. /**
  79. * ucfg_pmo_get_psoc_config(): API to get the psoc user configurations of pmo
  80. * @psoc: objmgr psoc handle
  81. * @psoc_cfg: fill the current psoc user configurations.
  82. *
  83. * Return pmo psoc configurations
  84. */
  85. QDF_STATUS ucfg_pmo_get_psoc_config(struct wlan_objmgr_psoc *psoc,
  86. struct pmo_psoc_cfg *psoc_cfg);
  87. /**
  88. * ucfg_pmo_update_psoc_config(): API to update the psoc user configurations
  89. * @psoc: objmgr psoc handle
  90. * @psoc_cfg: pmo psoc configurations
  91. *
  92. * This api shall be used for soc config initialization as well update.
  93. * In case of update caller must first call pmo_get_psoc_cfg to get
  94. * current config and then apply changes on top of current config.
  95. *
  96. * Return QDF_STATUS -in case of success else return error
  97. */
  98. QDF_STATUS ucfg_pmo_update_psoc_config(struct wlan_objmgr_psoc *psoc,
  99. struct pmo_psoc_cfg *psoc_cfg);
  100. /**
  101. * ucfg_pmo_psoc_set_caps() - overwrite configured device capability flags
  102. * @psoc: the psoc for which the capabilities apply
  103. * @caps: the cabability information to configure
  104. *
  105. * Return: QDF_STATUS
  106. */
  107. QDF_STATUS ucfg_pmo_psoc_set_caps(struct wlan_objmgr_psoc *psoc,
  108. struct pmo_device_caps *caps);
  109. /**
  110. * pmo_ucfg_enable_wakeup_event() - enable wow wakeup events
  111. * @psoc: objmgr psoc
  112. * @vdev_id: vdev id
  113. * @bitmap: Event bitmap
  114. *
  115. * Return: none
  116. */
  117. void pmo_ucfg_enable_wakeup_event(struct wlan_objmgr_psoc *psoc,
  118. uint32_t vdev_id, uint32_t *bitmap);
  119. /**
  120. * pmo_ucfg_disable_wakeup_event() - disable wow wakeup events
  121. * @psoc: objmgr psoc
  122. * @vdev_id: vdev id
  123. * @bitmap: Event bitmap
  124. *
  125. * Return: none
  126. */
  127. void pmo_ucfg_disable_wakeup_event(struct wlan_objmgr_psoc *psoc,
  128. uint32_t vdev_id, uint32_t bitmap);
  129. /**
  130. * pmo_ucfg_cache_arp_offload_req(): API to cache arp req in pmo vdev priv ctx
  131. * @arp_req: pmo arp req param
  132. *
  133. * Return QDF_STATUS -in case of success else return error
  134. */
  135. QDF_STATUS pmo_ucfg_cache_arp_offload_req(struct pmo_arp_req *arp_req);
  136. /**
  137. * pmo_ucfg_flush_arp_offload_req(): API to flush arp req from pmo vdev priv ctx
  138. * @vdev: objmgr vdev param
  139. *
  140. * Return QDF_STATUS -in case of success else return error
  141. */
  142. QDF_STATUS pmo_ucfg_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev);
  143. /**
  144. * pmo_ucfg_enable_arp_offload_in_fwr(): API to enable arp req in fwr
  145. * @vdev: objmgr vdev param
  146. * @trigger: triger reason for enable arp offload
  147. *
  148. * API to enable cache arp req in fwr from pmo vdev priv ctx
  149. *
  150. * Return QDF_STATUS -in case of success else return error
  151. */
  152. QDF_STATUS pmo_ucfg_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  153. enum pmo_offload_trigger trigger);
  154. /**
  155. * pmo_ucfg_disable_arp_offload_in_fwr(): API to disable arp req in fwr
  156. * @vdev: objmgr vdev param
  157. * @trigger: triger reason for disable arp offload
  158. * API to disable cache arp req in fwr
  159. *
  160. * Return QDF_STATUS -in case of success else return error
  161. */
  162. QDF_STATUS pmo_ucfg_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  163. enum pmo_offload_trigger trigger);
  164. /**
  165. * pmo_ucfg_cache_ns_offload_req(): API to cache ns req in pmo vdev priv ctx
  166. * @ns_req: pmo ns req param
  167. *
  168. * Return QDF_STATUS -in case of success else return error
  169. */
  170. QDF_STATUS pmo_ucfg_cache_ns_offload_req(struct pmo_ns_req *ns_req);
  171. /**
  172. * pmo_ucfg_flush_ns_offload_req(): API to flush ns req from pmo vdev priv ctx
  173. * @vdev: vdev ojbmgr handle
  174. *
  175. * Return QDF_STATUS -in case of success else return error
  176. */
  177. QDF_STATUS pmo_ucfg_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev);
  178. /**
  179. * pmo_ucfg_enable_ns_offload_in_fwr(): API to enable ns req in fwr
  180. * @arp_req: pmo arp req param
  181. * @trigger: trigger reason to enable ns offload
  182. *
  183. * API to enable cache ns req in fwr from pmo vdev priv ctx
  184. *
  185. * Return QDF_STATUS -in case of success else return error
  186. */
  187. QDF_STATUS pmo_ucfg_enable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  188. enum pmo_offload_trigger trigger);
  189. /**
  190. * pmo_ucfg_disable_ns_offload_in_fwr(): API to disable ns req in fwr
  191. * @arp_req: pmo arp req param
  192. * @trigger: trigger reason to disable ns offload
  193. *
  194. * API to disable ns req in fwr
  195. *
  196. * Return QDF_STATUS -in case of success else return error
  197. */
  198. QDF_STATUS pmo_ucfg_disable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  199. enum pmo_offload_trigger trigger);
  200. /**
  201. * pmo_ucfg_enable_hw_filter_in_fwr() - enable previously configured hw filter
  202. * @vdev: objmgr vdev to configure
  203. *
  204. * Return: QDF_STATUS
  205. */
  206. QDF_STATUS pmo_ucfg_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev);
  207. /**
  208. * pmo_ucfg_disable_hw_filter_in_fwr() - disable previously configured hw filter
  209. * @vdev: objmgr vdev to configure
  210. *
  211. * Return: QDF_STATUS
  212. */
  213. QDF_STATUS pmo_ucfg_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev);
  214. /**
  215. * pmo_ucfg_max_mc_addr_supported() - to get max support mc address
  216. * @psoc: objmgr psoc
  217. *
  218. * Return: max mc addr supported count for all vdev in corresponding psoc
  219. */
  220. uint8_t pmo_ucfg_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc);
  221. /**
  222. * pmo_ucfg_cache_mc_addr_list(): API to cache mc addr list in pmo vdev priv obj
  223. * @psoc: objmgr psoc handle
  224. * @vdev_id: vdev id
  225. * @gtk_req: pmo gtk req param
  226. *
  227. * Return QDF_STATUS_SUCCESS -in case of success else return error
  228. */
  229. QDF_STATUS pmo_ucfg_cache_mc_addr_list(
  230. struct pmo_mc_addr_list_params *mc_list_config);
  231. /**
  232. * pmo_ucfg_flush_mc_addr_list(): API to flush mc addr list in pmo vdev priv obj
  233. * @psoc: objmgr psoc handle
  234. * @vdev_id: vdev id
  235. *
  236. * Return QDF_STATUS_SUCCESS -in case of success else return error
  237. */
  238. QDF_STATUS pmo_ucfg_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc,
  239. uint8_t vdev_id);
  240. /**
  241. * pmo_ucfg_enhance_mc_filter_enable() - enable enhanced multicast filtering
  242. * @vdev: the vdev to enable enhanced multicast filtering for
  243. *
  244. * Return: QDF_STATUS
  245. */
  246. static inline QDF_STATUS
  247. pmo_ucfg_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev)
  248. {
  249. return pmo_core_enhanced_mc_filter_enable(vdev);
  250. }
  251. /**
  252. * pmo_ucfg_enhance_mc_filter_disable() - disable enhanced multicast filtering
  253. * @vdev: the vdev to disable enhanced multicast filtering for
  254. *
  255. * Return: QDF_STATUS
  256. */
  257. static inline QDF_STATUS
  258. pmo_ucfg_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev)
  259. {
  260. return pmo_core_enhanced_mc_filter_disable(vdev);
  261. }
  262. /**
  263. * pmo_ucfg_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr
  264. * @psoc: objmgr psoc handle
  265. * @vdev_id: vdev id
  266. * @gtk_req: pmo gtk req param
  267. * @action: true for enable els false
  268. *
  269. * API to enable cached mc add list in fwr
  270. *
  271. * Return QDF_STATUS_SUCCESS -in case of success else return error
  272. */
  273. QDF_STATUS pmo_ucfg_enable_mc_addr_filtering_in_fwr(
  274. struct wlan_objmgr_psoc *psoc,
  275. uint8_t vdev_id,
  276. enum pmo_offload_trigger trigger);
  277. /**
  278. * pmo_ucfg_disable_mc_addr_filtering_in_fwr(): Disable cached mc addr list
  279. * @psoc: objmgr psoc handle
  280. * @vdev_id: vdev id
  281. * @gtk_req: pmo gtk req param
  282. * @action: true for enable els false
  283. *
  284. * API to disable cached mc add list in fwr
  285. *
  286. * Return QDF_STATUS_SUCCESS -in case of success else return error
  287. */
  288. QDF_STATUS pmo_ucfg_disable_mc_addr_filtering_in_fwr(
  289. struct wlan_objmgr_psoc *psoc,
  290. uint8_t vdev_id,
  291. enum pmo_offload_trigger trigger);
  292. /**
  293. * pmo_ucfg_cache_gtk_offload_req(): API to cache gtk req in pmo vdev priv obj
  294. * @vdev: objmgr vdev handle
  295. * @gtk_req: pmo gtk req param
  296. *
  297. * Return QDF_STATUS_SUCCESS -in case of success else return error
  298. */
  299. QDF_STATUS pmo_ucfg_cache_gtk_offload_req(struct wlan_objmgr_vdev *vdev,
  300. struct pmo_gtk_req *gtk_req);
  301. /**
  302. * pmo_ucfg_flush_gtk_offload_req(): Flush saved gtk req from pmo vdev priv obj
  303. * @vdev: objmgr vdev handle
  304. *
  305. * Return QDF_STATUS_SUCCESS -in case of success else return error
  306. */
  307. QDF_STATUS pmo_ucfg_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev);
  308. /**
  309. * pmo_ucfg_enable_gtk_offload_in_fwr(): enable cached gtk request in fwr
  310. * @vdev: objmgr vdev handle
  311. *
  312. * Return QDF_STATUS_SUCCESS -in case of success else return error
  313. */
  314. QDF_STATUS pmo_ucfg_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev);
  315. /**
  316. * pmo_ucfg_disable_gtk_offload_in_fwr(): disable cached gtk request in fwr
  317. * @vdev: objmgr vdev handle
  318. *
  319. * Return QDF_STATUS_SUCCESS -in case of success else return error
  320. */
  321. QDF_STATUS pmo_ucfg_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev);
  322. /**
  323. * pmo_ucfg_set_pkt_filter() - Set packet filter
  324. * @psoc: objmgr psoc handle
  325. * @pmo_set_pkt_fltr_req:
  326. * @vdev_id: vdev id
  327. *
  328. * Return QDF_STATUS_SUCCESS -in case of success else return error
  329. */
  330. QDF_STATUS pmo_ucfg_set_pkt_filter(struct wlan_objmgr_psoc *psoc,
  331. struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
  332. uint8_t vdev_id);
  333. /**
  334. * pmo_ucfg_clear_pkt_filter() - Clear packet filter
  335. * @psoc: objmgr psoc handle
  336. * @pmo_clr_pkt_fltr_req:
  337. * @vdev_id: vdev id
  338. *
  339. * Return QDF_STATUS_SUCCESS -in case of success else return error
  340. */
  341. QDF_STATUS pmo_ucfg_clear_pkt_filter(struct wlan_objmgr_psoc *psoc,
  342. struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
  343. uint8_t vdev_id);
  344. /**
  345. * pmo_ucfg_get_gtk_rsp(): API to send gtk response request to fwr
  346. * @vdev: objmgr vdev handle
  347. * @gtk_rsp: pmo gtk response request
  348. *
  349. * This api will send gtk response request to fwr
  350. *
  351. * Return QDF_STATUS_SUCCESS -in case of success else return error
  352. */
  353. QDF_STATUS pmo_ucfg_get_gtk_rsp(struct wlan_objmgr_vdev *vdev,
  354. struct pmo_gtk_rsp_req *gtk_rsp_req);
  355. /**
  356. * pmo_ucfg_update_extscan_in_progress(): update extscan is in progress flags
  357. * @vdev: objmgr vdev handle
  358. * @value:true if extscan is in progress else false
  359. *
  360. * Return: TRUE/FALSE
  361. */
  362. void pmo_ucfg_update_extscan_in_progress(struct wlan_objmgr_vdev *vdev,
  363. bool value);
  364. /**
  365. * pmo_ucfg_update_p2plo_in_progress(): update p2plo is in progress flags
  366. * @vdev: objmgr vdev handle
  367. * @value:true if p2plo is in progress else false
  368. *
  369. * Return: TRUE/FALSE
  370. */
  371. void pmo_ucfg_update_p2plo_in_progress(struct wlan_objmgr_vdev *vdev,
  372. bool value);
  373. /**
  374. * pmo_ucfg_lphb_config_req() - Handles lphb config request for psoc
  375. * @psoc: objmgr psoc handle
  376. * @lphb_req: low power heart beat request
  377. * @lphb_cb_ctx: Context which needs to pass to soif when lphb callback called
  378. * @callback: upon receiving of lphb indication from fwr call lphb callback
  379. *
  380. * Return: QDF status
  381. */
  382. QDF_STATUS pmo_ucfg_lphb_config_req(struct wlan_objmgr_psoc *psoc,
  383. struct pmo_lphb_req *lphb_req, void *lphb_cb_ctx,
  384. pmo_lphb_callback callback);
  385. /**
  386. * pmo_ucfg_update_alt_modulated_dtim_enable() - update alt modulatate dtim
  387. * @vdev: objmgr vdev handle
  388. * @value: true for alt_modulated_dtim enable else false
  389. *
  390. * Return: QDF status
  391. */
  392. void pmo_ucfg_update_alt_modulated_dtim_enable(struct wlan_objmgr_vdev *vdev,
  393. bool value);
  394. /**
  395. * pmo_ucfg_psoc_update_power_save_mode() - update power save mode
  396. * @vdev: objmgr vdev handle
  397. * @value:vdev power save mode
  398. *
  399. * Return: None
  400. */
  401. void pmo_ucfg_psoc_update_power_save_mode(struct wlan_objmgr_psoc *psoc,
  402. uint8_t value);
  403. /**
  404. * pmo_ucfg_psoc_update_dp_handle() - update psoc data path handle
  405. * @psoc: objmgr psoc handle
  406. * @dp_hdl: psoc data path handle
  407. *
  408. * Return: None
  409. */
  410. void pmo_ucfg_psoc_update_dp_handle(struct wlan_objmgr_psoc *psoc,
  411. void *dp_hdl);
  412. /**
  413. * pmo_ucfg_vdev_update_dp_handle() - update vdev data path handle
  414. * @vdev: objmgr vdev handle
  415. * @dp_hdl: vdev data path handle
  416. *
  417. * Return: None
  418. */
  419. void pmo_ucfg_vdev_update_dp_handle(struct wlan_objmgr_vdev *vdev,
  420. void *dp_hdl);
  421. /**
  422. * pmo_ucfg_psoc_update_htc_handle() - update psoc htc layer handle
  423. * @psoc: objmgr psoc handle
  424. * @htc_handle: psoc host-to-tagret layer (htc) handle
  425. *
  426. * Return: None
  427. */
  428. void pmo_ucfg_psoc_update_htc_handle(struct wlan_objmgr_psoc *psoc,
  429. void *htc_handle);
  430. /**
  431. * pmo_ucfg_psoc_set_hif_handle() - Set psoc hif layer handle
  432. * @psoc: objmgr psoc handle
  433. * @hif_handle: hif context handle
  434. *
  435. * Return: None
  436. */
  437. void pmo_ucfg_psoc_set_hif_handle(struct wlan_objmgr_psoc *psoc,
  438. void *hif_handle);
  439. /**
  440. * pmo_ucfg_psoc_set_txrx_handle() - Set psoc pdev txrx layer handle
  441. * @psoc: objmgr psoc handle
  442. * @txrx_handle: pdev txrx context handle
  443. *
  444. * Return: None
  445. */
  446. void pmo_ucfg_psoc_set_txrx_handle(struct wlan_objmgr_psoc *psoc,
  447. void *txrx_handle);
  448. /**
  449. * pmo_ucfg_psoc_user_space_suspend_req() - Handles user space suspend req
  450. * @psoc: objmgr psoc handle
  451. * @type: type of suspend
  452. *
  453. * Handles user space suspend indication for psoc
  454. *
  455. * Return: QDF status
  456. */
  457. QDF_STATUS pmo_ucfg_psoc_user_space_suspend_req(struct wlan_objmgr_psoc *psoc,
  458. enum qdf_suspend_type type);
  459. /**
  460. * pmo_ucfg_psoc_user_space_resume_req() - Handles user space resume req
  461. * @psoc: objmgr psoc handle
  462. * @type: type of suspend from which resume needed
  463. *
  464. * Handles user space resume indication for psoc
  465. *
  466. * Return: QDF status
  467. */
  468. QDF_STATUS pmo_ucfg_psoc_user_space_resume_req(struct wlan_objmgr_psoc *psoc,
  469. enum qdf_suspend_type type);
  470. /**
  471. * pmo_ucfg_psoc_bus_suspend_req(): handles bus suspend for psoc
  472. * @psoc: objmgr psoc
  473. * @type: is this suspend part of runtime suspend or system suspend?
  474. * @wow_params: collection of wow enable override parameters
  475. *
  476. * Bails if a scan is in progress.
  477. * Calls the appropriate handlers based on configuration and event.
  478. *
  479. * Return: QDF_STATUS_SUCCESS for success or error code
  480. */
  481. QDF_STATUS pmo_ucfg_psoc_bus_suspend_req(struct wlan_objmgr_psoc *psoc,
  482. enum qdf_suspend_type type,
  483. struct pmo_wow_enable_params *wow_params);
  484. #ifdef FEATURE_RUNTIME_PM
  485. /**
  486. * pmo_ucfg_psoc_bus_runtime_suspend(): handles bus runtime suspend for psoc
  487. * @psoc: objmgr psoc
  488. * @pld_cb: callback to call link auto suspend
  489. *
  490. * Return: QDF_STATUS_SUCCESS for success or error code
  491. */
  492. QDF_STATUS pmo_ucfg_psoc_bus_runtime_suspend(struct wlan_objmgr_psoc *psoc,
  493. pmo_pld_auto_suspend_cb pld_cb);
  494. /**
  495. * pmo_ucfg_psoc_bus_runtime_resume(): handles bus runtime resume for psoc
  496. * @psoc: objmgr psoc
  497. * @pld_cb: callback to call link auto resume
  498. *
  499. * Return: QDF_STATUS_SUCCESS for success or error code
  500. */
  501. QDF_STATUS pmo_ucfg_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc,
  502. pmo_pld_auto_resume_cb pld_cb);
  503. #endif
  504. /**
  505. * pmo_ucfg_psoc_suspend_target() -Send suspend target command
  506. * @psoc: objmgr psoc handle
  507. * @disable_target_intr: disable target interrupt
  508. *
  509. * Return: QDF_STATUS_SUCCESS for success or error code
  510. */
  511. QDF_STATUS pmo_ucfg_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
  512. int disable_target_intr);
  513. QDF_STATUS pmo_ucfg_add_wow_user_pattern(struct wlan_objmgr_vdev *vdev,
  514. struct pmo_wow_add_pattern *ptrn);
  515. QDF_STATUS pmo_ucfg_del_wow_user_pattern(struct wlan_objmgr_vdev *vdev,
  516. uint8_t pattern_id);
  517. /**
  518. * pmo_ucfg_psoc_bus_resume() -handle bus resume request for psoc
  519. * @psoc: objmgr psoc handle
  520. * @type: is this suspend part of runtime suspend or system suspend?
  521. *
  522. * Return:QDF_STATUS_SUCCESS on success else error code
  523. */
  524. QDF_STATUS pmo_ucfg_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
  525. enum qdf_suspend_type type);
  526. /**
  527. * pmo_ucfg_get_wow_bus_suspend(): API to check if wow bus is suspended or not
  528. * @psoc: objmgr psoc handle
  529. *
  530. * Return: True if bus suspende else false
  531. */
  532. bool pmo_ucfg_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc);
  533. /**
  534. * pmo_ucfg_psoc_handle_initial_wake_up() - update initial wake up
  535. * @cb_ctx: objmgr psoc handle as void * due to htc layer is not aware psoc
  536. *
  537. * Return: None
  538. */
  539. void pmo_ucfg_psoc_handle_initial_wake_up(void *cb_ctx);
  540. /**
  541. * pmo_ucfg_psoc_is_target_wake_up_received() - Get initial wake up status
  542. * @psoc: objmgr psoc handle
  543. *
  544. * Return: 0 on success else error code
  545. */
  546. int pmo_ucfg_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc);
  547. /**
  548. * pmo_ucfg_psoc_is_target_wake_up_received() - Clear initial wake up status
  549. * @psoc: objmgr psoc handle
  550. *
  551. * Return: 0 on success else error code
  552. */
  553. int pmo_ucfg_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc);
  554. /**
  555. * pmo_ucfg_psoc_target_suspend_acknowledge() - Clear initial wake up status
  556. * @psoc: objmgr psoc handle
  557. *
  558. * Return: None
  559. */
  560. void pmo_ucfg_psoc_target_suspend_acknowledge(void *context, bool wow_nack);
  561. /**
  562. * pmo_ucfg_psoc_wakeup_host_event_received() - got host wake up evennt from fwr
  563. * @psoc: objmgr psoc handle
  564. *
  565. * Return: None
  566. */
  567. void pmo_ucfg_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc);
  568. #else
  569. static inline uint32_t
  570. ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc)
  571. {
  572. return 0;
  573. }
  574. static inline uint32_t
  575. ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc)
  576. {
  577. return 0;
  578. }
  579. static inline uint8_t
  580. ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc)
  581. {
  582. return 0;
  583. }
  584. static inline QDF_STATUS
  585. ucfg_pmo_get_psoc_config(
  586. struct wlan_objmgr_psoc *psoc,
  587. struct pmo_psoc_cfg *psoc_cfg)
  588. {
  589. return QDF_STATUS_SUCCESS;
  590. }
  591. static inline QDF_STATUS
  592. ucfg_pmo_update_psoc_config(
  593. struct wlan_objmgr_psoc *psoc,
  594. struct pmo_psoc_cfg *psoc_cfg)
  595. {
  596. return QDF_STATUS_SUCCESS;
  597. }
  598. static inline QDF_STATUS
  599. ucfg_pmo_psoc_set_caps(
  600. struct wlan_objmgr_psoc *psoc,
  601. struct pmo_device_caps *caps)
  602. {
  603. return QDF_STATUS_SUCCESS;
  604. }
  605. static inline bool
  606. ucfg_pmo_is_ap_mode_supports_arp_ns(
  607. struct wlan_objmgr_psoc *psoc,
  608. enum QDF_OPMODE vdev_opmode)
  609. {
  610. return true;
  611. }
  612. static inline bool
  613. ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev)
  614. {
  615. return true;
  616. }
  617. static inline bool
  618. ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev)
  619. {
  620. return true;
  621. }
  622. static inline void
  623. pmo_ucfg_enable_wakeup_event(
  624. struct wlan_objmgr_psoc *psoc,
  625. uint32_t vdev_id, uint32_t *bitmap)
  626. {
  627. }
  628. static inline void
  629. pmo_ucfg_disable_wakeup_event(
  630. struct wlan_objmgr_psoc *psoc,
  631. uint32_t vdev_id, uint32_t bitmap)
  632. {
  633. }
  634. static inline QDF_STATUS
  635. pmo_ucfg_cache_arp_offload_req(struct pmo_arp_req *arp_req)
  636. {
  637. return QDF_STATUS_SUCCESS;
  638. }
  639. static inline QDF_STATUS
  640. pmo_ucfg_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev)
  641. {
  642. return QDF_STATUS_SUCCESS;
  643. }
  644. static inline QDF_STATUS
  645. pmo_ucfg_enable_arp_offload_in_fwr(
  646. struct wlan_objmgr_vdev *vdev,
  647. enum pmo_offload_trigger trigger)
  648. {
  649. return QDF_STATUS_SUCCESS;
  650. }
  651. static inline QDF_STATUS
  652. pmo_ucfg_disable_arp_offload_in_fwr(
  653. struct wlan_objmgr_vdev *vdev,
  654. enum pmo_offload_trigger trigger)
  655. {
  656. return QDF_STATUS_SUCCESS;
  657. }
  658. static inline QDF_STATUS
  659. pmo_ucfg_cache_ns_offload_req(struct pmo_ns_req *ns_req)
  660. {
  661. return QDF_STATUS_SUCCESS;
  662. }
  663. static inline QDF_STATUS
  664. pmo_ucfg_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev)
  665. {
  666. return QDF_STATUS_SUCCESS;
  667. }
  668. static inline QDF_STATUS
  669. pmo_ucfg_enable_ns_offload_in_fwr(
  670. struct wlan_objmgr_vdev *vdev,
  671. enum pmo_offload_trigger trigger)
  672. {
  673. return QDF_STATUS_SUCCESS;
  674. }
  675. static inline QDF_STATUS
  676. pmo_ucfg_disable_ns_offload_in_fwr(
  677. struct wlan_objmgr_vdev *vdev,
  678. enum pmo_offload_trigger trigger)
  679. {
  680. return QDF_STATUS_SUCCESS;
  681. }
  682. static inline QDF_STATUS
  683. pmo_ucfg_cache_mc_addr_list(
  684. struct pmo_mc_addr_list_params *mc_list_config)
  685. {
  686. return QDF_STATUS_SUCCESS;
  687. }
  688. static inline QDF_STATUS
  689. pmo_ucfg_flush_mc_addr_list(
  690. struct wlan_objmgr_psoc *psoc,
  691. uint8_t vdev_id)
  692. {
  693. return QDF_STATUS_SUCCESS;
  694. }
  695. static inline QDF_STATUS
  696. pmo_ucfg_enable_mc_addr_filtering_in_fwr(
  697. struct wlan_objmgr_psoc *psoc,
  698. uint8_t vdev_id,
  699. enum pmo_offload_trigger trigger)
  700. {
  701. return QDF_STATUS_SUCCESS;
  702. }
  703. static inline QDF_STATUS
  704. pmo_ucfg_disable_mc_addr_filtering_in_fwr(
  705. struct wlan_objmgr_psoc *psoc,
  706. uint8_t vdev_id,
  707. enum pmo_offload_trigger trigger)
  708. {
  709. return QDF_STATUS_SUCCESS;
  710. }
  711. static inline uint8_t
  712. pmo_ucfg_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc)
  713. {
  714. return 0;
  715. }
  716. static inline QDF_STATUS
  717. pmo_ucfg_cache_gtk_offload_req(
  718. struct wlan_objmgr_vdev *vdev,
  719. struct pmo_gtk_req *gtk_req)
  720. {
  721. return QDF_STATUS_SUCCESS;
  722. }
  723. static inline QDF_STATUS
  724. pmo_ucfg_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev)
  725. {
  726. return QDF_STATUS_SUCCESS;
  727. }
  728. static inline QDF_STATUS
  729. pmo_ucfg_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev)
  730. {
  731. return QDF_STATUS_SUCCESS;
  732. }
  733. static inline QDF_STATUS
  734. pmo_ucfg_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev)
  735. {
  736. return QDF_STATUS_SUCCESS;
  737. }
  738. static inline QDF_STATUS
  739. pmo_ucfg_set_pkt_filter(
  740. struct wlan_objmgr_psoc *psoc,
  741. struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
  742. uint8_t vdev_id)
  743. {
  744. return QDF_STATUS_SUCCESS;
  745. }
  746. static inline QDF_STATUS
  747. pmo_ucfg_clear_pkt_filter(
  748. struct wlan_objmgr_psoc *psoc,
  749. struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
  750. uint8_t vdev_id)
  751. {
  752. return QDF_STATUS_SUCCESS;
  753. }
  754. static inline QDF_STATUS
  755. pmo_ucfg_get_gtk_rsp(
  756. struct wlan_objmgr_vdev *vdev,
  757. struct pmo_gtk_rsp_req *gtk_rsp_req)
  758. {
  759. return QDF_STATUS_SUCCESS;
  760. }
  761. static inline void
  762. pmo_ucfg_update_extscan_in_progress(
  763. struct wlan_objmgr_vdev *vdev,
  764. bool value)
  765. {
  766. }
  767. static inline void
  768. pmo_ucfg_update_p2plo_in_progress(
  769. struct wlan_objmgr_vdev *vdev,
  770. bool value)
  771. {
  772. }
  773. static inline QDF_STATUS
  774. pmo_ucfg_lphb_config_req(
  775. struct wlan_objmgr_psoc *psoc,
  776. struct pmo_lphb_req *lphb_req, void *lphb_cb_ctx,
  777. pmo_lphb_callback callback)
  778. {
  779. return QDF_STATUS_SUCCESS;
  780. }
  781. static inline void
  782. pmo_ucfg_update_alt_modulated_dtim_enable(
  783. struct wlan_objmgr_vdev *vdev,
  784. bool value)
  785. {
  786. }
  787. static inline void
  788. pmo_ucfg_psoc_update_power_save_mode(
  789. struct wlan_objmgr_psoc *psoc,
  790. uint8_t value)
  791. {
  792. }
  793. static inline void
  794. pmo_ucfg_psoc_update_dp_handle(
  795. struct wlan_objmgr_psoc *psoc,
  796. void *dp_handle)
  797. {
  798. }
  799. static inline void
  800. pmo_ucfg_vdev_update_dp_handle(
  801. struct wlan_objmgr_vdev *vdev,
  802. void *dp_handle)
  803. {
  804. }
  805. static inline void
  806. pmo_ucfg_psoc_update_htc_handle(
  807. struct wlan_objmgr_psoc *psoc,
  808. void *htc_handle)
  809. {
  810. }
  811. static inline void
  812. pmo_ucfg_psoc_set_hif_handle(
  813. struct wlan_objmgr_psoc *psoc,
  814. void *hif_handle)
  815. {
  816. }
  817. static inline void
  818. pmo_ucfg_psoc_set_txrx_handle(
  819. struct wlan_objmgr_psoc *psoc,
  820. void *txrx_handle)
  821. {
  822. }
  823. static inline void
  824. pmo_ucfg_psoc_handle_initial_wake_up(void *cb_ctx)
  825. {
  826. }
  827. static inline QDF_STATUS
  828. pmo_ucfg_psoc_user_space_suspend_req(
  829. struct wlan_objmgr_psoc *psoc,
  830. enum qdf_suspend_type type)
  831. {
  832. return QDF_STATUS_SUCCESS;
  833. }
  834. static inline QDF_STATUS
  835. pmo_ucfg_psoc_user_space_resume_req(
  836. struct wlan_objmgr_psoc *psoc,
  837. enum qdf_suspend_type type)
  838. {
  839. return QDF_STATUS_SUCCESS;
  840. }
  841. static inline QDF_STATUS
  842. pmo_ucfg_psoc_bus_suspend_req(
  843. struct wlan_objmgr_psoc *psoc,
  844. enum qdf_suspend_type type,
  845. struct pmo_wow_enable_params *wow_params)
  846. {
  847. return QDF_STATUS_SUCCESS;
  848. }
  849. #ifdef FEATURE_RUNTIME_PM
  850. static inline QDF_STATUS
  851. pmo_ucfg_psoc_bus_runtime_suspend(
  852. struct wlan_objmgr_psoc *psoc,
  853. pmo_pld_auto_suspend_cb pld_cb)
  854. {
  855. return QDF_STATUS_SUCCESS;
  856. }
  857. static inline QDF_STATUS
  858. pmo_ucfg_psoc_bus_runtime_resume(
  859. struct wlan_objmgr_psoc *psoc,
  860. pmo_pld_auto_suspend_cb pld_cb)
  861. {
  862. return QDF_STATUS_SUCCESS;
  863. }
  864. #endif
  865. static inline QDF_STATUS
  866. pmo_ucfg_psoc_suspend_target(
  867. struct wlan_objmgr_psoc *psoc,
  868. int disable_target_intr)
  869. {
  870. return QDF_STATUS_SUCCESS;
  871. }
  872. static inline QDF_STATUS
  873. pmo_ucfg_add_wow_user_pattern(
  874. struct wlan_objmgr_vdev *vdev,
  875. struct pmo_wow_add_pattern *ptrn)
  876. {
  877. return QDF_STATUS_SUCCESS;
  878. }
  879. static inline QDF_STATUS
  880. pmo_ucfg_del_wow_user_pattern(
  881. struct wlan_objmgr_vdev *vdev,
  882. uint8_t pattern_id)
  883. {
  884. return QDF_STATUS_SUCCESS;
  885. }
  886. static inline QDF_STATUS
  887. pmo_ucfg_psoc_bus_resume_req(
  888. struct wlan_objmgr_psoc *psoc,
  889. enum qdf_suspend_type type)
  890. {
  891. return QDF_STATUS_SUCCESS;
  892. }
  893. static inline bool
  894. pmo_ucfg_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc)
  895. {
  896. return true;
  897. }
  898. static inline int
  899. pmo_ucfg_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc)
  900. {
  901. return 0;
  902. }
  903. static inline int
  904. pmo_ucfg_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc)
  905. {
  906. return 0;
  907. }
  908. static inline void
  909. pmo_ucfg_psoc_target_suspend_acknowledge(void *context, bool wow_nack)
  910. {
  911. }
  912. static inline void
  913. pmo_ucfg_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc)
  914. {
  915. }
  916. static inline QDF_STATUS
  917. pmo_ucfg_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev)
  918. {
  919. return QDF_STATUS_SUCCESS;
  920. }
  921. static inline QDF_STATUS
  922. pmo_ucfg_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev)
  923. {
  924. return QDF_STATUS_SUCCESS;
  925. }
  926. static inline QDF_STATUS
  927. pmo_ucfg_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev)
  928. {
  929. return QDF_STATUS_SUCCESS;
  930. }
  931. static inline QDF_STATUS
  932. pmo_ucfg_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev)
  933. {
  934. return QDF_STATUS_SUCCESS;
  935. }
  936. #endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
  937. #endif /* end of _WLAN_PMO_UCFG_API_H_ */