os_if_nan.h 8.0 KB

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