wmi.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116
  1. /*
  2. * Copyright (c) 2012 Qualcomm Atheros, Inc.
  3. * Copyright (c) 2006-2012 Wilocity .
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  15. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16. */
  17. /*
  18. * This file contains the definitions of the WMI protocol specified in the
  19. * Wireless Module Interface (WMI) for the Wilocity
  20. * MARLON 60 Gigabit wireless solution.
  21. * It includes definitions of all the commands and events.
  22. * Commands are messages from the host to the WM.
  23. * Events are messages from the WM to the host.
  24. */
  25. #ifndef __WILOCITY_WMI_H__
  26. #define __WILOCITY_WMI_H__
  27. /* General */
  28. #define WMI_MAC_LEN (6)
  29. #define WMI_PROX_RANGE_NUM (3)
  30. /* List of Commands */
  31. enum wmi_command_id {
  32. WMI_CONNECT_CMDID = 0x0001,
  33. WMI_DISCONNECT_CMDID = 0x0003,
  34. WMI_START_SCAN_CMDID = 0x0007,
  35. WMI_SET_BSS_FILTER_CMDID = 0x0009,
  36. WMI_SET_PROBED_SSID_CMDID = 0x000a,
  37. WMI_SET_LISTEN_INT_CMDID = 0x000b,
  38. WMI_BCON_CTRL_CMDID = 0x000f,
  39. WMI_ADD_CIPHER_KEY_CMDID = 0x0016,
  40. WMI_DELETE_CIPHER_KEY_CMDID = 0x0017,
  41. WMI_SET_APPIE_CMDID = 0x003f,
  42. WMI_GET_APPIE_CMDID = 0x0040,
  43. WMI_SET_WSC_STATUS_CMDID = 0x0041,
  44. WMI_PXMT_RANGE_CFG_CMDID = 0x0042,
  45. WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x0043,
  46. WMI_FAST_MEM_ACC_MODE_CMDID = 0x0300,
  47. WMI_MEM_READ_CMDID = 0x0800,
  48. WMI_MEM_WR_CMDID = 0x0801,
  49. WMI_ECHO_CMDID = 0x0803,
  50. WMI_DEEP_ECHO_CMDID = 0x0804,
  51. WMI_CONFIG_MAC_CMDID = 0x0805,
  52. WMI_CONFIG_PHY_DEBUG_CMDID = 0x0806,
  53. WMI_ADD_STATION_CMDID = 0x0807,
  54. WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x0808,
  55. WMI_PHY_GET_STATISTICS_CMDID = 0x0809,
  56. WMI_FS_TUNE_CMDID = 0x080a,
  57. WMI_CORR_MEASURE_CMDID = 0x080b,
  58. WMI_TEMP_SENSE_CMDID = 0x080e,
  59. WMI_DC_CALIB_CMDID = 0x080f,
  60. WMI_SEND_TONE_CMDID = 0x0810,
  61. WMI_IQ_TX_CALIB_CMDID = 0x0811,
  62. WMI_IQ_RX_CALIB_CMDID = 0x0812,
  63. WMI_SET_UCODE_IDLE_CMDID = 0x0813,
  64. WMI_SET_WORK_MODE_CMDID = 0x0815,
  65. WMI_LO_LEAKAGE_CALIB_CMDID = 0x0816,
  66. WMI_MARLON_R_ACTIVATE_CMDID = 0x0817,
  67. WMI_MARLON_R_READ_CMDID = 0x0818,
  68. WMI_MARLON_R_WRITE_CMDID = 0x0819,
  69. WMI_MARLON_R_TXRX_SEL_CMDID = 0x081a,
  70. MAC_IO_STATIC_PARAMS_CMDID = 0x081b,
  71. MAC_IO_DYNAMIC_PARAMS_CMDID = 0x081c,
  72. WMI_SILENT_RSSI_CALIB_CMDID = 0x081d,
  73. WMI_CFG_RX_CHAIN_CMDID = 0x0820,
  74. WMI_VRING_CFG_CMDID = 0x0821,
  75. WMI_RX_ON_CMDID = 0x0822,
  76. WMI_VRING_BA_EN_CMDID = 0x0823,
  77. WMI_VRING_BA_DIS_CMDID = 0x0824,
  78. WMI_RCP_ADDBA_RESP_CMDID = 0x0825,
  79. WMI_RCP_DELBA_CMDID = 0x0826,
  80. WMI_SET_SSID_CMDID = 0x0827,
  81. WMI_GET_SSID_CMDID = 0x0828,
  82. WMI_SET_PCP_CHANNEL_CMDID = 0x0829,
  83. WMI_GET_PCP_CHANNEL_CMDID = 0x082a,
  84. WMI_SW_TX_REQ_CMDID = 0x082b,
  85. WMI_RX_OFF_CMDID = 0x082c,
  86. WMI_READ_MAC_RXQ_CMDID = 0x0830,
  87. WMI_READ_MAC_TXQ_CMDID = 0x0831,
  88. WMI_WRITE_MAC_RXQ_CMDID = 0x0832,
  89. WMI_WRITE_MAC_TXQ_CMDID = 0x0833,
  90. WMI_WRITE_MAC_XQ_FIELD_CMDID = 0x0834,
  91. WMI_MLME_PUSH_CMDID = 0x0835,
  92. WMI_BEAMFORMING_MGMT_CMDID = 0x0836,
  93. WMI_BF_TXSS_MGMT_CMDID = 0x0837,
  94. WMI_BF_SM_MGMT_CMDID = 0x0838,
  95. WMI_BF_RXSS_MGMT_CMDID = 0x0839,
  96. WMI_SET_SECTORS_CMDID = 0x0849,
  97. WMI_MAINTAIN_PAUSE_CMDID = 0x0850,
  98. WMI_MAINTAIN_RESUME_CMDID = 0x0851,
  99. WMI_RS_MGMT_CMDID = 0x0852,
  100. WMI_RF_MGMT_CMDID = 0x0853,
  101. /* Performance monitoring commands */
  102. WMI_BF_CTRL_CMDID = 0x0862,
  103. WMI_NOTIFY_REQ_CMDID = 0x0863,
  104. WMI_GET_STATUS_CMDID = 0x0864,
  105. WMI_UNIT_TEST_CMDID = 0x0900,
  106. WMI_HICCUP_CMDID = 0x0901,
  107. WMI_FLASH_READ_CMDID = 0x0902,
  108. WMI_FLASH_WRITE_CMDID = 0x0903,
  109. WMI_SECURITY_UNIT_TEST_CMDID = 0x0904,
  110. WMI_SET_MAC_ADDRESS_CMDID = 0xf003,
  111. WMI_ABORT_SCAN_CMDID = 0xf007,
  112. WMI_SET_PMK_CMDID = 0xf028,
  113. WMI_SET_PROMISCUOUS_MODE_CMDID = 0xf041,
  114. WMI_GET_PMK_CMDID = 0xf048,
  115. WMI_SET_PASSPHRASE_CMDID = 0xf049,
  116. WMI_SEND_ASSOC_RES_CMDID = 0xf04a,
  117. WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xf04b,
  118. WMI_EAPOL_TX_CMDID = 0xf04c,
  119. WMI_MAC_ADDR_REQ_CMDID = 0xf04d,
  120. WMI_FW_VER_CMDID = 0xf04e,
  121. };
  122. /*
  123. * Commands data structures
  124. */
  125. /*
  126. * Frame Types
  127. */
  128. enum wmi_mgmt_frame_type {
  129. WMI_FRAME_BEACON = 0,
  130. WMI_FRAME_PROBE_REQ = 1,
  131. WMI_FRAME_PROBE_RESP = 2,
  132. WMI_FRAME_ASSOC_REQ = 3,
  133. WMI_FRAME_ASSOC_RESP = 4,
  134. WMI_NUM_MGMT_FRAME,
  135. };
  136. /*
  137. * WMI_CONNECT_CMDID
  138. */
  139. enum wmi_network_type {
  140. WMI_NETTYPE_INFRA = 0x01,
  141. WMI_NETTYPE_ADHOC = 0x02,
  142. WMI_NETTYPE_ADHOC_CREATOR = 0x04,
  143. WMI_NETTYPE_AP = 0x10,
  144. WMI_NETTYPE_P2P = 0x20,
  145. WMI_NETTYPE_WBE = 0x40, /* PCIE over 60g */
  146. };
  147. enum wmi_dot11_auth_mode {
  148. WMI_AUTH11_OPEN = 0x01,
  149. WMI_AUTH11_SHARED = 0x02,
  150. WMI_AUTH11_LEAP = 0x04,
  151. WMI_AUTH11_WSC = 0x08,
  152. };
  153. enum wmi_auth_mode {
  154. WMI_AUTH_NONE = 0x01,
  155. WMI_AUTH_WPA = 0x02,
  156. WMI_AUTH_WPA2 = 0x04,
  157. WMI_AUTH_WPA_PSK = 0x08,
  158. WMI_AUTH_WPA2_PSK = 0x10,
  159. WMI_AUTH_WPA_CCKM = 0x20,
  160. WMI_AUTH_WPA2_CCKM = 0x40,
  161. };
  162. enum wmi_crypto_type {
  163. WMI_CRYPT_NONE = 0x01,
  164. WMI_CRYPT_WEP = 0x02,
  165. WMI_CRYPT_TKIP = 0x04,
  166. WMI_CRYPT_AES = 0x08,
  167. WMI_CRYPT_AES_GCMP = 0x20,
  168. };
  169. enum wmi_connect_ctrl_flag_bits {
  170. WMI_CONNECT_ASSOC_POLICY_USER = 0x0001,
  171. WMI_CONNECT_SEND_REASSOC = 0x0002,
  172. WMI_CONNECT_IGNORE_WPAx_GROUP_CIPHER = 0x0004,
  173. WMI_CONNECT_PROFILE_MATCH_DONE = 0x0008,
  174. WMI_CONNECT_IGNORE_AAC_BEACON = 0x0010,
  175. WMI_CONNECT_CSA_FOLLOW_BSS = 0x0020,
  176. WMI_CONNECT_DO_WPA_OFFLOAD = 0x0040,
  177. WMI_CONNECT_DO_NOT_DEAUTH = 0x0080,
  178. };
  179. #define WMI_MAX_SSID_LEN (32)
  180. struct wmi_connect_cmd {
  181. u8 network_type;
  182. u8 dot11_auth_mode;
  183. u8 auth_mode;
  184. u8 pairwise_crypto_type;
  185. u8 pairwise_crypto_len;
  186. u8 group_crypto_type;
  187. u8 group_crypto_len;
  188. u8 ssid_len;
  189. u8 ssid[WMI_MAX_SSID_LEN];
  190. u8 channel;
  191. u8 reserved0;
  192. u8 bssid[WMI_MAC_LEN];
  193. __le32 ctrl_flags;
  194. u8 dst_mac[WMI_MAC_LEN];
  195. u8 reserved1[2];
  196. } __packed;
  197. /*
  198. * WMI_RECONNECT_CMDID
  199. */
  200. struct wmi_reconnect_cmd {
  201. u8 channel; /* hint */
  202. u8 reserved;
  203. u8 bssid[WMI_MAC_LEN]; /* mandatory if set */
  204. } __packed;
  205. /*
  206. * WMI_SET_PMK_CMDID
  207. */
  208. #define WMI_MIN_KEY_INDEX (0)
  209. #define WMI_MAX_KEY_INDEX (3)
  210. #define WMI_MAX_KEY_LEN (32)
  211. #define WMI_PASSPHRASE_LEN (64)
  212. #define WMI_PMK_LEN (32)
  213. struct wmi_set_pmk_cmd {
  214. u8 pmk[WMI_PMK_LEN];
  215. } __packed;
  216. /*
  217. * WMI_SET_PASSPHRASE_CMDID
  218. */
  219. struct wmi_set_passphrase_cmd {
  220. u8 ssid[WMI_MAX_SSID_LEN];
  221. u8 passphrase[WMI_PASSPHRASE_LEN];
  222. u8 ssid_len;
  223. u8 passphrase_len;
  224. } __packed;
  225. /*
  226. * WMI_ADD_CIPHER_KEY_CMDID
  227. */
  228. enum wmi_key_usage {
  229. WMI_KEY_USE_PAIRWISE = 0,
  230. WMI_KEY_USE_GROUP = 1,
  231. WMI_KEY_USE_TX = 2, /* default Tx Key - Static WEP only */
  232. };
  233. struct wmi_add_cipher_key_cmd {
  234. u8 key_index;
  235. u8 key_type;
  236. u8 key_usage; /* enum wmi_key_usage */
  237. u8 key_len;
  238. u8 key_rsc[8]; /* key replay sequence counter */
  239. u8 key[WMI_MAX_KEY_LEN];
  240. u8 key_op_ctrl; /* Additional Key Control information */
  241. u8 mac[WMI_MAC_LEN];
  242. } __packed;
  243. /*
  244. * WMI_DELETE_CIPHER_KEY_CMDID
  245. */
  246. struct wmi_delete_cipher_key_cmd {
  247. u8 key_index;
  248. u8 mac[WMI_MAC_LEN];
  249. } __packed;
  250. /*
  251. * WMI_START_SCAN_CMDID
  252. *
  253. * Start L1 scan operation
  254. *
  255. * Returned events:
  256. * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp.
  257. * - WMI_SCAN_COMPLETE_EVENTID
  258. */
  259. enum wmi_scan_type {
  260. WMI_LONG_SCAN = 0,
  261. WMI_SHORT_SCAN = 1,
  262. };
  263. struct wmi_start_scan_cmd {
  264. u8 reserved[8];
  265. __le32 home_dwell_time; /* Max duration in the home channel(ms) */
  266. __le32 force_scan_interval; /* Time interval between scans (ms)*/
  267. u8 scan_type; /* wmi_scan_type */
  268. u8 num_channels; /* how many channels follow */
  269. struct {
  270. u8 channel;
  271. u8 reserved;
  272. } channel_list[0]; /* channels ID's */
  273. /* 0 - 58320 MHz */
  274. /* 1 - 60480 MHz */
  275. /* 2 - 62640 MHz */
  276. } __packed;
  277. /*
  278. * WMI_SET_PROBED_SSID_CMDID
  279. */
  280. #define MAX_PROBED_SSID_INDEX (15)
  281. enum wmi_ssid_flag {
  282. WMI_SSID_FLAG_DISABLE = 0, /* disables entry */
  283. WMI_SSID_FLAG_SPECIFIC = 1, /* probes specified ssid */
  284. WMI_SSID_FLAG_ANY = 2, /* probes for any ssid */
  285. };
  286. struct wmi_probed_ssid_cmd {
  287. u8 entry_index; /* 0 to MAX_PROBED_SSID_INDEX */
  288. u8 flag; /* enum wmi_ssid_flag */
  289. u8 ssid_len;
  290. u8 ssid[WMI_MAX_SSID_LEN];
  291. } __packed;
  292. /*
  293. * WMI_SET_APPIE_CMDID
  294. * Add Application specified IE to a management frame
  295. */
  296. struct wmi_set_appie_cmd {
  297. u8 mgmt_frm_type; /* enum wmi_mgmt_frame_type */
  298. u8 reserved;
  299. __le16 ie_len; /* Length of the IE to be added to MGMT frame */
  300. u8 ie_info[0];
  301. } __packed;
  302. #define WMI_MAX_IE_LEN (1024)
  303. struct wmi_pxmt_range_cfg_cmd {
  304. u8 dst_mac[WMI_MAC_LEN];
  305. __le16 range;
  306. } __packed;
  307. struct wmi_pxmt_snr2_range_cfg_cmd {
  308. s8 snr2range_arr[WMI_PROX_RANGE_NUM-1];
  309. } __packed;
  310. /*
  311. * WMI_RF_MGMT_CMDID
  312. */
  313. enum wmi_rf_mgmt_type {
  314. WMI_RF_MGMT_W_DISABLE = 0,
  315. WMI_RF_MGMT_W_ENABLE = 1,
  316. WMI_RF_MGMT_GET_STATUS = 2,
  317. };
  318. struct wmi_rf_mgmt_cmd {
  319. __le32 rf_mgmt_type;
  320. } __packed;
  321. /*
  322. * WMI_SET_SSID_CMDID
  323. */
  324. struct wmi_set_ssid_cmd {
  325. __le32 ssid_len;
  326. u8 ssid[WMI_MAX_SSID_LEN];
  327. } __packed;
  328. /*
  329. * WMI_SET_PCP_CHANNEL_CMDID
  330. */
  331. struct wmi_set_pcp_channel_cmd {
  332. u8 channel;
  333. u8 reserved[3];
  334. } __packed;
  335. /*
  336. * WMI_BCON_CTRL_CMDID
  337. */
  338. struct wmi_bcon_ctrl_cmd {
  339. __le16 bcon_interval;
  340. __le16 frag_num;
  341. __le64 ss_mask;
  342. u8 network_type;
  343. u8 reserved;
  344. u8 disable_sec_offload;
  345. u8 disable_sec;
  346. } __packed;
  347. /*
  348. * WMI_SW_TX_REQ_CMDID
  349. */
  350. struct wmi_sw_tx_req_cmd {
  351. u8 dst_mac[WMI_MAC_LEN];
  352. __le16 len;
  353. u8 payload[0];
  354. } __packed;
  355. /*
  356. * WMI_VRING_CFG_CMDID
  357. */
  358. struct wmi_sw_ring_cfg {
  359. __le64 ring_mem_base;
  360. __le16 ring_size;
  361. __le16 max_mpdu_size;
  362. } __packed;
  363. struct wmi_vring_cfg_schd {
  364. __le16 priority;
  365. __le16 timeslot_us;
  366. } __packed;
  367. enum wmi_vring_cfg_encap_trans_type {
  368. WMI_VRING_ENC_TYPE_802_3 = 0,
  369. WMI_VRING_ENC_TYPE_NATIVE_WIFI = 1,
  370. };
  371. enum wmi_vring_cfg_ds_cfg {
  372. WMI_VRING_DS_PBSS = 0,
  373. WMI_VRING_DS_STATION = 1,
  374. WMI_VRING_DS_AP = 2,
  375. WMI_VRING_DS_ADDR4 = 3,
  376. };
  377. enum wmi_vring_cfg_nwifi_ds_trans_type {
  378. WMI_NWIFI_TX_TRANS_MODE_NO = 0,
  379. WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 1,
  380. WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 2,
  381. };
  382. enum wmi_vring_cfg_schd_params_priority {
  383. WMI_SCH_PRIO_REGULAR = 0,
  384. WMI_SCH_PRIO_HIGH = 1,
  385. };
  386. struct wmi_vring_cfg {
  387. struct wmi_sw_ring_cfg tx_sw_ring;
  388. u8 ringid; /* 0-23 vrings */
  389. #define CIDXTID_CID_POS (0)
  390. #define CIDXTID_CID_LEN (4)
  391. #define CIDXTID_CID_MSK (0xF)
  392. #define CIDXTID_TID_POS (4)
  393. #define CIDXTID_TID_LEN (4)
  394. #define CIDXTID_TID_MSK (0xF0)
  395. u8 cidxtid;
  396. u8 encap_trans_type;
  397. u8 ds_cfg; /* 802.3 DS cfg */
  398. u8 nwifi_ds_trans_type;
  399. #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0)
  400. #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1)
  401. #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1)
  402. #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1)
  403. #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1)
  404. #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2)
  405. u8 mac_ctrl;
  406. #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0)
  407. #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6)
  408. #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F)
  409. u8 to_resolution;
  410. u8 agg_max_wsize;
  411. struct wmi_vring_cfg_schd schd_params;
  412. } __packed;
  413. enum wmi_vring_cfg_cmd_action {
  414. WMI_VRING_CMD_ADD = 0,
  415. WMI_VRING_CMD_MODIFY = 1,
  416. WMI_VRING_CMD_DELETE = 2,
  417. };
  418. struct wmi_vring_cfg_cmd {
  419. __le32 action;
  420. struct wmi_vring_cfg vring_cfg;
  421. } __packed;
  422. /*
  423. * WMI_VRING_BA_EN_CMDID
  424. */
  425. struct wmi_vring_ba_en_cmd {
  426. u8 ringid;
  427. u8 agg_max_wsize;
  428. __le16 ba_timeout;
  429. } __packed;
  430. /*
  431. * WMI_VRING_BA_DIS_CMDID
  432. */
  433. struct wmi_vring_ba_dis_cmd {
  434. u8 ringid;
  435. u8 reserved;
  436. __le16 reason;
  437. } __packed;
  438. /*
  439. * WMI_NOTIFY_REQ_CMDID
  440. */
  441. struct wmi_notify_req_cmd {
  442. u8 cid;
  443. u8 reserved[3];
  444. __le32 interval_usec;
  445. } __packed;
  446. /*
  447. * WMI_CFG_RX_CHAIN_CMDID
  448. */
  449. enum wmi_sniffer_cfg_mode {
  450. WMI_SNIFFER_OFF = 0,
  451. WMI_SNIFFER_ON = 1,
  452. };
  453. enum wmi_sniffer_cfg_phy_info_mode {
  454. WMI_SNIFFER_PHY_INFO_DISABLED = 0,
  455. WMI_SNIFFER_PHY_INFO_ENABLED = 1,
  456. };
  457. enum wmi_sniffer_cfg_phy_support {
  458. WMI_SNIFFER_CP = 0,
  459. WMI_SNIFFER_DP = 1,
  460. WMI_SNIFFER_BOTH_PHYS = 2,
  461. };
  462. struct wmi_sniffer_cfg {
  463. __le32 mode; /* enum wmi_sniffer_cfg_mode */
  464. __le32 phy_info_mode; /* enum wmi_sniffer_cfg_phy_info_mode */
  465. __le32 phy_support; /* enum wmi_sniffer_cfg_phy_support */
  466. u8 channel;
  467. u8 reserved[3];
  468. } __packed;
  469. enum wmi_cfg_rx_chain_cmd_action {
  470. WMI_RX_CHAIN_ADD = 0,
  471. WMI_RX_CHAIN_DEL = 1,
  472. };
  473. enum wmi_cfg_rx_chain_cmd_decap_trans_type {
  474. WMI_DECAP_TYPE_802_3 = 0,
  475. WMI_DECAP_TYPE_NATIVE_WIFI = 1,
  476. };
  477. enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type {
  478. WMI_NWIFI_RX_TRANS_MODE_NO = 0,
  479. WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 1,
  480. WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 2,
  481. };
  482. struct wmi_cfg_rx_chain_cmd {
  483. __le32 action;
  484. struct wmi_sw_ring_cfg rx_sw_ring;
  485. u8 mid;
  486. u8 decap_trans_type;
  487. #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0)
  488. #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1)
  489. #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1)
  490. u8 l2_802_3_offload_ctrl;
  491. #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0)
  492. #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1)
  493. #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1)
  494. #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1)
  495. #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1)
  496. #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2)
  497. u8 l2_nwifi_offload_ctrl;
  498. u8 vlan_id;
  499. u8 nwifi_ds_trans_type;
  500. #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0)
  501. #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1)
  502. #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1)
  503. #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1)
  504. #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1)
  505. #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2)
  506. u8 l3_l4_ctrl;
  507. #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0)
  508. #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1)
  509. #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1)
  510. #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1)
  511. #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1)
  512. #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2)
  513. #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2)
  514. #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1)
  515. #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4)
  516. #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3)
  517. #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1)
  518. #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8)
  519. u8 ring_ctrl;
  520. __le16 prefetch_thrsh;
  521. __le16 wb_thrsh;
  522. __le32 itr_value;
  523. __le16 host_thrsh;
  524. u8 reserved[2];
  525. struct wmi_sniffer_cfg sniffer_cfg;
  526. } __packed;
  527. /*
  528. * WMI_RCP_ADDBA_RESP_CMDID
  529. */
  530. struct wmi_rcp_addba_resp_cmd {
  531. #define CIDXTID_CID_POS (0)
  532. #define CIDXTID_CID_LEN (4)
  533. #define CIDXTID_CID_MSK (0xF)
  534. #define CIDXTID_TID_POS (4)
  535. #define CIDXTID_TID_LEN (4)
  536. #define CIDXTID_TID_MSK (0xF0)
  537. u8 cidxtid;
  538. u8 dialog_token;
  539. __le16 status_code;
  540. __le16 ba_param_set; /* ieee80211_ba_parameterset field to send */
  541. __le16 ba_timeout;
  542. } __packed;
  543. /*
  544. * WMI_RCP_DELBA_CMDID
  545. */
  546. struct wmi_rcp_delba_cmd {
  547. #define CIDXTID_CID_POS (0)
  548. #define CIDXTID_CID_LEN (4)
  549. #define CIDXTID_CID_MSK (0xF)
  550. #define CIDXTID_TID_POS (4)
  551. #define CIDXTID_TID_LEN (4)
  552. #define CIDXTID_TID_MSK (0xF0)
  553. u8 cidxtid;
  554. u8 reserved;
  555. __le16 reason;
  556. } __packed;
  557. /*
  558. * WMI_RCP_ADDBA_REQ_CMDID
  559. */
  560. struct wmi_rcp_addba_req_cmd {
  561. #define CIDXTID_CID_POS (0)
  562. #define CIDXTID_CID_LEN (4)
  563. #define CIDXTID_CID_MSK (0xF)
  564. #define CIDXTID_TID_POS (4)
  565. #define CIDXTID_TID_LEN (4)
  566. #define CIDXTID_TID_MSK (0xF0)
  567. u8 cidxtid;
  568. u8 dialog_token;
  569. /* ieee80211_ba_parameterset field as it received */
  570. __le16 ba_param_set;
  571. __le16 ba_timeout;
  572. /* ieee80211_ba_seqstrl field as it received */
  573. __le16 ba_seq_ctrl;
  574. } __packed;
  575. /*
  576. * WMI_SET_MAC_ADDRESS_CMDID
  577. */
  578. struct wmi_set_mac_address_cmd {
  579. u8 mac[WMI_MAC_LEN];
  580. u8 reserved[2];
  581. } __packed;
  582. /*
  583. * WMI_EAPOL_TX_CMDID
  584. */
  585. struct wmi_eapol_tx_cmd {
  586. u8 dst_mac[WMI_MAC_LEN];
  587. __le16 eapol_len;
  588. u8 eapol[0];
  589. } __packed;
  590. /*
  591. * WMI_ECHO_CMDID
  592. *
  593. * Check FW is alive
  594. *
  595. * WMI_DEEP_ECHO_CMDID
  596. *
  597. * Check FW and ucode are alive
  598. *
  599. * Returned event: WMI_ECHO_RSP_EVENTID
  600. * same event for both commands
  601. */
  602. struct wmi_echo_cmd {
  603. __le32 value;
  604. } __packed;
  605. /*
  606. * WMI Events
  607. */
  608. /*
  609. * List of Events (target to host)
  610. */
  611. enum wmi_event_id {
  612. WMI_IMM_RSP_EVENTID = 0x0000,
  613. WMI_READY_EVENTID = 0x1001,
  614. WMI_CONNECT_EVENTID = 0x1002,
  615. WMI_DISCONNECT_EVENTID = 0x1003,
  616. WMI_SCAN_COMPLETE_EVENTID = 0x100a,
  617. WMI_REPORT_STATISTICS_EVENTID = 0x100b,
  618. WMI_RD_MEM_RSP_EVENTID = 0x1800,
  619. WMI_FW_READY_EVENTID = 0x1801,
  620. WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x0200,
  621. WMI_ECHO_RSP_EVENTID = 0x1803,
  622. WMI_CONFIG_MAC_DONE_EVENTID = 0x1805,
  623. WMI_CONFIG_PHY_DEBUG_DONE_EVENTID = 0x1806,
  624. WMI_ADD_STATION_DONE_EVENTID = 0x1807,
  625. WMI_ADD_DEBUG_TX_PCKT_DONE_EVENTID = 0x1808,
  626. WMI_PHY_GET_STATISTICS_EVENTID = 0x1809,
  627. WMI_FS_TUNE_DONE_EVENTID = 0x180a,
  628. WMI_CORR_MEASURE_DONE_EVENTID = 0x180b,
  629. WMI_TEMP_SENSE_DONE_EVENTID = 0x180e,
  630. WMI_DC_CALIB_DONE_EVENTID = 0x180f,
  631. WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811,
  632. WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812,
  633. WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815,
  634. WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816,
  635. WMI_MARLON_R_ACTIVATE_DONE_EVENTID = 0x1817,
  636. WMI_MARLON_R_READ_DONE_EVENTID = 0x1818,
  637. WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819,
  638. WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181a,
  639. WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181d,
  640. WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820,
  641. WMI_VRING_CFG_DONE_EVENTID = 0x1821,
  642. WMI_RX_ON_DONE_EVENTID = 0x1822,
  643. WMI_BA_STATUS_EVENTID = 0x1823,
  644. WMI_RCP_ADDBA_REQ_EVENTID = 0x1824,
  645. WMI_ADDBA_RESP_SENT_EVENTID = 0x1825,
  646. WMI_DELBA_EVENTID = 0x1826,
  647. WMI_GET_SSID_EVENTID = 0x1828,
  648. WMI_GET_PCP_CHANNEL_EVENTID = 0x182a,
  649. WMI_SW_TX_COMPLETE_EVENTID = 0x182b,
  650. WMI_RX_OFF_DONE_EVENTID = 0x182c,
  651. WMI_READ_MAC_RXQ_EVENTID = 0x1830,
  652. WMI_READ_MAC_TXQ_EVENTID = 0x1831,
  653. WMI_WRITE_MAC_RXQ_EVENTID = 0x1832,
  654. WMI_WRITE_MAC_TXQ_EVENTID = 0x1833,
  655. WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834,
  656. WMI_BEAFORMING_MGMT_DONE_EVENTID = 0x1836,
  657. WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837,
  658. WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839,
  659. WMI_RS_MGMT_DONE_EVENTID = 0x1852,
  660. WMI_RF_MGMT_STATUS_EVENTID = 0x1853,
  661. WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838,
  662. WMI_RX_MGMT_PACKET_EVENTID = 0x1840,
  663. /* Performance monitoring events */
  664. WMI_DATA_PORT_OPEN_EVENTID = 0x1860,
  665. WMI_WBE_LINKDOWN_EVENTID = 0x1861,
  666. WMI_BF_CTRL_DONE_EVENTID = 0x1862,
  667. WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863,
  668. WMI_GET_STATUS_DONE_EVENTID = 0x1864,
  669. WMI_UNIT_TEST_EVENTID = 0x1900,
  670. WMI_FLASH_READ_DONE_EVENTID = 0x1902,
  671. WMI_FLASH_WRITE_DONE_EVENTID = 0x1903,
  672. WMI_SET_CHANNEL_EVENTID = 0x9000,
  673. WMI_ASSOC_REQ_EVENTID = 0x9001,
  674. WMI_EAPOL_RX_EVENTID = 0x9002,
  675. WMI_MAC_ADDR_RESP_EVENTID = 0x9003,
  676. WMI_FW_VER_EVENTID = 0x9004,
  677. };
  678. /*
  679. * Events data structures
  680. */
  681. /*
  682. * WMI_RF_MGMT_STATUS_EVENTID
  683. */
  684. enum wmi_rf_status {
  685. WMI_RF_ENABLED = 0,
  686. WMI_RF_DISABLED_HW = 1,
  687. WMI_RF_DISABLED_SW = 2,
  688. WMI_RF_DISABLED_HW_SW = 3,
  689. };
  690. struct wmi_rf_mgmt_status_event {
  691. __le32 rf_status;
  692. } __packed;
  693. /*
  694. * WMI_GET_STATUS_DONE_EVENTID
  695. */
  696. struct wmi_get_status_done_event {
  697. __le32 is_associated;
  698. u8 cid;
  699. u8 reserved0[3];
  700. u8 bssid[WMI_MAC_LEN];
  701. u8 channel;
  702. u8 reserved1;
  703. u8 network_type;
  704. u8 reserved2[3];
  705. __le32 ssid_len;
  706. u8 ssid[WMI_MAX_SSID_LEN];
  707. __le32 rf_status;
  708. __le32 is_secured;
  709. } __packed;
  710. /*
  711. * WMI_FW_VER_EVENTID
  712. */
  713. struct wmi_fw_ver_event {
  714. u8 major;
  715. u8 minor;
  716. __le16 subminor;
  717. __le16 build;
  718. } __packed;
  719. /*
  720. * WMI_MAC_ADDR_RESP_EVENTID
  721. */
  722. struct wmi_mac_addr_resp_event {
  723. u8 mac[WMI_MAC_LEN];
  724. u8 auth_mode;
  725. u8 crypt_mode;
  726. __le32 offload_mode;
  727. } __packed;
  728. /*
  729. * WMI_EAPOL_RX_EVENTID
  730. */
  731. struct wmi_eapol_rx_event {
  732. u8 src_mac[WMI_MAC_LEN];
  733. __le16 eapol_len;
  734. u8 eapol[0];
  735. } __packed;
  736. /*
  737. * WMI_READY_EVENTID
  738. */
  739. enum wmi_phy_capability {
  740. WMI_11A_CAPABILITY = 1,
  741. WMI_11G_CAPABILITY = 2,
  742. WMI_11AG_CAPABILITY = 3,
  743. WMI_11NA_CAPABILITY = 4,
  744. WMI_11NG_CAPABILITY = 5,
  745. WMI_11NAG_CAPABILITY = 6,
  746. WMI_11AD_CAPABILITY = 7,
  747. WMI_11N_CAPABILITY_OFFSET = WMI_11NA_CAPABILITY - WMI_11A_CAPABILITY,
  748. };
  749. struct wmi_ready_event {
  750. __le32 sw_version;
  751. __le32 abi_version;
  752. u8 mac[WMI_MAC_LEN];
  753. u8 phy_capability; /* enum wmi_phy_capability */
  754. u8 reserved;
  755. } __packed;
  756. /*
  757. * WMI_NOTIFY_REQ_DONE_EVENTID
  758. */
  759. struct wmi_notify_req_done_event {
  760. __le32 status;
  761. __le64 tsf;
  762. __le32 snr_val;
  763. __le32 tx_tpt;
  764. __le32 tx_goodput;
  765. __le32 rx_goodput;
  766. __le16 bf_mcs;
  767. __le16 my_rx_sector;
  768. __le16 my_tx_sector;
  769. __le16 other_rx_sector;
  770. __le16 other_tx_sector;
  771. __le16 range;
  772. } __packed;
  773. /*
  774. * WMI_CONNECT_EVENTID
  775. */
  776. struct wmi_connect_event {
  777. u8 channel;
  778. u8 reserved0;
  779. u8 bssid[WMI_MAC_LEN];
  780. __le16 listen_interval;
  781. __le16 beacon_interval;
  782. u8 network_type;
  783. u8 reserved1[3];
  784. u8 beacon_ie_len;
  785. u8 assoc_req_len;
  786. u8 assoc_resp_len;
  787. u8 cid;
  788. u8 reserved2[3];
  789. u8 assoc_info[0];
  790. } __packed;
  791. /*
  792. * WMI_DISCONNECT_EVENTID
  793. */
  794. enum wmi_disconnect_reason {
  795. WMI_DIS_REASON_NO_NETWORK_AVAIL = 1,
  796. WMI_DIS_REASON_LOST_LINK = 2, /* bmiss */
  797. WMI_DIS_REASON_DISCONNECT_CMD = 3,
  798. WMI_DIS_REASON_BSS_DISCONNECTED = 4,
  799. WMI_DIS_REASON_AUTH_FAILED = 5,
  800. WMI_DIS_REASON_ASSOC_FAILED = 6,
  801. WMI_DIS_REASON_NO_RESOURCES_AVAIL = 7,
  802. WMI_DIS_REASON_CSERV_DISCONNECT = 8,
  803. WMI_DIS_REASON_INVALID_PROFILE = 10,
  804. WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 11,
  805. WMI_DIS_REASON_PROFILE_MISMATCH = 12,
  806. WMI_DIS_REASON_CONNECTION_EVICTED = 13,
  807. WMI_DIS_REASON_IBSS_MERGE = 14,
  808. };
  809. struct wmi_disconnect_event {
  810. __le16 protocol_reason_status; /* reason code, see 802.11 spec. */
  811. u8 bssid[WMI_MAC_LEN]; /* set if known */
  812. u8 disconnect_reason; /* see wmi_disconnect_reason_e */
  813. u8 assoc_resp_len;
  814. u8 assoc_info[0];
  815. } __packed;
  816. /*
  817. * WMI_SCAN_COMPLETE_EVENTID
  818. */
  819. struct wmi_scan_complete_event {
  820. __le32 status;
  821. } __packed;
  822. /*
  823. * WMI_BA_STATUS_EVENTID
  824. */
  825. enum wmi_vring_ba_status {
  826. WMI_BA_AGREED = 0,
  827. WMI_BA_NON_AGREED = 1,
  828. };
  829. struct wmi_vring_ba_status_event {
  830. __le16 status;
  831. u8 reserved[2];
  832. u8 ringid;
  833. u8 agg_wsize;
  834. __le16 ba_timeout;
  835. } __packed;
  836. /*
  837. * WMI_DELBA_EVENTID
  838. */
  839. struct wmi_delba_event {
  840. #define CIDXTID_CID_POS (0)
  841. #define CIDXTID_CID_LEN (4)
  842. #define CIDXTID_CID_MSK (0xF)
  843. #define CIDXTID_TID_POS (4)
  844. #define CIDXTID_TID_LEN (4)
  845. #define CIDXTID_TID_MSK (0xF0)
  846. u8 cidxtid;
  847. u8 from_initiator;
  848. __le16 reason;
  849. } __packed;
  850. /*
  851. * WMI_VRING_CFG_DONE_EVENTID
  852. */
  853. enum wmi_vring_cfg_done_event_status {
  854. WMI_VRING_CFG_SUCCESS = 0,
  855. WMI_VRING_CFG_FAILURE = 1,
  856. };
  857. struct wmi_vring_cfg_done_event {
  858. u8 ringid;
  859. u8 status;
  860. u8 reserved[2];
  861. __le32 tx_vring_tail_ptr;
  862. } __packed;
  863. /*
  864. * WMI_ADDBA_RESP_SENT_EVENTID
  865. */
  866. enum wmi_rcp_addba_resp_sent_event_status {
  867. WMI_ADDBA_SUCCESS = 0,
  868. WMI_ADDBA_FAIL = 1,
  869. };
  870. struct wmi_rcp_addba_resp_sent_event {
  871. #define CIDXTID_CID_POS (0)
  872. #define CIDXTID_CID_LEN (4)
  873. #define CIDXTID_CID_MSK (0xF)
  874. #define CIDXTID_TID_POS (4)
  875. #define CIDXTID_TID_LEN (4)
  876. #define CIDXTID_TID_MSK (0xF0)
  877. u8 cidxtid;
  878. u8 reserved;
  879. __le16 status;
  880. } __packed;
  881. /*
  882. * WMI_RCP_ADDBA_REQ_EVENTID
  883. */
  884. struct wmi_rcp_addba_req_event {
  885. #define CIDXTID_CID_POS (0)
  886. #define CIDXTID_CID_LEN (4)
  887. #define CIDXTID_CID_MSK (0xF)
  888. #define CIDXTID_TID_POS (4)
  889. #define CIDXTID_TID_LEN (4)
  890. #define CIDXTID_TID_MSK (0xF0)
  891. u8 cidxtid;
  892. u8 dialog_token;
  893. __le16 ba_param_set; /* ieee80211_ba_parameterset as it received */
  894. __le16 ba_timeout;
  895. __le16 ba_seq_ctrl; /* ieee80211_ba_seqstrl field as it received */
  896. } __packed;
  897. /*
  898. * WMI_CFG_RX_CHAIN_DONE_EVENTID
  899. */
  900. enum wmi_cfg_rx_chain_done_event_status {
  901. WMI_CFG_RX_CHAIN_SUCCESS = 1,
  902. };
  903. struct wmi_cfg_rx_chain_done_event {
  904. __le32 rx_ring_tail_ptr; /* Rx V-Ring Tail pointer */
  905. __le32 status;
  906. } __packed;
  907. /*
  908. * WMI_WBE_LINKDOWN_EVENTID
  909. */
  910. enum wmi_wbe_link_down_event_reason {
  911. WMI_WBE_REASON_USER_REQUEST = 0,
  912. WMI_WBE_REASON_RX_DISASSOC = 1,
  913. WMI_WBE_REASON_BAD_PHY_LINK = 2,
  914. };
  915. struct wmi_wbe_link_down_event {
  916. u8 cid;
  917. u8 reserved[3];
  918. __le32 reason;
  919. } __packed;
  920. /*
  921. * WMI_DATA_PORT_OPEN_EVENTID
  922. */
  923. struct wmi_data_port_open_event {
  924. u8 cid;
  925. u8 reserved[3];
  926. } __packed;
  927. /*
  928. * WMI_GET_PCP_CHANNEL_EVENTID
  929. */
  930. struct wmi_get_pcp_channel_event {
  931. u8 channel;
  932. u8 reserved[3];
  933. } __packed;
  934. /*
  935. * WMI_SW_TX_COMPLETE_EVENTID
  936. */
  937. enum wmi_sw_tx_status {
  938. WMI_TX_SW_STATUS_SUCCESS = 0,
  939. WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 1,
  940. WMI_TX_SW_STATUS_FAILED_TX = 2,
  941. };
  942. struct wmi_sw_tx_complete_event {
  943. u8 status; /* enum wmi_sw_tx_status */
  944. u8 reserved[3];
  945. } __packed;
  946. /*
  947. * WMI_GET_SSID_EVENTID
  948. */
  949. struct wmi_get_ssid_event {
  950. __le32 ssid_len;
  951. u8 ssid[WMI_MAX_SSID_LEN];
  952. } __packed;
  953. /*
  954. * WMI_RX_MGMT_PACKET_EVENTID
  955. */
  956. struct wmi_rx_mgmt_info {
  957. u8 mcs;
  958. s8 snr;
  959. __le16 range;
  960. __le16 stype;
  961. __le16 status;
  962. __le32 len;
  963. u8 qid;
  964. u8 mid;
  965. u8 cid;
  966. u8 channel; /* From Radio MNGR */
  967. } __packed;
  968. struct wmi_rx_mgmt_packet_event {
  969. struct wmi_rx_mgmt_info info;
  970. u8 payload[0];
  971. } __packed;
  972. /*
  973. * WMI_ECHO_RSP_EVENTID
  974. */
  975. struct wmi_echo_event {
  976. __le32 echoed_value;
  977. } __packed;
  978. #endif /* __WILOCITY_WMI_H__ */