os_if_nan.h 8.6 KB

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