Merge tag 'for-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power...
[deliverable/linux.git] / drivers / net / wireless / ath / wil6210 / wmi.h
CommitLineData
2be7d22f 1/*
b874ddec
LD
2 * Copyright (c) 2012-2016 Qualcomm Atheros, Inc.
3 * Copyright (c) 2006-2012 Wilocity
2be7d22f
VK
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/*
19 * This file contains the definitions of the WMI protocol specified in the
b874ddec
LD
20 * Wireless Module Interface (WMI) for the Qualcomm
21 * 60 GHz wireless solution.
2be7d22f
VK
22 * It includes definitions of all the commands and events.
23 * Commands are messages from the host to the WM.
24 * Events are messages from the WM to the host.
b874ddec
LD
25 *
26 * This is an automatically generated file.
2be7d22f
VK
27 */
28
29#ifndef __WILOCITY_WMI_H__
30#define __WILOCITY_WMI_H__
31
32/* General */
b874ddec
LD
33#define WMI_MAX_ASSOC_STA (8)
34#define WMI_DEFAULT_ASSOC_STA (1)
35#define WMI_MAC_LEN (6)
36#define WMI_PROX_RANGE_NUM (3)
37#define WMI_MAX_LOSS_DMG_BEACONS (20)
38
39/* Mailbox interface
40 * used for commands and events
41 */
42enum wmi_mid {
43 MID_DEFAULT = 0x00,
44 FIRST_DBG_MID_ID = 0x10,
45 LAST_DBG_MID_ID = 0xFE,
46 MID_BROADCAST = 0xFF,
47};
48
49/* WMI_CMD_HDR */
50struct wmi_cmd_hdr {
51 u8 mid;
52 u8 reserved;
53 __le16 command_id;
54 __le32 fw_timestamp;
55} __packed;
2be7d22f
VK
56
57/* List of Commands */
58enum wmi_command_id {
b874ddec
LD
59 WMI_CONNECT_CMDID = 0x01,
60 WMI_DISCONNECT_CMDID = 0x03,
61 WMI_DISCONNECT_STA_CMDID = 0x04,
62 WMI_START_SCAN_CMDID = 0x07,
63 WMI_SET_BSS_FILTER_CMDID = 0x09,
64 WMI_SET_PROBED_SSID_CMDID = 0x0A,
65 WMI_SET_LISTEN_INT_CMDID = 0x0B,
66 WMI_BCON_CTRL_CMDID = 0x0F,
67 WMI_ADD_CIPHER_KEY_CMDID = 0x16,
68 WMI_DELETE_CIPHER_KEY_CMDID = 0x17,
69 WMI_PCP_CONF_CMDID = 0x18,
70 WMI_SET_APPIE_CMDID = 0x3F,
71 WMI_SET_WSC_STATUS_CMDID = 0x41,
72 WMI_PXMT_RANGE_CFG_CMDID = 0x42,
73 WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43,
74 WMI_MEM_READ_CMDID = 0x800,
75 WMI_MEM_WR_CMDID = 0x801,
76 WMI_ECHO_CMDID = 0x803,
77 WMI_DEEP_ECHO_CMDID = 0x804,
78 WMI_CONFIG_MAC_CMDID = 0x805,
79 WMI_CONFIG_PHY_DEBUG_CMDID = 0x806,
80 WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808,
81 WMI_PHY_GET_STATISTICS_CMDID = 0x809,
82 WMI_FS_TUNE_CMDID = 0x80A,
83 WMI_CORR_MEASURE_CMDID = 0x80B,
84 WMI_READ_RSSI_CMDID = 0x80C,
85 WMI_TEMP_SENSE_CMDID = 0x80E,
86 WMI_DC_CALIB_CMDID = 0x80F,
87 WMI_SEND_TONE_CMDID = 0x810,
88 WMI_IQ_TX_CALIB_CMDID = 0x811,
89 WMI_IQ_RX_CALIB_CMDID = 0x812,
90 WMI_SET_UCODE_IDLE_CMDID = 0x813,
91 WMI_SET_WORK_MODE_CMDID = 0x815,
92 WMI_LO_LEAKAGE_CALIB_CMDID = 0x816,
93 WMI_MARLON_R_READ_CMDID = 0x818,
94 WMI_MARLON_R_WRITE_CMDID = 0x819,
95 WMI_MARLON_R_TXRX_SEL_CMDID = 0x81A,
96 MAC_IO_STATIC_PARAMS_CMDID = 0x81B,
97 MAC_IO_DYNAMIC_PARAMS_CMDID = 0x81C,
98 WMI_SILENT_RSSI_CALIB_CMDID = 0x81D,
99 WMI_RF_RX_TEST_CMDID = 0x81E,
100 WMI_CFG_RX_CHAIN_CMDID = 0x820,
101 WMI_VRING_CFG_CMDID = 0x821,
102 WMI_BCAST_VRING_CFG_CMDID = 0x822,
103 WMI_VRING_BA_EN_CMDID = 0x823,
104 WMI_VRING_BA_DIS_CMDID = 0x824,
105 WMI_RCP_ADDBA_RESP_CMDID = 0x825,
106 WMI_RCP_DELBA_CMDID = 0x826,
107 WMI_SET_SSID_CMDID = 0x827,
108 WMI_GET_SSID_CMDID = 0x828,
109 WMI_SET_PCP_CHANNEL_CMDID = 0x829,
110 WMI_GET_PCP_CHANNEL_CMDID = 0x82A,
111 WMI_SW_TX_REQ_CMDID = 0x82B,
112 WMI_READ_MAC_RXQ_CMDID = 0x830,
113 WMI_READ_MAC_TXQ_CMDID = 0x831,
114 WMI_WRITE_MAC_RXQ_CMDID = 0x832,
115 WMI_WRITE_MAC_TXQ_CMDID = 0x833,
116 WMI_WRITE_MAC_XQ_FIELD_CMDID = 0x834,
117 WMI_MLME_PUSH_CMDID = 0x835,
118 WMI_BEAMFORMING_MGMT_CMDID = 0x836,
119 WMI_BF_TXSS_MGMT_CMDID = 0x837,
120 WMI_BF_SM_MGMT_CMDID = 0x838,
121 WMI_BF_RXSS_MGMT_CMDID = 0x839,
122 WMI_BF_TRIG_CMDID = 0x83A,
123 WMI_SET_SECTORS_CMDID = 0x849,
124 WMI_MAINTAIN_PAUSE_CMDID = 0x850,
125 WMI_MAINTAIN_RESUME_CMDID = 0x851,
126 WMI_RS_MGMT_CMDID = 0x852,
127 WMI_RF_MGMT_CMDID = 0x853,
128 WMI_THERMAL_THROTTLING_CTRL_CMDID = 0x854,
129 WMI_THERMAL_THROTTLING_GET_STATUS_CMDID = 0x855,
130 WMI_OTP_READ_CMDID = 0x856,
131 WMI_OTP_WRITE_CMDID = 0x857,
2be7d22f 132 /* Performance monitoring commands */
b874ddec
LD
133 WMI_BF_CTRL_CMDID = 0x862,
134 WMI_NOTIFY_REQ_CMDID = 0x863,
135 WMI_GET_STATUS_CMDID = 0x864,
136 WMI_UNIT_TEST_CMDID = 0x900,
137 WMI_HICCUP_CMDID = 0x901,
138 WMI_FLASH_READ_CMDID = 0x902,
139 WMI_FLASH_WRITE_CMDID = 0x903,
140 /* P2P */
141 WMI_P2P_CFG_CMDID = 0x910,
142 WMI_PORT_ALLOCATE_CMDID = 0x911,
143 WMI_PORT_DELETE_CMDID = 0x912,
144 WMI_POWER_MGMT_CFG_CMDID = 0x913,
145 WMI_START_LISTEN_CMDID = 0x914,
146 WMI_START_SEARCH_CMDID = 0x915,
147 WMI_DISCOVERY_START_CMDID = 0x916,
148 WMI_DISCOVERY_STOP_CMDID = 0x917,
149 WMI_PCP_START_CMDID = 0x918,
150 WMI_PCP_STOP_CMDID = 0x919,
151 WMI_GET_PCP_FACTOR_CMDID = 0x91B,
152 WMI_SET_MAC_ADDRESS_CMDID = 0xF003,
153 WMI_ABORT_SCAN_CMDID = 0xF007,
154 WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041,
155 WMI_GET_PMK_CMDID = 0xF048,
156 WMI_SET_PASSPHRASE_CMDID = 0xF049,
157 WMI_SEND_ASSOC_RES_CMDID = 0xF04A,
158 WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B,
159 WMI_MAC_ADDR_REQ_CMDID = 0xF04D,
160 WMI_FW_VER_CMDID = 0xF04E,
161 WMI_PMC_CMDID = 0xF04F,
2be7d22f
VK
162};
163
b874ddec 164/* WMI_CONNECT_CMDID */
2be7d22f
VK
165enum wmi_network_type {
166 WMI_NETTYPE_INFRA = 0x01,
167 WMI_NETTYPE_ADHOC = 0x02,
168 WMI_NETTYPE_ADHOC_CREATOR = 0x04,
169 WMI_NETTYPE_AP = 0x10,
170 WMI_NETTYPE_P2P = 0x20,
b874ddec
LD
171 /* PCIE over 60g */
172 WMI_NETTYPE_WBE = 0x40,
2be7d22f
VK
173};
174
175enum wmi_dot11_auth_mode {
b874ddec
LD
176 WMI_AUTH11_OPEN = 0x01,
177 WMI_AUTH11_SHARED = 0x02,
178 WMI_AUTH11_LEAP = 0x04,
179 WMI_AUTH11_WSC = 0x08,
2be7d22f
VK
180};
181
182enum wmi_auth_mode {
b874ddec
LD
183 WMI_AUTH_NONE = 0x01,
184 WMI_AUTH_WPA = 0x02,
185 WMI_AUTH_WPA2 = 0x04,
186 WMI_AUTH_WPA_PSK = 0x08,
187 WMI_AUTH_WPA2_PSK = 0x10,
188 WMI_AUTH_WPA_CCKM = 0x20,
189 WMI_AUTH_WPA2_CCKM = 0x40,
2be7d22f
VK
190};
191
192enum wmi_crypto_type {
b874ddec
LD
193 WMI_CRYPT_NONE = 0x01,
194 WMI_CRYPT_AES_GCMP = 0x20,
2be7d22f
VK
195};
196
2be7d22f 197enum wmi_connect_ctrl_flag_bits {
b874ddec
LD
198 WMI_CONNECT_ASSOC_POLICY_USER = 0x01,
199 WMI_CONNECT_SEND_REASSOC = 0x02,
200 WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04,
201 WMI_CONNECT_PROFILE_MATCH_DONE = 0x08,
202 WMI_CONNECT_IGNORE_AAC_BEACON = 0x10,
203 WMI_CONNECT_CSA_FOLLOW_BSS = 0x20,
204 WMI_CONNECT_DO_WPA_OFFLOAD = 0x40,
205 WMI_CONNECT_DO_NOT_DEAUTH = 0x80,
2be7d22f
VK
206};
207
b874ddec 208#define WMI_MAX_SSID_LEN (32)
2be7d22f 209
b874ddec 210/* WMI_CONNECT_CMDID */
2be7d22f
VK
211struct wmi_connect_cmd {
212 u8 network_type;
213 u8 dot11_auth_mode;
214 u8 auth_mode;
215 u8 pairwise_crypto_type;
216 u8 pairwise_crypto_len;
217 u8 group_crypto_type;
218 u8 group_crypto_len;
219 u8 ssid_len;
220 u8 ssid[WMI_MAX_SSID_LEN];
221 u8 channel;
222 u8 reserved0;
223 u8 bssid[WMI_MAC_LEN];
224 __le32 ctrl_flags;
225 u8 dst_mac[WMI_MAC_LEN];
226 u8 reserved1[2];
227} __packed;
228
b874ddec 229/* WMI_DISCONNECT_STA_CMDID */
b8023177
VK
230struct wmi_disconnect_sta_cmd {
231 u8 dst_mac[WMI_MAC_LEN];
232 __le16 disconnect_reason;
233} __packed;
2be7d22f 234
2be7d22f
VK
235#define WMI_MAX_KEY_INDEX (3)
236#define WMI_MAX_KEY_LEN (32)
237#define WMI_PASSPHRASE_LEN (64)
2be7d22f 238
b874ddec 239/* WMI_SET_PASSPHRASE_CMDID */
2be7d22f
VK
240struct wmi_set_passphrase_cmd {
241 u8 ssid[WMI_MAX_SSID_LEN];
242 u8 passphrase[WMI_PASSPHRASE_LEN];
243 u8 ssid_len;
244 u8 passphrase_len;
245} __packed;
246
b874ddec 247/* WMI_ADD_CIPHER_KEY_CMDID */
2be7d22f 248enum wmi_key_usage {
b874ddec
LD
249 WMI_KEY_USE_PAIRWISE = 0x00,
250 WMI_KEY_USE_RX_GROUP = 0x01,
251 WMI_KEY_USE_TX_GROUP = 0x02,
2be7d22f
VK
252};
253
254struct wmi_add_cipher_key_cmd {
255 u8 key_index;
256 u8 key_type;
b874ddec
LD
257 /* enum wmi_key_usage */
258 u8 key_usage;
2be7d22f 259 u8 key_len;
b874ddec
LD
260 /* key replay sequence counter */
261 u8 key_rsc[8];
2be7d22f 262 u8 key[WMI_MAX_KEY_LEN];
b874ddec
LD
263 /* Additional Key Control information */
264 u8 key_op_ctrl;
2be7d22f
VK
265 u8 mac[WMI_MAC_LEN];
266} __packed;
267
b874ddec 268/* WMI_DELETE_CIPHER_KEY_CMDID */
2be7d22f
VK
269struct wmi_delete_cipher_key_cmd {
270 u8 key_index;
271 u8 mac[WMI_MAC_LEN];
272} __packed;
273
b874ddec 274/* WMI_START_SCAN_CMDID
2be7d22f
VK
275 *
276 * Start L1 scan operation
277 *
278 * Returned events:
279 * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp.
280 * - WMI_SCAN_COMPLETE_EVENTID
281 */
282enum wmi_scan_type {
b874ddec
LD
283 WMI_ACTIVE_SCAN = 0x00,
284 WMI_SHORT_SCAN = 0x01,
285 WMI_PASSIVE_SCAN = 0x02,
286 WMI_DIRECT_SCAN = 0x03,
287 WMI_LONG_SCAN = 0x04,
2be7d22f
VK
288};
289
b874ddec 290/* WMI_START_SCAN_CMDID */
2be7d22f 291struct wmi_start_scan_cmd {
b874ddec
LD
292 u8 direct_scan_mac_addr[WMI_MAC_LEN];
293 /* DMG Beacon frame is transmitted during active scanning */
74997a53 294 u8 discovery_mode;
b874ddec 295 /* reserved */
74997a53 296 u8 reserved;
b874ddec
LD
297 /* Max duration in the home channel(ms) */
298 __le32 dwell_time;
299 /* Time interval between scans (ms) */
300 __le32 force_scan_interval;
301 /* enum wmi_scan_type */
302 u8 scan_type;
303 /* how many channels follow */
304 u8 num_channels;
305 /* channels ID's:
306 * 0 - 58320 MHz
307 * 1 - 60480 MHz
308 * 2 - 62640 MHz
309 */
2be7d22f
VK
310 struct {
311 u8 channel;
312 u8 reserved;
b874ddec 313 } channel_list[0];
2be7d22f
VK
314} __packed;
315
b874ddec 316/* WMI_SET_PROBED_SSID_CMDID */
b8023177 317#define MAX_PROBED_SSID_INDEX (3)
2be7d22f
VK
318
319enum wmi_ssid_flag {
b874ddec
LD
320 /* disables entry */
321 WMI_SSID_FLAG_DISABLE = 0x00,
322 /* probes specified ssid */
323 WMI_SSID_FLAG_SPECIFIC = 0x01,
324 /* probes for any ssid */
325 WMI_SSID_FLAG_ANY = 0x02,
2be7d22f
VK
326};
327
328struct wmi_probed_ssid_cmd {
b874ddec
LD
329 /* 0 to MAX_PROBED_SSID_INDEX */
330 u8 entry_index;
331 /* enum wmi_ssid_flag */
332 u8 flag;
2be7d22f
VK
333 u8 ssid_len;
334 u8 ssid[WMI_MAX_SSID_LEN];
335} __packed;
336
b874ddec 337/* WMI_SET_APPIE_CMDID
2be7d22f
VK
338 * Add Application specified IE to a management frame
339 */
b874ddec 340#define WMI_MAX_IE_LEN (1024)
b8023177 341
b874ddec 342/* Frame Types */
b8023177 343enum wmi_mgmt_frame_type {
b874ddec
LD
344 WMI_FRAME_BEACON = 0x00,
345 WMI_FRAME_PROBE_REQ = 0x01,
346 WMI_FRAME_PROBE_RESP = 0x02,
347 WMI_FRAME_ASSOC_REQ = 0x03,
348 WMI_FRAME_ASSOC_RESP = 0x04,
349 WMI_NUM_MGMT_FRAME = 0x05,
b8023177
VK
350};
351
2be7d22f 352struct wmi_set_appie_cmd {
b874ddec
LD
353 /* enum wmi_mgmt_frame_type */
354 u8 mgmt_frm_type;
2be7d22f 355 u8 reserved;
b874ddec
LD
356 /* Length of the IE to be added to MGMT frame */
357 __le16 ie_len;
2be7d22f
VK
358 u8 ie_info[0];
359} __packed;
360
b874ddec 361/* WMI_PXMT_RANGE_CFG_CMDID */
2be7d22f
VK
362struct wmi_pxmt_range_cfg_cmd {
363 u8 dst_mac[WMI_MAC_LEN];
364 __le16 range;
365} __packed;
366
b874ddec 367/* WMI_PXMT_SNR2_RANGE_CFG_CMDID */
2be7d22f 368struct wmi_pxmt_snr2_range_cfg_cmd {
b874ddec 369 s8 snr2range_arr[2];
2be7d22f
VK
370} __packed;
371
b874ddec 372/* WMI_RF_MGMT_CMDID */
2be7d22f 373enum wmi_rf_mgmt_type {
b874ddec
LD
374 WMI_RF_MGMT_W_DISABLE = 0x00,
375 WMI_RF_MGMT_W_ENABLE = 0x01,
376 WMI_RF_MGMT_GET_STATUS = 0x02,
2be7d22f
VK
377};
378
b874ddec 379/* WMI_RF_MGMT_CMDID */
2be7d22f
VK
380struct wmi_rf_mgmt_cmd {
381 __le32 rf_mgmt_type;
382} __packed;
383
b874ddec 384/* WMI_THERMAL_THROTTLING_CTRL_CMDID */
8c679675
VK
385#define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH (0xFFFFFFFF)
386
b874ddec 387/* WMI_THERMAL_THROTTLING_CTRL_CMDID */
8c679675
VK
388struct wmi_thermal_throttling_ctrl_cmd {
389 __le32 time_on_usec;
390 __le32 time_off_usec;
391 __le32 max_txop_length_usec;
392} __packed;
393
b874ddec 394/* WMI_RF_RX_TEST_CMDID */
b8023177
VK
395struct wmi_rf_rx_test_cmd {
396 __le32 sector;
397} __packed;
398
b874ddec 399/* WMI_CORR_MEASURE_CMDID */
b8023177 400struct wmi_corr_measure_cmd {
b874ddec 401 __le32 freq_mhz;
b8023177
VK
402 __le32 length_samples;
403 __le32 iterations;
404} __packed;
405
b874ddec 406/* WMI_SET_SSID_CMDID */
2be7d22f
VK
407struct wmi_set_ssid_cmd {
408 __le32 ssid_len;
409 u8 ssid[WMI_MAX_SSID_LEN];
410} __packed;
411
b874ddec 412/* WMI_SET_PCP_CHANNEL_CMDID */
2be7d22f
VK
413struct wmi_set_pcp_channel_cmd {
414 u8 channel;
415 u8 reserved[3];
416} __packed;
417
b874ddec 418/* WMI_BCON_CTRL_CMDID */
2be7d22f
VK
419struct wmi_bcon_ctrl_cmd {
420 __le16 bcon_interval;
421 __le16 frag_num;
422 __le64 ss_mask;
423 u8 network_type;
6c2faf09 424 u8 pcp_max_assoc_sta;
2be7d22f
VK
425 u8 disable_sec_offload;
426 u8 disable_sec;
b874ddec
LD
427 u8 hidden_ssid;
428 u8 is_go;
429 u8 reserved[2];
2be7d22f
VK
430} __packed;
431
b874ddec 432/* WMI_PORT_ALLOCATE_CMDID */
b8023177 433enum wmi_port_role {
b874ddec
LD
434 WMI_PORT_STA = 0x00,
435 WMI_PORT_PCP = 0x01,
436 WMI_PORT_AP = 0x02,
437 WMI_PORT_P2P_DEV = 0x03,
438 WMI_PORT_P2P_CLIENT = 0x04,
439 WMI_PORT_P2P_GO = 0x05,
b8023177
VK
440};
441
b874ddec 442/* WMI_PORT_ALLOCATE_CMDID */
b8023177
VK
443struct wmi_port_allocate_cmd {
444 u8 mac[WMI_MAC_LEN];
445 u8 port_role;
6c2faf09 446 u8 mid;
b8023177
VK
447} __packed;
448
b874ddec
LD
449/* WMI_PORT_DELETE_CMDID */
450struct wmi_port_delete_cmd {
b8023177
VK
451 u8 mid;
452 u8 reserved[3];
453} __packed;
454
b874ddec 455/* WMI_P2P_CFG_CMDID */
b8023177 456enum wmi_discovery_mode {
b874ddec
LD
457 WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00,
458 WMI_DISCOVERY_MODE_OFFLOAD = 0x01,
459 WMI_DISCOVERY_MODE_PEER2PEER = 0x02,
b8023177
VK
460};
461
462struct wmi_p2p_cfg_cmd {
b874ddec
LD
463 /* enum wmi_discovery_mode */
464 u8 discovery_mode;
b8023177 465 u8 channel;
b874ddec
LD
466 /* base to listen/search duration calculation */
467 __le16 bcon_interval;
b8023177
VK
468} __packed;
469
b874ddec 470/* WMI_POWER_MGMT_CFG_CMDID */
b8023177 471enum wmi_power_source_type {
b874ddec
LD
472 WMI_POWER_SOURCE_BATTERY = 0x00,
473 WMI_POWER_SOURCE_OTHER = 0x01,
b8023177
VK
474};
475
476struct wmi_power_mgmt_cfg_cmd {
b874ddec
LD
477 /* enum wmi_power_source_type */
478 u8 power_source;
b8023177
VK
479 u8 reserved[3];
480} __packed;
481
b874ddec 482/* WMI_PCP_START_CMDID */
b8023177
VK
483struct wmi_pcp_start_cmd {
484 __le16 bcon_interval;
6c2faf09 485 u8 pcp_max_assoc_sta;
8e52fe30 486 u8 hidden_ssid;
b874ddec
LD
487 u8 is_go;
488 u8 reserved0[7];
b8023177
VK
489 u8 network_type;
490 u8 channel;
491 u8 disable_sec_offload;
492 u8 disable_sec;
493} __packed;
494
b874ddec 495/* WMI_SW_TX_REQ_CMDID */
2be7d22f
VK
496struct wmi_sw_tx_req_cmd {
497 u8 dst_mac[WMI_MAC_LEN];
498 __le16 len;
499 u8 payload[0];
500} __packed;
501
2be7d22f
VK
502struct wmi_sw_ring_cfg {
503 __le64 ring_mem_base;
504 __le16 ring_size;
505 __le16 max_mpdu_size;
506} __packed;
507
b874ddec 508/* wmi_vring_cfg_schd */
2be7d22f
VK
509struct wmi_vring_cfg_schd {
510 __le16 priority;
511 __le16 timeslot_us;
512} __packed;
513
514enum wmi_vring_cfg_encap_trans_type {
b874ddec
LD
515 WMI_VRING_ENC_TYPE_802_3 = 0x00,
516 WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01,
2be7d22f
VK
517};
518
519enum wmi_vring_cfg_ds_cfg {
b874ddec
LD
520 WMI_VRING_DS_PBSS = 0x00,
521 WMI_VRING_DS_STATION = 0x01,
522 WMI_VRING_DS_AP = 0x02,
523 WMI_VRING_DS_ADDR4 = 0x03,
2be7d22f
VK
524};
525
526enum wmi_vring_cfg_nwifi_ds_trans_type {
b874ddec
LD
527 WMI_NWIFI_TX_TRANS_MODE_NO = 0x00,
528 WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01,
529 WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02,
2be7d22f
VK
530};
531
532enum wmi_vring_cfg_schd_params_priority {
b874ddec
LD
533 WMI_SCH_PRIO_REGULAR = 0x00,
534 WMI_SCH_PRIO_HIGH = 0x01,
2be7d22f
VK
535};
536
b874ddec
LD
537#define CIDXTID_CID_POS (0)
538#define CIDXTID_CID_LEN (4)
539#define CIDXTID_CID_MSK (0xF)
540#define CIDXTID_TID_POS (4)
541#define CIDXTID_TID_LEN (4)
542#define CIDXTID_TID_MSK (0xF0)
543#define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0)
544#define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1)
545#define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1)
546#define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1)
547#define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1)
548#define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2)
549#define VRING_CFG_TO_RESOLUTION_VALUE_POS (0)
550#define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6)
551#define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F)
b8023177 552
2be7d22f
VK
553struct wmi_vring_cfg {
554 struct wmi_sw_ring_cfg tx_sw_ring;
b874ddec
LD
555 /* 0-23 vrings */
556 u8 ringid;
2be7d22f 557 u8 cidxtid;
2be7d22f 558 u8 encap_trans_type;
b874ddec
LD
559 /* 802.3 DS cfg */
560 u8 ds_cfg;
2be7d22f 561 u8 nwifi_ds_trans_type;
2be7d22f 562 u8 mac_ctrl;
2be7d22f
VK
563 u8 to_resolution;
564 u8 agg_max_wsize;
565 struct wmi_vring_cfg_schd schd_params;
566} __packed;
567
568enum wmi_vring_cfg_cmd_action {
b874ddec
LD
569 WMI_VRING_CMD_ADD = 0x00,
570 WMI_VRING_CMD_MODIFY = 0x01,
571 WMI_VRING_CMD_DELETE = 0x02,
2be7d22f
VK
572};
573
b874ddec 574/* WMI_VRING_CFG_CMDID */
2be7d22f
VK
575struct wmi_vring_cfg_cmd {
576 __le32 action;
577 struct wmi_vring_cfg vring_cfg;
578} __packed;
579
62bfd300
VK
580struct wmi_bcast_vring_cfg {
581 struct wmi_sw_ring_cfg tx_sw_ring;
b874ddec
LD
582 /* 0-23 vrings */
583 u8 ringid;
62bfd300 584 u8 encap_trans_type;
b874ddec
LD
585 /* 802.3 DS cfg */
586 u8 ds_cfg;
62bfd300
VK
587 u8 nwifi_ds_trans_type;
588} __packed;
589
b874ddec 590/* WMI_BCAST_VRING_CFG_CMDID */
62bfd300
VK
591struct wmi_bcast_vring_cfg_cmd {
592 __le32 action;
593 struct wmi_bcast_vring_cfg vring_cfg;
594} __packed;
595
b874ddec 596/* WMI_VRING_BA_EN_CMDID */
2be7d22f
VK
597struct wmi_vring_ba_en_cmd {
598 u8 ringid;
599 u8 agg_max_wsize;
600 __le16 ba_timeout;
cbcf5866 601 u8 amsdu;
b874ddec 602 u8 reserved[3];
2be7d22f
VK
603} __packed;
604
b874ddec 605/* WMI_VRING_BA_DIS_CMDID */
2be7d22f
VK
606struct wmi_vring_ba_dis_cmd {
607 u8 ringid;
608 u8 reserved;
609 __le16 reason;
610} __packed;
611
b874ddec 612/* WMI_NOTIFY_REQ_CMDID */
2be7d22f
VK
613struct wmi_notify_req_cmd {
614 u8 cid;
b8023177
VK
615 u8 year;
616 u8 month;
617 u8 day;
2be7d22f 618 __le32 interval_usec;
b8023177
VK
619 u8 hour;
620 u8 minute;
621 u8 second;
622 u8 miliseconds;
2be7d22f
VK
623} __packed;
624
b874ddec 625/* WMI_CFG_RX_CHAIN_CMDID */
2be7d22f 626enum wmi_sniffer_cfg_mode {
b874ddec
LD
627 WMI_SNIFFER_OFF = 0x00,
628 WMI_SNIFFER_ON = 0x01,
2be7d22f
VK
629};
630
631enum wmi_sniffer_cfg_phy_info_mode {
b874ddec
LD
632 WMI_SNIFFER_PHY_INFO_DISABLED = 0x00,
633 WMI_SNIFFER_PHY_INFO_ENABLED = 0x01,
2be7d22f
VK
634};
635
636enum wmi_sniffer_cfg_phy_support {
b874ddec
LD
637 WMI_SNIFFER_CP = 0x00,
638 WMI_SNIFFER_DP = 0x01,
639 WMI_SNIFFER_BOTH_PHYS = 0x02,
2be7d22f
VK
640};
641
b874ddec 642/* wmi_sniffer_cfg */
2be7d22f 643struct wmi_sniffer_cfg {
b874ddec
LD
644 /* enum wmi_sniffer_cfg_mode */
645 __le32 mode;
646 /* enum wmi_sniffer_cfg_phy_info_mode */
647 __le32 phy_info_mode;
648 /* enum wmi_sniffer_cfg_phy_support */
649 __le32 phy_support;
2be7d22f
VK
650 u8 channel;
651 u8 reserved[3];
652} __packed;
653
654enum wmi_cfg_rx_chain_cmd_action {
b874ddec
LD
655 WMI_RX_CHAIN_ADD = 0x00,
656 WMI_RX_CHAIN_DEL = 0x01,
2be7d22f
VK
657};
658
659enum wmi_cfg_rx_chain_cmd_decap_trans_type {
b874ddec
LD
660 WMI_DECAP_TYPE_802_3 = 0x00,
661 WMI_DECAP_TYPE_NATIVE_WIFI = 0x01,
662 WMI_DECAP_TYPE_NONE = 0x02,
2be7d22f
VK
663};
664
665enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type {
b874ddec
LD
666 WMI_NWIFI_RX_TRANS_MODE_NO = 0x00,
667 WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01,
668 WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02,
2be7d22f
VK
669};
670
b8023177 671enum wmi_cfg_rx_chain_cmd_reorder_type {
b874ddec
LD
672 WMI_RX_HW_REORDER = 0x00,
673 WMI_RX_SW_REORDER = 0x01,
b8023177
VK
674};
675
b874ddec
LD
676#define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0)
677#define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1)
678#define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1)
679#define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1)
680#define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1)
681#define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2)
682#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0)
683#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1)
684#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1)
685#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1)
686#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1)
687#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2)
688#define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0)
689#define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1)
690#define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1)
691#define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1)
692#define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1)
693#define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2)
694#define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0)
695#define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1)
696#define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1)
697#define RING_CTRL_OVERRIDE_WB_THRSH_POS (1)
698#define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1)
699#define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2)
700#define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2)
701#define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1)
702#define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4)
703#define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3)
704#define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1)
705#define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8)
706
707/* WMI_CFG_RX_CHAIN_CMDID */
2be7d22f
VK
708struct wmi_cfg_rx_chain_cmd {
709 __le32 action;
710 struct wmi_sw_ring_cfg rx_sw_ring;
711 u8 mid;
712 u8 decap_trans_type;
2be7d22f 713 u8 l2_802_3_offload_ctrl;
2be7d22f 714 u8 l2_nwifi_offload_ctrl;
2be7d22f
VK
715 u8 vlan_id;
716 u8 nwifi_ds_trans_type;
2be7d22f 717 u8 l3_l4_ctrl;
2be7d22f 718 u8 ring_ctrl;
2be7d22f
VK
719 __le16 prefetch_thrsh;
720 __le16 wb_thrsh;
721 __le32 itr_value;
722 __le16 host_thrsh;
b8023177
VK
723 u8 reorder_type;
724 u8 reserved;
2be7d22f 725 struct wmi_sniffer_cfg sniffer_cfg;
b874ddec 726 __le16 max_rx_pl_per_desc;
2be7d22f
VK
727} __packed;
728
b874ddec 729/* WMI_RCP_ADDBA_RESP_CMDID */
2be7d22f 730struct wmi_rcp_addba_resp_cmd {
2be7d22f 731 u8 cidxtid;
2be7d22f
VK
732 u8 dialog_token;
733 __le16 status_code;
b874ddec
LD
734 /* ieee80211_ba_parameterset field to send */
735 __le16 ba_param_set;
2be7d22f
VK
736 __le16 ba_timeout;
737} __packed;
738
b874ddec 739/* WMI_RCP_DELBA_CMDID */
2be7d22f 740struct wmi_rcp_delba_cmd {
2be7d22f 741 u8 cidxtid;
2be7d22f
VK
742 u8 reserved;
743 __le16 reason;
744} __packed;
745
b874ddec 746/* WMI_RCP_ADDBA_REQ_CMDID */
2be7d22f 747struct wmi_rcp_addba_req_cmd {
2be7d22f 748 u8 cidxtid;
2be7d22f
VK
749 u8 dialog_token;
750 /* ieee80211_ba_parameterset field as it received */
751 __le16 ba_param_set;
752 __le16 ba_timeout;
753 /* ieee80211_ba_seqstrl field as it received */
754 __le16 ba_seq_ctrl;
755} __packed;
756
b874ddec 757/* WMI_SET_MAC_ADDRESS_CMDID */
2be7d22f
VK
758struct wmi_set_mac_address_cmd {
759 u8 mac[WMI_MAC_LEN];
760 u8 reserved[2];
761} __packed;
762
b874ddec 763/* WMI_ECHO_CMDID
2be7d22f 764 * Check FW is alive
2be7d22f 765 * WMI_DEEP_ECHO_CMDID
2be7d22f 766 * Check FW and ucode are alive
2be7d22f
VK
767 * Returned event: WMI_ECHO_RSP_EVENTID
768 * same event for both commands
769 */
770struct wmi_echo_cmd {
771 __le32 value;
772} __packed;
773
b874ddec
LD
774/* WMI_OTP_READ_CMDID */
775struct wmi_otp_read_cmd {
776 __le32 addr;
777 __le32 size;
778 __le32 values;
779} __packed;
780
781/* WMI_OTP_WRITE_CMDID */
782struct wmi_otp_write_cmd {
783 __le32 addr;
784 __le32 size;
785 __le32 values;
786} __packed;
787
788/* WMI_TEMP_SENSE_CMDID
b8023177
VK
789 *
790 * Measure MAC and radio temperatures
b874ddec
LD
791 *
792 * Possible modes for temperature measurement
b8023177 793 */
8c679675 794enum wmi_temperature_measure_mode {
b874ddec
LD
795 TEMPERATURE_USE_OLD_VALUE = 0x01,
796 TEMPERATURE_MEASURE_NOW = 0x02,
8c679675
VK
797};
798
b874ddec 799/* WMI_TEMP_SENSE_CMDID */
b8023177 800struct wmi_temp_sense_cmd {
8c679675
VK
801 __le32 measure_baseband_en;
802 __le32 measure_rf_en;
803 __le32 measure_mode;
b8023177
VK
804} __packed;
805
b874ddec
LD
806enum wmi_pmc_op {
807 WMI_PMC_ALLOCATE = 0x00,
808 WMI_PMC_RELEASE = 0x01,
dc16427b
VK
809};
810
b874ddec 811/* WMI_PMC_CMDID */
dc16427b 812struct wmi_pmc_cmd {
b874ddec
LD
813 /* enum wmi_pmc_cmd_op_type */
814 u8 op;
dc16427b
VK
815 u8 reserved;
816 __le16 ring_size;
817 __le64 mem_base;
818} __packed;
819
b874ddec 820/* WMI Events
2be7d22f
VK
821 * List of Events (target to host)
822 */
823enum wmi_event_id {
2be7d22f
VK
824 WMI_READY_EVENTID = 0x1001,
825 WMI_CONNECT_EVENTID = 0x1002,
826 WMI_DISCONNECT_EVENTID = 0x1003,
b874ddec
LD
827 WMI_SCAN_COMPLETE_EVENTID = 0x100A,
828 WMI_REPORT_STATISTICS_EVENTID = 0x100B,
2be7d22f
VK
829 WMI_RD_MEM_RSP_EVENTID = 0x1800,
830 WMI_FW_READY_EVENTID = 0x1801,
b874ddec 831 WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200,
2be7d22f 832 WMI_ECHO_RSP_EVENTID = 0x1803,
b874ddec
LD
833 WMI_FS_TUNE_DONE_EVENTID = 0x180A,
834 WMI_CORR_MEASURE_EVENTID = 0x180B,
835 WMI_READ_RSSI_EVENTID = 0x180C,
836 WMI_TEMP_SENSE_DONE_EVENTID = 0x180E,
837 WMI_DC_CALIB_DONE_EVENTID = 0x180F,
2be7d22f
VK
838 WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811,
839 WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812,
840 WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815,
841 WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816,
2be7d22f
VK
842 WMI_MARLON_R_READ_DONE_EVENTID = 0x1818,
843 WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819,
b874ddec
LD
844 WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181A,
845 WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D,
846 WMI_RF_RX_TEST_DONE_EVENTID = 0x181E,
2be7d22f
VK
847 WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820,
848 WMI_VRING_CFG_DONE_EVENTID = 0x1821,
2be7d22f
VK
849 WMI_BA_STATUS_EVENTID = 0x1823,
850 WMI_RCP_ADDBA_REQ_EVENTID = 0x1824,
230d8442 851 WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825,
2be7d22f
VK
852 WMI_DELBA_EVENTID = 0x1826,
853 WMI_GET_SSID_EVENTID = 0x1828,
b874ddec
LD
854 WMI_GET_PCP_CHANNEL_EVENTID = 0x182A,
855 WMI_SW_TX_COMPLETE_EVENTID = 0x182B,
2be7d22f
VK
856 WMI_READ_MAC_RXQ_EVENTID = 0x1830,
857 WMI_READ_MAC_TXQ_EVENTID = 0x1831,
858 WMI_WRITE_MAC_RXQ_EVENTID = 0x1832,
859 WMI_WRITE_MAC_TXQ_EVENTID = 0x1833,
860 WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834,
230d8442 861 WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836,
2be7d22f
VK
862 WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837,
863 WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839,
864 WMI_RS_MGMT_DONE_EVENTID = 0x1852,
865 WMI_RF_MGMT_STATUS_EVENTID = 0x1853,
8c679675 866 WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855,
2be7d22f
VK
867 WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838,
868 WMI_RX_MGMT_PACKET_EVENTID = 0x1840,
6c2faf09 869 WMI_TX_MGMT_PACKET_EVENTID = 0x1841,
b874ddec 870 WMI_OTP_READ_RESULT_EVENTID = 0x1856,
2be7d22f
VK
871 /* Performance monitoring events */
872 WMI_DATA_PORT_OPEN_EVENTID = 0x1860,
230d8442 873 WMI_WBE_LINK_DOWN_EVENTID = 0x1861,
2be7d22f
VK
874 WMI_BF_CTRL_DONE_EVENTID = 0x1862,
875 WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863,
876 WMI_GET_STATUS_DONE_EVENTID = 0x1864,
230d8442 877 WMI_VRING_EN_EVENTID = 0x1865,
2be7d22f
VK
878 WMI_UNIT_TEST_EVENTID = 0x1900,
879 WMI_FLASH_READ_DONE_EVENTID = 0x1902,
880 WMI_FLASH_WRITE_DONE_EVENTID = 0x1903,
b874ddec 881 /* P2P */
8c679675 882 WMI_P2P_CFG_DONE_EVENTID = 0x1910,
b8023177
VK
883 WMI_PORT_ALLOCATED_EVENTID = 0x1911,
884 WMI_PORT_DELETED_EVENTID = 0x1912,
885 WMI_LISTEN_STARTED_EVENTID = 0x1914,
886 WMI_SEARCH_STARTED_EVENTID = 0x1915,
887 WMI_DISCOVERY_STARTED_EVENTID = 0x1916,
888 WMI_DISCOVERY_STOPPED_EVENTID = 0x1917,
889 WMI_PCP_STARTED_EVENTID = 0x1918,
890 WMI_PCP_STOPPED_EVENTID = 0x1919,
b874ddec 891 WMI_PCP_FACTOR_EVENTID = 0x191A,
2be7d22f
VK
892 WMI_SET_CHANNEL_EVENTID = 0x9000,
893 WMI_ASSOC_REQ_EVENTID = 0x9001,
894 WMI_EAPOL_RX_EVENTID = 0x9002,
895 WMI_MAC_ADDR_RESP_EVENTID = 0x9003,
896 WMI_FW_VER_EVENTID = 0x9004,
b874ddec 897 WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005,
2be7d22f
VK
898};
899
b874ddec 900/* Events data structures */
b8023177 901enum wmi_fw_status {
b874ddec
LD
902 WMI_FW_STATUS_SUCCESS = 0x00,
903 WMI_FW_STATUS_FAILURE = 0x01,
b8023177
VK
904};
905
b874ddec 906/* WMI_RF_MGMT_STATUS_EVENTID */
2be7d22f 907enum wmi_rf_status {
b874ddec
LD
908 WMI_RF_ENABLED = 0x00,
909 WMI_RF_DISABLED_HW = 0x01,
910 WMI_RF_DISABLED_SW = 0x02,
911 WMI_RF_DISABLED_HW_SW = 0x03,
2be7d22f
VK
912};
913
b874ddec 914/* WMI_RF_MGMT_STATUS_EVENTID */
2be7d22f
VK
915struct wmi_rf_mgmt_status_event {
916 __le32 rf_status;
917} __packed;
918
b874ddec 919/* WMI_THERMAL_THROTTLING_STATUS_EVENTID */
8c679675
VK
920struct wmi_thermal_throttling_status_event {
921 __le32 time_on_usec;
922 __le32 time_off_usec;
923 __le32 max_txop_length_usec;
924} __packed;
925
b874ddec 926/* WMI_GET_STATUS_DONE_EVENTID */
2be7d22f
VK
927struct wmi_get_status_done_event {
928 __le32 is_associated;
929 u8 cid;
930 u8 reserved0[3];
931 u8 bssid[WMI_MAC_LEN];
932 u8 channel;
933 u8 reserved1;
934 u8 network_type;
935 u8 reserved2[3];
936 __le32 ssid_len;
937 u8 ssid[WMI_MAX_SSID_LEN];
938 __le32 rf_status;
939 __le32 is_secured;
940} __packed;
941
b874ddec 942/* WMI_FW_VER_EVENTID */
2be7d22f
VK
943struct wmi_fw_ver_event {
944 u8 major;
945 u8 minor;
946 __le16 subminor;
947 __le16 build;
948} __packed;
949
b874ddec 950/* WMI_MAC_ADDR_RESP_EVENTID */
2be7d22f
VK
951struct wmi_mac_addr_resp_event {
952 u8 mac[WMI_MAC_LEN];
953 u8 auth_mode;
954 u8 crypt_mode;
955 __le32 offload_mode;
956} __packed;
957
b874ddec 958/* WMI_EAPOL_RX_EVENTID */
2be7d22f
VK
959struct wmi_eapol_rx_event {
960 u8 src_mac[WMI_MAC_LEN];
961 __le16 eapol_len;
962 u8 eapol[0];
963} __packed;
964
b874ddec 965/* WMI_READY_EVENTID */
2be7d22f 966enum wmi_phy_capability {
b874ddec
LD
967 WMI_11A_CAPABILITY = 0x01,
968 WMI_11G_CAPABILITY = 0x02,
969 WMI_11AG_CAPABILITY = 0x03,
970 WMI_11NA_CAPABILITY = 0x04,
971 WMI_11NG_CAPABILITY = 0x05,
972 WMI_11NAG_CAPABILITY = 0x06,
973 WMI_11AD_CAPABILITY = 0x07,
974 WMI_11N_CAPABILITY_OFFSET = 0x03,
2be7d22f
VK
975};
976
977struct wmi_ready_event {
978 __le32 sw_version;
979 __le32 abi_version;
980 u8 mac[WMI_MAC_LEN];
b874ddec
LD
981 /* enum wmi_phy_capability */
982 u8 phy_capability;
b8023177 983 u8 numof_additional_mids;
2be7d22f
VK
984} __packed;
985
b874ddec 986/* WMI_NOTIFY_REQ_DONE_EVENTID */
2be7d22f 987struct wmi_notify_req_done_event {
b874ddec
LD
988 /* beamforming status, 0: fail; 1: OK; 2: retrying */
989 __le32 status;
2be7d22f
VK
990 __le64 tsf;
991 __le32 snr_val;
992 __le32 tx_tpt;
993 __le32 tx_goodput;
994 __le32 rx_goodput;
995 __le16 bf_mcs;
996 __le16 my_rx_sector;
997 __le16 my_tx_sector;
998 __le16 other_rx_sector;
999 __le16 other_tx_sector;
1000 __le16 range;
b8023177
VK
1001 u8 sqi;
1002 u8 reserved[3];
2be7d22f
VK
1003} __packed;
1004
b874ddec 1005/* WMI_CONNECT_EVENTID */
2be7d22f
VK
1006struct wmi_connect_event {
1007 u8 channel;
1008 u8 reserved0;
1009 u8 bssid[WMI_MAC_LEN];
1010 __le16 listen_interval;
1011 __le16 beacon_interval;
1012 u8 network_type;
1013 u8 reserved1[3];
1014 u8 beacon_ie_len;
1015 u8 assoc_req_len;
1016 u8 assoc_resp_len;
1017 u8 cid;
1018 u8 reserved2[3];
b874ddec 1019 /* not in use */
2be7d22f
VK
1020 u8 assoc_info[0];
1021} __packed;
1022
b874ddec 1023/* WMI_DISCONNECT_EVENTID */
2be7d22f 1024enum wmi_disconnect_reason {
b874ddec
LD
1025 WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01,
1026 /* bmiss */
1027 WMI_DIS_REASON_LOST_LINK = 0x02,
1028 WMI_DIS_REASON_DISCONNECT_CMD = 0x03,
1029 WMI_DIS_REASON_BSS_DISCONNECTED = 0x04,
1030 WMI_DIS_REASON_AUTH_FAILED = 0x05,
1031 WMI_DIS_REASON_ASSOC_FAILED = 0x06,
1032 WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07,
1033 WMI_DIS_REASON_CSERV_DISCONNECT = 0x08,
1034 WMI_DIS_REASON_INVALID_PROFILE = 0x0A,
1035 WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B,
1036 WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C,
1037 WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D,
1038 WMI_DIS_REASON_IBSS_MERGE = 0x0E,
2be7d22f
VK
1039};
1040
1041struct wmi_disconnect_event {
b874ddec
LD
1042 /* reason code, see 802.11 spec. */
1043 __le16 protocol_reason_status;
1044 /* set if known */
1045 u8 bssid[WMI_MAC_LEN];
1046 /* see enum wmi_disconnect_reason */
1047 u8 disconnect_reason;
1048 /* last assoc req may passed to host - not in used */
1049 u8 assoc_resp_len;
1050 /* last assoc req may passed to host - not in used */
1051 u8 assoc_info[0];
2be7d22f
VK
1052} __packed;
1053
b874ddec 1054/* WMI_SCAN_COMPLETE_EVENTID */
6c2faf09 1055enum scan_status {
b874ddec
LD
1056 WMI_SCAN_SUCCESS = 0x00,
1057 WMI_SCAN_FAILED = 0x01,
1058 WMI_SCAN_ABORTED = 0x02,
1059 WMI_SCAN_REJECTED = 0x03,
1060 WMI_SCAN_ABORT_REJECTED = 0x04,
6c2faf09
VK
1061};
1062
2be7d22f 1063struct wmi_scan_complete_event {
b874ddec
LD
1064 /* enum scan_status */
1065 __le32 status;
2be7d22f
VK
1066} __packed;
1067
b874ddec
LD
1068/* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */
1069enum wmi_acs_info_bitmask {
1070 WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01,
1071 WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02,
1072 WMI_ACS_INFO_BITMASK_TX_TIME = 0x04,
1073 WMI_ACS_INFO_BITMASK_RX_TIME = 0x08,
1074 WMI_ACS_INFO_BITMASK_NOISE = 0x10,
1075};
1076
1077struct scan_acs_info {
1078 u8 channel;
1079 u8 beacon_found;
1080 /* msec */
1081 __le16 busy_time;
1082 __le16 tx_time;
1083 __le16 rx_time;
1084 u8 noise;
1085 u8 reserved[3];
1086} __packed;
1087
1088struct wmi_acs_passive_scan_complete_event {
1089 __le32 dwell_time;
1090 /* valid fields within channel info according to
1091 * their appearance in struct order
1092 */
1093 __le16 filled;
1094 u8 num_scanned_channels;
1095 u8 reserved;
1096 struct scan_acs_info scan_info_list[0];
1097} __packed;
1098
1099/* WMI_BA_STATUS_EVENTID */
2be7d22f 1100enum wmi_vring_ba_status {
b874ddec
LD
1101 WMI_BA_AGREED = 0x00,
1102 WMI_BA_NON_AGREED = 0x01,
cbcf5866 1103 /* BA_EN in middle of teardown flow */
b874ddec 1104 WMI_BA_TD_WIP = 0x02,
cbcf5866 1105 /* BA_DIS or BA_EN in middle of BA SETUP flow */
b874ddec 1106 WMI_BA_SETUP_WIP = 0x03,
cbcf5866 1107 /* BA_EN when the BA session is already active */
b874ddec 1108 WMI_BA_SESSION_ACTIVE = 0x04,
cbcf5866 1109 /* BA_DIS when the BA session is not active */
b874ddec 1110 WMI_BA_SESSION_NOT_ACTIVE = 0x05,
2be7d22f
VK
1111};
1112
b874ddec
LD
1113struct wmi_ba_status_event {
1114 /* enum wmi_vring_ba_status */
1115 __le16 status;
2be7d22f
VK
1116 u8 reserved[2];
1117 u8 ringid;
1118 u8 agg_wsize;
1119 __le16 ba_timeout;
cbcf5866 1120 u8 amsdu;
2be7d22f
VK
1121} __packed;
1122
b874ddec 1123/* WMI_DELBA_EVENTID */
2be7d22f 1124struct wmi_delba_event {
2be7d22f 1125 u8 cidxtid;
2be7d22f
VK
1126 u8 from_initiator;
1127 __le16 reason;
1128} __packed;
1129
b874ddec 1130/* WMI_VRING_CFG_DONE_EVENTID */
2be7d22f
VK
1131struct wmi_vring_cfg_done_event {
1132 u8 ringid;
1133 u8 status;
1134 u8 reserved[2];
1135 __le32 tx_vring_tail_ptr;
1136} __packed;
1137
b874ddec 1138/* WMI_RCP_ADDBA_RESP_SENT_EVENTID */
2be7d22f 1139struct wmi_rcp_addba_resp_sent_event {
2be7d22f 1140 u8 cidxtid;
2be7d22f
VK
1141 u8 reserved;
1142 __le16 status;
1143} __packed;
1144
b874ddec 1145/* WMI_RCP_ADDBA_REQ_EVENTID */
2be7d22f 1146struct wmi_rcp_addba_req_event {
2be7d22f 1147 u8 cidxtid;
2be7d22f 1148 u8 dialog_token;
b874ddec
LD
1149 /* ieee80211_ba_parameterset as it received */
1150 __le16 ba_param_set;
2be7d22f 1151 __le16 ba_timeout;
b874ddec
LD
1152 /* ieee80211_ba_seqstrl field as it received */
1153 __le16 ba_seq_ctrl;
2be7d22f
VK
1154} __packed;
1155
b874ddec 1156/* WMI_CFG_RX_CHAIN_DONE_EVENTID */
2be7d22f 1157enum wmi_cfg_rx_chain_done_event_status {
b874ddec 1158 WMI_CFG_RX_CHAIN_SUCCESS = 0x01,
2be7d22f
VK
1159};
1160
1161struct wmi_cfg_rx_chain_done_event {
b874ddec
LD
1162 /* V-Ring Tail pointer */
1163 __le32 rx_ring_tail_ptr;
2be7d22f
VK
1164 __le32 status;
1165} __packed;
1166
b874ddec 1167/* WMI_WBE_LINK_DOWN_EVENTID */
2be7d22f 1168enum wmi_wbe_link_down_event_reason {
b874ddec
LD
1169 WMI_WBE_REASON_USER_REQUEST = 0x00,
1170 WMI_WBE_REASON_RX_DISASSOC = 0x01,
1171 WMI_WBE_REASON_BAD_PHY_LINK = 0x02,
2be7d22f
VK
1172};
1173
b874ddec 1174/* WMI_WBE_LINK_DOWN_EVENTID */
2be7d22f
VK
1175struct wmi_wbe_link_down_event {
1176 u8 cid;
1177 u8 reserved[3];
1178 __le32 reason;
1179} __packed;
1180
b874ddec 1181/* WMI_DATA_PORT_OPEN_EVENTID */
2be7d22f
VK
1182struct wmi_data_port_open_event {
1183 u8 cid;
1184 u8 reserved[3];
1185} __packed;
1186
b874ddec 1187/* WMI_VRING_EN_EVENTID */
230d8442
VK
1188struct wmi_vring_en_event {
1189 u8 vring_index;
1190 u8 reserved[3];
1191} __packed;
1192
b874ddec 1193/* WMI_GET_PCP_CHANNEL_EVENTID */
2be7d22f
VK
1194struct wmi_get_pcp_channel_event {
1195 u8 channel;
1196 u8 reserved[3];
1197} __packed;
1198
b874ddec 1199/* WMI_P2P_CFG_DONE_EVENTID */
8c679675 1200struct wmi_p2p_cfg_done_event {
b874ddec
LD
1201 /* wmi_fw_status */
1202 u8 status;
8c679675
VK
1203 u8 reserved[3];
1204} __packed;
1205
b874ddec 1206/* WMI_PORT_ALLOCATED_EVENTID */
b8023177 1207struct wmi_port_allocated_event {
b874ddec
LD
1208 /* wmi_fw_status */
1209 u8 status;
b8023177
VK
1210 u8 reserved[3];
1211} __packed;
1212
b874ddec 1213/* WMI_PORT_DELETED_EVENTID */
b8023177 1214struct wmi_port_deleted_event {
b874ddec
LD
1215 /* wmi_fw_status */
1216 u8 status;
b8023177
VK
1217 u8 reserved[3];
1218} __packed;
1219
b874ddec 1220/* WMI_LISTEN_STARTED_EVENTID */
b8023177 1221struct wmi_listen_started_event {
b874ddec
LD
1222 /* wmi_fw_status */
1223 u8 status;
b8023177
VK
1224 u8 reserved[3];
1225} __packed;
1226
b874ddec 1227/* WMI_SEARCH_STARTED_EVENTID */
b8023177 1228struct wmi_search_started_event {
b874ddec
LD
1229 /* wmi_fw_status */
1230 u8 status;
b8023177
VK
1231 u8 reserved[3];
1232} __packed;
1233
b874ddec 1234/* WMI_PCP_STARTED_EVENTID */
b8023177 1235struct wmi_pcp_started_event {
b874ddec
LD
1236 /* wmi_fw_status */
1237 u8 status;
b8023177
VK
1238 u8 reserved[3];
1239} __packed;
1240
b874ddec 1241/* WMI_PCP_FACTOR_EVENTID */
b8023177
VK
1242struct wmi_pcp_factor_event {
1243 __le32 pcp_factor;
1244} __packed;
1245
2be7d22f 1246enum wmi_sw_tx_status {
b874ddec
LD
1247 WMI_TX_SW_STATUS_SUCCESS = 0x00,
1248 WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01,
1249 WMI_TX_SW_STATUS_FAILED_TX = 0x02,
2be7d22f
VK
1250};
1251
b874ddec 1252/* WMI_SW_TX_COMPLETE_EVENTID */
2be7d22f 1253struct wmi_sw_tx_complete_event {
b874ddec
LD
1254 /* enum wmi_sw_tx_status */
1255 u8 status;
2be7d22f
VK
1256 u8 reserved[3];
1257} __packed;
1258
b874ddec 1259/* WMI_CORR_MEASURE_EVENTID */
b8023177 1260struct wmi_corr_measure_event {
b874ddec
LD
1261 /* signed */
1262 __le32 i;
1263 /* signed */
1264 __le32 q;
1265 /* signed */
1266 __le32 image_i;
1267 /* signed */
1268 __le32 image_q;
b8023177
VK
1269} __packed;
1270
b874ddec 1271/* WMI_READ_RSSI_EVENTID */
b8023177
VK
1272struct wmi_read_rssi_event {
1273 __le32 ina_rssi_adc_dbm;
1274} __packed;
1275
b874ddec 1276/* WMI_GET_SSID_EVENTID */
2be7d22f
VK
1277struct wmi_get_ssid_event {
1278 __le32 ssid_len;
1279 u8 ssid[WMI_MAX_SSID_LEN];
1280} __packed;
1281
b874ddec 1282/* wmi_rx_mgmt_info */
2be7d22f
VK
1283struct wmi_rx_mgmt_info {
1284 u8 mcs;
1285 s8 snr;
b8023177
VK
1286 u8 range;
1287 u8 sqi;
2be7d22f
VK
1288 __le16 stype;
1289 __le16 status;
1290 __le32 len;
b874ddec 1291 /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */
2be7d22f 1292 u8 qid;
b874ddec 1293 /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */
2be7d22f
VK
1294 u8 mid;
1295 u8 cid;
b874ddec
LD
1296 /* From Radio MNGR */
1297 u8 channel;
2be7d22f
VK
1298} __packed;
1299
b874ddec
LD
1300/* wmi_otp_read_write_cmd */
1301struct wmi_otp_read_write_cmd {
1302 __le32 addr;
1303 __le32 size;
1304 u8 values[0];
1305} __packed;
1306
1307/* WMI_OTP_READ_RESULT_EVENTID */
1308struct wmi_otp_read_result_event {
1309 u8 payload[0];
1310} __packed;
1311
1312/* WMI_TX_MGMT_PACKET_EVENTID */
6c2faf09
VK
1313struct wmi_tx_mgmt_packet_event {
1314 u8 payload[0];
1315} __packed;
1316
b874ddec 1317/* WMI_RX_MGMT_PACKET_EVENTID */
2be7d22f
VK
1318struct wmi_rx_mgmt_packet_event {
1319 struct wmi_rx_mgmt_info info;
1320 u8 payload[0];
1321} __packed;
1322
b874ddec
LD
1323/* WMI_ECHO_RSP_EVENTID */
1324struct wmi_echo_rsp_event {
2be7d22f
VK
1325 __le32 echoed_value;
1326} __packed;
1327
b874ddec 1328/* WMI_TEMP_SENSE_DONE_EVENTID
b8023177
VK
1329 *
1330 * Measure MAC and radio temperatures
1331 */
1332struct wmi_temp_sense_done_event {
b874ddec
LD
1333 /* Temperature times 1000 (actual temperature will be achieved by
1334 * dividing the value by 1000)
1335 */
8c679675 1336 __le32 baseband_t1000;
b874ddec
LD
1337 /* Temperature times 1000 (actual temperature will be achieved by
1338 * dividing the value by 1000)
1339 */
8c679675 1340 __le32 rf_t1000;
b8023177
VK
1341} __packed;
1342
b874ddec
LD
1343#define WMI_SCAN_DWELL_TIME_MS (100)
1344#define WMI_SURVEY_TIMEOUT_MS (10000)
1345
1346enum wmi_hidden_ssid {
1347 WMI_HIDDEN_SSID_DISABLED = 0x00,
1348 WMI_HIDDEN_SSID_SEND_EMPTY = 0x10,
1349 WMI_HIDDEN_SSID_CLEAR = 0xFE,
1350};
1351
2be7d22f 1352#endif /* __WILOCITY_WMI_H__ */
This page took 0.294197 seconds and 5 git commands to generate.