wlan_pmo_ucfg_api.h 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882
  1. /*
  2. * Copyright (c) 2017-2019 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_psoc_open() - pmo psoc object open
  36. * @psoc: objmgr vdev
  37. *.
  38. * This function used to open pmo psoc object by user space
  39. *
  40. * Return: true in case success else false
  41. */
  42. QDF_STATUS ucfg_pmo_psoc_open(struct wlan_objmgr_psoc *psoc);
  43. /**
  44. * ucfg_pmo_psoc_open() - pmo psoc object close
  45. * @psoc: objmgr vdev
  46. *.
  47. * This function used to close pmo psoc object by user space
  48. *
  49. * Return: true in case success else false
  50. */
  51. QDF_STATUS ucfg_pmo_psoc_close(struct wlan_objmgr_psoc *psoc);
  52. /**
  53. * ucfg_pmo_get_apf_instruction_size() - get the current APF instruction size
  54. * @psoc: the psoc to query
  55. *
  56. * Return: APF instruction size
  57. */
  58. uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc);
  59. /**
  60. * ucfg_pmo_get_num_wow_filters() - get the supported number of WoW filters
  61. * @psoc: the psoc to query
  62. *
  63. * Return: number of WoW filters supported
  64. */
  65. uint8_t ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc);
  66. /**
  67. * ucfg_pmo_is_ap_mode_supports_arp_ns() - Check ap mode support arp&ns offload
  68. * @psoc: objmgr psoc
  69. * @vdev_opmode: vdev opmode
  70. *
  71. * Return: true in case support else false
  72. */
  73. bool ucfg_pmo_is_ap_mode_supports_arp_ns(struct wlan_objmgr_psoc *psoc,
  74. enum QDF_OPMODE vdev_opmode);
  75. /**
  76. * ucfg_pmo_is_vdev_connected() - to check whether peer is associated or not
  77. * @vdev: objmgr vdev
  78. *
  79. * Return: true in case success else false
  80. */
  81. bool ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
  82. /**
  83. * ucfg_pmo_is_vdev_supports_offload() - check offload is supported on vdev
  84. * @vdev: objmgr vdev
  85. *
  86. * Return: true in case success else false
  87. */
  88. bool ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev);
  89. /**
  90. * ucfg_pmo_get_psoc_config(): API to get the psoc user configurations of pmo
  91. * @psoc: objmgr psoc handle
  92. * @psoc_cfg: fill the current psoc user configurations.
  93. *
  94. * Return pmo psoc configurations
  95. */
  96. QDF_STATUS ucfg_pmo_get_psoc_config(struct wlan_objmgr_psoc *psoc,
  97. struct pmo_psoc_cfg *psoc_cfg);
  98. /**
  99. * ucfg_pmo_update_psoc_config(): API to update the psoc user configurations
  100. * @psoc: objmgr psoc handle
  101. * @psoc_cfg: pmo psoc configurations
  102. *
  103. * This api shall be used for soc config initialization as well update.
  104. * In case of update caller must first call pmo_get_psoc_cfg to get
  105. * current config and then apply changes on top of current config.
  106. *
  107. * Return QDF_STATUS -in case of success else return error
  108. */
  109. QDF_STATUS ucfg_pmo_update_psoc_config(struct wlan_objmgr_psoc *psoc,
  110. struct pmo_psoc_cfg *psoc_cfg);
  111. /**
  112. * ucfg_pmo_psoc_set_caps() - overwrite configured device capability flags
  113. * @psoc: the psoc for which the capabilities apply
  114. * @caps: the cabability information to configure
  115. *
  116. * Return: QDF_STATUS
  117. */
  118. QDF_STATUS ucfg_pmo_psoc_set_caps(struct wlan_objmgr_psoc *psoc,
  119. struct pmo_device_caps *caps);
  120. /**
  121. * ucfg_pmo_is_arp_offload_enabled() - Get arp offload enable or not
  122. * @psoc: pointer to psoc object
  123. *
  124. * Return: arp offload enable or not
  125. */
  126. bool
  127. ucfg_pmo_is_arp_offload_enabled(struct wlan_objmgr_psoc *psoc);
  128. /**
  129. * ucfg_pmo_set_arp_offload_enabled() - Set arp offload enable or not
  130. * @psoc: pointer to psoc object
  131. * @val: enable/disable arp offload
  132. *
  133. * Return: None
  134. */
  135. void
  136. ucfg_pmo_set_arp_offload_enabled(struct wlan_objmgr_psoc *psoc,
  137. bool val);
  138. /**
  139. * ucfg_pmo_is_ssdp_enabled() - Get ssdp enable or not
  140. * @psoc: pointer to psoc object
  141. *
  142. * Return: enable/disable ssdp
  143. */
  144. bool
  145. ucfg_pmo_is_ssdp_enabled(struct wlan_objmgr_psoc *psoc);
  146. /**
  147. * ucfg_pmo_is_ns_offloaded() - Get ns offload support or not
  148. * @psoc: pointer to psoc object
  149. *
  150. * Return: ns offload or not
  151. */
  152. bool
  153. ucfg_pmo_is_ns_offloaded(struct wlan_objmgr_psoc *psoc);
  154. /**
  155. * ucfg_pmo_get_sta_dynamic_dtim() - Get dynamic dtim
  156. * @psoc: pointer to psoc object
  157. *
  158. * Return: dynamic dtim
  159. */
  160. uint8_t
  161. ucfg_pmo_get_sta_dynamic_dtim(struct wlan_objmgr_psoc *psoc);
  162. /**
  163. * ucfg_pmo_get_sta_mod_dtim() - Get modulated dtim
  164. * @psoc: pointer to psoc object
  165. *
  166. * Return: modulated dtim
  167. */
  168. uint8_t
  169. ucfg_pmo_get_sta_mod_dtim(struct wlan_objmgr_psoc *psoc);
  170. /**
  171. * ucfg_pmo_set_sta_mod_dtim() - Set modulated dtim
  172. * @psoc: pointer to psoc object
  173. * @val: modulated dtim
  174. *
  175. * Return: None
  176. */
  177. void
  178. ucfg_pmo_set_sta_mod_dtim(struct wlan_objmgr_psoc *psoc,
  179. uint8_t val);
  180. /**
  181. * ucfg_pmo_is_mc_addr_list_enabled() - Get multicast address list enable or not
  182. * @psoc: pointer to psoc object
  183. *
  184. * Return: multicast address list enable or not
  185. */
  186. bool
  187. ucfg_pmo_is_mc_addr_list_enabled(struct wlan_objmgr_psoc *psoc);
  188. /**
  189. * ucfg_pmo_get_power_save_mode() - Get power save mode
  190. * @psoc: pointer to psoc object
  191. *
  192. * Return: power save mode
  193. */
  194. enum powersave_mode
  195. ucfg_pmo_get_power_save_mode(struct wlan_objmgr_psoc *psoc);
  196. /**
  197. * ucfg_pmo_set_power_save_mode() - Set power save mode
  198. * @psoc: pointer to psoc object
  199. * @val: power save mode
  200. *
  201. * Return: None
  202. */
  203. void
  204. ucfg_pmo_set_power_save_mode(struct wlan_objmgr_psoc *psoc,
  205. enum powersave_mode val);
  206. /**
  207. * ucfg_pmo_get_max_ps_poll() - Get max power save poll
  208. * @psoc: pointer to psoc object
  209. *
  210. * Return: power save poll
  211. */
  212. uint8_t
  213. ucfg_pmo_get_max_ps_poll(struct wlan_objmgr_psoc *psoc);
  214. /**
  215. * ucfg_pmo_power_save_offload_enabled() - Get power save offload enabled type
  216. * @psoc: pointer to psoc object
  217. *
  218. * Return: power save offload enabled type
  219. */
  220. uint8_t
  221. ucfg_pmo_power_save_offload_enabled(struct wlan_objmgr_psoc *psoc);
  222. /**
  223. * ucfg_pmo_tgt_psoc_send_idle_roam_suspend_mode() - Send suspend mode to
  224. * firmware
  225. * @psoc: pointer to psoc object
  226. * @val: Set suspend mode on/off sent from userspace
  227. *
  228. * Return: QDF_STATUS_SUCCESS if suspend mode is sent to fw else return
  229. * corresponding QDF_STATUS failure code.
  230. */
  231. QDF_STATUS
  232. ucfg_pmo_tgt_psoc_send_idle_roam_suspend_mode(struct wlan_objmgr_psoc *psoc,
  233. uint8_t val);
  234. /**
  235. * ucfg_pmo_enable_wakeup_event() - enable wow wakeup events
  236. * @psoc: objmgr psoc
  237. * @vdev_id: vdev id
  238. * @wow_event: wow event to enable
  239. *
  240. * Return: none
  241. */
  242. void ucfg_pmo_enable_wakeup_event(struct wlan_objmgr_psoc *psoc,
  243. uint32_t vdev_id,
  244. WOW_WAKE_EVENT_TYPE wow_event);
  245. /**
  246. * ucfg_pmo_disable_wakeup_event() - disable wow wakeup events
  247. * @psoc: objmgr psoc
  248. * @vdev_id: vdev id
  249. * @wow_event: wow event to disable
  250. *
  251. * Return: none
  252. */
  253. void ucfg_pmo_disable_wakeup_event(struct wlan_objmgr_psoc *psoc,
  254. uint32_t vdev_id,
  255. WOW_WAKE_EVENT_TYPE wow_event);
  256. /**
  257. * ucfg_pmo_cache_arp_offload_req(): API to cache arp req in pmo vdev priv ctx
  258. * @arp_req: pmo arp req param
  259. *
  260. * Return QDF_STATUS -in case of success else return error
  261. */
  262. QDF_STATUS ucfg_pmo_cache_arp_offload_req(struct pmo_arp_req *arp_req);
  263. /**
  264. * ucfg_pmo_flush_arp_offload_req(): API to flush arp req from pmo vdev priv ctx
  265. * @vdev: objmgr vdev param
  266. *
  267. * Return QDF_STATUS -in case of success else return error
  268. */
  269. QDF_STATUS ucfg_pmo_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev);
  270. /**
  271. * ucfg_pmo_enable_arp_offload_in_fwr(): API to enable arp req in fwr
  272. * @vdev: objmgr vdev param
  273. * @trigger: triger reason for enable arp offload
  274. *
  275. * API to enable cache arp req in fwr from pmo vdev priv ctx
  276. *
  277. * Return QDF_STATUS -in case of success else return error
  278. */
  279. QDF_STATUS
  280. ucfg_pmo_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  281. enum pmo_offload_trigger trigger);
  282. /**
  283. * ucfg_pmo_disable_arp_offload_in_fwr(): API to disable arp req in fwr
  284. * @vdev: objmgr vdev param
  285. * @trigger: triger reason for disable arp offload
  286. * API to disable cache arp req in fwr
  287. *
  288. * Return QDF_STATUS -in case of success else return error
  289. */
  290. QDF_STATUS
  291. ucfg_pmo_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  292. enum pmo_offload_trigger trigger);
  293. /**
  294. * ucfg_pmo_get_arp_offload_params() - API to get arp offload params
  295. * @vdev: objmgr vdev
  296. * @params: output pointer to hold offload params
  297. *
  298. * Return: QDF_STATUS_SUCCESS in case of success else return error
  299. */
  300. QDF_STATUS
  301. ucfg_pmo_get_arp_offload_params(struct wlan_objmgr_vdev *vdev,
  302. struct pmo_arp_offload_params *params);
  303. /**
  304. * ucfg_pmo_cache_ns_offload_req(): API to cache ns req in pmo vdev priv ctx
  305. * @ns_req: pmo ns req param
  306. *
  307. * Return QDF_STATUS -in case of success else return error
  308. */
  309. QDF_STATUS ucfg_pmo_cache_ns_offload_req(struct pmo_ns_req *ns_req);
  310. /**
  311. * ucfg_pmo_flush_ns_offload_req(): API to flush ns req from pmo vdev priv ctx
  312. * @vdev: vdev ojbmgr handle
  313. *
  314. * Return QDF_STATUS -in case of success else return error
  315. */
  316. QDF_STATUS ucfg_pmo_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev);
  317. /**
  318. * ucfg_pmo_enable_ns_offload_in_fwr(): API to enable ns req in fwr
  319. * @arp_req: pmo arp req param
  320. * @trigger: trigger reason to enable ns offload
  321. *
  322. * API to enable cache ns req in fwr from pmo vdev priv ctx
  323. *
  324. * Return QDF_STATUS -in case of success else return error
  325. */
  326. QDF_STATUS
  327. ucfg_pmo_enable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  328. enum pmo_offload_trigger trigger);
  329. /**
  330. * ucfg_pmo_disable_ns_offload_in_fwr(): API to disable ns req in fwr
  331. * @arp_req: pmo arp req param
  332. * @trigger: trigger reason to disable ns offload
  333. *
  334. * API to disable ns req in fwr
  335. *
  336. * Return QDF_STATUS -in case of success else return error
  337. */
  338. QDF_STATUS
  339. ucfg_pmo_disable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  340. enum pmo_offload_trigger trigger);
  341. /**
  342. * ucfg_pmo_get_ns_offload_params() - API to get ns offload params
  343. * @vdev: objmgr vdev
  344. * @params: output pointer to hold offload params
  345. *
  346. * Return: QDF_STATUS_SUCCESS in case of success else return error
  347. */
  348. QDF_STATUS
  349. ucfg_pmo_get_ns_offload_params(struct wlan_objmgr_vdev *vdev,
  350. struct pmo_ns_offload_params *params);
  351. /**
  352. * ucfg_pmo_ns_addr_scope() - Convert linux specific IPv6 addr scope to
  353. * WLAN driver specific value
  354. * @scope: linux specific IPv6 addr scope
  355. *
  356. * Return: PMO identifier of linux IPv6 addr scope
  357. */
  358. enum pmo_ns_addr_scope
  359. ucfg_pmo_ns_addr_scope(uint32_t ipv6_scope);
  360. /**
  361. * ucfg_pmo_enable_hw_filter_in_fwr() - enable previously configured hw filter
  362. * @vdev: objmgr vdev to configure
  363. *
  364. * Return: QDF_STATUS
  365. */
  366. QDF_STATUS ucfg_pmo_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev);
  367. /**
  368. * ucfg_pmo_enable_action_frame_patterns() - enable the action frame wake up
  369. * patterns as part of the enable host offloads.
  370. * @vdev: objmgr vdev to configure
  371. * @suspend_type: Suspend type. Runtime PM or System Suspend mode
  372. *
  373. * Return: QDF_STATUS
  374. */
  375. QDF_STATUS
  376. ucfg_pmo_enable_action_frame_patterns(struct wlan_objmgr_vdev *vdev,
  377. enum qdf_suspend_type suspend_type);
  378. /**
  379. * ucfg_pmo_disable_action_frame_patterns() - Reset the action frame wake up
  380. * patterns as a part of suspend resume.
  381. * @vdev: objmgr vdev to configure
  382. *
  383. * Return: QDF_STATUS
  384. */
  385. QDF_STATUS
  386. ucfg_pmo_disable_action_frame_patterns(struct wlan_objmgr_vdev *vdev);
  387. /**
  388. * ucfg_pmo_disable_hw_filter_in_fwr() - disable previously configured hw filter
  389. * @vdev: objmgr vdev to configure
  390. *
  391. * Return: QDF_STATUS
  392. */
  393. QDF_STATUS ucfg_pmo_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev);
  394. /**
  395. * ucfg_pmo_max_mc_addr_supported() - to get max support mc address
  396. * @psoc: objmgr psoc
  397. *
  398. * Return: max mc addr supported count for all vdev in corresponding psoc
  399. */
  400. uint8_t ucfg_pmo_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc);
  401. /**
  402. * ucfg_pmo_cache_mc_addr_list(): API to cache mc addr list in pmo vdev priv obj
  403. * @psoc: objmgr psoc handle
  404. * @vdev_id: vdev id
  405. * @gtk_req: pmo gtk req param
  406. *
  407. * Return QDF_STATUS_SUCCESS -in case of success else return error
  408. */
  409. QDF_STATUS ucfg_pmo_cache_mc_addr_list(
  410. struct pmo_mc_addr_list_params *mc_list_config);
  411. /**
  412. * ucfg_pmo_flush_mc_addr_list(): API to flush mc addr list in pmo vdev priv obj
  413. * @psoc: objmgr psoc handle
  414. * @vdev_id: vdev id
  415. *
  416. * Return QDF_STATUS_SUCCESS -in case of success else return error
  417. */
  418. QDF_STATUS ucfg_pmo_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc,
  419. uint8_t vdev_id);
  420. /**
  421. * ucfg_pmo_enhance_mc_filter_enable() - enable enhanced multicast filtering
  422. * @vdev: the vdev to enable enhanced multicast filtering for
  423. *
  424. * Return: QDF_STATUS
  425. */
  426. static inline QDF_STATUS
  427. ucfg_pmo_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev)
  428. {
  429. return pmo_core_enhanced_mc_filter_enable(vdev);
  430. }
  431. /**
  432. * ucfg_pmo_enhance_mc_filter_disable() - disable enhanced multicast filtering
  433. * @vdev: the vdev to disable enhanced multicast filtering for
  434. *
  435. * Return: QDF_STATUS
  436. */
  437. static inline QDF_STATUS
  438. ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev)
  439. {
  440. return pmo_core_enhanced_mc_filter_disable(vdev);
  441. }
  442. /**
  443. * ucfg_pmo_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr
  444. * @psoc: objmgr psoc handle
  445. * @vdev_id: vdev id
  446. * @gtk_req: pmo gtk req param
  447. * @action: true for enable els false
  448. *
  449. * API to enable cached mc add list in fwr
  450. *
  451. * Return QDF_STATUS_SUCCESS -in case of success else return error
  452. */
  453. QDF_STATUS ucfg_pmo_enable_mc_addr_filtering_in_fwr(
  454. struct wlan_objmgr_psoc *psoc,
  455. uint8_t vdev_id,
  456. enum pmo_offload_trigger trigger);
  457. /**
  458. * ucfg_pmo_disable_mc_addr_filtering_in_fwr(): Disable cached mc addr list
  459. * @psoc: objmgr psoc handle
  460. * @vdev_id: vdev id
  461. * @gtk_req: pmo gtk req param
  462. * @action: true for enable els false
  463. *
  464. * API to disable cached mc add list in fwr
  465. *
  466. * Return QDF_STATUS_SUCCESS -in case of success else return error
  467. */
  468. QDF_STATUS ucfg_pmo_disable_mc_addr_filtering_in_fwr(
  469. struct wlan_objmgr_psoc *psoc,
  470. uint8_t vdev_id,
  471. enum pmo_offload_trigger trigger);
  472. /**
  473. * ucfg_pmo_get_mc_addr_list() - API to get mc addr list configured
  474. * @psoc: objmgr psoc
  475. * @vdev_id: vdev identifier
  476. * @mc_list_req: output pointer to hold mc addr list params
  477. *
  478. * Return: QDF_STATUS_SUCCESS in case of success else return error
  479. */
  480. QDF_STATUS
  481. ucfg_pmo_get_mc_addr_list(struct wlan_objmgr_psoc *psoc,
  482. uint8_t vdev_id,
  483. struct pmo_mc_addr_list *mc_list_req);
  484. /**
  485. * ucfg_pmo_cache_gtk_offload_req(): API to cache gtk req in pmo vdev priv obj
  486. * @vdev: objmgr vdev handle
  487. * @gtk_req: pmo gtk req param
  488. *
  489. * Return QDF_STATUS_SUCCESS -in case of success else return error
  490. */
  491. QDF_STATUS ucfg_pmo_cache_gtk_offload_req(struct wlan_objmgr_vdev *vdev,
  492. struct pmo_gtk_req *gtk_req);
  493. /**
  494. * ucfg_pmo_flush_gtk_offload_req(): Flush saved gtk req from pmo vdev priv obj
  495. * @vdev: objmgr vdev handle
  496. *
  497. * Return QDF_STATUS_SUCCESS -in case of success else return error
  498. */
  499. QDF_STATUS ucfg_pmo_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev);
  500. /**
  501. * ucfg_pmo_enable_gtk_offload_in_fwr(): enable cached gtk request in fwr
  502. * @vdev: objmgr vdev handle
  503. *
  504. * Return QDF_STATUS_SUCCESS -in case of success else return error
  505. */
  506. QDF_STATUS ucfg_pmo_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev);
  507. /**
  508. * ucfg_pmo_disable_gtk_offload_in_fwr(): disable cached gtk request in fwr
  509. * @vdev: objmgr vdev handle
  510. *
  511. * Return QDF_STATUS_SUCCESS -in case of success else return error
  512. */
  513. QDF_STATUS ucfg_pmo_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev);
  514. #ifdef WLAN_FEATURE_PACKET_FILTERING
  515. /**
  516. * ucfg_pmo_get_pkt_filter_bitmap() - get default packet filters bitmap
  517. * @psoc: the psoc to query
  518. *
  519. * Return: retrieve packet filter bitmap configuration
  520. */
  521. uint8_t ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc *psoc);
  522. /**
  523. * ucfg_pmo_get_num_packet_filters() - get the number of packet filters
  524. * @psoc: the psoc to query
  525. *
  526. * Return: number of packet filters
  527. */
  528. uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc);
  529. /**
  530. * ucfg_pmo_set_pkt_filter() - Set packet filter
  531. * @psoc: objmgr psoc handle
  532. * @pmo_set_pkt_fltr_req: packet filter set param
  533. * @vdev_id: vdev id
  534. *
  535. * Return QDF_STATUS_SUCCESS -in case of success else return error
  536. */
  537. QDF_STATUS
  538. ucfg_pmo_set_pkt_filter(struct wlan_objmgr_psoc *psoc,
  539. struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
  540. uint8_t vdev_id);
  541. /**
  542. * ucfg_pmo_clear_pkt_filter() - Clear packet filter
  543. * @psoc: objmgr psoc handle
  544. * @pmo_clr_pkt_fltr_param: packet filter clear param
  545. * @vdev_id: vdev id
  546. *
  547. * Return QDF_STATUS_SUCCESS -in case of success else return error
  548. */
  549. QDF_STATUS ucfg_pmo_clear_pkt_filter(
  550. struct wlan_objmgr_psoc *psoc,
  551. struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
  552. uint8_t vdev_id);
  553. #else
  554. static inline uint8_t
  555. ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc *psoc)
  556. {
  557. return 0;
  558. }
  559. static inline uint32_t
  560. ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc)
  561. {
  562. return 0;
  563. }
  564. static inline QDF_STATUS
  565. ucfg_pmo_set_pkt_filter(
  566. struct wlan_objmgr_psoc *psoc,
  567. struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
  568. uint8_t vdev_id)
  569. {
  570. return QDF_STATUS_SUCCESS;
  571. }
  572. static inline QDF_STATUS
  573. ucfg_pmo_clear_pkt_filter(
  574. struct wlan_objmgr_psoc *psoc,
  575. struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
  576. uint8_t vdev_id)
  577. {
  578. return QDF_STATUS_SUCCESS;
  579. }
  580. #endif
  581. /**
  582. * ucfg_pmo_get_wow_enable() - Get wow enable type
  583. * @psoc: pointer to psoc object
  584. *
  585. * Return: wow enable type
  586. */
  587. enum pmo_wow_enable_type
  588. ucfg_pmo_get_wow_enable(struct wlan_objmgr_psoc *psoc);
  589. /**
  590. * ucfg_pmo_set_wow_enable() - Set wow enable type
  591. * @psoc: pointer to psoc object
  592. * @val: wow enalbe value
  593. *
  594. * Return: None
  595. */
  596. void
  597. ucfg_pmo_set_wow_enable(struct wlan_objmgr_psoc *psoc,
  598. enum pmo_wow_enable_type val);
  599. /**
  600. * ucfg_pmo_is_wowlan_deauth_enabled() - Get wowlan deauth enable
  601. * @psoc: pointer to psoc object
  602. *
  603. * Return: wowlan deauth enable or not
  604. */
  605. bool
  606. ucfg_pmo_is_wowlan_deauth_enabled(struct wlan_objmgr_psoc *psoc);
  607. /**
  608. * ucfg_pmo_is_wowlan_disassoc_enabled() - Get wowlan disassoc enable
  609. * @psoc: pointer to psoc object
  610. *
  611. * Return: wowlan disassoc enable
  612. */
  613. bool
  614. ucfg_pmo_is_wowlan_disassoc_enabled(struct wlan_objmgr_psoc *psoc);
  615. /**
  616. * ucfg_pmo_get_gtk_rsp(): API to send gtk response request to fwr
  617. * @vdev: objmgr vdev handle
  618. * @gtk_rsp: pmo gtk response request
  619. *
  620. * This api will send gtk response request to fwr
  621. *
  622. * Return QDF_STATUS_SUCCESS -in case of success else return error
  623. */
  624. QDF_STATUS
  625. ucfg_pmo_get_gtk_rsp(struct wlan_objmgr_vdev *vdev,
  626. struct pmo_gtk_rsp_req *gtk_rsp_req);
  627. /**
  628. * ucfg_pmo_update_extscan_in_progress(): update extscan is in progress flags
  629. * @vdev: objmgr vdev handle
  630. * @value:true if extscan is in progress else false
  631. *
  632. * Return: TRUE/FALSE
  633. */
  634. void ucfg_pmo_update_extscan_in_progress(struct wlan_objmgr_vdev *vdev,
  635. bool value);
  636. /**
  637. * ucfg_pmo_update_p2plo_in_progress(): update p2plo is in progress flags
  638. * @vdev: objmgr vdev handle
  639. * @value:true if p2plo is in progress else false
  640. *
  641. * Return: TRUE/FALSE
  642. */
  643. void ucfg_pmo_update_p2plo_in_progress(struct wlan_objmgr_vdev *vdev,
  644. bool value);
  645. /**
  646. * ucfg_pmo_lphb_config_req() - Handles lphb config request for psoc
  647. * @psoc: objmgr psoc handle
  648. * @lphb_req: low power heart beat request
  649. * @lphb_cb_ctx: Context which needs to pass to soif when lphb callback called
  650. * @callback: upon receiving of lphb indication from fwr call lphb callback
  651. *
  652. * Return: QDF status
  653. */
  654. QDF_STATUS ucfg_pmo_lphb_config_req(struct wlan_objmgr_psoc *psoc,
  655. struct pmo_lphb_req *lphb_req,
  656. void *lphb_cb_ctx,
  657. pmo_lphb_callback callback);
  658. /**
  659. * ucfg_pmo_psoc_update_power_save_mode() - update power save mode
  660. * @vdev: objmgr vdev handle
  661. * @value:vdev power save mode
  662. *
  663. * Return: None
  664. */
  665. void ucfg_pmo_psoc_update_power_save_mode(struct wlan_objmgr_psoc *psoc,
  666. uint8_t value);
  667. /**
  668. * ucfg_pmo_psoc_update_dp_handle() - update psoc data path handle
  669. * @psoc: objmgr psoc handle
  670. * @dp_hdl: psoc data path handle
  671. *
  672. * Return: None
  673. */
  674. void ucfg_pmo_psoc_update_dp_handle(struct wlan_objmgr_psoc *psoc,
  675. void *dp_hdl);
  676. /**
  677. * ucfg_pmo_psoc_update_htc_handle() - update psoc htc layer handle
  678. * @psoc: objmgr psoc handle
  679. * @htc_handle: psoc host-to-tagret layer (htc) handle
  680. *
  681. * Return: None
  682. */
  683. void ucfg_pmo_psoc_update_htc_handle(struct wlan_objmgr_psoc *psoc,
  684. void *htc_handle);
  685. /**
  686. * ucfg_pmo_psoc_set_hif_handle() - Set psoc hif layer handle
  687. * @psoc: objmgr psoc handle
  688. * @hif_handle: hif context handle
  689. *
  690. * Return: None
  691. */
  692. void ucfg_pmo_psoc_set_hif_handle(struct wlan_objmgr_psoc *psoc,
  693. void *hif_handle);
  694. /**
  695. * ucfg_pmo_psoc_set_txrx_pdev_id() - Set psoc pdev txrx layer handle
  696. * @psoc: objmgr psoc handle
  697. * @txrx_pdev_id: txrx pdev identifier
  698. *
  699. * Return: None
  700. */
  701. void ucfg_pmo_psoc_set_txrx_pdev_id(struct wlan_objmgr_psoc *psoc,
  702. uint8_t txrx_pdev_id);
  703. /**
  704. * ucfg_pmo_psoc_user_space_suspend_req() - Handles user space suspend req
  705. * @psoc: objmgr psoc handle
  706. * @type: type of suspend
  707. *
  708. * Handles user space suspend indication for psoc
  709. *
  710. * Return: QDF status
  711. */
  712. QDF_STATUS ucfg_pmo_psoc_user_space_suspend_req(struct wlan_objmgr_psoc *psoc,
  713. enum qdf_suspend_type type);
  714. /**
  715. * ucfg_pmo_psoc_user_space_resume_req() - Handles user space resume req
  716. * @psoc: objmgr psoc handle
  717. * @type: type of suspend from which resume needed
  718. *
  719. * Handles user space resume indication for psoc
  720. *
  721. * Return: QDF status
  722. */
  723. QDF_STATUS ucfg_pmo_psoc_user_space_resume_req(struct wlan_objmgr_psoc *psoc,
  724. enum qdf_suspend_type type);
  725. /**
  726. * ucfg_pmo_psoc_bus_suspend_req(): handles bus suspend for psoc
  727. * @psoc: objmgr psoc
  728. * @type: is this suspend part of runtime suspend or system suspend?
  729. * @wow_params: collection of wow enable override parameters
  730. *
  731. * Bails if a scan is in progress.
  732. * Calls the appropriate handlers based on configuration and event.
  733. *
  734. * Return: QDF_STATUS_SUCCESS for success or error code
  735. */
  736. QDF_STATUS ucfg_pmo_psoc_bus_suspend_req(
  737. struct wlan_objmgr_psoc *psoc,
  738. enum qdf_suspend_type type,
  739. struct pmo_wow_enable_params *wow_params);
  740. #ifdef FEATURE_RUNTIME_PM
  741. /**
  742. * ucfg_pmo_psoc_bus_runtime_suspend(): handles bus runtime suspend for psoc
  743. * @psoc: objmgr psoc
  744. * @pld_cb: callback to call link auto suspend
  745. *
  746. * Return: QDF_STATUS_SUCCESS for success or error code
  747. */
  748. QDF_STATUS ucfg_pmo_psoc_bus_runtime_suspend(struct wlan_objmgr_psoc *psoc,
  749. pmo_pld_auto_suspend_cb pld_cb);
  750. /**
  751. * ucfg_pmo_psoc_bus_runtime_resume(): handles bus runtime resume for psoc
  752. * @psoc: objmgr psoc
  753. * @pld_cb: callback to call link auto resume
  754. *
  755. * Return: QDF_STATUS_SUCCESS for success or error code
  756. */
  757. QDF_STATUS ucfg_pmo_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc,
  758. pmo_pld_auto_resume_cb pld_cb);
  759. #endif
  760. /**
  761. * ucfg_pmo_psoc_suspend_target() -Send suspend target command
  762. * @psoc: objmgr psoc handle
  763. * @disable_target_intr: disable target interrupt
  764. *
  765. * Return: QDF_STATUS_SUCCESS for success or error code
  766. */
  767. QDF_STATUS
  768. ucfg_pmo_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
  769. int disable_target_intr);
  770. QDF_STATUS
  771. ucfg_pmo_add_wow_user_pattern(struct wlan_objmgr_vdev *vdev,
  772. struct pmo_wow_add_pattern *ptrn);
  773. /**
  774. * ucfg_pmo_del_wow_pattern() - Delete WoWl patterns
  775. * @vdev: objmgr vdev
  776. *
  777. * Return:QDF_STATUS_SUCCESS on success else error code
  778. */
  779. QDF_STATUS
  780. ucfg_pmo_del_wow_pattern(struct wlan_objmgr_vdev *vdev);
  781. QDF_STATUS
  782. ucfg_pmo_del_wow_user_pattern(struct wlan_objmgr_vdev *vdev,
  783. uint8_t pattern_id);
  784. /**
  785. * ucfg_pmo_psoc_bus_resume() -handle bus resume request for psoc
  786. * @psoc: objmgr psoc handle
  787. * @type: is this suspend part of runtime suspend or system suspend?
  788. *
  789. * Return:QDF_STATUS_SUCCESS on success else error code
  790. */
  791. QDF_STATUS ucfg_pmo_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
  792. enum qdf_suspend_type type);
  793. /**
  794. * ucfg_pmo_get_wow_bus_suspend(): API to check if wow bus is suspended or not
  795. * @psoc: objmgr psoc handle
  796. *
  797. * Return: True if bus suspende else false
  798. */
  799. bool ucfg_pmo_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc);
  800. /**
  801. * ucfg_pmo_psoc_handle_initial_wake_up() - update initial wake up
  802. * @cb_ctx: objmgr psoc handle as void * due to htc layer is not aware psoc
  803. *
  804. * Return: None
  805. */
  806. void ucfg_pmo_psoc_handle_initial_wake_up(void *cb_ctx);
  807. /**
  808. * ucfg_pmo_psoc_is_target_wake_up_received() - Get initial wake up status
  809. * @psoc: objmgr psoc handle
  810. *
  811. * Return: 0 on success else error code
  812. */
  813. int ucfg_pmo_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc);
  814. /**
  815. * ucfg_pmo_psoc_is_target_wake_up_received() - Clear initial wake up status
  816. * @psoc: objmgr psoc handle
  817. *
  818. * Return: 0 on success else error code
  819. */
  820. int ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc);
  821. /**
  822. * ucfg_pmo_psoc_target_suspend_acknowledge() - Clear initial wake up status
  823. * @psoc: objmgr psoc handle
  824. *
  825. * Return: None
  826. */
  827. void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack);
  828. /**
  829. * ucfg_pmo_psoc_wakeup_host_event_received() - got host wake up evennt from fwr
  830. * @psoc: objmgr psoc handle
  831. *
  832. * Return: None
  833. */
  834. void ucfg_pmo_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc);
  835. /**
  836. * ucfg_pmo_config_listen_interval() - function to configure listen interval
  837. * @vdev: objmgr vdev
  838. * @listen_interval: new listen interval passed by user
  839. *
  840. * This function allows user to configure listen interval dynamically
  841. *
  842. * Return: QDF_STATUS
  843. */
  844. QDF_STATUS ucfg_pmo_config_listen_interval(struct wlan_objmgr_vdev *vdev,
  845. uint32_t listen_interval);
  846. /**
  847. * ucfg_pmo_config_modulated_dtim() - function to configure modulated dtim
  848. * @vdev: objmgr vdev handle
  849. * @param_value: New modulated dtim value passed by user
  850. *
  851. * This function configures the modulated dtim in firmware
  852. *
  853. * Return: QDF_STATUS
  854. */
  855. QDF_STATUS ucfg_pmo_config_modulated_dtim(struct wlan_objmgr_vdev *vdev,
  856. uint32_t mod_dtim);
  857. #ifdef WLAN_FEATURE_WOW_PULSE
  858. /**
  859. * ucfg_pmo_is_wow_pulse_enabled() - to get wow pulse enable configuration
  860. * @psoc: objmgr psoc handle
  861. *
  862. * Return: wow pulse enable configuration
  863. */
  864. bool ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc *psoc);
  865. /**
  866. * ucfg_pmo_get_wow_pulse_pin() - to get wow pulse pin configuration
  867. * @psoc: objmgr psoc handle
  868. *
  869. * Return: wow pulse pin configuration
  870. */
  871. uint8_t ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc *psoc);
  872. /**
  873. * ucfg_pmo_get_wow_pulse_interval_high() - to get wow pulse interval high
  874. * @psoc: objmgr psoc handle
  875. *
  876. * Return: wow pulse interval high configuration
  877. */
  878. uint16_t ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc *psoc);
  879. /**
  880. * ucfg_pmo_get_wow_pulse_interval_low() - to get wow pulse interval low
  881. * @psoc: objmgr psoc handle
  882. *
  883. * Return: wow pulse interval high configuration
  884. */
  885. uint16_t ucfg_pmo_get_wow_pulse_interval_low(struct wlan_objmgr_psoc *psoc);
  886. #else
  887. static inline bool
  888. ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc *psoc)
  889. {
  890. return false;
  891. }
  892. static inline uint8_t
  893. ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc *psoc)
  894. {
  895. return 0;
  896. }
  897. static inline uint16_t
  898. ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc *psoc)
  899. {
  900. return 0;
  901. }
  902. #endif
  903. /**
  904. * ucfg_pmo_is_active_mode_offloaded() - get active mode offload configuration
  905. * @psoc: objmgr psoc handle
  906. *
  907. * Return: retrieve active mode offload configuration
  908. */
  909. bool ucfg_pmo_is_active_mode_offloaded(struct wlan_objmgr_psoc *psoc);
  910. /**
  911. * ucfg_pmo_get_auto_power_fail_mode() - to get auto power save failure mode
  912. * @psoc: objmgr psoc handle
  913. *
  914. * Return: auto power save failure mode configuration
  915. */
  916. enum pmo_auto_pwr_detect_failure_mode
  917. ucfg_pmo_get_auto_power_fail_mode(struct wlan_objmgr_psoc *psoc);
  918. /**
  919. * ucfg_pmo_set_wow_data_inactivity_timeout() - Set wow data inactivity timeout
  920. * @psoc: pointer to psoc object
  921. * @val: wow data inactivity timeout value
  922. *
  923. * Return: None
  924. */
  925. void
  926. ucfg_pmo_set_wow_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc,
  927. uint8_t val);
  928. /**
  929. * ucfg_pmo_is_pkt_filter_enabled() - pmo packet filter feature enable or not
  930. * @psoc: objmgr psoc handle
  931. *
  932. * Return: pmo packet filter feature enable/disable
  933. */
  934. bool ucfg_pmo_is_pkt_filter_enabled(struct wlan_objmgr_psoc *psoc);
  935. /**
  936. * ucfg_pmo_get_active_uc_apf_mode() - to get the modes active APF
  937. * for MC/BC packets
  938. * @psoc: objmgr psoc handle
  939. *
  940. * Return: the modes active APF
  941. */
  942. enum active_apf_mode
  943. ucfg_pmo_get_active_uc_apf_mode(struct wlan_objmgr_psoc *psoc);
  944. /**
  945. * ucfg_pmo_get_active_mc_bc_apf_mode() - to get the modes active APF
  946. * for uc packets
  947. * @psoc: objmgr psoc handle
  948. *
  949. * Return: the modes active APF
  950. */
  951. enum active_apf_mode
  952. ucfg_pmo_get_active_mc_bc_apf_mode(struct wlan_objmgr_psoc *psoc);
  953. #ifdef FEATURE_WLAN_APF
  954. /**
  955. * ucfg_pmo_is_apf_enabled() - to get apf configuration
  956. * @psoc: objmgr psoc handle
  957. *
  958. * Return: true if enabled, it is intersection of ini and target cap
  959. */
  960. bool ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc *psoc);
  961. #else
  962. static inline bool ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc *psoc)
  963. {
  964. return false;
  965. }
  966. #endif
  967. #else /* WLAN_POWER_MANAGEMENT_OFFLOAD */
  968. static inline QDF_STATUS
  969. ucfg_pmo_psoc_open(struct wlan_objmgr_psoc *psoc)
  970. {
  971. return QDF_STATUS_SUCCESS;
  972. }
  973. static inline QDF_STATUS
  974. ucfg_pmo_psoc_close(struct wlan_objmgr_psoc *psoc)
  975. {
  976. return QDF_STATUS_SUCCESS;
  977. }
  978. static inline uint32_t
  979. ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc)
  980. {
  981. return 0;
  982. }
  983. static inline uint8_t
  984. ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc *psoc)
  985. {
  986. return 0;
  987. }
  988. static inline uint32_t
  989. ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc)
  990. {
  991. return 0;
  992. }
  993. static inline uint8_t
  994. ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc)
  995. {
  996. return 0;
  997. }
  998. static inline QDF_STATUS
  999. ucfg_pmo_get_psoc_config(
  1000. struct wlan_objmgr_psoc *psoc,
  1001. struct pmo_psoc_cfg *psoc_cfg)
  1002. {
  1003. return QDF_STATUS_SUCCESS;
  1004. }
  1005. static inline QDF_STATUS
  1006. ucfg_pmo_update_psoc_config(
  1007. struct wlan_objmgr_psoc *psoc,
  1008. struct pmo_psoc_cfg *psoc_cfg)
  1009. {
  1010. return QDF_STATUS_SUCCESS;
  1011. }
  1012. static inline QDF_STATUS
  1013. ucfg_pmo_psoc_set_caps(
  1014. struct wlan_objmgr_psoc *psoc,
  1015. struct pmo_device_caps *caps)
  1016. {
  1017. return QDF_STATUS_SUCCESS;
  1018. }
  1019. static inline bool
  1020. ucfg_pmo_is_ap_mode_supports_arp_ns(
  1021. struct wlan_objmgr_psoc *psoc,
  1022. enum QDF_OPMODE vdev_opmode)
  1023. {
  1024. return true;
  1025. }
  1026. static inline bool
  1027. ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev)
  1028. {
  1029. return true;
  1030. }
  1031. static inline bool
  1032. ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev)
  1033. {
  1034. return true;
  1035. }
  1036. static inline void
  1037. ucfg_pmo_enable_wakeup_event(
  1038. struct wlan_objmgr_psoc *psoc,
  1039. uint32_t vdev_id, uint32_t *bitmap)
  1040. {
  1041. }
  1042. static inline void
  1043. ucfg_pmo_disable_wakeup_event(
  1044. struct wlan_objmgr_psoc *psoc,
  1045. uint32_t vdev_id, uint32_t bitmap)
  1046. {
  1047. }
  1048. static inline QDF_STATUS
  1049. ucfg_pmo_cache_arp_offload_req(struct pmo_arp_req *arp_req)
  1050. {
  1051. return QDF_STATUS_SUCCESS;
  1052. }
  1053. static inline QDF_STATUS
  1054. ucfg_pmo_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev)
  1055. {
  1056. return QDF_STATUS_SUCCESS;
  1057. }
  1058. static inline QDF_STATUS
  1059. ucfg_pmo_enable_arp_offload_in_fwr(
  1060. struct wlan_objmgr_vdev *vdev,
  1061. enum pmo_offload_trigger trigger)
  1062. {
  1063. return QDF_STATUS_SUCCESS;
  1064. }
  1065. static inline QDF_STATUS
  1066. ucfg_pmo_disable_arp_offload_in_fwr(
  1067. struct wlan_objmgr_vdev *vdev,
  1068. enum pmo_offload_trigger trigger)
  1069. {
  1070. return QDF_STATUS_SUCCESS;
  1071. }
  1072. static inline QDF_STATUS
  1073. ucfg_pmo_get_arp_offload_params(struct wlan_objmgr_vdev *vdev,
  1074. struct pmo_arp_offload_params *params)
  1075. {
  1076. return QDF_STATUS_SUCCESS;
  1077. }
  1078. static inline QDF_STATUS
  1079. ucfg_pmo_cache_ns_offload_req(struct pmo_ns_req *ns_req)
  1080. {
  1081. return QDF_STATUS_SUCCESS;
  1082. }
  1083. static inline QDF_STATUS
  1084. ucfg_pmo_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev)
  1085. {
  1086. return QDF_STATUS_SUCCESS;
  1087. }
  1088. static inline QDF_STATUS
  1089. ucfg_pmo_enable_ns_offload_in_fwr(
  1090. struct wlan_objmgr_vdev *vdev,
  1091. enum pmo_offload_trigger trigger)
  1092. {
  1093. return QDF_STATUS_SUCCESS;
  1094. }
  1095. static inline QDF_STATUS
  1096. ucfg_pmo_disable_ns_offload_in_fwr(
  1097. struct wlan_objmgr_vdev *vdev,
  1098. enum pmo_offload_trigger trigger)
  1099. {
  1100. return QDF_STATUS_SUCCESS;
  1101. }
  1102. static inline QDF_STATUS
  1103. ucfg_pmo_get_ns_offload_params(struct wlan_objmgr_vdev *vdev,
  1104. struct pmo_ns_offload_params *params)
  1105. {
  1106. return QDF_STATUS_SUCCESS;
  1107. }
  1108. static inline enum pmo_ns_addr_scope
  1109. ucfg_pmo_ns_addr_scope(uint32_t ipv6_scope)
  1110. {
  1111. return PMO_NS_ADDR_SCOPE_INVALID;
  1112. }
  1113. static inline QDF_STATUS
  1114. ucfg_pmo_cache_mc_addr_list(
  1115. struct pmo_mc_addr_list_params *mc_list_config)
  1116. {
  1117. return QDF_STATUS_SUCCESS;
  1118. }
  1119. static inline QDF_STATUS
  1120. ucfg_pmo_flush_mc_addr_list(
  1121. struct wlan_objmgr_psoc *psoc,
  1122. uint8_t vdev_id)
  1123. {
  1124. return QDF_STATUS_SUCCESS;
  1125. }
  1126. static inline QDF_STATUS
  1127. ucfg_pmo_enable_mc_addr_filtering_in_fwr(
  1128. struct wlan_objmgr_psoc *psoc,
  1129. uint8_t vdev_id,
  1130. enum pmo_offload_trigger trigger)
  1131. {
  1132. return QDF_STATUS_SUCCESS;
  1133. }
  1134. static inline QDF_STATUS
  1135. ucfg_pmo_disable_mc_addr_filtering_in_fwr(
  1136. struct wlan_objmgr_psoc *psoc,
  1137. uint8_t vdev_id,
  1138. enum pmo_offload_trigger trigger)
  1139. {
  1140. return QDF_STATUS_SUCCESS;
  1141. }
  1142. static inline uint8_t
  1143. ucfg_pmo_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc)
  1144. {
  1145. return 0;
  1146. }
  1147. static inline QDF_STATUS
  1148. ucfg_pmo_get_mc_addr_list(struct wlan_objmgr_psoc *psoc,
  1149. uint8_t vdev_id,
  1150. struct pmo_mc_addr_list *mc_list_req)
  1151. {
  1152. return QDF_STATUS_SUCCESS;
  1153. }
  1154. static inline QDF_STATUS
  1155. ucfg_pmo_cache_gtk_offload_req(
  1156. struct wlan_objmgr_vdev *vdev,
  1157. struct pmo_gtk_req *gtk_req)
  1158. {
  1159. return QDF_STATUS_SUCCESS;
  1160. }
  1161. static inline QDF_STATUS
  1162. ucfg_pmo_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev)
  1163. {
  1164. return QDF_STATUS_SUCCESS;
  1165. }
  1166. static inline QDF_STATUS
  1167. ucfg_pmo_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev)
  1168. {
  1169. return QDF_STATUS_SUCCESS;
  1170. }
  1171. static inline QDF_STATUS
  1172. ucfg_pmo_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev)
  1173. {
  1174. return QDF_STATUS_SUCCESS;
  1175. }
  1176. static inline QDF_STATUS
  1177. ucfg_pmo_set_pkt_filter(
  1178. struct wlan_objmgr_psoc *psoc,
  1179. struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
  1180. uint8_t vdev_id)
  1181. {
  1182. return QDF_STATUS_SUCCESS;
  1183. }
  1184. static inline QDF_STATUS
  1185. ucfg_pmo_clear_pkt_filter(
  1186. struct wlan_objmgr_psoc *psoc,
  1187. struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
  1188. uint8_t vdev_id)
  1189. {
  1190. return QDF_STATUS_SUCCESS;
  1191. }
  1192. static inline QDF_STATUS
  1193. ucfg_pmo_get_gtk_rsp(
  1194. struct wlan_objmgr_vdev *vdev,
  1195. struct pmo_gtk_rsp_req *gtk_rsp_req)
  1196. {
  1197. return QDF_STATUS_SUCCESS;
  1198. }
  1199. static inline void
  1200. ucfg_pmo_update_extscan_in_progress(
  1201. struct wlan_objmgr_vdev *vdev,
  1202. bool value)
  1203. {
  1204. }
  1205. static inline void
  1206. ucfg_pmo_update_p2plo_in_progress(
  1207. struct wlan_objmgr_vdev *vdev,
  1208. bool value)
  1209. {
  1210. }
  1211. static inline QDF_STATUS
  1212. ucfg_pmo_lphb_config_req(
  1213. struct wlan_objmgr_psoc *psoc,
  1214. struct pmo_lphb_req *lphb_req, void *lphb_cb_ctx,
  1215. pmo_lphb_callback callback)
  1216. {
  1217. return QDF_STATUS_SUCCESS;
  1218. }
  1219. static inline void
  1220. ucfg_pmo_psoc_update_power_save_mode(
  1221. struct wlan_objmgr_psoc *psoc,
  1222. uint8_t value)
  1223. {
  1224. }
  1225. static inline void
  1226. ucfg_pmo_psoc_update_dp_handle(
  1227. struct wlan_objmgr_psoc *psoc,
  1228. void *dp_handle)
  1229. {
  1230. }
  1231. static inline void
  1232. ucfg_pmo_psoc_update_htc_handle(
  1233. struct wlan_objmgr_psoc *psoc,
  1234. void *htc_handle)
  1235. {
  1236. }
  1237. static inline void
  1238. ucfg_pmo_psoc_set_hif_handle(
  1239. struct wlan_objmgr_psoc *psoc,
  1240. void *hif_handle)
  1241. {
  1242. }
  1243. static inline void
  1244. ucfg_pmo_psoc_set_txrx_pdev_id(
  1245. struct wlan_objmgr_psoc *psoc,
  1246. uint8_t txrx_pdev_id)
  1247. {
  1248. }
  1249. static inline void
  1250. ucfg_pmo_psoc_handle_initial_wake_up(void *cb_ctx)
  1251. {
  1252. }
  1253. static inline QDF_STATUS
  1254. ucfg_pmo_psoc_user_space_suspend_req(
  1255. struct wlan_objmgr_psoc *psoc,
  1256. enum qdf_suspend_type type)
  1257. {
  1258. return QDF_STATUS_SUCCESS;
  1259. }
  1260. static inline QDF_STATUS
  1261. ucfg_pmo_psoc_user_space_resume_req(
  1262. struct wlan_objmgr_psoc *psoc,
  1263. enum qdf_suspend_type type)
  1264. {
  1265. return QDF_STATUS_SUCCESS;
  1266. }
  1267. static inline QDF_STATUS
  1268. ucfg_pmo_psoc_bus_suspend_req(
  1269. struct wlan_objmgr_psoc *psoc,
  1270. enum qdf_suspend_type type,
  1271. struct pmo_wow_enable_params *wow_params)
  1272. {
  1273. return QDF_STATUS_SUCCESS;
  1274. }
  1275. #ifdef FEATURE_RUNTIME_PM
  1276. static inline QDF_STATUS
  1277. ucfg_pmo_psoc_bus_runtime_suspend(
  1278. struct wlan_objmgr_psoc *psoc,
  1279. pmo_pld_auto_suspend_cb pld_cb)
  1280. {
  1281. return QDF_STATUS_SUCCESS;
  1282. }
  1283. static inline QDF_STATUS
  1284. ucfg_pmo_psoc_bus_runtime_resume(
  1285. struct wlan_objmgr_psoc *psoc,
  1286. pmo_pld_auto_suspend_cb pld_cb)
  1287. {
  1288. return QDF_STATUS_SUCCESS;
  1289. }
  1290. #endif
  1291. static inline QDF_STATUS
  1292. ucfg_pmo_psoc_suspend_target(
  1293. struct wlan_objmgr_psoc *psoc,
  1294. int disable_target_intr)
  1295. {
  1296. return QDF_STATUS_SUCCESS;
  1297. }
  1298. static inline QDF_STATUS
  1299. ucfg_pmo_add_wow_user_pattern(
  1300. struct wlan_objmgr_vdev *vdev,
  1301. struct pmo_wow_add_pattern *ptrn)
  1302. {
  1303. return QDF_STATUS_SUCCESS;
  1304. }
  1305. static inline QDF_STATUS
  1306. ucfg_pmo_del_wow_user_pattern(
  1307. struct wlan_objmgr_vdev *vdev,
  1308. uint8_t pattern_id)
  1309. {
  1310. return QDF_STATUS_SUCCESS;
  1311. }
  1312. QDF_STATUS
  1313. ucfg_pmo_del_wow_pattern(struct wlan_objmgr_vdev *vdev)
  1314. {
  1315. return QDF_STATUS_SUCCESS;
  1316. }
  1317. static inline QDF_STATUS
  1318. ucfg_pmo_psoc_bus_resume_req(
  1319. struct wlan_objmgr_psoc *psoc,
  1320. enum qdf_suspend_type type)
  1321. {
  1322. return QDF_STATUS_SUCCESS;
  1323. }
  1324. static inline bool
  1325. ucfg_pmo_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc)
  1326. {
  1327. return true;
  1328. }
  1329. static inline int
  1330. ucfg_pmo_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc)
  1331. {
  1332. return 0;
  1333. }
  1334. static inline int
  1335. ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc)
  1336. {
  1337. return 0;
  1338. }
  1339. static inline void
  1340. ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack)
  1341. {
  1342. }
  1343. static inline void
  1344. ucfg_pmo_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc)
  1345. {
  1346. }
  1347. static inline QDF_STATUS
  1348. ucfg_pmo_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev)
  1349. {
  1350. return QDF_STATUS_SUCCESS;
  1351. }
  1352. static inline QDF_STATUS
  1353. ucfg_pmo_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev)
  1354. {
  1355. return QDF_STATUS_SUCCESS;
  1356. }
  1357. static inline QDF_STATUS
  1358. ucfg_pmo_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev)
  1359. {
  1360. return QDF_STATUS_SUCCESS;
  1361. }
  1362. static inline QDF_STATUS
  1363. ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev)
  1364. {
  1365. return QDF_STATUS_SUCCESS;
  1366. }
  1367. static inline QDF_STATUS
  1368. ucfg_pmo_config_listen_interval(struct wlan_objmgr_vdev *vdev,
  1369. uint32_t listen_interval)
  1370. {
  1371. return QDF_STATUS_SUCCESS;
  1372. }
  1373. static inline QDF_STATUS
  1374. ucfg_pmo_config_modulated_dtim(struct wlan_objmgr_vdev *vdev,
  1375. uint32_t mod_dtim)
  1376. {
  1377. return QDF_STATUS_SUCCESS;
  1378. }
  1379. static inline bool
  1380. ucfg_pmo_is_arp_offload_enabled(struct wlan_objmgr_psoc *psoc)
  1381. {
  1382. return false;
  1383. }
  1384. static inline void
  1385. ucfg_pmo_set_arp_offload_enabled(struct wlan_objmgr_psoc *psoc,
  1386. bool val)
  1387. {
  1388. }
  1389. static inline bool
  1390. ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc *psoc)
  1391. {
  1392. return false;
  1393. }
  1394. static inline uint8_t
  1395. ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc *psoc)
  1396. {
  1397. return 0;
  1398. }
  1399. static inline uint16_t
  1400. ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc *psoc)
  1401. {
  1402. return 0;
  1403. }
  1404. static inline uint16_t
  1405. ucfg_pmo_get_wow_pulse_interval_low(struct wlan_objmgr_psoc *psoc)
  1406. {
  1407. return 0;
  1408. }
  1409. static inline bool
  1410. ucfg_pmo_is_active_mode_offloaded(struct wlan_objmgr_psoc *psoc)
  1411. {
  1412. return true;
  1413. }
  1414. static inline enum pmo_auto_pwr_detect_failure_mode
  1415. ucfg_pmo_get_auto_power_fail_mode(struct wlan_objmgr_psoc *psoc)
  1416. {
  1417. return PMO_FW_TO_CRASH_ON_PWR_FAILURE;
  1418. }
  1419. static inline bool ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc *psoc)
  1420. {
  1421. return false;
  1422. }
  1423. static inline bool ucfg_pmo_is_ssdp_enabled(struct wlan_objmgr_psoc *psoc)
  1424. {
  1425. return false;
  1426. }
  1427. static inline bool ucfg_pmo_is_ns_offloaded(struct wlan_objmgr_psoc *psoc)
  1428. {
  1429. return false;
  1430. }
  1431. static inline uint8_t
  1432. ucfg_pmo_get_sta_dynamic_dtim(struct wlan_objmgr_psoc *psoc)
  1433. {
  1434. return 0;
  1435. }
  1436. static inline uint8_t
  1437. ucfg_pmo_get_sta_mod_dtim(struct wlan_objmgr_psoc *psoc)
  1438. {
  1439. return 0;
  1440. }
  1441. static inline void
  1442. ucfg_pmo_set_sta_mod_dtim(struct wlan_objmgr_psoc *psoc,
  1443. uint8_t val)
  1444. {
  1445. }
  1446. static inline bool
  1447. ucfg_pmo_is_mc_addr_list_enabled(struct wlan_objmgr_psoc *psoc)
  1448. {
  1449. return false;
  1450. }
  1451. static inline enum powersave_mode
  1452. ucfg_pmo_get_power_save_mode(struct wlan_objmgr_psoc *psoc)
  1453. {
  1454. return 0;
  1455. }
  1456. static inline void
  1457. ucfg_pmo_set_power_save_mode(struct wlan_objmgr_psoc *psoc,
  1458. enum powersave_mode val)
  1459. {
  1460. }
  1461. static inline uint8_t
  1462. ucfg_pmo_get_max_ps_poll(struct wlan_objmgr_psoc *psoc)
  1463. {
  1464. return 0;
  1465. }
  1466. static inline uint8_t
  1467. ucfg_pmo_power_save_offload_enabled(struct wlan_objmgr_psoc *psoc)
  1468. {
  1469. return 0;
  1470. }
  1471. static inline void
  1472. ucfg_pmo_set_wow_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc,
  1473. uint8_t val)
  1474. {
  1475. }
  1476. static inline bool
  1477. ucfg_pmo_is_pkt_filter_enabled(struct wlan_objmgr_psoc *psoc)
  1478. {
  1479. return false;
  1480. }
  1481. enum active_apf_mode
  1482. ucfg_pmo_get_active_uc_apf_mode(struct wlan_objmgr_psoc *psoc);
  1483. {
  1484. return 0;
  1485. }
  1486. enum active_apf_mode
  1487. ucfg_pmo_get_active_mc_bc_apf_mode(struct wlan_objmgr_psoc *psoc)
  1488. {
  1489. return 0;
  1490. }
  1491. #endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
  1492. #ifdef WLAN_FEATURE_EXTWOW_SUPPORT
  1493. /**
  1494. * ucfg_pmo_extwow_is_goto_suspend_enabled() - Get extwow goto suspend enable
  1495. * @psoc: pointer to psoc object
  1496. *
  1497. * Return: extend wow goto suspend enable or not
  1498. */
  1499. bool
  1500. ucfg_pmo_extwow_is_goto_suspend_enabled(struct wlan_objmgr_psoc *psoc);
  1501. /**
  1502. * ucfg_pmo_extwow_app1_wakeup_pin_num() - Get wakeup1 PIN number
  1503. * @psoc: pointer to psoc object
  1504. *
  1505. * Return: wakeup1 PIN number
  1506. */
  1507. uint8_t
  1508. ucfg_pmo_extwow_app1_wakeup_pin_num(struct wlan_objmgr_psoc *psoc);
  1509. /**
  1510. * ucfg_pmo_extwow_app2_wakeup_pin_num() - Get wakeup2 PIN number
  1511. * @psoc: pointer to psoc object
  1512. *
  1513. * Return: wakeup2 PIN number
  1514. */
  1515. uint8_t
  1516. ucfg_pmo_extwow_app2_wakeup_pin_num(struct wlan_objmgr_psoc *psoc);
  1517. /**
  1518. * ucfg_pmo_extwow_app2_init_ping_interval() - Get keep alive init ping interval
  1519. * @psoc: pointer to psoc object
  1520. *
  1521. * Return: keep alive init ping interval
  1522. */
  1523. uint32_t
  1524. ucfg_pmo_extwow_app2_init_ping_interval(struct wlan_objmgr_psoc *psoc);
  1525. /**
  1526. * ucfg_pmo_extwow_app2_min_ping_interval() - Get keep alive min ping interval
  1527. * @psoc: pointer to psoc object
  1528. *
  1529. * Return: keep alive min ping interval
  1530. */
  1531. uint32_t
  1532. ucfg_pmo_extwow_app2_min_ping_interval(struct wlan_objmgr_psoc *psoc);
  1533. /**
  1534. * ucfg_pmo_extwow_app2_max_ping_interval() - Get keep alive max ping interval
  1535. * @psoc: pointer to psoc object
  1536. *
  1537. * Return: keep alive max ping interval
  1538. */
  1539. uint32_t
  1540. ucfg_pmo_extwow_app2_max_ping_interval(struct wlan_objmgr_psoc *psoc);
  1541. /**
  1542. * ucfg_pmo_extwow_app2_inc_ping_interval() - Get keep alive inc ping interval
  1543. * @psoc: pointer to psoc object
  1544. *
  1545. * Return: keep alive inc ping interval
  1546. */
  1547. uint32_t
  1548. ucfg_pmo_extwow_app2_inc_ping_interval(struct wlan_objmgr_psoc *psoc);
  1549. /**
  1550. * ucfg_pmo_extwow_app2_tcp_src_port() - Get TCP source port
  1551. * @psoc: pointer to psoc object
  1552. *
  1553. * Return: TCP source port
  1554. */
  1555. uint16_t
  1556. ucfg_pmo_extwow_app2_tcp_src_port(struct wlan_objmgr_psoc *psoc);
  1557. /**
  1558. * ucfg_pmo_extwow_app2_tcp_dst_port() - Get TCP Destination port
  1559. * @psoc: pointer to psoc object
  1560. *
  1561. * Return: TCP Destination port
  1562. */
  1563. uint16_t
  1564. ucfg_pmo_extwow_app2_tcp_dst_port(struct wlan_objmgr_psoc *psoc);
  1565. /**
  1566. * ucfg_pmo_extwow_app2_tcp_tx_timeout() - Get TCP Tx timeout
  1567. * @psoc: pointer to psoc object
  1568. *
  1569. * Return: TCP Tx timeout
  1570. */
  1571. uint32_t
  1572. ucfg_pmo_extwow_app2_tcp_tx_timeout(struct wlan_objmgr_psoc *psoc);
  1573. /**
  1574. * ucfg_pmo_extwow_app2_tcp_rx_timeout() - to get extwow tcp rx timeout
  1575. * @psoc: objmgr psoc handle
  1576. *
  1577. * Return: retrieve extwow app2 tcp rx timeout configuration
  1578. */
  1579. uint32_t
  1580. ucfg_pmo_extwow_app2_tcp_rx_timeout(struct wlan_objmgr_psoc *psoc);
  1581. #else
  1582. static inline bool
  1583. ucfg_pmo_extwow_is_goto_suspend_enabled(struct wlan_objmgr_psoc *psoc)
  1584. {
  1585. return false;
  1586. }
  1587. static inline uint32_t
  1588. ucfg_pmo_extwow_app1_wakeup_pin_num(struct wlan_objmgr_psoc *psoc)
  1589. {
  1590. return 0;
  1591. }
  1592. static inline uint32_t
  1593. ucfg_pmo_extwow_app2_wakeup_pin_num(struct wlan_objmgr_psoc *psoc)
  1594. {
  1595. return 0;
  1596. }
  1597. static inline uint32_t
  1598. ucfg_pmo_extwow_app2_init_ping_interval(struct wlan_objmgr_psoc *psoc)
  1599. {
  1600. return 0;
  1601. }
  1602. static inline uint32_t
  1603. ucfg_pmo_extwow_app2_min_ping_interval(struct wlan_objmgr_psoc *psoc)
  1604. {
  1605. return 0;
  1606. }
  1607. static inline uint32_t
  1608. ucfg_pmo_extwow_app2_max_ping_interval(struct wlan_objmgr_psoc *psoc)
  1609. {
  1610. return 0;
  1611. }
  1612. static inline uint32_t
  1613. ucfg_pmo_extwow_app2_inc_ping_interval(struct wlan_objmgr_psoc *psoc)
  1614. {
  1615. return 0;
  1616. }
  1617. static inline uint16_t
  1618. ucfg_pmo_extwow_app2_tcp_src_port(struct wlan_objmgr_psoc *psoc)
  1619. {
  1620. return 0;
  1621. }
  1622. static inline uint16_t
  1623. ucfg_pmo_extwow_app2_tcp_dst_port(struct wlan_objmgr_psoc *psoc)
  1624. {
  1625. return 0;
  1626. }
  1627. static inline uint32_t
  1628. ucfg_pmo_extwow_app2_tcp_tx_timeout(struct wlan_objmgr_psoc *psoc)
  1629. {
  1630. return 0;
  1631. }
  1632. static inline uint32_t
  1633. ucfg_pmo_extwow_app2_tcp_rx_timeout(struct wlan_objmgr_psoc *psoc)
  1634. {
  1635. return 0;
  1636. }
  1637. #endif
  1638. #ifdef FEATURE_RUNTIME_PM
  1639. /**
  1640. * ucfg_pmo_get_runtime_pm_delay() - Get runtime pm's inactivity timer
  1641. * @psoc: pointer to psoc object
  1642. *
  1643. * Return: runtime pm's inactivity timer
  1644. */
  1645. uint32_t
  1646. ucfg_pmo_get_runtime_pm_delay(struct wlan_objmgr_psoc *psoc);
  1647. #else
  1648. static inline uint32_t
  1649. ucfg_pmo_get_runtime_pm_delay(struct wlan_objmgr_psoc *psoc)
  1650. {
  1651. return 0;
  1652. }
  1653. #endif /* FEATURE_RUNTIME_PM */
  1654. /**
  1655. * ucfg_pmo_get_enable_sap_suspend - Return enable_sap_suspend value to caller
  1656. * @psoc: Pointer to psoc object
  1657. *
  1658. * Return: The value of enable_sap_suspend as stored in CFG
  1659. */
  1660. bool
  1661. ucfg_pmo_get_enable_sap_suspend(struct wlan_objmgr_psoc *psoc);
  1662. #endif /* end of _WLAN_PMO_UCFG_API_H_ */