os_if_nan.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /*
  2. * Copyright (c) 2012-2020 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. #ifdef WLAN_FEATURE_NAN
  25. #include "nan_public_structs.h"
  26. #include "nan_ucfg_api.h"
  27. #include "qca_vendor.h"
  28. /* QCA_NL80211_VENDOR_SUBCMD_NAN_EXT policy */
  29. extern const struct nla_policy nan_attr_policy[
  30. QCA_WLAN_VENDOR_ATTR_NAN_PARAMS_MAX + 1];
  31. /* QCA_NL80211_VENDOR_SUBCMD_NDP policy */
  32. extern const struct nla_policy vendor_attr_policy[
  33. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX + 1];
  34. /**
  35. * struct ndi_find_vdev_filter - find vdev filter object. this can be extended
  36. * @ifname: interface name of vdev
  37. * @found_vdev: found vdev object matching one or more of above params
  38. */
  39. struct ndi_find_vdev_filter {
  40. char *ifname;
  41. struct wlan_objmgr_vdev *found_vdev;
  42. };
  43. /**
  44. * os_if_nan_process_ndp_cmd: os_if api to handle nan request message
  45. * @psoc: pointer to psoc object
  46. * @data: request data. contains vendor cmd tlvs
  47. * @data_len: length of data
  48. * @is_ndp_allowed: Indicates whether to allow NDP creation.
  49. * NDI creation is always allowed.
  50. *
  51. * Return: status of operation
  52. */
  53. int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc,
  54. const void *data, int data_len,
  55. bool is_ndp_allowed);
  56. /**
  57. * os_if_nan_register_hdd_callbacks: os_if api to register hdd callbacks
  58. * @psoc: pointer to psoc object
  59. * @cb_obj: struct pointer containing callbacks
  60. *
  61. * Return: status of operation
  62. */
  63. int os_if_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
  64. struct nan_callbacks *cb_obj);
  65. /**
  66. * os_if_nan_register_lim_callbacks: os_if api to register lim callbacks
  67. * @psoc: pointer to psoc object
  68. * @cb_obj: struct pointer containing callbacks
  69. *
  70. * Return: status of operation
  71. */
  72. int os_if_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc,
  73. struct nan_callbacks *cb_obj);
  74. /**
  75. * os_if_nan_post_ndi_create_rsp: os_if api to pos ndi create rsp to umac nan
  76. * component
  77. * @psoc: pointer to psoc object
  78. * @vdev_id: vdev id of ndi
  79. * @success: if create was success or failure
  80. *
  81. * Return: None
  82. */
  83. void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc,
  84. uint8_t vdev_id, bool success);
  85. /**
  86. * os_if_nan_post_ndi_delete_rsp: os_if api to pos ndi delete rsp to umac nan
  87. * component
  88. * @psoc: pointer to psoc object
  89. * @vdev_id: vdev id of ndi
  90. * @success: if delete was success or failure
  91. *
  92. * Return: None
  93. */
  94. void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
  95. uint8_t vdev_id, bool success);
  96. /**
  97. * os_if_nan_ndi_session_end: os_if api to process ndi session end
  98. * component
  99. * @vdev: pointer to vdev deleted
  100. *
  101. * Return: None
  102. */
  103. void os_if_nan_ndi_session_end(struct wlan_objmgr_vdev *vdev);
  104. /**
  105. * os_if_nan_set_ndi_state: os_if api set NDI state
  106. * @vdev: pointer to vdev deleted
  107. * @state: value to set
  108. *
  109. * Return: status of operation
  110. */
  111. static inline QDF_STATUS os_if_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
  112. uint32_t state)
  113. {
  114. return ucfg_nan_set_ndi_state(vdev, state);
  115. }
  116. /**
  117. * os_if_nan_set_ndp_create_transaction_id: set ndp create transaction id
  118. * @vdev: pointer to vdev object
  119. * @val: value to set
  120. *
  121. * Return: status of operation
  122. */
  123. static inline QDF_STATUS os_if_nan_set_ndp_create_transaction_id(
  124. struct wlan_objmgr_vdev *vdev,
  125. uint16_t val)
  126. {
  127. return ucfg_nan_set_ndp_create_transaction_id(vdev, val);
  128. }
  129. /**
  130. * os_if_nan_set_ndp_delete_transaction_id: set ndp delete transaction id
  131. * @vdev: pointer to vdev object
  132. * @val: value to set
  133. *
  134. * Return: status of operation
  135. */
  136. static inline QDF_STATUS os_if_nan_set_ndp_delete_transaction_id(
  137. struct wlan_objmgr_vdev *vdev,
  138. uint16_t val)
  139. {
  140. return ucfg_nan_set_ndp_delete_transaction_id(vdev, val);
  141. }
  142. /**
  143. * os_if_process_nan_req: os_if api to handle NAN requests attached to the
  144. * vendor command QCA_NL80211_VENDOR_SUBCMD_NAN_EXT
  145. * @psoc: pointer to psoc object
  146. * @data: request data. contains vendor cmd tlvs
  147. * @data_len: length of data
  148. *
  149. * Return: status of operation
  150. */
  151. int os_if_process_nan_req(struct wlan_objmgr_psoc *psoc,
  152. const void *data, int data_len);
  153. #else
  154. static inline void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc,
  155. uint8_t vdev_id, bool success)
  156. {
  157. }
  158. static inline void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
  159. uint8_t vdev_id, bool success)
  160. {
  161. }
  162. #endif /* WLAN_FEATURE_NAN */
  163. #endif