wlan_pmo_ucfg_api.h 27 KB

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