.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: ISC */ |
---|
1 | 2 | /* |
---|
2 | | - * Copyright (c) 2018, The Linux Foundation. All rights reserved. |
---|
| 3 | + * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. |
---|
3 | 4 | * Copyright (c) 2012-2017 Qualcomm Atheros, Inc. |
---|
4 | 5 | * Copyright (c) 2006-2012 Wilocity |
---|
5 | | - * |
---|
6 | | - * Permission to use, copy, modify, and/or distribute this software for any |
---|
7 | | - * purpose with or without fee is hereby granted, provided that the above |
---|
8 | | - * copyright notice and this permission notice appear in all copies. |
---|
9 | | - * |
---|
10 | | - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
---|
11 | | - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
---|
12 | | - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
---|
13 | | - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
---|
14 | | - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
---|
15 | | - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
---|
16 | | - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
---|
17 | 6 | */ |
---|
18 | 7 | |
---|
19 | 8 | /* |
---|
.. | .. |
---|
35 | 24 | #define WMI_PROX_RANGE_NUM (3) |
---|
36 | 25 | #define WMI_MAX_LOSS_DMG_BEACONS (20) |
---|
37 | 26 | #define MAX_NUM_OF_SECTORS (128) |
---|
| 27 | +#define WMI_INVALID_TEMPERATURE (0xFFFFFFFF) |
---|
38 | 28 | #define WMI_SCHED_MAX_ALLOCS_PER_CMD (4) |
---|
39 | 29 | #define WMI_RF_DTYPE_LENGTH (3) |
---|
40 | 30 | #define WMI_RF_ETYPE_LENGTH (3) |
---|
.. | .. |
---|
64 | 54 | #define WMI_QOS_MAX_WEIGHT 50 |
---|
65 | 55 | #define WMI_QOS_SET_VIF_PRIORITY (0xFF) |
---|
66 | 56 | #define WMI_QOS_DEFAULT_PRIORITY (WMI_QOS_NUM_OF_PRIORITY) |
---|
| 57 | +#define WMI_MAX_XIF_PORTS_NUM (8) |
---|
67 | 58 | |
---|
68 | 59 | /* Mailbox interface |
---|
69 | 60 | * used for commands and events |
---|
.. | .. |
---|
95 | 86 | WMI_FW_CAPABILITY_SET_SILENT_RSSI_TABLE = 13, |
---|
96 | 87 | WMI_FW_CAPABILITY_LO_POWER_CALIB_FROM_OTP = 14, |
---|
97 | 88 | WMI_FW_CAPABILITY_PNO = 15, |
---|
| 89 | + WMI_FW_CAPABILITY_CHANNEL_BONDING = 17, |
---|
98 | 90 | WMI_FW_CAPABILITY_REF_CLOCK_CONTROL = 18, |
---|
99 | 91 | WMI_FW_CAPABILITY_AP_SME_OFFLOAD_NONE = 19, |
---|
100 | 92 | WMI_FW_CAPABILITY_MULTI_VIFS = 20, |
---|
.. | .. |
---|
103 | 95 | WMI_FW_CAPABILITY_AMSDU = 23, |
---|
104 | 96 | WMI_FW_CAPABILITY_RAW_MODE = 24, |
---|
105 | 97 | WMI_FW_CAPABILITY_TX_REQ_EXT = 25, |
---|
| 98 | + WMI_FW_CAPABILITY_CHANNEL_4 = 26, |
---|
| 99 | + WMI_FW_CAPABILITY_IPA = 27, |
---|
| 100 | + WMI_FW_CAPABILITY_TEMPERATURE_ALL_RF = 30, |
---|
| 101 | + WMI_FW_CAPABILITY_SPLIT_REKEY = 31, |
---|
106 | 102 | WMI_FW_CAPABILITY_MAX, |
---|
107 | 103 | }; |
---|
108 | 104 | |
---|
.. | .. |
---|
196 | 192 | WMI_RCP_ADDBA_RESP_EDMA_CMDID = 0x83B, |
---|
197 | 193 | WMI_LINK_MAINTAIN_CFG_WRITE_CMDID = 0x842, |
---|
198 | 194 | WMI_LINK_MAINTAIN_CFG_READ_CMDID = 0x843, |
---|
| 195 | + WMI_SET_LINK_MONITOR_CMDID = 0x845, |
---|
199 | 196 | WMI_SET_SECTORS_CMDID = 0x849, |
---|
200 | 197 | WMI_MAINTAIN_PAUSE_CMDID = 0x850, |
---|
201 | 198 | WMI_MAINTAIN_RESUME_CMDID = 0x851, |
---|
.. | .. |
---|
293 | 290 | WMI_SET_AP_SLOT_SIZE_CMDID = 0xA0F, |
---|
294 | 291 | WMI_SET_VRING_PRIORITY_WEIGHT_CMDID = 0xA10, |
---|
295 | 292 | WMI_SET_VRING_PRIORITY_CMDID = 0xA11, |
---|
| 293 | + WMI_RBUFCAP_CFG_CMDID = 0xA12, |
---|
| 294 | + WMI_TEMP_SENSE_ALL_CMDID = 0xA13, |
---|
296 | 295 | WMI_SET_MAC_ADDRESS_CMDID = 0xF003, |
---|
297 | 296 | WMI_ABORT_SCAN_CMDID = 0xF007, |
---|
298 | 297 | WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, |
---|
.. | .. |
---|
354 | 353 | |
---|
355 | 354 | #define WMI_MAX_SSID_LEN (32) |
---|
356 | 355 | |
---|
| 356 | +enum wmi_channel { |
---|
| 357 | + WMI_CHANNEL_1 = 0x00, |
---|
| 358 | + WMI_CHANNEL_2 = 0x01, |
---|
| 359 | + WMI_CHANNEL_3 = 0x02, |
---|
| 360 | + WMI_CHANNEL_4 = 0x03, |
---|
| 361 | + WMI_CHANNEL_5 = 0x04, |
---|
| 362 | + WMI_CHANNEL_6 = 0x05, |
---|
| 363 | + WMI_CHANNEL_9 = 0x06, |
---|
| 364 | + WMI_CHANNEL_10 = 0x07, |
---|
| 365 | + WMI_CHANNEL_11 = 0x08, |
---|
| 366 | + WMI_CHANNEL_12 = 0x09, |
---|
| 367 | +}; |
---|
| 368 | + |
---|
357 | 369 | /* WMI_CONNECT_CMDID */ |
---|
358 | 370 | struct wmi_connect_cmd { |
---|
359 | 371 | u8 network_type; |
---|
.. | .. |
---|
365 | 377 | u8 group_crypto_len; |
---|
366 | 378 | u8 ssid_len; |
---|
367 | 379 | u8 ssid[WMI_MAX_SSID_LEN]; |
---|
| 380 | + /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is |
---|
| 381 | + * the primary channel number |
---|
| 382 | + */ |
---|
368 | 383 | u8 channel; |
---|
369 | | - u8 reserved0; |
---|
| 384 | + /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
---|
| 385 | + u8 edmg_channel; |
---|
370 | 386 | u8 bssid[WMI_MAC_LEN]; |
---|
371 | 387 | __le32 ctrl_flags; |
---|
372 | 388 | u8 dst_mac[WMI_MAC_LEN]; |
---|
.. | .. |
---|
396 | 412 | WMI_KEY_USE_PAIRWISE = 0x00, |
---|
397 | 413 | WMI_KEY_USE_RX_GROUP = 0x01, |
---|
398 | 414 | WMI_KEY_USE_TX_GROUP = 0x02, |
---|
| 415 | + WMI_KEY_USE_STORE_PTK = 0x03, |
---|
| 416 | + WMI_KEY_USE_APPLY_PTK = 0x04, |
---|
399 | 417 | }; |
---|
400 | 418 | |
---|
401 | 419 | struct wmi_add_cipher_key_cmd { |
---|
.. | .. |
---|
456 | 474 | struct { |
---|
457 | 475 | u8 channel; |
---|
458 | 476 | u8 reserved; |
---|
459 | | - } channel_list[0]; |
---|
| 477 | + } channel_list[]; |
---|
460 | 478 | } __packed; |
---|
461 | 479 | |
---|
462 | 480 | #define WMI_MAX_PNO_SSID_NUM (16) |
---|
.. | .. |
---|
512 | 530 | /* Length of the FT IEs */ |
---|
513 | 531 | __le16 ie_len; |
---|
514 | 532 | u8 reserved[2]; |
---|
515 | | - u8 ie_info[0]; |
---|
| 533 | + u8 ie_info[]; |
---|
516 | 534 | } __packed; |
---|
517 | 535 | |
---|
518 | 536 | /* WMI_SET_PROBED_SSID_CMDID */ |
---|
.. | .. |
---|
557 | 575 | u8 reserved; |
---|
558 | 576 | /* Length of the IE to be added to MGMT frame */ |
---|
559 | 577 | __le16 ie_len; |
---|
560 | | - u8 ie_info[0]; |
---|
| 578 | + u8 ie_info[]; |
---|
561 | 579 | } __packed; |
---|
562 | 580 | |
---|
563 | 581 | /* WMI_PXMT_RANGE_CFG_CMDID */ |
---|
.. | .. |
---|
832 | 850 | struct wmi_sw_tx_req_cmd { |
---|
833 | 851 | u8 dst_mac[WMI_MAC_LEN]; |
---|
834 | 852 | __le16 len; |
---|
835 | | - u8 payload[0]; |
---|
| 853 | + u8 payload[]; |
---|
836 | 854 | } __packed; |
---|
837 | 855 | |
---|
838 | 856 | /* WMI_SW_TX_REQ_EXT_CMDID */ |
---|
.. | .. |
---|
843 | 861 | /* Channel to use, 0xFF for currently active channel */ |
---|
844 | 862 | u8 channel; |
---|
845 | 863 | u8 reserved[5]; |
---|
846 | | - u8 payload[0]; |
---|
| 864 | + u8 payload[]; |
---|
847 | 865 | } __packed; |
---|
848 | 866 | |
---|
849 | 867 | /* WMI_VRING_SWITCH_TIMING_CONFIG_CMDID */ |
---|
.. | .. |
---|
978 | 996 | WMI_RX_MSG_TYPE_EXTENDED = 0x01, |
---|
979 | 997 | }; |
---|
980 | 998 | |
---|
| 999 | +enum wmi_ring_add_irq_mode { |
---|
| 1000 | + /* Backwards compatibility |
---|
| 1001 | + * for DESC ring - interrupt disabled |
---|
| 1002 | + * for STATUS ring - interrupt enabled |
---|
| 1003 | + */ |
---|
| 1004 | + WMI_RING_ADD_IRQ_MODE_BWC = 0x00, |
---|
| 1005 | + WMI_RING_ADD_IRQ_MODE_DISABLE = 0x01, |
---|
| 1006 | + WMI_RING_ADD_IRQ_MODE_ENABLE = 0x02, |
---|
| 1007 | +}; |
---|
| 1008 | + |
---|
981 | 1009 | struct wmi_tx_status_ring_add_cmd { |
---|
982 | 1010 | struct wmi_edma_ring_cfg ring_cfg; |
---|
983 | 1011 | u8 irq_index; |
---|
984 | | - u8 reserved[3]; |
---|
| 1012 | + /* wmi_ring_add_irq_mode */ |
---|
| 1013 | + u8 irq_mode; |
---|
| 1014 | + u8 reserved[2]; |
---|
985 | 1015 | } __packed; |
---|
986 | 1016 | |
---|
987 | 1017 | struct wmi_rx_status_ring_add_cmd { |
---|
.. | .. |
---|
1015 | 1045 | u8 mac_ctrl; |
---|
1016 | 1046 | u8 to_resolution; |
---|
1017 | 1047 | u8 agg_max_wsize; |
---|
1018 | | - u8 reserved[3]; |
---|
| 1048 | + u8 irq_index; |
---|
| 1049 | + /* wmi_ring_add_irq_mode */ |
---|
| 1050 | + u8 irq_mode; |
---|
| 1051 | + u8 reserved; |
---|
1019 | 1052 | struct wmi_vring_cfg_schd schd_params; |
---|
1020 | 1053 | } __packed; |
---|
1021 | 1054 | |
---|
.. | .. |
---|
1390 | 1423 | u8 verify; |
---|
1391 | 1424 | u8 reserved1[3]; |
---|
1392 | 1425 | /* actual size=num_bytes */ |
---|
1393 | | - u8 data_bytes[0]; |
---|
| 1426 | + u8 data_bytes[]; |
---|
1394 | 1427 | } __packed; |
---|
1395 | 1428 | |
---|
1396 | | -/* WMI_TEMP_SENSE_CMDID |
---|
1397 | | - * |
---|
1398 | | - * Measure MAC and radio temperatures |
---|
1399 | | - * |
---|
1400 | | - * Possible modes for temperature measurement |
---|
1401 | | - */ |
---|
| 1429 | +/* Possible modes for temperature measurement */ |
---|
1402 | 1430 | enum wmi_temperature_measure_mode { |
---|
1403 | 1431 | TEMPERATURE_USE_OLD_VALUE = 0x01, |
---|
1404 | 1432 | TEMPERATURE_MEASURE_NOW = 0x02, |
---|
.. | .. |
---|
1544 | 1572 | u8 aoa_type; |
---|
1545 | 1573 | __le16 num_of_dest; |
---|
1546 | 1574 | u8 reserved[4]; |
---|
1547 | | - struct wmi_ftm_dest_info ftm_dest_info[0]; |
---|
| 1575 | + struct wmi_ftm_dest_info ftm_dest_info[]; |
---|
1548 | 1576 | } __packed; |
---|
1549 | 1577 | |
---|
1550 | 1578 | /* WMI_TOF_CFG_RESPONDER_CMDID */ |
---|
.. | .. |
---|
1738 | 1766 | /* payload max size is WMI_MAX_IOCTL_PAYLOAD_SIZE |
---|
1739 | 1767 | * Must be the last member of the struct |
---|
1740 | 1768 | */ |
---|
1741 | | - __le32 payload[0]; |
---|
| 1769 | + __le32 payload[]; |
---|
1742 | 1770 | } __packed; |
---|
1743 | 1771 | |
---|
1744 | 1772 | /* WMI_INTERNAL_FW_IOCTL_EVENTID */ |
---|
.. | .. |
---|
1750 | 1778 | /* payload max size is WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE |
---|
1751 | 1779 | * Must be the last member of the struct |
---|
1752 | 1780 | */ |
---|
1753 | | - __le32 payload[0]; |
---|
| 1781 | + __le32 payload[]; |
---|
1754 | 1782 | } __packed; |
---|
1755 | 1783 | |
---|
1756 | 1784 | /* WMI_INTERNAL_FW_EVENT_EVENTID */ |
---|
.. | .. |
---|
1760 | 1788 | /* payload max size is WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE |
---|
1761 | 1789 | * Must be the last member of the struct |
---|
1762 | 1790 | */ |
---|
1763 | | - __le32 payload[0]; |
---|
| 1791 | + __le32 payload[]; |
---|
1764 | 1792 | } __packed; |
---|
1765 | 1793 | |
---|
1766 | 1794 | /* WMI_SET_VRING_PRIORITY_WEIGHT_CMDID */ |
---|
.. | .. |
---|
1790 | 1818 | */ |
---|
1791 | 1819 | u8 num_of_vrings; |
---|
1792 | 1820 | u8 reserved[3]; |
---|
1793 | | - struct wmi_vring_priority vring_priority[0]; |
---|
| 1821 | + struct wmi_vring_priority vring_priority[]; |
---|
1794 | 1822 | } __packed; |
---|
1795 | 1823 | |
---|
1796 | 1824 | /* WMI_BF_CONTROL_CMDID - deprecated */ |
---|
.. | .. |
---|
1882 | 1910 | u8 each_mcs_cfg_size; |
---|
1883 | 1911 | u8 reserved1; |
---|
1884 | 1912 | /* Configuration for each MCS */ |
---|
1885 | | - struct wmi_bf_control_ex_mcs each_mcs_cfg[0]; |
---|
| 1913 | + struct wmi_bf_control_ex_mcs each_mcs_cfg[]; |
---|
1886 | 1914 | } __packed; |
---|
1887 | 1915 | |
---|
1888 | 1916 | /* WMI_LINK_STATS_CMD */ |
---|
.. | .. |
---|
1924 | 1952 | __le32 slot_size; |
---|
1925 | 1953 | } __packed; |
---|
1926 | 1954 | |
---|
| 1955 | +/* WMI_TEMP_SENSE_ALL_CMDID */ |
---|
| 1956 | +struct wmi_temp_sense_all_cmd { |
---|
| 1957 | + u8 measure_baseband_en; |
---|
| 1958 | + u8 measure_rf_en; |
---|
| 1959 | + u8 measure_mode; |
---|
| 1960 | + u8 reserved; |
---|
| 1961 | +} __packed; |
---|
| 1962 | + |
---|
1927 | 1963 | /* WMI Events |
---|
1928 | 1964 | * List of Events (target to host) |
---|
1929 | 1965 | */ |
---|
.. | .. |
---|
1938 | 1974 | WMI_REPORT_STATISTICS_EVENTID = 0x100B, |
---|
1939 | 1975 | WMI_FT_AUTH_STATUS_EVENTID = 0x100C, |
---|
1940 | 1976 | WMI_FT_REASSOC_STATUS_EVENTID = 0x100D, |
---|
| 1977 | + WMI_LINK_MONITOR_EVENTID = 0x100E, |
---|
1941 | 1978 | WMI_RADAR_GENERAL_CONFIG_EVENTID = 0x1100, |
---|
1942 | 1979 | WMI_RADAR_CONFIG_SELECT_EVENTID = 0x1101, |
---|
1943 | 1980 | WMI_RADAR_PARAMS_CONFIG_EVENTID = 0x1102, |
---|
.. | .. |
---|
1981 | 2018 | WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, |
---|
1982 | 2019 | WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, |
---|
1983 | 2020 | WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, |
---|
| 2021 | + WMI_BF_TRIG_EVENTID = 0x183A, |
---|
1984 | 2022 | WMI_RS_MGMT_DONE_EVENTID = 0x1852, |
---|
1985 | 2023 | WMI_RF_MGMT_STATUS_EVENTID = 0x1853, |
---|
1986 | 2024 | WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, |
---|
.. | .. |
---|
1988 | 2026 | WMI_TX_MGMT_PACKET_EVENTID = 0x1841, |
---|
1989 | 2027 | WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID = 0x1842, |
---|
1990 | 2028 | WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENTID = 0x1843, |
---|
| 2029 | + WMI_SET_LINK_MONITOR_EVENTID = 0x1845, |
---|
1991 | 2030 | WMI_RF_XPM_READ_RESULT_EVENTID = 0x1856, |
---|
1992 | 2031 | WMI_RF_XPM_WRITE_RESULT_EVENTID = 0x1857, |
---|
1993 | 2032 | WMI_LED_CFG_DONE_EVENTID = 0x1858, |
---|
.. | .. |
---|
2081 | 2120 | WMI_SET_AP_SLOT_SIZE_EVENTID = 0x1A0F, |
---|
2082 | 2121 | WMI_SET_VRING_PRIORITY_WEIGHT_EVENTID = 0x1A10, |
---|
2083 | 2122 | WMI_SET_VRING_PRIORITY_EVENTID = 0x1A11, |
---|
| 2123 | + WMI_RBUFCAP_CFG_EVENTID = 0x1A12, |
---|
| 2124 | + WMI_TEMP_SENSE_ALL_DONE_EVENTID = 0x1A13, |
---|
2084 | 2125 | WMI_SET_CHANNEL_EVENTID = 0x9000, |
---|
2085 | 2126 | WMI_ASSOC_REQ_EVENTID = 0x9001, |
---|
2086 | 2127 | WMI_EAPOL_RX_EVENTID = 0x9002, |
---|
.. | .. |
---|
2151 | 2192 | /* FW capabilities info |
---|
2152 | 2193 | * Must be the last member of the struct |
---|
2153 | 2194 | */ |
---|
2154 | | - __le32 fw_capabilities[0]; |
---|
| 2195 | + __le32 fw_capabilities[]; |
---|
2155 | 2196 | } __packed; |
---|
2156 | 2197 | |
---|
2157 | 2198 | /* WMI_GET_RF_STATUS_EVENTID */ |
---|
.. | .. |
---|
2229 | 2270 | struct wmi_eapol_rx_event { |
---|
2230 | 2271 | u8 src_mac[WMI_MAC_LEN]; |
---|
2231 | 2272 | __le16 eapol_len; |
---|
2232 | | - u8 eapol[0]; |
---|
| 2273 | + u8 eapol[]; |
---|
2233 | 2274 | } __packed; |
---|
2234 | 2275 | |
---|
2235 | 2276 | /* WMI_READY_EVENTID */ |
---|
.. | .. |
---|
2266 | 2307 | __le32 status; |
---|
2267 | 2308 | __le64 tsf; |
---|
2268 | 2309 | s8 rssi; |
---|
2269 | | - u8 reserved0[3]; |
---|
| 2310 | + /* enum wmi_edmg_tx_mode */ |
---|
| 2311 | + u8 tx_mode; |
---|
| 2312 | + u8 reserved0[2]; |
---|
2270 | 2313 | __le32 tx_tpt; |
---|
2271 | 2314 | __le32 tx_goodput; |
---|
2272 | 2315 | __le32 rx_goodput; |
---|
.. | .. |
---|
2282 | 2325 | |
---|
2283 | 2326 | /* WMI_CONNECT_EVENTID */ |
---|
2284 | 2327 | struct wmi_connect_event { |
---|
| 2328 | + /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is |
---|
| 2329 | + * the primary channel number |
---|
| 2330 | + */ |
---|
2285 | 2331 | u8 channel; |
---|
2286 | | - u8 reserved0; |
---|
| 2332 | + /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
---|
| 2333 | + u8 edmg_channel; |
---|
2287 | 2334 | u8 bssid[WMI_MAC_LEN]; |
---|
2288 | 2335 | __le16 listen_interval; |
---|
2289 | 2336 | __le16 beacon_interval; |
---|
.. | .. |
---|
2296 | 2343 | u8 aid; |
---|
2297 | 2344 | u8 reserved2[2]; |
---|
2298 | 2345 | /* not in use */ |
---|
2299 | | - u8 assoc_info[0]; |
---|
| 2346 | + u8 assoc_info[]; |
---|
2300 | 2347 | } __packed; |
---|
2301 | 2348 | |
---|
2302 | 2349 | /* disconnect_reason */ |
---|
.. | .. |
---|
2315 | 2362 | WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, |
---|
2316 | 2363 | WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, |
---|
2317 | 2364 | WMI_DIS_REASON_IBSS_MERGE = 0x0E, |
---|
| 2365 | + WMI_DIS_REASON_HIGH_TEMPERATURE = 0x0F, |
---|
2318 | 2366 | }; |
---|
2319 | 2367 | |
---|
2320 | 2368 | /* WMI_DISCONNECT_EVENTID */ |
---|
.. | .. |
---|
2328 | 2376 | /* last assoc req may passed to host - not in used */ |
---|
2329 | 2377 | u8 assoc_resp_len; |
---|
2330 | 2378 | /* last assoc req may passed to host - not in used */ |
---|
2331 | | - u8 assoc_info[0]; |
---|
| 2379 | + u8 assoc_info[]; |
---|
2332 | 2380 | } __packed; |
---|
2333 | 2381 | |
---|
2334 | 2382 | /* WMI_SCAN_COMPLETE_EVENTID */ |
---|
.. | .. |
---|
2352 | 2400 | u8 reserved[3]; |
---|
2353 | 2401 | u8 mac_addr[WMI_MAC_LEN]; |
---|
2354 | 2402 | __le16 ie_len; |
---|
2355 | | - u8 ie_info[0]; |
---|
| 2403 | + u8 ie_info[]; |
---|
2356 | 2404 | } __packed; |
---|
2357 | 2405 | |
---|
2358 | 2406 | /* WMI_FT_REASSOC_STATUS_EVENTID */ |
---|
.. | .. |
---|
2369 | 2417 | __le16 beacon_ie_len; |
---|
2370 | 2418 | __le16 reassoc_req_ie_len; |
---|
2371 | 2419 | __le16 reassoc_resp_ie_len; |
---|
2372 | | - u8 ie_info[0]; |
---|
| 2420 | + u8 reserved[4]; |
---|
| 2421 | + u8 ie_info[]; |
---|
2373 | 2422 | } __packed; |
---|
2374 | 2423 | |
---|
2375 | 2424 | /* wmi_rx_mgmt_info */ |
---|
.. | .. |
---|
2412 | 2461 | |
---|
2413 | 2462 | struct wmi_sched_scan_result_event { |
---|
2414 | 2463 | struct wmi_rx_mgmt_info info; |
---|
2415 | | - u8 payload[0]; |
---|
| 2464 | + u8 payload[]; |
---|
2416 | 2465 | } __packed; |
---|
2417 | 2466 | |
---|
2418 | 2467 | /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ |
---|
.. | .. |
---|
2443 | 2492 | __le16 filled; |
---|
2444 | 2493 | u8 num_scanned_channels; |
---|
2445 | 2494 | u8 reserved; |
---|
2446 | | - struct scan_acs_info scan_info_list[0]; |
---|
| 2495 | + struct scan_acs_info scan_info_list[]; |
---|
2447 | 2496 | } __packed; |
---|
2448 | 2497 | |
---|
2449 | 2498 | /* WMI_BA_STATUS_EVENTID */ |
---|
.. | .. |
---|
2702 | 2751 | u8 status; |
---|
2703 | 2752 | u8 reserved[3]; |
---|
2704 | 2753 | /* requested num_bytes of data */ |
---|
2705 | | - u8 data_bytes[0]; |
---|
| 2754 | + u8 data_bytes[]; |
---|
2706 | 2755 | } __packed; |
---|
2707 | 2756 | |
---|
2708 | 2757 | /* EVENT: WMI_RF_XPM_WRITE_RESULT_EVENTID */ |
---|
.. | .. |
---|
2720 | 2769 | /* WMI_RX_MGMT_PACKET_EVENTID */ |
---|
2721 | 2770 | struct wmi_rx_mgmt_packet_event { |
---|
2722 | 2771 | struct wmi_rx_mgmt_info info; |
---|
2723 | | - u8 payload[0]; |
---|
| 2772 | + u8 payload[]; |
---|
2724 | 2773 | } __packed; |
---|
2725 | 2774 | |
---|
2726 | 2775 | /* WMI_ECHO_RSP_EVENTID */ |
---|
.. | .. |
---|
2760 | 2809 | */ |
---|
2761 | 2810 | struct wmi_temp_sense_done_event { |
---|
2762 | 2811 | /* Temperature times 1000 (actual temperature will be achieved by |
---|
2763 | | - * dividing the value by 1000) |
---|
| 2812 | + * dividing the value by 1000). When temperature cannot be read from |
---|
| 2813 | + * device return WMI_INVALID_TEMPERATURE |
---|
2764 | 2814 | */ |
---|
2765 | 2815 | __le32 baseband_t1000; |
---|
2766 | 2816 | /* Temperature times 1000 (actual temperature will be achieved by |
---|
2767 | | - * dividing the value by 1000) |
---|
| 2817 | + * dividing the value by 1000). When temperature cannot be read from |
---|
| 2818 | + * device return WMI_INVALID_TEMPERATURE |
---|
2768 | 2819 | */ |
---|
2769 | 2820 | __le32 rf_t1000; |
---|
2770 | 2821 | } __packed; |
---|
.. | .. |
---|
2918 | 2969 | u8 each_mcs_cfg_size; |
---|
2919 | 2970 | u8 reserved[3]; |
---|
2920 | 2971 | /* Configuration for each MCS */ |
---|
2921 | | - struct wmi_rs_cfg_ex_mcs each_mcs_cfg[0]; |
---|
| 2972 | + struct wmi_rs_cfg_ex_mcs each_mcs_cfg[]; |
---|
2922 | 2973 | } __packed; |
---|
2923 | 2974 | |
---|
2924 | 2975 | /* WMI_RS_CFG_EX_EVENTID */ |
---|
.. | .. |
---|
3127 | 3178 | u8 each_mcs_results_size; |
---|
3128 | 3179 | u8 reserved1[3]; |
---|
3129 | 3180 | /* Results for each MCS */ |
---|
3130 | | - struct wmi_rs_results_ex_mcs each_mcs_results[0]; |
---|
| 3181 | + struct wmi_rs_results_ex_mcs each_mcs_results[]; |
---|
3131 | 3182 | } __packed; |
---|
3132 | 3183 | |
---|
3133 | 3184 | /* BRP antenna limit mode */ |
---|
.. | .. |
---|
3164 | 3215 | /* wmi_fw_status */ |
---|
3165 | 3216 | u8 status; |
---|
3166 | 3217 | u8 reserved[3]; |
---|
| 3218 | +} __packed; |
---|
| 3219 | + |
---|
| 3220 | +enum wmi_bf_type { |
---|
| 3221 | + WMI_BF_TYPE_SLS = 0x00, |
---|
| 3222 | + WMI_BF_TYPE_BRP_RX = 0x01, |
---|
| 3223 | +}; |
---|
| 3224 | + |
---|
| 3225 | +/* WMI_BF_TRIG_CMDID */ |
---|
| 3226 | +struct wmi_bf_trig_cmd { |
---|
| 3227 | + /* enum wmi_bf_type - type of requested beamforming */ |
---|
| 3228 | + u8 bf_type; |
---|
| 3229 | + /* used only for WMI_BF_TYPE_BRP_RX */ |
---|
| 3230 | + u8 cid; |
---|
| 3231 | + /* used only for WMI_BF_TYPE_SLS */ |
---|
| 3232 | + u8 dst_mac[WMI_MAC_LEN]; |
---|
| 3233 | + u8 reserved[4]; |
---|
| 3234 | +} __packed; |
---|
| 3235 | + |
---|
| 3236 | +/* WMI_BF_TRIG_EVENTID */ |
---|
| 3237 | +struct wmi_bf_trig_event { |
---|
| 3238 | + /* enum wmi_fw_status */ |
---|
| 3239 | + u8 status; |
---|
| 3240 | + u8 cid; |
---|
| 3241 | + u8 reserved[2]; |
---|
3167 | 3242 | } __packed; |
---|
3168 | 3243 | |
---|
3169 | 3244 | /* broadcast connection ID */ |
---|
.. | .. |
---|
3240 | 3315 | __le32 cid; |
---|
3241 | 3316 | } __packed; |
---|
3242 | 3317 | |
---|
| 3318 | +/* WMI_SET_LINK_MONITOR_CMDID */ |
---|
| 3319 | +struct wmi_set_link_monitor_cmd { |
---|
| 3320 | + u8 rssi_hyst; |
---|
| 3321 | + u8 reserved[12]; |
---|
| 3322 | + u8 rssi_thresholds_list_size; |
---|
| 3323 | + s8 rssi_thresholds_list[]; |
---|
| 3324 | +} __packed; |
---|
| 3325 | + |
---|
| 3326 | +/* wmi_link_monitor_event_type */ |
---|
| 3327 | +enum wmi_link_monitor_event_type { |
---|
| 3328 | + WMI_LINK_MONITOR_NOTIF_RSSI_THRESHOLD_EVT = 0x00, |
---|
| 3329 | + WMI_LINK_MONITOR_NOTIF_TX_ERR_EVT = 0x01, |
---|
| 3330 | + WMI_LINK_MONITOR_NOTIF_THERMAL_EVT = 0x02, |
---|
| 3331 | +}; |
---|
| 3332 | + |
---|
| 3333 | +/* WMI_SET_LINK_MONITOR_EVENTID */ |
---|
| 3334 | +struct wmi_set_link_monitor_event { |
---|
| 3335 | + /* wmi_fw_status */ |
---|
| 3336 | + u8 status; |
---|
| 3337 | + u8 reserved[3]; |
---|
| 3338 | +} __packed; |
---|
| 3339 | + |
---|
| 3340 | +/* WMI_LINK_MONITOR_EVENTID */ |
---|
| 3341 | +struct wmi_link_monitor_event { |
---|
| 3342 | + /* link_monitor_event_type */ |
---|
| 3343 | + u8 type; |
---|
| 3344 | + s8 rssi_level; |
---|
| 3345 | + u8 reserved[2]; |
---|
| 3346 | +} __packed; |
---|
| 3347 | + |
---|
3243 | 3348 | /* WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID */ |
---|
3244 | 3349 | struct wmi_link_maintain_cfg_write_done_event { |
---|
3245 | 3350 | /* requested connection ID */ |
---|
.. | .. |
---|
3261 | 3366 | enum wmi_traffic_suspend_status { |
---|
3262 | 3367 | WMI_TRAFFIC_SUSPEND_APPROVED = 0x0, |
---|
3263 | 3368 | WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE = 0x1, |
---|
| 3369 | + WMI_TRAFFIC_SUSPEND_REJECTED_DISCONNECT = 0x2, |
---|
| 3370 | + WMI_TRAFFIC_SUSPEND_REJECTED_OTHER = 0x3, |
---|
3264 | 3371 | }; |
---|
3265 | 3372 | |
---|
3266 | 3373 | /* WMI_TRAFFIC_SUSPEND_EVENTID */ |
---|
.. | .. |
---|
3280 | 3387 | WMI_RESUME_TRIGGER_UCAST_RX = 0x2, |
---|
3281 | 3388 | WMI_RESUME_TRIGGER_BCAST_RX = 0x4, |
---|
3282 | 3389 | WMI_RESUME_TRIGGER_WMI_EVT = 0x8, |
---|
| 3390 | + WMI_RESUME_TRIGGER_DISCONNECT = 0x10, |
---|
3283 | 3391 | }; |
---|
3284 | 3392 | |
---|
3285 | 3393 | /* WMI_TRAFFIC_RESUME_EVENTID */ |
---|
.. | .. |
---|
3529 | 3637 | /* Measurments are from RFs, defined by the mask */ |
---|
3530 | 3638 | __le32 meas_rf_mask; |
---|
3531 | 3639 | u8 reserved0[3]; |
---|
3532 | | - struct wmi_responder_ftm_res responder_ftm_res[0]; |
---|
| 3640 | + struct wmi_responder_ftm_res responder_ftm_res[]; |
---|
3533 | 3641 | } __packed; |
---|
3534 | 3642 | |
---|
3535 | 3643 | /* WMI_TOF_CFG_RESPONDER_EVENTID */ |
---|
.. | .. |
---|
3561 | 3669 | /* data report length */ |
---|
3562 | 3670 | u8 len; |
---|
3563 | 3671 | /* data report payload */ |
---|
3564 | | - u8 report[0]; |
---|
| 3672 | + u8 report[]; |
---|
3565 | 3673 | } __packed; |
---|
3566 | 3674 | |
---|
3567 | 3675 | /* WMI_TOF_SET_TX_RX_OFFSET_EVENTID */ |
---|
.. | .. |
---|
3977 | 4085 | u8 has_next; |
---|
3978 | 4086 | u8 reserved[5]; |
---|
3979 | 4087 | /* a stream of wmi_link_stats_record_s */ |
---|
3980 | | - u8 payload[0]; |
---|
| 4088 | + u8 payload[]; |
---|
3981 | 4089 | } __packed; |
---|
3982 | 4090 | |
---|
3983 | 4091 | /* WMI_LINK_STATS_EVENT */ |
---|
.. | .. |
---|
3986 | 4094 | u8 record_type_id; |
---|
3987 | 4095 | u8 reserved; |
---|
3988 | 4096 | __le16 record_size; |
---|
3989 | | - u8 record[0]; |
---|
| 4097 | + u8 record[]; |
---|
3990 | 4098 | } __packed; |
---|
3991 | 4099 | |
---|
3992 | 4100 | /* WMI_LINK_STATS_TYPE_BASIC */ |
---|
.. | .. |
---|
4055 | 4163 | u8 reserved[3]; |
---|
4056 | 4164 | } __packed; |
---|
4057 | 4165 | |
---|
| 4166 | +/* WMI_RADAR_PCI_CTRL_BLOCK struct */ |
---|
| 4167 | +struct wmi_radar_pci_ctrl_block { |
---|
| 4168 | + /* last fw tail address index */ |
---|
| 4169 | + __le32 fw_tail_index; |
---|
| 4170 | + /* last SW head address index known to FW */ |
---|
| 4171 | + __le32 sw_head_index; |
---|
| 4172 | + __le32 last_wr_pulse_tsf_low; |
---|
| 4173 | + __le32 last_wr_pulse_count; |
---|
| 4174 | + __le32 last_wr_in_bytes; |
---|
| 4175 | + __le32 last_wr_pulse_id; |
---|
| 4176 | + __le32 last_wr_burst_id; |
---|
| 4177 | + /* When pre overflow detected, advance sw head in unit of pulses */ |
---|
| 4178 | + __le32 sw_head_inc; |
---|
| 4179 | + __le32 reserved[8]; |
---|
| 4180 | +} __packed; |
---|
| 4181 | + |
---|
| 4182 | +/* WMI_RBUFCAP_CFG_CMD */ |
---|
| 4183 | +struct wmi_rbufcap_cfg_cmd { |
---|
| 4184 | + u8 enable; |
---|
| 4185 | + u8 reserved; |
---|
| 4186 | + /* RBUFCAP indicates rx space unavailable when number of rx |
---|
| 4187 | + * descriptors drops below this threshold. Set 0 to use system |
---|
| 4188 | + * default |
---|
| 4189 | + */ |
---|
| 4190 | + __le16 rx_desc_threshold; |
---|
| 4191 | +} __packed; |
---|
| 4192 | + |
---|
| 4193 | +/* WMI_RBUFCAP_CFG_EVENTID */ |
---|
| 4194 | +struct wmi_rbufcap_cfg_event { |
---|
| 4195 | + /* enum wmi_fw_status */ |
---|
| 4196 | + u8 status; |
---|
| 4197 | + u8 reserved[3]; |
---|
| 4198 | +} __packed; |
---|
| 4199 | + |
---|
| 4200 | +/* WMI_TEMP_SENSE_ALL_DONE_EVENTID |
---|
| 4201 | + * Measure MAC and all radio temperatures |
---|
| 4202 | + */ |
---|
| 4203 | +struct wmi_temp_sense_all_done_event { |
---|
| 4204 | + /* enum wmi_fw_status */ |
---|
| 4205 | + u8 status; |
---|
| 4206 | + /* Bitmap of connected RFs */ |
---|
| 4207 | + u8 rf_bitmap; |
---|
| 4208 | + u8 reserved[2]; |
---|
| 4209 | + /* Temperature times 1000 (actual temperature will be achieved by |
---|
| 4210 | + * dividing the value by 1000). When temperature cannot be read from |
---|
| 4211 | + * device return WMI_INVALID_TEMPERATURE |
---|
| 4212 | + */ |
---|
| 4213 | + __le32 rf_t1000[WMI_MAX_XIF_PORTS_NUM]; |
---|
| 4214 | + /* Temperature times 1000 (actual temperature will be achieved by |
---|
| 4215 | + * dividing the value by 1000). When temperature cannot be read from |
---|
| 4216 | + * device return WMI_INVALID_TEMPERATURE |
---|
| 4217 | + */ |
---|
| 4218 | + __le32 baseband_t1000; |
---|
| 4219 | +} __packed; |
---|
| 4220 | + |
---|
4058 | 4221 | #endif /* __WILOCITY_WMI_H__ */ |
---|