| .. | .. |
|---|
| 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__ */ |
|---|