wl_cfgvendor.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. /*
  2. * Linux cfg80211 Vendor Extension Code
  3. *
  4. * Portions of this code are copyright (c) 2020 Cypress Semiconductor Corporation
  5. *
  6. * Copyright (C) 1999-2020, Broadcom Corporation
  7. *
  8. * Unless you and Broadcom execute a separate written software license
  9. * agreement governing use of this software, this software is licensed to you
  10. * under the terms of the GNU General Public License version 2 (the "GPL"),
  11. * available at http://www.broadcom.com/licenses/GPLv2.php, with the
  12. * following added to such license:
  13. *
  14. * As a special exception, the copyright holders of this software give you
  15. * permission to link this software with independent modules, and to copy and
  16. * distribute the resulting executable under terms of your choice, provided that
  17. * you also meet, for each linked independent module, the terms and conditions of
  18. * the license of that module. An independent module is a module which is not
  19. * derived from this software. The special exception does not apply to any
  20. * modifications of the software.
  21. *
  22. * Notwithstanding the above, under no circumstances may you combine this
  23. * software in any way with any other Broadcom software provided under a license
  24. * other than the GPL, without Broadcom's express prior written consent.
  25. *
  26. *
  27. * <<Broadcom-WL-IPTag/Open:>>
  28. *
  29. * $Id: wl_cfgvendor.h 814814 2019-04-15 03:31:10Z $
  30. */
  31. #ifndef _wl_cfgvendor_h_
  32. #define _wl_cfgvendor_h_
  33. #define OUI_BRCM 0x001018
  34. #define OUI_GOOGLE 0x001A11
  35. #define BRCM_VENDOR_SUBCMD_PRIV_STR 1
  36. #define ATTRIBUTE_U32_LEN (NLA_HDRLEN + 4)
  37. #define VENDOR_ID_OVERHEAD ATTRIBUTE_U32_LEN
  38. #define VENDOR_SUBCMD_OVERHEAD ATTRIBUTE_U32_LEN
  39. #define VENDOR_DATA_OVERHEAD (NLA_HDRLEN)
  40. enum brcm_vendor_attr {
  41. BRCM_ATTR_DRIVER_CMD = 0,
  42. BRCM_ATTR_DRIVER_KEY_PMK = 1,
  43. BRCM_ATTR_DRIVER_FEATURE_FLAGS = 2,
  44. BRCM_ATTR_DRIVER_MAX = 3
  45. };
  46. enum brcm_wlan_vendor_features {
  47. BRCM_WLAN_VENDOR_FEATURE_KEY_MGMT_OFFLOAD = 0,
  48. BRCM_WLAN_VENDOR_FEATURES_MAX = 1
  49. };
  50. #define SCAN_RESULTS_COMPLETE_FLAG_LEN ATTRIBUTE_U32_LEN
  51. #define SCAN_INDEX_HDR_LEN (NLA_HDRLEN)
  52. #define SCAN_ID_HDR_LEN ATTRIBUTE_U32_LEN
  53. #define SCAN_FLAGS_HDR_LEN ATTRIBUTE_U32_LEN
  54. #define GSCAN_NUM_RESULTS_HDR_LEN ATTRIBUTE_U32_LEN
  55. #define GSCAN_CH_BUCKET_MASK_HDR_LEN ATTRIBUTE_U32_LEN
  56. #define GSCAN_RESULTS_HDR_LEN (NLA_HDRLEN)
  57. #define GSCAN_BATCH_RESULT_HDR_LEN (SCAN_INDEX_HDR_LEN + SCAN_ID_HDR_LEN + \
  58. SCAN_FLAGS_HDR_LEN + \
  59. GSCAN_NUM_RESULTS_HDR_LEN + \
  60. GSCAN_CH_BUCKET_MASK_HDR_LEN + \
  61. GSCAN_RESULTS_HDR_LEN)
  62. #define VENDOR_REPLY_OVERHEAD (VENDOR_ID_OVERHEAD + \
  63. VENDOR_SUBCMD_OVERHEAD + \
  64. VENDOR_DATA_OVERHEAD)
  65. #define GSCAN_ATTR_SET1 10
  66. #define GSCAN_ATTR_SET2 20
  67. #define GSCAN_ATTR_SET3 30
  68. #define GSCAN_ATTR_SET4 40
  69. #define GSCAN_ATTR_SET5 50
  70. #define GSCAN_ATTR_SET6 60
  71. #define GSCAN_ATTR_SET7 70
  72. #define GSCAN_ATTR_SET8 80
  73. #define GSCAN_ATTR_SET9 90
  74. #define GSCAN_ATTR_SET10 100
  75. #define GSCAN_ATTR_SET11 110
  76. #define GSCAN_ATTR_SET12 120
  77. #define GSCAN_ATTR_SET13 130
  78. #define GSCAN_ATTR_SET14 140
  79. #define NAN_SVC_INFO_LEN 255
  80. #define NAN_SID_ENABLE_FLAG_INVALID 0xff
  81. #define NAN_SID_BEACON_COUNT_INVALID 0xff
  82. #define WL_NAN_DW_INTERVAL 512
  83. #define CFG80211_VENDOR_CMD_REPLY_SKB_SZ 100
  84. #define CFG80211_VENDOR_EVT_SKB_SZ 2048
  85. typedef enum {
  86. /* don't use 0 as a valid subcommand */
  87. VENDOR_NL80211_SUBCMD_UNSPECIFIED,
  88. /* define all vendor startup commands between 0x0 and 0x0FFF */
  89. VENDOR_NL80211_SUBCMD_RANGE_START = 0x0001,
  90. VENDOR_NL80211_SUBCMD_RANGE_END = 0x0FFF,
  91. /* define all GScan related commands between 0x1000 and 0x10FF */
  92. ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START = 0x1000,
  93. ANDROID_NL80211_SUBCMD_GSCAN_RANGE_END = 0x10FF,
  94. /* define all RTT related commands between 0x1100 and 0x11FF */
  95. ANDROID_NL80211_SUBCMD_RTT_RANGE_START = 0x1100,
  96. ANDROID_NL80211_SUBCMD_RTT_RANGE_END = 0x11FF,
  97. ANDROID_NL80211_SUBCMD_LSTATS_RANGE_START = 0x1200,
  98. ANDROID_NL80211_SUBCMD_LSTATS_RANGE_END = 0x12FF,
  99. ANDROID_NL80211_SUBCMD_TDLS_RANGE_START = 0x1300,
  100. ANDROID_NL80211_SUBCMD_TDLS_RANGE_END = 0x13FF,
  101. ANDROID_NL80211_SUBCMD_DEBUG_RANGE_START = 0x1400,
  102. ANDROID_NL80211_SUBCMD_DEBUG_RANGE_END = 0x14FF,
  103. /* define all NearbyDiscovery related commands between 0x1500 and 0x15FF */
  104. ANDROID_NL80211_SUBCMD_NBD_RANGE_START = 0x1500,
  105. ANDROID_NL80211_SUBCMD_NBD_RANGE_END = 0x15FF,
  106. /* define all wifi calling related commands between 0x1600 and 0x16FF */
  107. ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_START = 0x1600,
  108. ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_END = 0x16FF,
  109. /* define all NAN related commands between 0x1700 and 0x17FF */
  110. ANDROID_NL80211_SUBCMD_NAN_RANGE_START = 0x1700,
  111. ANDROID_NL80211_SUBCMD_NAN_RANGE_END = 0x17FF,
  112. /* define all packet filter related commands between 0x1800 and 0x18FF */
  113. ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_START = 0x1800,
  114. ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_END = 0x18FF,
  115. /* This is reserved for future usage */
  116. } ANDROID_VENDOR_SUB_COMMAND;
  117. enum andr_vendor_subcmd {
  118. GSCAN_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START,
  119. GSCAN_SUBCMD_SET_CONFIG,
  120. GSCAN_SUBCMD_SET_SCAN_CONFIG,
  121. GSCAN_SUBCMD_ENABLE_GSCAN,
  122. GSCAN_SUBCMD_GET_SCAN_RESULTS,
  123. GSCAN_SUBCMD_SCAN_RESULTS,
  124. GSCAN_SUBCMD_SET_HOTLIST,
  125. GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG,
  126. GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS,
  127. GSCAN_SUBCMD_GET_CHANNEL_LIST,
  128. /* ANDR_WIFI_XXX although not related to gscan are defined here */
  129. ANDR_WIFI_SUBCMD_GET_FEATURE_SET,
  130. ANDR_WIFI_SUBCMD_GET_FEATURE_SET_MATRIX,
  131. ANDR_WIFI_RANDOM_MAC_OUI,
  132. ANDR_WIFI_NODFS_CHANNELS,
  133. ANDR_WIFI_SET_COUNTRY,
  134. GSCAN_SUBCMD_SET_EPNO_SSID,
  135. WIFI_SUBCMD_SET_SSID_WHITELIST,
  136. WIFI_SUBCMD_SET_LAZY_ROAM_PARAMS,
  137. WIFI_SUBCMD_ENABLE_LAZY_ROAM,
  138. WIFI_SUBCMD_SET_BSSID_PREF,
  139. WIFI_SUBCMD_SET_BSSID_BLACKLIST,
  140. GSCAN_SUBCMD_ANQPO_CONFIG,
  141. WIFI_SUBCMD_SET_RSSI_MONITOR,
  142. WIFI_SUBCMD_CONFIG_ND_OFFLOAD,
  143. WIFI_SUBCMD_CONFIG_TCPACK_SUP,
  144. WIFI_SUBCMD_FW_ROAM_POLICY,
  145. WIFI_SUBCMD_ROAM_CAPABILITY,
  146. RTT_SUBCMD_SET_CONFIG = ANDROID_NL80211_SUBCMD_RTT_RANGE_START,
  147. RTT_SUBCMD_CANCEL_CONFIG,
  148. RTT_SUBCMD_GETCAPABILITY,
  149. RTT_SUBCMD_GETAVAILCHANNEL,
  150. RTT_SUBCMD_SET_RESPONDER,
  151. RTT_SUBCMD_CANCEL_RESPONDER,
  152. LSTATS_SUBCMD_GET_INFO = ANDROID_NL80211_SUBCMD_LSTATS_RANGE_START,
  153. DEBUG_START_LOGGING = ANDROID_NL80211_SUBCMD_DEBUG_RANGE_START,
  154. DEBUG_TRIGGER_MEM_DUMP,
  155. DEBUG_GET_MEM_DUMP,
  156. DEBUG_GET_VER,
  157. DEBUG_GET_RING_STATUS,
  158. DEBUG_GET_RING_DATA,
  159. DEBUG_GET_FEATURE,
  160. DEBUG_RESET_LOGGING,
  161. DEBUG_TRIGGER_DRIVER_MEM_DUMP,
  162. DEBUG_GET_DRIVER_MEM_DUMP,
  163. DEBUG_START_PKT_FATE_MONITORING,
  164. DEBUG_GET_TX_PKT_FATES,
  165. DEBUG_GET_RX_PKT_FATES,
  166. DEBUG_GET_WAKE_REASON_STATS,
  167. DEBUG_GET_FILE_DUMP_BUF,
  168. DEBUG_FILE_DUMP_DONE_IND,
  169. DEBUG_SET_HAL_START,
  170. DEBUG_SET_HAL_STOP,
  171. WIFI_OFFLOAD_SUBCMD_START_MKEEP_ALIVE = ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_START,
  172. WIFI_OFFLOAD_SUBCMD_STOP_MKEEP_ALIVE,
  173. NAN_WIFI_SUBCMD_ENABLE = ANDROID_NL80211_SUBCMD_NAN_RANGE_START, /* 0x1700 */
  174. NAN_WIFI_SUBCMD_DISABLE, /* 0x1701 */
  175. NAN_WIFI_SUBCMD_REQUEST_PUBLISH, /* 0x1702 */
  176. NAN_WIFI_SUBCMD_REQUEST_SUBSCRIBE, /* 0x1703 */
  177. NAN_WIFI_SUBCMD_CANCEL_PUBLISH, /* 0x1704 */
  178. NAN_WIFI_SUBCMD_CANCEL_SUBSCRIBE, /* 0x1705 */
  179. NAN_WIFI_SUBCMD_TRANSMIT, /* 0x1706 */
  180. NAN_WIFI_SUBCMD_CONFIG, /* 0x1707 */
  181. NAN_WIFI_SUBCMD_TCA, /* 0x1708 */
  182. NAN_WIFI_SUBCMD_STATS, /* 0x1709 */
  183. NAN_WIFI_SUBCMD_GET_CAPABILITIES, /* 0x170A */
  184. NAN_WIFI_SUBCMD_DATA_PATH_IFACE_CREATE, /* 0x170B */
  185. NAN_WIFI_SUBCMD_DATA_PATH_IFACE_DELETE, /* 0x170C */
  186. NAN_WIFI_SUBCMD_DATA_PATH_REQUEST, /* 0x170D */
  187. NAN_WIFI_SUBCMD_DATA_PATH_RESPONSE, /* 0x170E */
  188. NAN_WIFI_SUBCMD_DATA_PATH_END, /* 0x170F */
  189. NAN_WIFI_SUBCMD_DATA_PATH_SEC_INFO, /* 0x1710 */
  190. NAN_WIFI_SUBCMD_VERSION_INFO, /* 0x1711 */
  191. APF_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_START,
  192. APF_SUBCMD_SET_FILTER,
  193. /* Add more sub commands here */
  194. VENDOR_SUBCMD_MAX
  195. };
  196. enum gscan_attributes {
  197. GSCAN_ATTRIBUTE_NUM_BUCKETS = GSCAN_ATTR_SET1,
  198. GSCAN_ATTRIBUTE_BASE_PERIOD,
  199. GSCAN_ATTRIBUTE_BUCKETS_BAND,
  200. GSCAN_ATTRIBUTE_BUCKET_ID,
  201. GSCAN_ATTRIBUTE_BUCKET_PERIOD,
  202. GSCAN_ATTRIBUTE_BUCKET_NUM_CHANNELS,
  203. GSCAN_ATTRIBUTE_BUCKET_CHANNELS,
  204. GSCAN_ATTRIBUTE_NUM_AP_PER_SCAN,
  205. GSCAN_ATTRIBUTE_REPORT_THRESHOLD,
  206. GSCAN_ATTRIBUTE_NUM_SCANS_TO_CACHE,
  207. GSCAN_ATTRIBUTE_BAND = GSCAN_ATTRIBUTE_BUCKETS_BAND,
  208. GSCAN_ATTRIBUTE_ENABLE_FEATURE = GSCAN_ATTR_SET2,
  209. GSCAN_ATTRIBUTE_SCAN_RESULTS_COMPLETE,
  210. GSCAN_ATTRIBUTE_FLUSH_FEATURE,
  211. GSCAN_ATTRIBUTE_ENABLE_FULL_SCAN_RESULTS,
  212. GSCAN_ATTRIBUTE_REPORT_EVENTS,
  213. /* remaining reserved for additional attributes */
  214. GSCAN_ATTRIBUTE_NUM_OF_RESULTS = GSCAN_ATTR_SET3,
  215. GSCAN_ATTRIBUTE_FLUSH_RESULTS,
  216. GSCAN_ATTRIBUTE_SCAN_RESULTS, /* flat array of wifi_scan_result */
  217. GSCAN_ATTRIBUTE_SCAN_ID, /* indicates scan number */
  218. GSCAN_ATTRIBUTE_SCAN_FLAGS, /* indicates if scan was aborted */
  219. GSCAN_ATTRIBUTE_AP_FLAGS, /* flags on significant change event */
  220. GSCAN_ATTRIBUTE_NUM_CHANNELS,
  221. GSCAN_ATTRIBUTE_CHANNEL_LIST,
  222. GSCAN_ATTRIBUTE_CH_BUCKET_BITMASK,
  223. /* remaining reserved for additional attributes */
  224. GSCAN_ATTRIBUTE_SSID = GSCAN_ATTR_SET4,
  225. GSCAN_ATTRIBUTE_BSSID,
  226. GSCAN_ATTRIBUTE_CHANNEL,
  227. GSCAN_ATTRIBUTE_RSSI,
  228. GSCAN_ATTRIBUTE_TIMESTAMP,
  229. GSCAN_ATTRIBUTE_RTT,
  230. GSCAN_ATTRIBUTE_RTTSD,
  231. /* remaining reserved for additional attributes */
  232. GSCAN_ATTRIBUTE_HOTLIST_BSSIDS = GSCAN_ATTR_SET5,
  233. GSCAN_ATTRIBUTE_RSSI_LOW,
  234. GSCAN_ATTRIBUTE_RSSI_HIGH,
  235. GSCAN_ATTRIBUTE_HOSTLIST_BSSID_ELEM,
  236. GSCAN_ATTRIBUTE_HOTLIST_FLUSH,
  237. GSCAN_ATTRIBUTE_HOTLIST_BSSID_COUNT,
  238. /* remaining reserved for additional attributes */
  239. GSCAN_ATTRIBUTE_RSSI_SAMPLE_SIZE = GSCAN_ATTR_SET6,
  240. GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE,
  241. GSCAN_ATTRIBUTE_MIN_BREACHING,
  242. GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_BSSIDS,
  243. GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_FLUSH,
  244. /* EPNO */
  245. GSCAN_ATTRIBUTE_EPNO_SSID_LIST = GSCAN_ATTR_SET7,
  246. GSCAN_ATTRIBUTE_EPNO_SSID,
  247. GSCAN_ATTRIBUTE_EPNO_SSID_LEN,
  248. GSCAN_ATTRIBUTE_EPNO_RSSI,
  249. GSCAN_ATTRIBUTE_EPNO_FLAGS,
  250. GSCAN_ATTRIBUTE_EPNO_AUTH,
  251. GSCAN_ATTRIBUTE_EPNO_SSID_NUM,
  252. GSCAN_ATTRIBUTE_EPNO_FLUSH,
  253. /* Roam SSID Whitelist and BSSID pref */
  254. GSCAN_ATTRIBUTE_WHITELIST_SSID = GSCAN_ATTR_SET8,
  255. GSCAN_ATTRIBUTE_NUM_WL_SSID,
  256. GSCAN_ATTRIBUTE_WL_SSID_LEN,
  257. GSCAN_ATTRIBUTE_WL_SSID_FLUSH,
  258. GSCAN_ATTRIBUTE_WHITELIST_SSID_ELEM,
  259. GSCAN_ATTRIBUTE_NUM_BSSID,
  260. GSCAN_ATTRIBUTE_BSSID_PREF_LIST,
  261. GSCAN_ATTRIBUTE_BSSID_PREF_FLUSH,
  262. GSCAN_ATTRIBUTE_BSSID_PREF,
  263. GSCAN_ATTRIBUTE_RSSI_MODIFIER,
  264. /* Roam cfg */
  265. GSCAN_ATTRIBUTE_A_BAND_BOOST_THRESHOLD = GSCAN_ATTR_SET9,
  266. GSCAN_ATTRIBUTE_A_BAND_PENALTY_THRESHOLD,
  267. GSCAN_ATTRIBUTE_A_BAND_BOOST_FACTOR,
  268. GSCAN_ATTRIBUTE_A_BAND_PENALTY_FACTOR,
  269. GSCAN_ATTRIBUTE_A_BAND_MAX_BOOST,
  270. GSCAN_ATTRIBUTE_LAZY_ROAM_HYSTERESIS,
  271. GSCAN_ATTRIBUTE_ALERT_ROAM_RSSI_TRIGGER,
  272. GSCAN_ATTRIBUTE_LAZY_ROAM_ENABLE,
  273. /* BSSID blacklist */
  274. GSCAN_ATTRIBUTE_BSSID_BLACKLIST_FLUSH = GSCAN_ATTR_SET10,
  275. GSCAN_ATTRIBUTE_BLACKLIST_BSSID,
  276. GSCAN_ATTRIBUTE_ANQPO_HS_LIST = GSCAN_ATTR_SET11,
  277. GSCAN_ATTRIBUTE_ANQPO_HS_LIST_SIZE,
  278. GSCAN_ATTRIBUTE_ANQPO_HS_NETWORK_ID,
  279. GSCAN_ATTRIBUTE_ANQPO_HS_NAI_REALM,
  280. GSCAN_ATTRIBUTE_ANQPO_HS_ROAM_CONSORTIUM_ID,
  281. GSCAN_ATTRIBUTE_ANQPO_HS_PLMN,
  282. /* Adaptive scan attributes */
  283. GSCAN_ATTRIBUTE_BUCKET_STEP_COUNT = GSCAN_ATTR_SET12,
  284. GSCAN_ATTRIBUTE_BUCKET_MAX_PERIOD,
  285. /* ePNO cfg */
  286. GSCAN_ATTRIBUTE_EPNO_5G_RSSI_THR = GSCAN_ATTR_SET13,
  287. GSCAN_ATTRIBUTE_EPNO_2G_RSSI_THR,
  288. GSCAN_ATTRIBUTE_EPNO_INIT_SCORE_MAX,
  289. GSCAN_ATTRIBUTE_EPNO_CUR_CONN_BONUS,
  290. GSCAN_ATTRIBUTE_EPNO_SAME_NETWORK_BONUS,
  291. GSCAN_ATTRIBUTE_EPNO_SECURE_BONUS,
  292. GSCAN_ATTRIBUTE_EPNO_5G_BONUS,
  293. /* Android O Roaming features */
  294. GSCAN_ATTRIBUTE_ROAM_STATE_SET = GSCAN_ATTR_SET14,
  295. GSCAN_ATTRIBUTE_MAX
  296. };
  297. enum gscan_bucket_attributes {
  298. GSCAN_ATTRIBUTE_CH_BUCKET_1,
  299. GSCAN_ATTRIBUTE_CH_BUCKET_2,
  300. GSCAN_ATTRIBUTE_CH_BUCKET_3,
  301. GSCAN_ATTRIBUTE_CH_BUCKET_4,
  302. GSCAN_ATTRIBUTE_CH_BUCKET_5,
  303. GSCAN_ATTRIBUTE_CH_BUCKET_6,
  304. GSCAN_ATTRIBUTE_CH_BUCKET_7
  305. };
  306. enum gscan_ch_attributes {
  307. GSCAN_ATTRIBUTE_CH_ID_1,
  308. GSCAN_ATTRIBUTE_CH_ID_2,
  309. GSCAN_ATTRIBUTE_CH_ID_3,
  310. GSCAN_ATTRIBUTE_CH_ID_4,
  311. GSCAN_ATTRIBUTE_CH_ID_5,
  312. GSCAN_ATTRIBUTE_CH_ID_6,
  313. GSCAN_ATTRIBUTE_CH_ID_7
  314. };
  315. enum rtt_attributes {
  316. RTT_ATTRIBUTE_TARGET_CNT,
  317. RTT_ATTRIBUTE_TARGET_INFO,
  318. RTT_ATTRIBUTE_TARGET_MAC,
  319. RTT_ATTRIBUTE_TARGET_TYPE,
  320. RTT_ATTRIBUTE_TARGET_PEER,
  321. RTT_ATTRIBUTE_TARGET_CHAN,
  322. RTT_ATTRIBUTE_TARGET_PERIOD,
  323. RTT_ATTRIBUTE_TARGET_NUM_BURST,
  324. RTT_ATTRIBUTE_TARGET_NUM_FTM_BURST,
  325. RTT_ATTRIBUTE_TARGET_NUM_RETRY_FTM,
  326. RTT_ATTRIBUTE_TARGET_NUM_RETRY_FTMR,
  327. RTT_ATTRIBUTE_TARGET_LCI,
  328. RTT_ATTRIBUTE_TARGET_LCR,
  329. RTT_ATTRIBUTE_TARGET_BURST_DURATION,
  330. RTT_ATTRIBUTE_TARGET_PREAMBLE,
  331. RTT_ATTRIBUTE_TARGET_BW,
  332. RTT_ATTRIBUTE_RESULTS_COMPLETE = 30,
  333. RTT_ATTRIBUTE_RESULTS_PER_TARGET,
  334. RTT_ATTRIBUTE_RESULT_CNT,
  335. RTT_ATTRIBUTE_RESULT,
  336. RTT_ATTRIBUTE_RESULT_DETAIL
  337. };
  338. enum wifi_rssi_monitor_attr {
  339. RSSI_MONITOR_ATTRIBUTE_MAX_RSSI,
  340. RSSI_MONITOR_ATTRIBUTE_MIN_RSSI,
  341. RSSI_MONITOR_ATTRIBUTE_START
  342. };
  343. enum wifi_sae_key_attr {
  344. BRCM_SAE_KEY_ATTR_PEER_MAC,
  345. BRCM_SAE_KEY_ATTR_PMK,
  346. BRCM_SAE_KEY_ATTR_PMKID
  347. };
  348. enum debug_attributes {
  349. DEBUG_ATTRIBUTE_GET_DRIVER,
  350. DEBUG_ATTRIBUTE_GET_FW,
  351. DEBUG_ATTRIBUTE_RING_ID,
  352. DEBUG_ATTRIBUTE_RING_NAME,
  353. DEBUG_ATTRIBUTE_RING_FLAGS,
  354. DEBUG_ATTRIBUTE_LOG_LEVEL,
  355. DEBUG_ATTRIBUTE_LOG_TIME_INTVAL,
  356. DEBUG_ATTRIBUTE_LOG_MIN_DATA_SIZE,
  357. DEBUG_ATTRIBUTE_DUMP_FILENAME,
  358. DEBUG_ATTRIBUTE_FW_DUMP_LEN,
  359. DEBUG_ATTRIBUTE_FW_DUMP_DATA,
  360. DEBUG_ATTRIBUTE_RING_DATA,
  361. DEBUG_ATTRIBUTE_RING_STATUS,
  362. DEBUG_ATTRIBUTE_RING_NUM,
  363. DEBUG_ATTRIBUTE_DRIVER_DUMP_LEN,
  364. DEBUG_ATTRIBUTE_DRIVER_DUMP_DATA,
  365. DEBUG_ATTRIBUTE_PKT_FATE_NUM,
  366. DEBUG_ATTRIBUTE_PKT_FATE_DATA
  367. };
  368. typedef enum {
  369. DUMP_LEN_ATTR_INVALID,
  370. DUMP_LEN_ATTR_MEMDUMP,
  371. DUMP_LEN_ATTR_SSSR_C0_D11_BEFORE,
  372. DUMP_LEN_ATTR_SSSR_C0_D11_AFTER,
  373. DUMP_LEN_ATTR_SSSR_C1_D11_BEFORE,
  374. DUMP_LEN_ATTR_SSSR_C1_D11_AFTER,
  375. DUMP_LEN_ATTR_SSSR_DIG_BEFORE,
  376. DUMP_LEN_ATTR_SSSR_DIG_AFTER,
  377. DUMP_LEN_ATTR_TIMESTAMP,
  378. DUMP_LEN_ATTR_GENERAL_LOG,
  379. DUMP_LEN_ATTR_ECNTRS,
  380. DUMP_LEN_ATTR_SPECIAL_LOG,
  381. DUMP_LEN_ATTR_DHD_DUMP,
  382. DUMP_LEN_ATTR_EXT_TRAP,
  383. DUMP_LEN_ATTR_HEALTH_CHK,
  384. DUMP_LEN_ATTR_PRESERVE_LOG,
  385. DUMP_LEN_ATTR_COOKIE,
  386. DUMP_LEN_ATTR_FLOWRING_DUMP,
  387. DUMP_LEN_ATTR_PKTLOG,
  388. DUMP_FILENAME_ATTR_DEBUG_DUMP,
  389. DUMP_FILENAME_ATTR_MEM_DUMP,
  390. DUMP_FILENAME_ATTR_SSSR_CORE_0_BEFORE_DUMP,
  391. DUMP_FILENAME_ATTR_SSSR_CORE_0_AFTER_DUMP,
  392. DUMP_FILENAME_ATTR_SSSR_CORE_1_BEFORE_DUMP,
  393. DUMP_FILENAME_ATTR_SSSR_CORE_1_AFTER_DUMP,
  394. DUMP_FILENAME_ATTR_SSSR_DIG_BEFORE_DUMP,
  395. DUMP_FILENAME_ATTR_SSSR_DIG_AFTER_DUMP,
  396. DUMP_FILENAME_ATTR_PKTLOG_DUMP,
  397. DUMP_LEN_ATTR_STATUS_LOG,
  398. DUMP_LEN_ATTR_AXI_ERROR,
  399. DUMP_FILENAME_ATTR_AXI_ERROR_DUMP,
  400. DUMP_LEN_ATTR_RTT_LOG
  401. } EWP_DUMP_EVENT_ATTRIBUTE;
  402. /* Attributes associated with DEBUG_GET_DUMP_BUF */
  403. typedef enum {
  404. DUMP_BUF_ATTR_INVALID,
  405. DUMP_BUF_ATTR_MEMDUMP,
  406. DUMP_BUF_ATTR_SSSR_C0_D11_BEFORE,
  407. DUMP_BUF_ATTR_SSSR_C0_D11_AFTER,
  408. DUMP_BUF_ATTR_SSSR_C1_D11_BEFORE,
  409. DUMP_BUF_ATTR_SSSR_C1_D11_AFTER,
  410. DUMP_BUF_ATTR_SSSR_DIG_BEFORE,
  411. DUMP_BUF_ATTR_SSSR_DIG_AFTER,
  412. DUMP_BUF_ATTR_TIMESTAMP,
  413. DUMP_BUF_ATTR_GENERAL_LOG,
  414. DUMP_BUF_ATTR_ECNTRS,
  415. DUMP_BUF_ATTR_SPECIAL_LOG,
  416. DUMP_BUF_ATTR_DHD_DUMP,
  417. DUMP_BUF_ATTR_EXT_TRAP,
  418. DUMP_BUF_ATTR_HEALTH_CHK,
  419. DUMP_BUF_ATTR_PRESERVE_LOG,
  420. DUMP_BUF_ATTR_COOKIE,
  421. DUMP_BUF_ATTR_FLOWRING_DUMP,
  422. DUMP_BUF_ATTR_PKTLOG,
  423. DUMP_BUF_ATTR_STATUS_LOG,
  424. DUMP_BUF_ATTR_AXI_ERROR,
  425. DUMP_BUF_ATTR_RTT_LOG
  426. } EWP_DUMP_CMD_ATTRIBUTE;
  427. enum mkeep_alive_attributes {
  428. MKEEP_ALIVE_ATTRIBUTE_ID,
  429. MKEEP_ALIVE_ATTRIBUTE_IP_PKT,
  430. MKEEP_ALIVE_ATTRIBUTE_IP_PKT_LEN,
  431. MKEEP_ALIVE_ATTRIBUTE_SRC_MAC_ADDR,
  432. MKEEP_ALIVE_ATTRIBUTE_DST_MAC_ADDR,
  433. MKEEP_ALIVE_ATTRIBUTE_PERIOD_MSEC
  434. };
  435. typedef enum wl_vendor_event {
  436. BRCM_VENDOR_EVENT_UNSPEC = 0,
  437. BRCM_VENDOR_EVENT_PRIV_STR = 1,
  438. GOOGLE_GSCAN_SIGNIFICANT_EVENT = 2,
  439. GOOGLE_GSCAN_GEOFENCE_FOUND_EVENT = 3,
  440. GOOGLE_GSCAN_BATCH_SCAN_EVENT = 4,
  441. GOOGLE_SCAN_FULL_RESULTS_EVENT = 5,
  442. GOOGLE_RTT_COMPLETE_EVENT = 6,
  443. GOOGLE_SCAN_COMPLETE_EVENT = 7,
  444. GOOGLE_GSCAN_GEOFENCE_LOST_EVENT = 8,
  445. GOOGLE_SCAN_EPNO_EVENT = 9,
  446. GOOGLE_DEBUG_RING_EVENT = 10,
  447. GOOGLE_FW_DUMP_EVENT = 11,
  448. GOOGLE_PNO_HOTSPOT_FOUND_EVENT = 12,
  449. GOOGLE_RSSI_MONITOR_EVENT = 13,
  450. GOOGLE_MKEEP_ALIVE_EVENT = 14,
  451. /*
  452. * BRCM specific events should be placed after
  453. * the Generic events so that enums don't mismatch
  454. * between the DHD and HAL
  455. */
  456. GOOGLE_NAN_EVENT_ENABLED = 15,
  457. GOOGLE_NAN_EVENT_DISABLED = 16,
  458. GOOGLE_NAN_EVENT_SUBSCRIBE_MATCH = 17,
  459. GOOGLE_NAN_EVENT_REPLIED = 18,
  460. GOOGLE_NAN_EVENT_PUBLISH_TERMINATED = 19,
  461. GOOGLE_NAN_EVENT_SUBSCRIBE_TERMINATED = 20,
  462. GOOGLE_NAN_EVENT_DE_EVENT = 21,
  463. GOOGLE_NAN_EVENT_FOLLOWUP = 22,
  464. GOOGLE_NAN_EVENT_TRANSMIT_FOLLOWUP_IND = 23,
  465. GOOGLE_NAN_EVENT_DATA_REQUEST = 24,
  466. GOOGLE_NAN_EVENT_DATA_CONFIRMATION = 25,
  467. GOOGLE_NAN_EVENT_DATA_END = 26,
  468. GOOGLE_NAN_EVENT_BEACON = 27,
  469. GOOGLE_NAN_EVENT_SDF = 28,
  470. GOOGLE_NAN_EVENT_TCA = 29,
  471. GOOGLE_NAN_EVENT_SUBSCRIBE_UNMATCH = 30,
  472. GOOGLE_NAN_EVENT_UNKNOWN = 31,
  473. GOOGLE_ROAM_EVENT_START = 32,
  474. BRCM_VENDOR_EVENT_HANGED = 33,
  475. BRCM_VENDOR_EVENT_SAE_KEY = 34,
  476. BRCM_VENDOR_EVENT_BEACON_RECV = 35,
  477. BRCM_VENDOR_EVENT_PORT_AUTHORIZED = 36,
  478. GOOGLE_FILE_DUMP_EVENT = 37,
  479. BRCM_VENDOR_EVENT_CU = 38,
  480. BRCM_VENDOR_EVENT_WIPS = 39
  481. } wl_vendor_event_t;
  482. enum andr_wifi_attr {
  483. ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET,
  484. ANDR_WIFI_ATTRIBUTE_FEATURE_SET,
  485. ANDR_WIFI_ATTRIBUTE_RANDOM_MAC_OUI,
  486. ANDR_WIFI_ATTRIBUTE_NODFS_SET,
  487. ANDR_WIFI_ATTRIBUTE_COUNTRY,
  488. ANDR_WIFI_ATTRIBUTE_ND_OFFLOAD_VALUE,
  489. ANDR_WIFI_ATTRIBUTE_TCPACK_SUP_VALUE
  490. };
  491. enum apf_attributes {
  492. APF_ATTRIBUTE_VERSION,
  493. APF_ATTRIBUTE_MAX_LEN,
  494. APF_ATTRIBUTE_PROGRAM,
  495. APF_ATTRIBUTE_PROGRAM_LEN
  496. };
  497. typedef enum wl_vendor_gscan_attribute {
  498. ATTR_START_GSCAN,
  499. ATTR_STOP_GSCAN,
  500. ATTR_SET_SCAN_BATCH_CFG_ID, /* set batch scan params */
  501. ATTR_SET_SCAN_GEOFENCE_CFG_ID, /* set list of bssids to track */
  502. ATTR_SET_SCAN_SIGNIFICANT_CFG_ID, /* set list of bssids, rssi threshold etc.. */
  503. ATTR_SET_SCAN_CFG_ID, /* set common scan config params here */
  504. ATTR_GET_GSCAN_CAPABILITIES_ID,
  505. /* Add more sub commands here */
  506. ATTR_GSCAN_MAX
  507. } wl_vendor_gscan_attribute_t;
  508. typedef enum gscan_batch_attribute {
  509. ATTR_GSCAN_BATCH_BESTN,
  510. ATTR_GSCAN_BATCH_MSCAN,
  511. ATTR_GSCAN_BATCH_BUFFER_THRESHOLD
  512. } gscan_batch_attribute_t;
  513. typedef enum gscan_geofence_attribute {
  514. ATTR_GSCAN_NUM_HOTLIST_BSSID,
  515. ATTR_GSCAN_HOTLIST_BSSID
  516. } gscan_geofence_attribute_t;
  517. typedef enum gscan_complete_event {
  518. WIFI_SCAN_COMPLETE,
  519. WIFI_SCAN_THRESHOLD_NUM_SCANS,
  520. WIFI_SCAN_BUFFER_THR_BREACHED
  521. } gscan_complete_event_t;
  522. #ifdef DHD_WAKE_STATUS
  523. enum wake_stat_attributes {
  524. WAKE_STAT_ATTRIBUTE_TOTAL_CMD_EVENT,
  525. WAKE_STAT_ATTRIBUTE_CMD_EVENT_WAKE,
  526. WAKE_STAT_ATTRIBUTE_CMD_EVENT_COUNT,
  527. WAKE_STAT_ATTRIBUTE_CMD_EVENT_COUNT_USED,
  528. WAKE_STAT_ATTRIBUTE_TOTAL_DRIVER_FW,
  529. WAKE_STAT_ATTRIBUTE_DRIVER_FW_WAKE,
  530. WAKE_STAT_ATTRIBUTE_DRIVER_FW_COUNT,
  531. WAKE_STAT_ATTRIBUTE_DRIVER_FW_COUNT_USED,
  532. WAKE_STAT_ATTRIBUTE_TOTAL_RX_DATA_WAKE,
  533. WAKE_STAT_ATTRIBUTE_RX_UNICAST_COUNT,
  534. WAKE_STAT_ATTRIBUTE_RX_MULTICAST_COUNT,
  535. WAKE_STAT_ATTRIBUTE_RX_BROADCAST_COUNT,
  536. WAKE_STAT_ATTRIBUTE_RX_ICMP_PKT,
  537. WAKE_STAT_ATTRIBUTE_RX_ICMP6_PKT,
  538. WAKE_STAT_ATTRIBUTE_RX_ICMP6_RA,
  539. WAKE_STAT_ATTRIBUTE_RX_ICMP6_NA,
  540. WAKE_STAT_ATTRIBUTE_RX_ICMP6_NS,
  541. WAKE_STAT_ATTRIBUTE_IPV4_RX_MULTICAST_ADD_CNT,
  542. WAKE_STAT_ATTRIBUTE_IPV6_RX_MULTICAST_ADD_CNT,
  543. WAKE_STAT_ATTRIBUTE_OTHER_RX_MULTICAST_ADD_CNT
  544. };
  545. typedef struct rx_data_cnt_details_t {
  546. int rx_unicast_cnt; /* Total rx unicast packet which woke up host */
  547. int rx_multicast_cnt; /* Total rx multicast packet which woke up host */
  548. int rx_broadcast_cnt; /* Total rx broadcast packet which woke up host */
  549. } RX_DATA_WAKE_CNT_DETAILS;
  550. typedef struct rx_wake_pkt_type_classification_t {
  551. int icmp_pkt; /* wake icmp packet count */
  552. int icmp6_pkt; /* wake icmp6 packet count */
  553. int icmp6_ra; /* wake icmp6 RA packet count */
  554. int icmp6_na; /* wake icmp6 NA packet count */
  555. int icmp6_ns; /* wake icmp6 NS packet count */
  556. } RX_WAKE_PKT_TYPE_CLASSFICATION;
  557. typedef struct rx_multicast_cnt_t {
  558. int ipv4_rx_multicast_addr_cnt; /* Rx wake packet was ipv4 multicast */
  559. int ipv6_rx_multicast_addr_cnt; /* Rx wake packet was ipv6 multicast */
  560. int other_rx_multicast_addr_cnt; /* Rx wake packet was non-ipv4 and non-ipv6 */
  561. } RX_MULTICAST_WAKE_DATA_CNT;
  562. typedef struct wlan_driver_wake_reason_cnt_t {
  563. int total_cmd_event_wake; /* Total count of cmd event wakes */
  564. int *cmd_event_wake_cnt; /* Individual wake count array, each index a reason */
  565. int cmd_event_wake_cnt_sz; /* Max number of cmd event wake reasons */
  566. int cmd_event_wake_cnt_used; /* Number of cmd event wake reasons specific to the driver */
  567. int total_driver_fw_local_wake; /* Total count of drive/fw wakes, for local reasons */
  568. int *driver_fw_local_wake_cnt; /* Individual wake count array, each index a reason */
  569. int driver_fw_local_wake_cnt_sz; /* Max number of local driver/fw wake reasons */
  570. /* Number of local driver/fw wake reasons specific to the driver */
  571. int driver_fw_local_wake_cnt_used;
  572. int total_rx_data_wake; /* total data rx packets, that woke up host */
  573. RX_DATA_WAKE_CNT_DETAILS rx_wake_details;
  574. RX_WAKE_PKT_TYPE_CLASSFICATION rx_wake_pkt_classification_info;
  575. RX_MULTICAST_WAKE_DATA_CNT rx_multicast_wake_pkt_info;
  576. } WLAN_DRIVER_WAKE_REASON_CNT;
  577. #endif /* DHD_WAKE_STATUS */
  578. #ifdef WL_WIPSEVT
  579. #define BRCM_VENDOR_WIPS_EVENT_BUF_LEN 128
  580. typedef enum wl_vendor_wips_attr_type {
  581. WIPS_ATTR_DEAUTH_CNT = 1,
  582. WPPS_ATTR_DEAUTH_BSSID
  583. } wl_vendor_wips_attr_type_t;
  584. #endif /* WL_WIPSEVT */
  585. /* Chipset roaming capabilities */
  586. typedef struct wifi_roaming_capabilities {
  587. u32 max_blacklist_size;
  588. u32 max_whitelist_size;
  589. } wifi_roaming_capabilities_t;
  590. /* Capture the BRCM_VENDOR_SUBCMD_PRIV_STRINGS* here */
  591. #define BRCM_VENDOR_SCMD_CAPA "cap"
  592. #define MEMDUMP_PATH_LEN 128
  593. #if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 13, 0)) || defined(WL_VENDOR_EXT_SUPPORT)
  594. extern int wl_cfgvendor_attach(struct wiphy *wiphy, dhd_pub_t *dhd);
  595. extern int wl_cfgvendor_detach(struct wiphy *wiphy);
  596. extern int wl_cfgvendor_send_async_event(struct wiphy *wiphy,
  597. struct net_device *dev, int event_id, const void *data, int len);
  598. extern int wl_cfgvendor_send_hotlist_event(struct wiphy *wiphy,
  599. struct net_device *dev, void *data, int len, wl_vendor_event_t event);
  600. #else
  601. static INLINE int wl_cfgvendor_attach(struct wiphy *wiphy,
  602. dhd_pub_t *dhd) { UNUSED_PARAMETER(wiphy); UNUSED_PARAMETER(dhd); return 0; }
  603. static INLINE int wl_cfgvendor_detach(struct wiphy *wiphy) { UNUSED_PARAMETER(wiphy); return 0; }
  604. static INLINE int wl_cfgvendor_send_async_event(struct wiphy *wiphy,
  605. struct net_device *dev, int event_id, const void *data, int len)
  606. { return 0; }
  607. static INLINE int wl_cfgvendor_send_hotlist_event(struct wiphy *wiphy,
  608. struct net_device *dev, void *data, int len, wl_vendor_event_t event)
  609. { return 0; }
  610. #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(3, 13, 0)) || defined(WL_VENDOR_EXT_SUPPORT) */
  611. #if defined(WL_SUPP_EVENT) && ((LINUX_VERSION_CODE > KERNEL_VERSION(3, 13, 0)) || \
  612. defined(WL_VENDOR_EXT_SUPPORT))
  613. extern int wl_cfgvendor_send_supp_eventstring(const char *func, const char *fmt, ...);
  614. int wl_cfgvendor_notify_supp_event_str(const char *evt_name, const char *fmt, ...);
  615. #define SUPP_LOG_LEN 256
  616. #define PRINT_SUPP_LOG(fmt, ...) \
  617. wl_cfgvendor_send_supp_eventstring(__func__, fmt, ##__VA_ARGS__);
  618. #define SUPP_LOG(args) PRINT_SUPP_LOG args;
  619. #define SUPP_EVT_LOG(evt_name, fmt, ...) \
  620. wl_cfgvendor_notify_supp_event_str(evt_name, fmt, ##__VA_ARGS__);
  621. #define SUPP_EVENT(args) SUPP_EVT_LOG args
  622. #else
  623. #define SUPP_LOG(x)
  624. #define SUPP_EVENT(x)
  625. #endif /* WL_SUPP_EVENT && (kernel > (3, 13, 0)) || WL_VENDOR_EXT_SUPPORT */
  626. #define COMPAT_ASSIGN_VALUE(normal_structure, member, value) \
  627. normal_structure.member = value;
  628. #if (defined(CONFIG_ARCH_MSM) && defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC)) || \
  629. LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)
  630. #define CFG80211_VENDOR_EVENT_ALLOC(wiphy, wdev, len, type, kflags) \
  631. cfg80211_vendor_event_alloc(wiphy, wdev, len, type, kflags);
  632. #else
  633. #define CFG80211_VENDOR_EVENT_ALLOC(wiphy, wdev, len, type, kflags) \
  634. cfg80211_vendor_event_alloc(wiphy, len, type, kflags);
  635. #endif /* (defined(CONFIG_ARCH_MSM) && defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC)) || */
  636. /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) */
  637. #ifdef WL_CFGVENDOR_SEND_HANG_EVENT
  638. void wl_cfgvendor_send_hang_event(struct net_device *dev, u16 reason,
  639. char *string, int hang_info_cnt);
  640. void wl_copy_hang_info_if_falure(struct net_device *dev, u16 reason, s32 ret);
  641. #endif /* WL_CFGVENDOR_SEND_HANG_EVENT */
  642. #endif /* _wl_cfgvendor_h_ */