rtw_cfgvendor.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2007 - 2014 Realtek Corporation. All rights reserved.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. * You should have received a copy of the GNU General Public License along with
  15. * this program; if not, write to the Free Software Foundation, Inc.,
  16. * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
  17. *
  18. *
  19. ******************************************************************************/
  20. #ifndef _RTW_CFGVENDOR_H_
  21. #define _RTW_CFGVENDOR_H_
  22. #define OUI_BRCM 0x001018
  23. #define OUI_GOOGLE 0x001A11
  24. #define BRCM_VENDOR_SUBCMD_PRIV_STR 1
  25. #define ATTRIBUTE_U32_LEN (NLA_HDRLEN + 4)
  26. #define VENDOR_ID_OVERHEAD ATTRIBUTE_U32_LEN
  27. #define VENDOR_SUBCMD_OVERHEAD ATTRIBUTE_U32_LEN
  28. #define VENDOR_DATA_OVERHEAD (NLA_HDRLEN)
  29. #define SCAN_RESULTS_COMPLETE_FLAG_LEN ATTRIBUTE_U32_LEN
  30. #define SCAN_INDEX_HDR_LEN (NLA_HDRLEN)
  31. #define SCAN_ID_HDR_LEN ATTRIBUTE_U32_LEN
  32. #define SCAN_FLAGS_HDR_LEN ATTRIBUTE_U32_LEN
  33. #define GSCAN_NUM_RESULTS_HDR_LEN ATTRIBUTE_U32_LEN
  34. #define GSCAN_RESULTS_HDR_LEN (NLA_HDRLEN)
  35. #define GSCAN_BATCH_RESULT_HDR_LEN (SCAN_INDEX_HDR_LEN + SCAN_ID_HDR_LEN + \
  36. SCAN_FLAGS_HDR_LEN + \
  37. GSCAN_NUM_RESULTS_HDR_LEN + \
  38. GSCAN_RESULTS_HDR_LEN)
  39. #define VENDOR_REPLY_OVERHEAD (VENDOR_ID_OVERHEAD + \
  40. VENDOR_SUBCMD_OVERHEAD + \
  41. VENDOR_DATA_OVERHEAD)
  42. typedef enum {
  43. /* don't use 0 as a valid subcommand */
  44. VENDOR_NL80211_SUBCMD_UNSPECIFIED,
  45. /* define all vendor startup commands between 0x0 and 0x0FFF */
  46. VENDOR_NL80211_SUBCMD_RANGE_START = 0x0001,
  47. VENDOR_NL80211_SUBCMD_RANGE_END = 0x0FFF,
  48. /* define all GScan related commands between 0x1000 and 0x10FF */
  49. ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START = 0x1000,
  50. ANDROID_NL80211_SUBCMD_GSCAN_RANGE_END = 0x10FF,
  51. /* define all NearbyDiscovery related commands between 0x1100 and 0x11FF */
  52. ANDROID_NL80211_SUBCMD_NBD_RANGE_START = 0x1100,
  53. ANDROID_NL80211_SUBCMD_NBD_RANGE_END = 0x11FF,
  54. /* define all RTT related commands between 0x1100 and 0x11FF */
  55. ANDROID_NL80211_SUBCMD_RTT_RANGE_START = 0x1100,
  56. ANDROID_NL80211_SUBCMD_RTT_RANGE_END = 0x11FF,
  57. ANDROID_NL80211_SUBCMD_LSTATS_RANGE_START = 0x1200,
  58. ANDROID_NL80211_SUBCMD_LSTATS_RANGE_END = 0x12FF,
  59. ANDROID_NL80211_SUBCMD_TDLS_RANGE_START = 0x1300,
  60. ANDROID_NL80211_SUBCMD_TDLS_RANGE_END = 0x13FF,
  61. /* This is reserved for future usage */
  62. } ANDROID_VENDOR_SUB_COMMAND;
  63. enum wl_vendor_subcmd {
  64. BRCM_VENDOR_SCMD_UNSPEC,
  65. BRCM_VENDOR_SCMD_PRIV_STR,
  66. GSCAN_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START,
  67. GSCAN_SUBCMD_SET_CONFIG,
  68. GSCAN_SUBCMD_SET_SCAN_CONFIG,
  69. GSCAN_SUBCMD_ENABLE_GSCAN,
  70. GSCAN_SUBCMD_GET_SCAN_RESULTS,
  71. GSCAN_SUBCMD_SCAN_RESULTS,
  72. GSCAN_SUBCMD_SET_HOTLIST,
  73. GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG,
  74. GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS,
  75. GSCAN_SUBCMD_GET_CHANNEL_LIST,
  76. ANDR_WIFI_SUBCMD_GET_FEATURE_SET,
  77. ANDR_WIFI_SUBCMD_GET_FEATURE_SET_MATRIX,
  78. RTT_SUBCMD_SET_CONFIG = ANDROID_NL80211_SUBCMD_RTT_RANGE_START,
  79. RTT_SUBCMD_CANCEL_CONFIG,
  80. RTT_SUBCMD_GETCAPABILITY,
  81. /* Add more sub commands here */
  82. VENDOR_SUBCMD_MAX
  83. };
  84. enum gscan_attributes {
  85. GSCAN_ATTRIBUTE_NUM_BUCKETS = 10,
  86. GSCAN_ATTRIBUTE_BASE_PERIOD,
  87. GSCAN_ATTRIBUTE_BUCKETS_BAND,
  88. GSCAN_ATTRIBUTE_BUCKET_ID,
  89. GSCAN_ATTRIBUTE_BUCKET_PERIOD,
  90. GSCAN_ATTRIBUTE_BUCKET_NUM_CHANNELS,
  91. GSCAN_ATTRIBUTE_BUCKET_CHANNELS,
  92. GSCAN_ATTRIBUTE_NUM_AP_PER_SCAN,
  93. GSCAN_ATTRIBUTE_REPORT_THRESHOLD,
  94. GSCAN_ATTRIBUTE_NUM_SCANS_TO_CACHE,
  95. GSCAN_ATTRIBUTE_BAND = GSCAN_ATTRIBUTE_BUCKETS_BAND,
  96. GSCAN_ATTRIBUTE_ENABLE_FEATURE = 20,
  97. GSCAN_ATTRIBUTE_SCAN_RESULTS_COMPLETE,
  98. GSCAN_ATTRIBUTE_FLUSH_FEATURE,
  99. GSCAN_ATTRIBUTE_ENABLE_FULL_SCAN_RESULTS,
  100. GSCAN_ATTRIBUTE_REPORT_EVENTS,
  101. /* remaining reserved for additional attributes */
  102. GSCAN_ATTRIBUTE_NUM_OF_RESULTS = 30,
  103. GSCAN_ATTRIBUTE_FLUSH_RESULTS,
  104. GSCAN_ATTRIBUTE_SCAN_RESULTS, /* flat array of wifi_scan_result */
  105. GSCAN_ATTRIBUTE_SCAN_ID, /* indicates scan number */
  106. GSCAN_ATTRIBUTE_SCAN_FLAGS, /* indicates if scan was aborted */
  107. GSCAN_ATTRIBUTE_AP_FLAGS, /* flags on significant change event */
  108. GSCAN_ATTRIBUTE_NUM_CHANNELS,
  109. GSCAN_ATTRIBUTE_CHANNEL_LIST,
  110. /* remaining reserved for additional attributes */
  111. GSCAN_ATTRIBUTE_SSID = 40,
  112. GSCAN_ATTRIBUTE_BSSID,
  113. GSCAN_ATTRIBUTE_CHANNEL,
  114. GSCAN_ATTRIBUTE_RSSI,
  115. GSCAN_ATTRIBUTE_TIMESTAMP,
  116. GSCAN_ATTRIBUTE_RTT,
  117. GSCAN_ATTRIBUTE_RTTSD,
  118. /* remaining reserved for additional attributes */
  119. GSCAN_ATTRIBUTE_HOTLIST_BSSIDS = 50,
  120. GSCAN_ATTRIBUTE_RSSI_LOW,
  121. GSCAN_ATTRIBUTE_RSSI_HIGH,
  122. GSCAN_ATTRIBUTE_HOSTLIST_BSSID_ELEM,
  123. GSCAN_ATTRIBUTE_HOTLIST_FLUSH,
  124. /* remaining reserved for additional attributes */
  125. GSCAN_ATTRIBUTE_RSSI_SAMPLE_SIZE = 60,
  126. GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE,
  127. GSCAN_ATTRIBUTE_MIN_BREACHING,
  128. GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_BSSIDS,
  129. GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_FLUSH,
  130. GSCAN_ATTRIBUTE_MAX
  131. };
  132. enum gscan_bucket_attributes {
  133. GSCAN_ATTRIBUTE_CH_BUCKET_1,
  134. GSCAN_ATTRIBUTE_CH_BUCKET_2,
  135. GSCAN_ATTRIBUTE_CH_BUCKET_3,
  136. GSCAN_ATTRIBUTE_CH_BUCKET_4,
  137. GSCAN_ATTRIBUTE_CH_BUCKET_5,
  138. GSCAN_ATTRIBUTE_CH_BUCKET_6,
  139. GSCAN_ATTRIBUTE_CH_BUCKET_7
  140. };
  141. enum gscan_ch_attributes {
  142. GSCAN_ATTRIBUTE_CH_ID_1,
  143. GSCAN_ATTRIBUTE_CH_ID_2,
  144. GSCAN_ATTRIBUTE_CH_ID_3,
  145. GSCAN_ATTRIBUTE_CH_ID_4,
  146. GSCAN_ATTRIBUTE_CH_ID_5,
  147. GSCAN_ATTRIBUTE_CH_ID_6,
  148. GSCAN_ATTRIBUTE_CH_ID_7
  149. };
  150. enum rtt_attributes {
  151. RTT_ATTRIBUTE_TARGET_CNT,
  152. RTT_ATTRIBUTE_TARGET_INFO,
  153. RTT_ATTRIBUTE_TARGET_MAC,
  154. RTT_ATTRIBUTE_TARGET_TYPE,
  155. RTT_ATTRIBUTE_TARGET_PEER,
  156. RTT_ATTRIBUTE_TARGET_CHAN,
  157. RTT_ATTRIBUTE_TARGET_MODE,
  158. RTT_ATTRIBUTE_TARGET_INTERVAL,
  159. RTT_ATTRIBUTE_TARGET_NUM_MEASUREMENT,
  160. RTT_ATTRIBUTE_TARGET_NUM_PKT,
  161. RTT_ATTRIBUTE_TARGET_NUM_RETRY
  162. };
  163. typedef enum wl_vendor_event {
  164. BRCM_VENDOR_EVENT_UNSPEC,
  165. BRCM_VENDOR_EVENT_PRIV_STR,
  166. GOOGLE_GSCAN_SIGNIFICANT_EVENT,
  167. GOOGLE_GSCAN_GEOFENCE_FOUND_EVENT,
  168. GOOGLE_GSCAN_BATCH_SCAN_EVENT,
  169. GOOGLE_SCAN_FULL_RESULTS_EVENT,
  170. GOOGLE_RTT_COMPLETE_EVENT,
  171. GOOGLE_SCAN_COMPLETE_EVENT,
  172. GOOGLE_GSCAN_GEOFENCE_LOST_EVENT
  173. } wl_vendor_event_t;
  174. enum andr_wifi_feature_set_attr {
  175. ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET,
  176. ANDR_WIFI_ATTRIBUTE_FEATURE_SET
  177. };
  178. typedef enum wl_vendor_gscan_attribute {
  179. ATTR_START_GSCAN,
  180. ATTR_STOP_GSCAN,
  181. ATTR_SET_SCAN_BATCH_CFG_ID, /* set batch scan params */
  182. ATTR_SET_SCAN_GEOFENCE_CFG_ID, /* set list of bssids to track */
  183. ATTR_SET_SCAN_SIGNIFICANT_CFG_ID, /* set list of bssids, rssi threshold etc.. */
  184. ATTR_SET_SCAN_CFG_ID, /* set common scan config params here */
  185. ATTR_GET_GSCAN_CAPABILITIES_ID,
  186. /* Add more sub commands here */
  187. ATTR_GSCAN_MAX
  188. } wl_vendor_gscan_attribute_t;
  189. typedef enum gscan_batch_attribute {
  190. ATTR_GSCAN_BATCH_BESTN,
  191. ATTR_GSCAN_BATCH_MSCAN,
  192. ATTR_GSCAN_BATCH_BUFFER_THRESHOLD
  193. } gscan_batch_attribute_t;
  194. typedef enum gscan_geofence_attribute {
  195. ATTR_GSCAN_NUM_HOTLIST_BSSID,
  196. ATTR_GSCAN_HOTLIST_BSSID
  197. } gscan_geofence_attribute_t;
  198. typedef enum gscan_complete_event {
  199. WIFI_SCAN_BUFFER_FULL,
  200. WIFI_SCAN_COMPLETE
  201. } gscan_complete_event_t;
  202. /* Capture the BRCM_VENDOR_SUBCMD_PRIV_STRINGS* here */
  203. #define BRCM_VENDOR_SCMD_CAPA "cap"
  204. #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) || defined(RTW_VENDOR_EXT_SUPPORT)
  205. extern int rtw_cfgvendor_attach(struct wiphy *wiphy);
  206. extern int rtw_cfgvendor_detach(struct wiphy *wiphy);
  207. extern int rtw_cfgvendor_send_async_event(struct wiphy *wiphy,
  208. struct net_device *dev, int event_id, const void *data, int len);
  209. #if defined(GSCAN_SUPPORT) && 0
  210. extern int wl_cfgvendor_send_hotlist_event(struct wiphy *wiphy,
  211. struct net_device *dev, void *data, int len, wl_vendor_event_t event);
  212. #endif
  213. #endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) || defined(RTW_VENDOR_EXT_SUPPORT) */
  214. #endif /* _RTW_CFGVENDOR_H_ */