wlan_pmo_ucfg_api.h 29 KB

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