nan_ucfg_api.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  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: contains interface prototypes for OS_IF layer
  20. */
  21. #ifndef _NAN_UCFG_API_H_
  22. #define _NAN_UCFG_API_H_
  23. #include "wlan_objmgr_cmn.h"
  24. #include "nan_public_structs.h"
  25. /**
  26. * ucfg_nan_set_ndi_state: set ndi state
  27. * @vdev: pointer to vdev object
  28. * @state: value to set
  29. *
  30. * Return: status of operation
  31. */
  32. QDF_STATUS ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
  33. uint32_t state);
  34. /**
  35. * ucfg_nan_get_ndi_state: get ndi state from vdev obj
  36. * @vdev: pointer to vdev object
  37. *
  38. * Return: ndi state
  39. */
  40. enum nan_datapath_state ucfg_nan_get_ndi_state(struct wlan_objmgr_vdev *vdev);
  41. /**
  42. * ucfg_nan_set_active_peers: set active ndi peer
  43. * @vdev: pointer to vdev object
  44. * @val: value to set
  45. *
  46. * Return: status of operation
  47. */
  48. QDF_STATUS ucfg_nan_set_active_peers(struct wlan_objmgr_vdev *vdev,
  49. uint32_t val);
  50. /**
  51. * ucfg_nan_get_active_peers: get active ndi peer from vdev obj
  52. * @vdev: pointer to vdev object
  53. *
  54. * Return: active ndi peer
  55. */
  56. uint32_t ucfg_nan_get_active_peers(struct wlan_objmgr_vdev *vdev);
  57. /**
  58. * ucfg_nan_set_active_ndp_sessions: set active ndp sessions
  59. * @vdev: pointer to vdev object
  60. *
  61. * Return: status of operation
  62. */
  63. QDF_STATUS ucfg_nan_set_active_ndp_sessions(struct wlan_objmgr_vdev *vdev,
  64. uint32_t val, uint8_t idx);
  65. /**
  66. * ucfg_nan_get_active_ndp_sessions: get active ndp sessions from vdev obj
  67. * @vdev: pointer to vdev object
  68. *
  69. * Return: pointer to NAN psoc private object
  70. */
  71. uint32_t ucfg_nan_get_active_ndp_sessions(struct wlan_objmgr_vdev *vdev,
  72. uint8_t idx);
  73. /**
  74. * ucfg_nan_set_ndp_create_transaction_id: set ndp create transaction id
  75. * @vdev: pointer to vdev object
  76. * @val: value to set
  77. *
  78. * Return: status of operation
  79. */
  80. QDF_STATUS ucfg_nan_set_ndp_create_transaction_id(struct wlan_objmgr_vdev *vdev,
  81. uint16_t val);
  82. /**
  83. * ucfg_nan_get_ndp_create_transaction_id: get ndp create transaction id
  84. * vdev obj
  85. * @vdev: pointer to vdev object
  86. *
  87. * Return: ndp create transaction_id
  88. */
  89. uint16_t ucfg_nan_get_ndp_create_transaction_id(struct wlan_objmgr_vdev *vdev);
  90. /**
  91. * ucfg_nan_set_ndp_delete_transaction_id: set ndp delete transaction id
  92. * @vdev: pointer to vdev object
  93. * @val: value to set
  94. *
  95. * Return: status of operation
  96. */
  97. QDF_STATUS ucfg_nan_set_ndp_delete_transaction_id(struct wlan_objmgr_vdev *vdev,
  98. uint16_t val);
  99. /**
  100. * ucfg_nan_get_ndp_delete_transaction_id: get ndp delete transaction id from
  101. * vdev obj
  102. * @vdev: pointer to vdev object
  103. *
  104. * Return: ndp delete transaction_id
  105. */
  106. uint16_t ucfg_nan_get_ndp_delete_transaction_id(struct wlan_objmgr_vdev *vdev);
  107. /**
  108. * ucfg_nan_set_ndi_delete_rsp_reason: set ndi delete response reason
  109. * @vdev: pointer to vdev object
  110. * @val: value to set
  111. *
  112. * Return: status of operation
  113. */
  114. QDF_STATUS ucfg_nan_set_ndi_delete_rsp_reason(struct wlan_objmgr_vdev *vdev,
  115. uint32_t val);
  116. /**
  117. * ucfg_nan_get_ndi_delete_rsp_reason: get ndi delete response reason from vdev
  118. * obj
  119. * @vdev: pointer to vdev object
  120. *
  121. * Return: ndi delete rsp reason
  122. */
  123. uint32_t ucfg_nan_get_ndi_delete_rsp_reason(struct wlan_objmgr_vdev *vdev);
  124. /**
  125. * ucfg_nan_set_ndi_delete_rsp_status: set ndi delete response reason
  126. * @vdev: pointer to vdev object
  127. * @val: value to set
  128. *
  129. * Return: status of operation
  130. */
  131. QDF_STATUS ucfg_nan_set_ndi_delete_rsp_status(struct wlan_objmgr_vdev *vdev,
  132. uint32_t val);
  133. /**
  134. * ucfg_nan_get_ndi_delete_rsp_status: get ndi delete response status from vdev
  135. * obj
  136. * @vdev: pointer to vdev object
  137. *
  138. * Return: ndi delete rsp status
  139. */
  140. uint32_t ucfg_nan_get_ndi_delete_rsp_status(struct wlan_objmgr_vdev *vdev);
  141. /**
  142. * ucfg_nan_get_callbacks: ucfg API to return callbacks
  143. * @psoc: pointer to psoc object
  144. * @cb_obj: callback struct to populate
  145. *
  146. * Return: callback struct on success, NULL otherwise
  147. */
  148. QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
  149. struct nan_callbacks *cb_obj);
  150. /**
  151. * ucfg_nan_req_processor: ucfg API to be called from HDD/OS_IF to
  152. * process nan datapath initiator request from userspace
  153. * @vdev: nan vdev pointer
  154. * @in_req: NDP request
  155. * @psoc: pointer to psoc object
  156. * @req_type: type of request
  157. *
  158. * Return: status of operation
  159. */
  160. QDF_STATUS ucfg_nan_req_processor(struct wlan_objmgr_vdev *vdev,
  161. void *in_req, uint32_t req_type);
  162. /**
  163. * ucfg_nan_event_handler: ucfg API to be called from legacy code to
  164. * post events to os_if/hdd layer
  165. * @psoc: pointer to psoc object
  166. * @vdev: pointer to vdev object
  167. * @type: message type
  168. * @msg: msg buffer
  169. *
  170. * Return: None
  171. */
  172. void ucfg_nan_event_handler(struct wlan_objmgr_psoc *psoc,
  173. struct wlan_objmgr_vdev *vdev,
  174. uint32_t type, void *msg);
  175. /**
  176. * ucfg_nan_register_hdd_callbacks: ucfg API to set hdd callbacks
  177. * @psoc: pointer to psoc object
  178. * @cb_obj: structs containing callbacks
  179. * @os_if_event_handler: os if event handler callback
  180. *
  181. * Return: status of operation
  182. */
  183. int ucfg_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *,
  184. struct nan_callbacks *,
  185. void (os_if_event_handler)
  186. (struct wlan_objmgr_psoc *,
  187. struct wlan_objmgr_vdev *,
  188. uint32_t, void *));
  189. /*
  190. * ucfg_nan_register_lim_callbacks: ucfg API to set lim callbacks
  191. * @psoc: pointer to psoc object
  192. * @cb_obj: structs containing callbacks
  193. *
  194. * Return: status of operation
  195. */
  196. int ucfg_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc,
  197. struct nan_callbacks *cb_obj);
  198. /**
  199. * ucfg_nan_get_callbacks: ucfg API to return callbacks
  200. * @psoc: pointer to psoc object
  201. * @cb_obj: callback struct to populate
  202. *
  203. * Return: callback struct on success, NULL otherwise
  204. */
  205. QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
  206. struct nan_callbacks *cb_obj);
  207. /**
  208. * ucfg_nan_discovery_req: ucfg API for NAN Discovery related requests
  209. * @in_req: NAN request
  210. * @req_type: Request type
  211. *
  212. * Return: status of operation
  213. */
  214. static inline QDF_STATUS ucfg_nan_discovery_req(void *in_req, uint32_t req_type)
  215. {
  216. return QDF_STATUS_SUCCESS;
  217. }
  218. /**
  219. * ucfg_is_nan_dbs_supported() - ucfg API to query NAN DBS support
  220. * @psoc: pointer to psoc object
  221. *
  222. * This function returns NAN DBS support status
  223. *
  224. * Return: True if NAN DBS is supported, False otherwise
  225. */
  226. static inline bool ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc *psoc)
  227. {
  228. return true;
  229. }
  230. /**
  231. * ucfg_is_nan_enable_allowed() - ucfg API to query if NAN Discovery is
  232. * allowed
  233. * @psoc: pointer to psoc object
  234. *
  235. * Return: True if NAN Discovery enable is allowed, False otherwise
  236. */
  237. static inline bool ucfg_is_nan_enable_allowed(struct wlan_objmgr_psoc *psoc)
  238. {
  239. return true;
  240. }
  241. #endif /* _NAN_UCFG_API_H_ */