wlan_ocb_ucfg_api.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. /*
  2. * Copyright (c) 2018 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. /**
  19. * DOC: Contains OCB north bound interface definitions
  20. */
  21. #ifndef _WLAN_OCB_UCFG_API_H_
  22. #define _WLAN_OCB_UCFG_API_H_
  23. #include <qdf_types.h>
  24. #include "wlan_ocb_public_structs.h"
  25. #ifdef WLAN_FEATURE_DSRC
  26. /**
  27. * ucfg_ocb_set_channel_config() - send OCB config request
  28. * @vdev: vdev handle
  29. * @config: config parameters
  30. * @set_config_cb: callback for set channel config
  31. * @arg: arguments for the callback
  32. *
  33. * Return: QDF_STATUS_SUCCESS on success
  34. */
  35. QDF_STATUS ucfg_ocb_set_channel_config(struct wlan_objmgr_vdev *vdev,
  36. struct ocb_config *config,
  37. ocb_sync_callback set_config_cb,
  38. void *arg);
  39. /**
  40. * ucfg_ocb_set_utc_time() - UCFG API to set UTC time
  41. * @vdev: vdev handle
  42. * @utc: UTC time
  43. *
  44. * Return: QDF_STATUS_SUCCESS on success
  45. */
  46. QDF_STATUS ucfg_ocb_set_utc_time(struct wlan_objmgr_vdev *vdev,
  47. struct ocb_utc_param *utc);
  48. /**
  49. * ucfg_ocb_start_timing_advert() - ucfg API to start TA
  50. * @vdev: vdev handle
  51. * @ta: timing advertisement parameters
  52. *
  53. * Return: QDF_STATUS_SUCCESS on success
  54. */
  55. QDF_STATUS ucfg_ocb_start_timing_advert(struct wlan_objmgr_vdev *vdev,
  56. struct ocb_timing_advert_param *ta);
  57. /**
  58. * ucfg_ocb_stop_timing_advert() - ucfg API to stop TA
  59. * @vdev: vdev handle
  60. * @ta: timing advertisement parameters
  61. *
  62. * Return: QDF_STATUS_SUCCESS on success
  63. */
  64. QDF_STATUS ucfg_ocb_stop_timing_advert(struct wlan_objmgr_vdev *vdev,
  65. struct ocb_timing_advert_param *ta);
  66. /**
  67. * ucfg_ocb_get_tsf_timer() - ucfg API to get tsf timer
  68. * @vdev: vdev handle
  69. * @request: request for TSF timer
  70. * @get_tsf_cb: callback for TSF timer response
  71. * @arg: argument for the ccallback
  72. *
  73. * Return: QDF_STATUS_SUCCESS on success
  74. */
  75. QDF_STATUS ucfg_ocb_get_tsf_timer(struct wlan_objmgr_vdev *vdev,
  76. struct ocb_get_tsf_timer_param *request,
  77. ocb_sync_callback get_tsf_cb,
  78. void *arg);
  79. /**
  80. * ucfg_ocb_dcc_get_stats() - get DCC stats
  81. * @vdev: vdev handle
  82. * @request: request for dcc stats
  83. * @dcc_get_stats_cb: callback for get dcc stats response
  84. * @arg: argument for the ccallback
  85. *
  86. * Return: QDF_STATUS_SUCCESS on success
  87. */
  88. QDF_STATUS ucfg_ocb_dcc_get_stats(struct wlan_objmgr_vdev *vdev,
  89. struct ocb_dcc_get_stats_param *request,
  90. ocb_sync_callback dcc_get_stats_cb,
  91. void *arg);
  92. /**
  93. * ucfg_ocb_dcc_clear_stats() - Clear DCC stats
  94. * @vdev: vdev handle
  95. * @vdev_id: vdev ID
  96. * @bitmap: bitmap for stats to be cleared
  97. *
  98. * Return: QDF_STATUS_SUCCESS on success
  99. */
  100. QDF_STATUS ucfg_ocb_dcc_clear_stats(struct wlan_objmgr_vdev *vdev,
  101. uint16_t vdev_id,
  102. uint32_t bitmap);
  103. /**
  104. * ucfg_ocb_dcc_update_ndl() - ucfg API to update NDL
  105. * @vdev: vdev handle
  106. * @request: request parameters
  107. * @dcc_update_ndl_cb: callback for update resposne
  108. * @arg: argument for the callback
  109. *
  110. * Return: QDF_STATUS_SUCCESS on success
  111. */
  112. QDF_STATUS ucfg_ocb_dcc_update_ndl(struct wlan_objmgr_vdev *vdev,
  113. struct ocb_dcc_update_ndl_param *request,
  114. ocb_sync_callback dcc_update_ndl_cb,
  115. void *arg);
  116. /**
  117. * ucfg_ocb_register_for_dcc_stats_event() - register dcc stats
  118. * events callback
  119. * @pdev: pdev handle
  120. * @context: argument for the callback
  121. * @dcc_stats_cb: callback for dcc stats event
  122. *
  123. * Return: QDF_STATUS_SUCCESS on success
  124. */
  125. QDF_STATUS ucfg_ocb_register_for_dcc_stats_event(struct wlan_objmgr_pdev *pdev,
  126. void *ctx, ocb_sync_callback dcc_stats_cb);
  127. /**
  128. * ucfg_ocb_init() - OCB module initialization
  129. *
  130. * Return: QDF_STATUS_SUCCESS on success
  131. */
  132. QDF_STATUS ucfg_ocb_init(void);
  133. /**
  134. * ucfg_ocb_deinit() - OCB module deinitialization
  135. *
  136. * Return: QDF_STATUS_SUCCESS on success
  137. */
  138. QDF_STATUS ucfg_ocb_deinit(void);
  139. /**
  140. * ucfg_ocb_config_channel() - Set channel config using after OCB started
  141. * @pdev: pdev handle
  142. *
  143. * Return: QDF_STATUS_SUCCESS on success
  144. */
  145. QDF_STATUS ucfg_ocb_config_channel(struct wlan_objmgr_pdev *pdev);
  146. /**
  147. * ucfg_ocb_register_vdev_start() - register callback to start ocb vdev
  148. * @pdev: pdev handle
  149. * @ocb_start: legacy callback to start ocb vdev
  150. *
  151. * Return: QDF_STATUS_SUCCESS on success
  152. */
  153. QDF_STATUS ucfg_ocb_register_vdev_start(struct wlan_objmgr_pdev *pdev,
  154. QDF_STATUS (*ocb_start)(struct ocb_config *));
  155. /**
  156. * ocb_psoc_enable() - Trigger psoc enable for ocb
  157. * @psoc: objmgr psoc object
  158. *
  159. * Return: QDF status success or failure
  160. */
  161. QDF_STATUS ocb_psoc_enable(struct wlan_objmgr_psoc *psoc);
  162. /**
  163. * ocb_psoc_disable() - Trigger psoc disable for ocb
  164. * @psoc: objmgr psoc object
  165. *
  166. * Return: QDF status success or failure
  167. */
  168. QDF_STATUS ocb_psoc_disable(struct wlan_objmgr_psoc *psoc);
  169. /**
  170. * ucfg_ocb_update_dp_handle() - register DP handle
  171. * @soc: soc handle
  172. * @dp_soc: data path soc handle
  173. *
  174. * Return: QDF_STATUS_SUCCESS on success
  175. */
  176. QDF_STATUS ucfg_ocb_update_dp_handle(struct wlan_objmgr_psoc *soc,
  177. void *dp_soc);
  178. /**
  179. * ucfg_ocb_set_txrx_handle() - register pdev txrx handler
  180. * @soc: soc handle
  181. * @txrx_handle: data path pdev txrx handle
  182. *
  183. * Return: QDF_STATUS_SUCCESS on success
  184. */
  185. QDF_STATUS ucfg_ocb_set_txrx_handle(struct wlan_objmgr_psoc *psoc,
  186. void *txrx_handle);
  187. #else
  188. /**
  189. * ucfg_ocb_init() - OCB module initialization
  190. *
  191. * Return: QDF_STATUS_SUCCESS on success
  192. */
  193. static inline QDF_STATUS ucfg_ocb_init(void)
  194. {
  195. return QDF_STATUS_SUCCESS;
  196. }
  197. /**
  198. * ucfg_ocb_deinit() - OCB module deinitialization
  199. *
  200. * Return: QDF_STATUS_SUCCESS on success
  201. */
  202. static inline QDF_STATUS ucfg_ocb_deinit(void)
  203. {
  204. return QDF_STATUS_SUCCESS;
  205. }
  206. /**
  207. * ucfg_ocb_config_channel() - Set channel config using after OCB started
  208. * @pdev: pdev handle
  209. *
  210. * Return: QDF_STATUS_SUCCESS on success
  211. */
  212. static inline QDF_STATUS
  213. ucfg_ocb_config_channel(struct wlan_objmgr_pdev *pdev)
  214. {
  215. return QDF_STATUS_SUCCESS;
  216. }
  217. /**
  218. * ocb_psoc_enable() - Trigger psoc enable for ocb
  219. * @psoc: objmgr psoc object
  220. *
  221. * Return: QDF status success or failure
  222. */
  223. static inline
  224. QDF_STATUS ocb_psoc_enable(struct wlan_objmgr_psoc *psoc)
  225. {
  226. return QDF_STATUS_SUCCESS;
  227. }
  228. /**
  229. * ocb_psoc_disable() - Trigger psoc disable for ocb
  230. * @psoc: objmgr psoc object
  231. *
  232. * Return: QDF status success or failure
  233. */
  234. static inline
  235. QDF_STATUS ocb_psoc_disable(struct wlan_objmgr_psoc *psoc)
  236. {
  237. return QDF_STATUS_SUCCESS;
  238. }
  239. /**
  240. * ucfg_ocb_update_dp_handle() - register DP handle
  241. * @soc: soc handle
  242. * @dp_soc: data path soc handle
  243. *
  244. * Return: QDF_STATUS_SUCCESS on success
  245. */
  246. static inline
  247. QDF_STATUS ucfg_ocb_update_dp_handle(struct wlan_objmgr_psoc *soc,
  248. void *dp_soc)
  249. {
  250. return QDF_STATUS_SUCCESS;
  251. }
  252. /**
  253. * ucfg_ocb_set_txrx_handle() - register pdev txrx handler
  254. * @soc: soc handle
  255. * @txrx_handle: data path pdev txrx handle
  256. *
  257. * Return: QDF_STATUS_SUCCESS on success
  258. */
  259. static inline
  260. QDF_STATUS ucfg_ocb_set_txrx_handle(struct wlan_objmgr_psoc *psoc,
  261. void *txrx_handle)
  262. {
  263. return QDF_STATUS_SUCCESS;
  264. }
  265. #endif
  266. #endif