os_if_nan.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. struct wlan_objmgr_psoc;
  25. struct wlan_objmgr_vdev;
  26. #ifdef WLAN_FEATURE_NAN_CONVERGENCE
  27. #define NDP_QOS_INFO_LEN 255
  28. #define NDP_APP_INFO_LEN 255
  29. #define NDP_PMK_LEN 32
  30. #define NDP_SCID_BUF_LEN 256
  31. #define NDP_NUM_INSTANCE_ID 255
  32. /**
  33. * enum qca_wlan_vendor_attr_ndp_params - vendor attribute parameters
  34. * @QCA_WLAN_VENDOR_ATTR_NDP_SUBCMD: NDP Sub command
  35. * @QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID: Transaction id reference
  36. * @QCA_WLAN_VENDOR_ATTR_NDP_STATUS_ID: NDP status id
  37. * @QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID: Service instance id
  38. * @QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL: Requested channel
  39. * @QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR: Peer discovery mac addr
  40. * @QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR: Iface name
  41. * @QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_SECURITY: Security configuration
  42. * @QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_QOS: Qos configuration
  43. * @QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO: Application info
  44. * @QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID: NDP instance id
  45. * @QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID_ARRAY: NDP instance id array
  46. * @QCA_WLAN_VENDOR_ATTR_NDP_RESPONSE_CODE: Schedule response
  47. * @QCA_WLAN_VENDOR_ATTR_NDP_NDI_MAC_ADDR: NDI mac address
  48. * @QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE: Driver return status
  49. * @QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE: Driver return value
  50. * @QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL_CONFIG: Channel config request type
  51. * @QCA_WLAN_VENDOR_ATTR_NDP_NCS_SK_TYPE: Cipher Suit ID
  52. * @QCA_WLAN_VENDOR_ATTR_NDP_PMK: Pairwise Master Key
  53. * @QCA_WLAN_VENDOR_ATTR_NDP_SCID: Security Context ID
  54. */
  55. enum qca_wlan_vendor_attr_ndp_params {
  56. QCA_WLAN_VENDOR_ATTR_NDP_PARAM_INVALID = 0,
  57. QCA_WLAN_VENDOR_ATTR_NDP_SUBCMD,
  58. QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID,
  59. QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID,
  60. QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL,
  61. QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR,
  62. QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR,
  63. /* CONFIG_SECURITY is deprecated, use NCS_SK_TYPE/PMK/SCID instead */
  64. QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_SECURITY,
  65. QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_QOS,
  66. QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO,
  67. QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID,
  68. QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID_ARRAY,
  69. QCA_WLAN_VENDOR_ATTR_NDP_RESPONSE_CODE,
  70. QCA_WLAN_VENDOR_ATTR_NDP_NDI_MAC_ADDR,
  71. QCA_WLAN_VENDOR_ATTR_NDP_DRV_RESPONSE_STATUS_TYPE,
  72. QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE,
  73. QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL_CONFIG,
  74. QCA_WLAN_VENDOR_ATTR_NDP_NCS_SK_TYPE,
  75. QCA_WLAN_VENDOR_ATTR_NDP_PMK,
  76. QCA_WLAN_VENDOR_ATTR_NDP_SCID,
  77. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_AFTER_LAST,
  78. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX =
  79. QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_AFTER_LAST - 1,
  80. };
  81. /**
  82. * enum qca_wlan_vendor_attr_ndp_sub_cmd_value - NDP subcmd value
  83. * @QCA_WLAN_VENDOR_ATTR_NDP_INVALID: Unused subcmd value
  84. * @QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_CREATE: iface create
  85. * @QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_DELETE: iface delete
  86. * @QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_REQUEST: NDP initiator request
  87. * @QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_RESPONSE: NDP initiator response
  88. * @QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_REQUEST: NDP responder request
  89. * @QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_RESPONSE: NDP responder response
  90. * @QCA_WLAN_VENDOR_ATTR_NDP_END_REQUEST: NDP end request
  91. * @QCA_WLAN_VENDOR_ATTR_NDP_END_RESPONSE: NDP end response
  92. * @QCA_WLAN_VENDOR_ATTR_NDP_REQUEST_IND: NDP request indication
  93. * @QCA_WLAN_VENDOR_ATTR_NDP_CONFIRM_IND: NDP confirm indication
  94. * @QCA_WLAN_VENDOR_ATTR_NDP_END_IND: NDP End indication
  95. */
  96. enum qca_wlan_vendor_attr_ndp_sub_cmd_value {
  97. QCA_WLAN_VENDOR_ATTR_NDP_INVALID = 0,
  98. QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_CREATE = 1,
  99. QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_DELETE = 2,
  100. QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_REQUEST = 3,
  101. QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_RESPONSE = 4,
  102. QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_REQUEST = 5,
  103. QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_RESPONSE = 6,
  104. QCA_WLAN_VENDOR_ATTR_NDP_END_REQUEST = 7,
  105. QCA_WLAN_VENDOR_ATTR_NDP_END_RESPONSE = 8,
  106. QCA_WLAN_VENDOR_ATTR_NDP_REQUEST_IND = 9,
  107. QCA_WLAN_VENDOR_ATTR_NDP_CONFIRM_IND = 10,
  108. QCA_WLAN_VENDOR_ATTR_NDP_END_IND = 11
  109. };
  110. #endif /* WLAN_FEATURE_NAN_CONVERGENCE */
  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. #endif