os_if_nan.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /*
  2. * Copyright (c) 2012-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: declares nan component os interface APIs
  20. */
  21. #ifndef _OS_IF_NAN_H_
  22. #define _OS_IF_NAN_H_
  23. #include "qdf_types.h"
  24. #include "nan_public_structs.h"
  25. #include "nan_ucfg_api.h"
  26. struct wlan_objmgr_psoc;
  27. struct wlan_objmgr_vdev;
  28. #ifdef WLAN_FEATURE_NAN_CONVERGENCE
  29. /**
  30. * enum qca_wlan_vendor_attr_ndp_params - vendor attribute parameters
  31. * @QCA_WLAN_VENDOR_ATTR_NDP_SUBCMD: NDP Sub command
  32. * @QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID: Transaction id reference
  33. * @QCA_WLAN_VENDOR_ATTR_NDP_STATUS_ID: NDP status id
  34. * @QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID: Service instance id
  35. * @QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL: Requested channel
  36. * @QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR: Peer discovery mac addr
  37. * @QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR: Iface name
  38. * @QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_SECURITY: Security configuration
  39. * @QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_QOS: Qos configuration
  40. * @QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO: Application info
  41. * @QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID: NDP instance id
  42. * @QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID_ARRAY: NDP instance id array
  43. * @QCA_WLAN_VENDOR_ATTR_NDP_RESPONSE_CODE: Schedule response
  44. * @QCA_WLAN_VENDOR_ATTR_NDP_NDI_MAC_ADDR: NDI mac address
  45. * @QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE: Driver return status
  46. * @QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE: Driver return value
  47. * @QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL_CONFIG: Channel config request type
  48. * @QCA_WLAN_VENDOR_ATTR_NDP_NCS_SK_TYPE: Cipher Suit ID
  49. * @QCA_WLAN_VENDOR_ATTR_NDP_PMK: Pairwise Master Key
  50. * @QCA_WLAN_VENDOR_ATTR_NDP_SCID: Security Context ID
  51. * @QCA_WLAN_VENDOR_ATTR_NDP_PASSPHRASE - pass phrase
  52. * @QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_NAME - service name
  53. */
  54. enum qca_wlan_vendor_attr_ndp_params {
  55. QCA_WLAN_VENDOR_ATTR_NDP_PARAM_INVALID = 0,
  56. QCA_WLAN_VENDOR_ATTR_NDP_SUBCMD,
  57. QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID,
  58. QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID,
  59. QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL,
  60. QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR,
  61. QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR,
  62. /* CONFIG_SECURITY is deprecated, use NCS_SK_TYPE/PMK/SCID instead */
  63. QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_SECURITY,
  64. QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_QOS,
  65. QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO,
  66. QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID,
  67. QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID_ARRAY,
  68. QCA_WLAN_VENDOR_ATTR_NDP_RESPONSE_CODE,
  69. QCA_WLAN_VENDOR_ATTR_NDP_NDI_MAC_ADDR,
  70. QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE,
  71. QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE,
  72. QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL_CONFIG,
  73. QCA_WLAN_VENDOR_ATTR_NDP_NCS_SK_TYPE,
  74. QCA_WLAN_VENDOR_ATTR_NDP_PMK,
  75. QCA_WLAN_VENDOR_ATTR_NDP_SCID,
  76. QCA_WLAN_VENDOR_ATTR_NDP_PASSPHRASE,
  77. QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_NAME,
  78. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_AFTER_LAST,
  79. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX =
  80. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_AFTER_LAST - 1,
  81. };
  82. /**
  83. * enum qca_wlan_vendor_attr_ndp_sub_cmd_value - NDP subcmd value
  84. * @QCA_WLAN_VENDOR_ATTR_NDP_INVALID: Unused subcmd value
  85. * @QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_CREATE: iface create
  86. * @QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_DELETE: iface delete
  87. * @QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_REQUEST: NDP initiator request
  88. * @QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_RESPONSE: NDP initiator response
  89. * @QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_REQUEST: NDP responder request
  90. * @QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_RESPONSE: NDP responder response
  91. * @QCA_WLAN_VENDOR_ATTR_NDP_END_REQUEST: NDP end request
  92. * @QCA_WLAN_VENDOR_ATTR_NDP_END_RESPONSE: NDP end response
  93. * @QCA_WLAN_VENDOR_ATTR_NDP_REQUEST_IND: NDP request indication
  94. * @QCA_WLAN_VENDOR_ATTR_NDP_CONFIRM_IND: NDP confirm indication
  95. * @QCA_WLAN_VENDOR_ATTR_NDP_END_IND: NDP End indication
  96. */
  97. enum qca_wlan_vendor_attr_ndp_sub_cmd_value {
  98. QCA_WLAN_VENDOR_ATTR_NDP_INVALID = 0,
  99. QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_CREATE = 1,
  100. QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_DELETE = 2,
  101. QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_REQUEST = 3,
  102. QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_RESPONSE = 4,
  103. QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_REQUEST = 5,
  104. QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_RESPONSE = 6,
  105. QCA_WLAN_VENDOR_ATTR_NDP_END_REQUEST = 7,
  106. QCA_WLAN_VENDOR_ATTR_NDP_END_RESPONSE = 8,
  107. QCA_WLAN_VENDOR_ATTR_NDP_REQUEST_IND = 9,
  108. QCA_WLAN_VENDOR_ATTR_NDP_CONFIRM_IND = 10,
  109. QCA_WLAN_VENDOR_ATTR_NDP_END_IND = 11
  110. };
  111. /**
  112. * os_if_nan_process_ndp_cmd: os_if api to handle nan request message
  113. * @psoc: pointer to psoc object
  114. * @data: request data. contains vendor cmd tlvs
  115. * @data_len: length of data
  116. *
  117. * Return: status of operation
  118. */
  119. int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc,
  120. const void *data, int data_len);
  121. /**
  122. * os_if_nan_event_handler: os_if handler api for nan response messages
  123. * @psoc: pointer to psoc object
  124. * @vdev: pointer to vdev object
  125. * @type: message type
  126. * @msg: msg buffer
  127. *
  128. * Return: None
  129. */
  130. void os_if_nan_event_handler(struct wlan_objmgr_psoc *psoc,
  131. struct wlan_objmgr_vdev *vdev,
  132. uint32_t type, void *msg);
  133. /**
  134. * os_if_nan_register_hdd_callbacks: os_if api to register hdd callbacks
  135. * @psoc: pointer to psoc object
  136. * @cb_obj: struct pointer containing callbacks
  137. *
  138. * Return: status of operation
  139. */
  140. int os_if_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
  141. struct nan_callbacks *cb_obj);
  142. /**
  143. * os_if_nan_register_lim_callbacks: os_if api to register lim callbacks
  144. * @psoc: pointer to psoc object
  145. * @cb_obj: struct pointer containing callbacks
  146. *
  147. * Return: status of operation
  148. */
  149. int os_if_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc,
  150. struct nan_callbacks *cb_obj);
  151. /**
  152. * os_if_nan_post_ndi_create_rsp: os_if api to pos ndi create rsp to umac nan
  153. * component
  154. * @psoc: pointer to psoc object
  155. * @vdev_id: vdev id of ndi
  156. * @success: if create was success or failure
  157. *
  158. * Return: None
  159. */
  160. void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc,
  161. uint8_t vdev_id, bool success);
  162. /**
  163. * os_if_nan_post_ndi_delete_rsp: os_if api to pos ndi delete rsp to umac nan
  164. * component
  165. * @psoc: pointer to psoc object
  166. * @vdev_id: vdev id of ndi
  167. * @success: if delete was success or failure
  168. *
  169. * Return: None
  170. */
  171. void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
  172. uint8_t vdev_id, bool success);
  173. /**
  174. * os_if_nan_ndi_session_end: os_if api to process ndi session end
  175. * component
  176. * @vdev: pointer to vdev deleted
  177. *
  178. * Return: None
  179. */
  180. void os_if_nan_ndi_session_end(struct wlan_objmgr_vdev *vdev);
  181. /**
  182. * os_if_nan_set_ndi_state: os_if api set NDI state
  183. * @vdev: pointer to vdev deleted
  184. * @state: value to set
  185. *
  186. * Return: status of operation
  187. */
  188. static inline QDF_STATUS os_if_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
  189. uint32_t state)
  190. {
  191. return ucfg_nan_set_ndi_state(vdev, state);
  192. }
  193. /**
  194. * os_if_nan_set_ndp_create_transaction_id: set ndp create transaction id
  195. * @vdev: pointer to vdev object
  196. * @val: value to set
  197. *
  198. * Return: status of operation
  199. */
  200. static inline QDF_STATUS os_if_nan_set_ndp_create_transaction_id(
  201. struct wlan_objmgr_vdev *vdev,
  202. uint16_t val)
  203. {
  204. return ucfg_nan_set_ndp_create_transaction_id(vdev, val);
  205. }
  206. /**
  207. * os_if_nan_set_ndp_delete_transaction_id: set ndp delete transaction id
  208. * @vdev: pointer to vdev object
  209. * @val: value to set
  210. *
  211. * Return: status of operation
  212. */
  213. static inline QDF_STATUS os_if_nan_set_ndp_delete_transaction_id(
  214. struct wlan_objmgr_vdev *vdev,
  215. uint16_t val)
  216. {
  217. return ucfg_nan_set_ndp_delete_transaction_id(vdev, val);
  218. }
  219. #else
  220. static inline void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc,
  221. uint8_t vdev_id, bool success)
  222. {
  223. }
  224. static inline void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
  225. uint8_t vdev_id, bool success)
  226. {
  227. }
  228. #endif /* WLAN_FEATURE_NAN_CONVERGENCE */
  229. #endif