18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * Copyright (c) 2013 Eugene Krasnikov <k.eugene.e@gmail.com>
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Permission to use, copy, modify, and/or distribute this software for any
58c2ecf20Sopenharmony_ci * purpose with or without fee is hereby granted, provided that the above
68c2ecf20Sopenharmony_ci * copyright notice and this permission notice appear in all copies.
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
98c2ecf20Sopenharmony_ci * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
108c2ecf20Sopenharmony_ci * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
118c2ecf20Sopenharmony_ci * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
128c2ecf20Sopenharmony_ci * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
138c2ecf20Sopenharmony_ci * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
148c2ecf20Sopenharmony_ci * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
158c2ecf20Sopenharmony_ci */
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#ifndef _HAL_H_
188c2ecf20Sopenharmony_ci#define _HAL_H_
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci/*---------------------------------------------------------------------------
218c2ecf20Sopenharmony_ci  API VERSIONING INFORMATION
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci  The RIVA API is versioned as MAJOR.MINOR.VERSION.REVISION
248c2ecf20Sopenharmony_ci  The MAJOR is incremented for major product/architecture changes
258c2ecf20Sopenharmony_ci      (and then MINOR/VERSION/REVISION are zeroed)
268c2ecf20Sopenharmony_ci  The MINOR is incremented for minor product/architecture changes
278c2ecf20Sopenharmony_ci      (and then VERSION/REVISION are zeroed)
288c2ecf20Sopenharmony_ci  The VERSION is incremented if a significant API change occurs
298c2ecf20Sopenharmony_ci      (and then REVISION is zeroed)
308c2ecf20Sopenharmony_ci  The REVISION is incremented if an insignificant API change occurs
318c2ecf20Sopenharmony_ci      or if a new API is added
328c2ecf20Sopenharmony_ci  All values are in the range 0..255 (ie they are 8-bit values)
338c2ecf20Sopenharmony_ci ---------------------------------------------------------------------------*/
348c2ecf20Sopenharmony_ci#define WCN36XX_HAL_VER_MAJOR 1
358c2ecf20Sopenharmony_ci#define WCN36XX_HAL_VER_MINOR 4
368c2ecf20Sopenharmony_ci#define WCN36XX_HAL_VER_VERSION 1
378c2ecf20Sopenharmony_ci#define WCN36XX_HAL_VER_REVISION 2
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci/* This is to force compiler to use the maximum of an int ( 4 bytes ) */
408c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MAX_ENUM_SIZE    0x7FFFFFFF
418c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MSG_TYPE_MAX_ENUM_SIZE    0x7FFF
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci/* Max no. of transmit categories */
448c2ecf20Sopenharmony_ci#define STACFG_MAX_TC    8
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci/* The maximum value of access category */
478c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MAX_AC  4
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci#define WCN36XX_HAL_IPV4_ADDR_LEN       4
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci#define WCN36XX_HAL_STA_INVALID_IDX 0xFF
528c2ecf20Sopenharmony_ci#define WCN36XX_HAL_BSS_INVALID_IDX 0xFF
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci/* Default Beacon template size */
558c2ecf20Sopenharmony_ci#define BEACON_TEMPLATE_SIZE 0x180
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci/* Minimum PVM size that the FW expects. See comment in smd.c for details. */
588c2ecf20Sopenharmony_ci#define TIM_MIN_PVM_SIZE 6
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci/* Param Change Bitmap sent to HAL */
618c2ecf20Sopenharmony_ci#define PARAM_BCN_INTERVAL_CHANGED                      (1 << 0)
628c2ecf20Sopenharmony_ci#define PARAM_SHORT_PREAMBLE_CHANGED                 (1 << 1)
638c2ecf20Sopenharmony_ci#define PARAM_SHORT_SLOT_TIME_CHANGED                 (1 << 2)
648c2ecf20Sopenharmony_ci#define PARAM_llACOEXIST_CHANGED                            (1 << 3)
658c2ecf20Sopenharmony_ci#define PARAM_llBCOEXIST_CHANGED                            (1 << 4)
668c2ecf20Sopenharmony_ci#define PARAM_llGCOEXIST_CHANGED                            (1 << 5)
678c2ecf20Sopenharmony_ci#define PARAM_HT20MHZCOEXIST_CHANGED                  (1<<6)
688c2ecf20Sopenharmony_ci#define PARAM_NON_GF_DEVICES_PRESENT_CHANGED (1<<7)
698c2ecf20Sopenharmony_ci#define PARAM_RIFS_MODE_CHANGED                            (1<<8)
708c2ecf20Sopenharmony_ci#define PARAM_LSIG_TXOP_FULL_SUPPORT_CHANGED   (1<<9)
718c2ecf20Sopenharmony_ci#define PARAM_OBSS_MODE_CHANGED                               (1<<10)
728c2ecf20Sopenharmony_ci#define PARAM_BEACON_UPDATE_MASK \
738c2ecf20Sopenharmony_ci	(PARAM_BCN_INTERVAL_CHANGED |					\
748c2ecf20Sopenharmony_ci	 PARAM_SHORT_PREAMBLE_CHANGED |					\
758c2ecf20Sopenharmony_ci	 PARAM_SHORT_SLOT_TIME_CHANGED |				\
768c2ecf20Sopenharmony_ci	 PARAM_llACOEXIST_CHANGED |					\
778c2ecf20Sopenharmony_ci	 PARAM_llBCOEXIST_CHANGED |					\
788c2ecf20Sopenharmony_ci	 PARAM_llGCOEXIST_CHANGED |					\
798c2ecf20Sopenharmony_ci	 PARAM_HT20MHZCOEXIST_CHANGED |					\
808c2ecf20Sopenharmony_ci	 PARAM_NON_GF_DEVICES_PRESENT_CHANGED |				\
818c2ecf20Sopenharmony_ci	 PARAM_RIFS_MODE_CHANGED |					\
828c2ecf20Sopenharmony_ci	 PARAM_LSIG_TXOP_FULL_SUPPORT_CHANGED |				\
838c2ecf20Sopenharmony_ci	 PARAM_OBSS_MODE_CHANGED)
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci/* dump command response Buffer size */
868c2ecf20Sopenharmony_ci#define DUMPCMD_RSP_BUFFER 100
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci/* version string max length (including NULL) */
898c2ecf20Sopenharmony_ci#define WCN36XX_HAL_VERSION_LENGTH  64
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci/* How many frames until we start a-mpdu TX session */
928c2ecf20Sopenharmony_ci#define WCN36XX_AMPDU_START_THRESH	20
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci#define WCN36XX_MAX_SCAN_SSIDS		9
958c2ecf20Sopenharmony_ci#define WCN36XX_MAX_SCAN_IE_LEN		500
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci/* message types for messages exchanged between WDI and HAL */
988c2ecf20Sopenharmony_cienum wcn36xx_hal_host_msg_type {
998c2ecf20Sopenharmony_ci	/* Init/De-Init */
1008c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_REQ = 0,
1018c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_RSP = 1,
1028c2ecf20Sopenharmony_ci	WCN36XX_HAL_STOP_REQ = 2,
1038c2ecf20Sopenharmony_ci	WCN36XX_HAL_STOP_RSP = 3,
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci	/* Scan */
1068c2ecf20Sopenharmony_ci	WCN36XX_HAL_INIT_SCAN_REQ = 4,
1078c2ecf20Sopenharmony_ci	WCN36XX_HAL_INIT_SCAN_RSP = 5,
1088c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_SCAN_REQ = 6,
1098c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_SCAN_RSP = 7,
1108c2ecf20Sopenharmony_ci	WCN36XX_HAL_END_SCAN_REQ = 8,
1118c2ecf20Sopenharmony_ci	WCN36XX_HAL_END_SCAN_RSP = 9,
1128c2ecf20Sopenharmony_ci	WCN36XX_HAL_FINISH_SCAN_REQ = 10,
1138c2ecf20Sopenharmony_ci	WCN36XX_HAL_FINISH_SCAN_RSP = 11,
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci	/* HW STA configuration/deconfiguration */
1168c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIG_STA_REQ = 12,
1178c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIG_STA_RSP = 13,
1188c2ecf20Sopenharmony_ci	WCN36XX_HAL_DELETE_STA_REQ = 14,
1198c2ecf20Sopenharmony_ci	WCN36XX_HAL_DELETE_STA_RSP = 15,
1208c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIG_BSS_REQ = 16,
1218c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIG_BSS_RSP = 17,
1228c2ecf20Sopenharmony_ci	WCN36XX_HAL_DELETE_BSS_REQ = 18,
1238c2ecf20Sopenharmony_ci	WCN36XX_HAL_DELETE_BSS_RSP = 19,
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci	/* Infra STA asscoiation */
1268c2ecf20Sopenharmony_ci	WCN36XX_HAL_JOIN_REQ = 20,
1278c2ecf20Sopenharmony_ci	WCN36XX_HAL_JOIN_RSP = 21,
1288c2ecf20Sopenharmony_ci	WCN36XX_HAL_POST_ASSOC_REQ = 22,
1298c2ecf20Sopenharmony_ci	WCN36XX_HAL_POST_ASSOC_RSP = 23,
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci	/* Security */
1328c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_BSSKEY_REQ = 24,
1338c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_BSSKEY_RSP = 25,
1348c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_STAKEY_REQ = 26,
1358c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_STAKEY_RSP = 27,
1368c2ecf20Sopenharmony_ci	WCN36XX_HAL_RMV_BSSKEY_REQ = 28,
1378c2ecf20Sopenharmony_ci	WCN36XX_HAL_RMV_BSSKEY_RSP = 29,
1388c2ecf20Sopenharmony_ci	WCN36XX_HAL_RMV_STAKEY_REQ = 30,
1398c2ecf20Sopenharmony_ci	WCN36XX_HAL_RMV_STAKEY_RSP = 31,
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci	/* Qos Related */
1428c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_TS_REQ = 32,
1438c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_TS_RSP = 33,
1448c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_TS_REQ = 34,
1458c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_TS_RSP = 35,
1468c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPD_EDCA_PARAMS_REQ = 36,
1478c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPD_EDCA_PARAMS_RSP = 37,
1488c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_BA_REQ = 38,
1498c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_BA_RSP = 39,
1508c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_BA_REQ = 40,
1518c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_BA_RSP = 41,
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ci	WCN36XX_HAL_CH_SWITCH_REQ = 42,
1548c2ecf20Sopenharmony_ci	WCN36XX_HAL_CH_SWITCH_RSP = 43,
1558c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_LINK_ST_REQ = 44,
1568c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_LINK_ST_RSP = 45,
1578c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_STATS_REQ = 46,
1588c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_STATS_RSP = 47,
1598c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_CFG_REQ = 48,
1608c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_CFG_RSP = 49,
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ci	WCN36XX_HAL_MISSED_BEACON_IND = 50,
1638c2ecf20Sopenharmony_ci	WCN36XX_HAL_UNKNOWN_ADDR2_FRAME_RX_IND = 51,
1648c2ecf20Sopenharmony_ci	WCN36XX_HAL_MIC_FAILURE_IND = 52,
1658c2ecf20Sopenharmony_ci	WCN36XX_HAL_FATAL_ERROR_IND = 53,
1668c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_KEYDONE_MSG = 54,
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ci	/* NV Interface */
1698c2ecf20Sopenharmony_ci	WCN36XX_HAL_DOWNLOAD_NV_REQ = 55,
1708c2ecf20Sopenharmony_ci	WCN36XX_HAL_DOWNLOAD_NV_RSP = 56,
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_BA_SESSION_REQ = 57,
1738c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_BA_SESSION_RSP = 58,
1748c2ecf20Sopenharmony_ci	WCN36XX_HAL_TRIGGER_BA_REQ = 59,
1758c2ecf20Sopenharmony_ci	WCN36XX_HAL_TRIGGER_BA_RSP = 60,
1768c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_BEACON_REQ = 61,
1778c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_BEACON_RSP = 62,
1788c2ecf20Sopenharmony_ci	WCN36XX_HAL_SEND_BEACON_REQ = 63,
1798c2ecf20Sopenharmony_ci	WCN36XX_HAL_SEND_BEACON_RSP = 64,
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_BCASTKEY_REQ = 65,
1828c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_BCASTKEY_RSP = 66,
1838c2ecf20Sopenharmony_ci	WCN36XX_HAL_DELETE_STA_CONTEXT_IND = 67,
1848c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ = 68,
1858c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP = 69,
1868c2ecf20Sopenharmony_ci
1878c2ecf20Sopenharmony_ci	/* PTT interface support */
1888c2ecf20Sopenharmony_ci	WCN36XX_HAL_PROCESS_PTT_REQ = 70,
1898c2ecf20Sopenharmony_ci	WCN36XX_HAL_PROCESS_PTT_RSP = 71,
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci	/* BTAMP related events */
1928c2ecf20Sopenharmony_ci	WCN36XX_HAL_SIGNAL_BTAMP_EVENT_REQ = 72,
1938c2ecf20Sopenharmony_ci	WCN36XX_HAL_SIGNAL_BTAMP_EVENT_RSP = 73,
1948c2ecf20Sopenharmony_ci	WCN36XX_HAL_TL_HAL_FLUSH_AC_REQ = 74,
1958c2ecf20Sopenharmony_ci	WCN36XX_HAL_TL_HAL_FLUSH_AC_RSP = 75,
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_IMPS_REQ = 76,
1988c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_IMPS_REQ = 77,
1998c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_BMPS_REQ = 78,
2008c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_BMPS_REQ = 79,
2018c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_UAPSD_REQ = 80,
2028c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_UAPSD_REQ = 81,
2038c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_UAPSD_PARAM_REQ = 82,
2048c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIGURE_RXP_FILTER_REQ = 83,
2058c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_BCN_FILTER_REQ = 84,
2068c2ecf20Sopenharmony_ci	WCN36XX_HAL_REM_BCN_FILTER_REQ = 85,
2078c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_WOWL_BCAST_PTRN = 86,
2088c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_WOWL_BCAST_PTRN = 87,
2098c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_WOWL_REQ = 88,
2108c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_WOWL_REQ = 89,
2118c2ecf20Sopenharmony_ci	WCN36XX_HAL_HOST_OFFLOAD_REQ = 90,
2128c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_RSSI_THRESH_REQ = 91,
2138c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_RSSI_REQ = 92,
2148c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_UAPSD_AC_PARAMS_REQ = 93,
2158c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ = 94,
2168c2ecf20Sopenharmony_ci
2178c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_IMPS_RSP = 95,
2188c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_IMPS_RSP = 96,
2198c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_BMPS_RSP = 97,
2208c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_BMPS_RSP = 98,
2218c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_UAPSD_RSP = 99,
2228c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_UAPSD_RSP = 100,
2238c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_UAPSD_AC_PARAMS_RSP = 101,
2248c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_UAPSD_PARAM_RSP = 102,
2258c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIGURE_RXP_FILTER_RSP = 103,
2268c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_BCN_FILTER_RSP = 104,
2278c2ecf20Sopenharmony_ci	WCN36XX_HAL_REM_BCN_FILTER_RSP = 105,
2288c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_RSSI_THRESH_RSP = 106,
2298c2ecf20Sopenharmony_ci	WCN36XX_HAL_HOST_OFFLOAD_RSP = 107,
2308c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_WOWL_BCAST_PTRN_RSP = 108,
2318c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_WOWL_BCAST_PTRN_RSP = 109,
2328c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENTER_WOWL_RSP = 110,
2338c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXIT_WOWL_RSP = 111,
2348c2ecf20Sopenharmony_ci	WCN36XX_HAL_RSSI_NOTIFICATION_IND = 112,
2358c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_RSSI_RSP = 113,
2368c2ecf20Sopenharmony_ci	WCN36XX_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP = 114,
2378c2ecf20Sopenharmony_ci
2388c2ecf20Sopenharmony_ci	/* 11k related events */
2398c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_MAX_TX_POWER_REQ = 115,
2408c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_MAX_TX_POWER_RSP = 116,
2418c2ecf20Sopenharmony_ci
2428c2ecf20Sopenharmony_ci	/* 11R related msgs */
2438c2ecf20Sopenharmony_ci	WCN36XX_HAL_AGGR_ADD_TS_REQ = 117,
2448c2ecf20Sopenharmony_ci	WCN36XX_HAL_AGGR_ADD_TS_RSP = 118,
2458c2ecf20Sopenharmony_ci
2468c2ecf20Sopenharmony_ci	/* P2P  WLAN_FEATURE_P2P */
2478c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_P2P_GONOA_REQ = 119,
2488c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_P2P_GONOA_RSP = 120,
2498c2ecf20Sopenharmony_ci
2508c2ecf20Sopenharmony_ci	/* WLAN Dump commands */
2518c2ecf20Sopenharmony_ci	WCN36XX_HAL_DUMP_COMMAND_REQ = 121,
2528c2ecf20Sopenharmony_ci	WCN36XX_HAL_DUMP_COMMAND_RSP = 122,
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci	/* OEM_DATA FEATURE SUPPORT */
2558c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_OEM_DATA_REQ = 123,
2568c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_OEM_DATA_RSP = 124,
2578c2ecf20Sopenharmony_ci
2588c2ecf20Sopenharmony_ci	/* ADD SELF STA REQ and RSP */
2598c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_STA_SELF_REQ = 125,
2608c2ecf20Sopenharmony_ci	WCN36XX_HAL_ADD_STA_SELF_RSP = 126,
2618c2ecf20Sopenharmony_ci
2628c2ecf20Sopenharmony_ci	/* DEL SELF STA SUPPORT */
2638c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_STA_SELF_REQ = 127,
2648c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_STA_SELF_RSP = 128,
2658c2ecf20Sopenharmony_ci
2668c2ecf20Sopenharmony_ci	/* Coex Indication */
2678c2ecf20Sopenharmony_ci	WCN36XX_HAL_COEX_IND = 129,
2688c2ecf20Sopenharmony_ci
2698c2ecf20Sopenharmony_ci	/* Tx Complete Indication */
2708c2ecf20Sopenharmony_ci	WCN36XX_HAL_OTA_TX_COMPL_IND = 130,
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci	/* Host Suspend/resume messages */
2738c2ecf20Sopenharmony_ci	WCN36XX_HAL_HOST_SUSPEND_IND = 131,
2748c2ecf20Sopenharmony_ci	WCN36XX_HAL_HOST_RESUME_REQ = 132,
2758c2ecf20Sopenharmony_ci	WCN36XX_HAL_HOST_RESUME_RSP = 133,
2768c2ecf20Sopenharmony_ci
2778c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_TX_POWER_REQ = 134,
2788c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_TX_POWER_RSP = 135,
2798c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_TX_POWER_REQ = 136,
2808c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_TX_POWER_RSP = 137,
2818c2ecf20Sopenharmony_ci
2828c2ecf20Sopenharmony_ci	WCN36XX_HAL_P2P_NOA_ATTR_IND = 138,
2838c2ecf20Sopenharmony_ci
2848c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENABLE_RADAR_DETECT_REQ = 139,
2858c2ecf20Sopenharmony_ci	WCN36XX_HAL_ENABLE_RADAR_DETECT_RSP = 140,
2868c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_TPC_REPORT_REQ = 141,
2878c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_TPC_REPORT_RSP = 142,
2888c2ecf20Sopenharmony_ci	WCN36XX_HAL_RADAR_DETECT_IND = 143,
2898c2ecf20Sopenharmony_ci	WCN36XX_HAL_RADAR_DETECT_INTR_IND = 144,
2908c2ecf20Sopenharmony_ci	WCN36XX_HAL_KEEP_ALIVE_REQ = 145,
2918c2ecf20Sopenharmony_ci	WCN36XX_HAL_KEEP_ALIVE_RSP = 146,
2928c2ecf20Sopenharmony_ci
2938c2ecf20Sopenharmony_ci	/* PNO messages */
2948c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_PREF_NETWORK_REQ = 147,
2958c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_PREF_NETWORK_RSP = 148,
2968c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_RSSI_FILTER_REQ = 149,
2978c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_RSSI_FILTER_RSP = 150,
2988c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_SCAN_PARAM_REQ = 151,
2998c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_SCAN_PARAM_RSP = 152,
3008c2ecf20Sopenharmony_ci	WCN36XX_HAL_PREF_NETW_FOUND_IND = 153,
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_TX_PER_TRACKING_REQ = 154,
3038c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_TX_PER_TRACKING_RSP = 155,
3048c2ecf20Sopenharmony_ci	WCN36XX_HAL_TX_PER_HIT_IND = 156,
3058c2ecf20Sopenharmony_ci
3068c2ecf20Sopenharmony_ci	WCN36XX_HAL_8023_MULTICAST_LIST_REQ = 157,
3078c2ecf20Sopenharmony_ci	WCN36XX_HAL_8023_MULTICAST_LIST_RSP = 158,
3088c2ecf20Sopenharmony_ci
3098c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_PACKET_FILTER_REQ = 159,
3108c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_PACKET_FILTER_RSP = 160,
3118c2ecf20Sopenharmony_ci	WCN36XX_HAL_PACKET_FILTER_MATCH_COUNT_REQ = 161,
3128c2ecf20Sopenharmony_ci	WCN36XX_HAL_PACKET_FILTER_MATCH_COUNT_RSP = 162,
3138c2ecf20Sopenharmony_ci	WCN36XX_HAL_CLEAR_PACKET_FILTER_REQ = 163,
3148c2ecf20Sopenharmony_ci	WCN36XX_HAL_CLEAR_PACKET_FILTER_RSP = 164,
3158c2ecf20Sopenharmony_ci
3168c2ecf20Sopenharmony_ci	/*
3178c2ecf20Sopenharmony_ci	 * This is temp fix. Should be removed once Host and Riva code is
3188c2ecf20Sopenharmony_ci	 * in sync.
3198c2ecf20Sopenharmony_ci	 */
3208c2ecf20Sopenharmony_ci	WCN36XX_HAL_INIT_SCAN_CON_REQ = 165,
3218c2ecf20Sopenharmony_ci
3228c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_POWER_PARAMS_REQ = 166,
3238c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_POWER_PARAMS_RSP = 167,
3248c2ecf20Sopenharmony_ci
3258c2ecf20Sopenharmony_ci	WCN36XX_HAL_TSM_STATS_REQ = 168,
3268c2ecf20Sopenharmony_ci	WCN36XX_HAL_TSM_STATS_RSP = 169,
3278c2ecf20Sopenharmony_ci
3288c2ecf20Sopenharmony_ci	/* wake reason indication (WOW) */
3298c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_IND = 170,
3308c2ecf20Sopenharmony_ci
3318c2ecf20Sopenharmony_ci	/* GTK offload support */
3328c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_OFFLOAD_REQ = 171,
3338c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_OFFLOAD_RSP = 172,
3348c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_OFFLOAD_GETINFO_REQ = 173,
3358c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_OFFLOAD_GETINFO_RSP = 174,
3368c2ecf20Sopenharmony_ci
3378c2ecf20Sopenharmony_ci	WCN36XX_HAL_FEATURE_CAPS_EXCHANGE_REQ = 175,
3388c2ecf20Sopenharmony_ci	WCN36XX_HAL_FEATURE_CAPS_EXCHANGE_RSP = 176,
3398c2ecf20Sopenharmony_ci	WCN36XX_HAL_EXCLUDE_UNENCRYPTED_IND = 177,
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_THERMAL_MITIGATION_REQ = 178,
3428c2ecf20Sopenharmony_ci	WCN36XX_HAL_SET_THERMAL_MITIGATION_RSP = 179,
3438c2ecf20Sopenharmony_ci
3448c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_VHT_OP_MODE_REQ = 182,
3458c2ecf20Sopenharmony_ci	WCN36XX_HAL_UPDATE_VHT_OP_MODE_RSP = 183,
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ci	WCN36XX_HAL_P2P_NOA_START_IND = 184,
3488c2ecf20Sopenharmony_ci
3498c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_ROAM_RSSI_REQ = 185,
3508c2ecf20Sopenharmony_ci	WCN36XX_HAL_GET_ROAM_RSSI_RSP = 186,
3518c2ecf20Sopenharmony_ci
3528c2ecf20Sopenharmony_ci	WCN36XX_HAL_CLASS_B_STATS_IND = 187,
3538c2ecf20Sopenharmony_ci	WCN36XX_HAL_DEL_BA_IND = 188,
3548c2ecf20Sopenharmony_ci	WCN36XX_HAL_DHCP_START_IND = 189,
3558c2ecf20Sopenharmony_ci	WCN36XX_HAL_DHCP_STOP_IND = 190,
3568c2ecf20Sopenharmony_ci
3578c2ecf20Sopenharmony_ci	/* Scan Offload(hw) APIs */
3588c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_SCAN_OFFLOAD_REQ = 204,
3598c2ecf20Sopenharmony_ci	WCN36XX_HAL_START_SCAN_OFFLOAD_RSP = 205,
3608c2ecf20Sopenharmony_ci	WCN36XX_HAL_STOP_SCAN_OFFLOAD_REQ = 206,
3618c2ecf20Sopenharmony_ci	WCN36XX_HAL_STOP_SCAN_OFFLOAD_RSP = 207,
3628c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_OFFLOAD_IND = 210,
3638c2ecf20Sopenharmony_ci
3648c2ecf20Sopenharmony_ci	WCN36XX_HAL_AVOID_FREQ_RANGE_IND = 233,
3658c2ecf20Sopenharmony_ci
3668c2ecf20Sopenharmony_ci	WCN36XX_HAL_PRINT_REG_INFO_IND = 259,
3678c2ecf20Sopenharmony_ci
3688c2ecf20Sopenharmony_ci	WCN36XX_HAL_MSG_MAX = WCN36XX_HAL_MSG_TYPE_MAX_ENUM_SIZE
3698c2ecf20Sopenharmony_ci};
3708c2ecf20Sopenharmony_ci
3718c2ecf20Sopenharmony_ci/* Enumeration for Version */
3728c2ecf20Sopenharmony_cienum wcn36xx_hal_host_msg_version {
3738c2ecf20Sopenharmony_ci	WCN36XX_HAL_MSG_VERSION0 = 0,
3748c2ecf20Sopenharmony_ci	WCN36XX_HAL_MSG_VERSION1 = 1,
3758c2ecf20Sopenharmony_ci	/* define as 2 bytes data */
3768c2ecf20Sopenharmony_ci	WCN36XX_HAL_MSG_WCNSS_CTRL_VERSION = 0x7FFF,
3778c2ecf20Sopenharmony_ci	WCN36XX_HAL_MSG_VERSION_MAX_FIELD = WCN36XX_HAL_MSG_WCNSS_CTRL_VERSION
3788c2ecf20Sopenharmony_ci};
3798c2ecf20Sopenharmony_ci
3808c2ecf20Sopenharmony_cienum driver_type {
3818c2ecf20Sopenharmony_ci	DRIVER_TYPE_PRODUCTION = 0,
3828c2ecf20Sopenharmony_ci	DRIVER_TYPE_MFG = 1,
3838c2ecf20Sopenharmony_ci	DRIVER_TYPE_DVT = 2,
3848c2ecf20Sopenharmony_ci	DRIVER_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
3858c2ecf20Sopenharmony_ci};
3868c2ecf20Sopenharmony_ci
3878c2ecf20Sopenharmony_cienum wcn36xx_hal_stop_type {
3888c2ecf20Sopenharmony_ci	HAL_STOP_TYPE_SYS_RESET,
3898c2ecf20Sopenharmony_ci	HAL_STOP_TYPE_SYS_DEEP_SLEEP,
3908c2ecf20Sopenharmony_ci	HAL_STOP_TYPE_RF_KILL,
3918c2ecf20Sopenharmony_ci	HAL_STOP_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
3928c2ecf20Sopenharmony_ci};
3938c2ecf20Sopenharmony_ci
3948c2ecf20Sopenharmony_cienum wcn36xx_hal_sys_mode {
3958c2ecf20Sopenharmony_ci	HAL_SYS_MODE_NORMAL,
3968c2ecf20Sopenharmony_ci	HAL_SYS_MODE_LEARN,
3978c2ecf20Sopenharmony_ci	HAL_SYS_MODE_SCAN,
3988c2ecf20Sopenharmony_ci	HAL_SYS_MODE_PROMISC,
3998c2ecf20Sopenharmony_ci	HAL_SYS_MODE_SUSPEND_LINK,
4008c2ecf20Sopenharmony_ci	HAL_SYS_MODE_ROAM_SCAN,
4018c2ecf20Sopenharmony_ci	HAL_SYS_MODE_ROAM_SUSPEND_LINK,
4028c2ecf20Sopenharmony_ci	HAL_SYS_MODE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
4038c2ecf20Sopenharmony_ci};
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_cienum phy_chan_bond_state {
4068c2ecf20Sopenharmony_ci	/* 20MHz IF bandwidth centered on IF carrier */
4078c2ecf20Sopenharmony_ci	PHY_SINGLE_CHANNEL_CENTERED = 0,
4088c2ecf20Sopenharmony_ci
4098c2ecf20Sopenharmony_ci	/* 40MHz IF bandwidth with lower 20MHz supporting the primary channel */
4108c2ecf20Sopenharmony_ci	PHY_DOUBLE_CHANNEL_LOW_PRIMARY = 1,
4118c2ecf20Sopenharmony_ci
4128c2ecf20Sopenharmony_ci	/* 40MHz IF bandwidth centered on IF carrier */
4138c2ecf20Sopenharmony_ci	PHY_DOUBLE_CHANNEL_CENTERED = 2,
4148c2ecf20Sopenharmony_ci
4158c2ecf20Sopenharmony_ci	/* 40MHz IF bandwidth with higher 20MHz supporting the primary ch */
4168c2ecf20Sopenharmony_ci	PHY_DOUBLE_CHANNEL_HIGH_PRIMARY = 3,
4178c2ecf20Sopenharmony_ci
4188c2ecf20Sopenharmony_ci	/* 20/40MHZ offset LOW 40/80MHZ offset CENTERED */
4198c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED = 4,
4208c2ecf20Sopenharmony_ci
4218c2ecf20Sopenharmony_ci	/* 20/40MHZ offset CENTERED 40/80MHZ offset CENTERED */
4228c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED = 5,
4238c2ecf20Sopenharmony_ci
4248c2ecf20Sopenharmony_ci	/* 20/40MHZ offset HIGH 40/80MHZ offset CENTERED */
4258c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED = 6,
4268c2ecf20Sopenharmony_ci
4278c2ecf20Sopenharmony_ci	/* 20/40MHZ offset LOW 40/80MHZ offset LOW */
4288c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW = 7,
4298c2ecf20Sopenharmony_ci
4308c2ecf20Sopenharmony_ci	/* 20/40MHZ offset HIGH 40/80MHZ offset LOW */
4318c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW = 8,
4328c2ecf20Sopenharmony_ci
4338c2ecf20Sopenharmony_ci	/* 20/40MHZ offset LOW 40/80MHZ offset HIGH */
4348c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH = 9,
4358c2ecf20Sopenharmony_ci
4368c2ecf20Sopenharmony_ci	/* 20/40MHZ offset-HIGH 40/80MHZ offset HIGH */
4378c2ecf20Sopenharmony_ci	PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH = 10,
4388c2ecf20Sopenharmony_ci
4398c2ecf20Sopenharmony_ci	PHY_CHANNEL_BONDING_STATE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
4408c2ecf20Sopenharmony_ci};
4418c2ecf20Sopenharmony_ci
4428c2ecf20Sopenharmony_ci/* Spatial Multiplexing(SM) Power Save mode */
4438c2ecf20Sopenharmony_cienum wcn36xx_hal_ht_mimo_state {
4448c2ecf20Sopenharmony_ci	/* Static SM Power Save mode */
4458c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_MIMO_PS_STATIC = 0,
4468c2ecf20Sopenharmony_ci
4478c2ecf20Sopenharmony_ci	/* Dynamic SM Power Save mode */
4488c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_MIMO_PS_DYNAMIC = 1,
4498c2ecf20Sopenharmony_ci
4508c2ecf20Sopenharmony_ci	/* reserved */
4518c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_MIMO_PS_NA = 2,
4528c2ecf20Sopenharmony_ci
4538c2ecf20Sopenharmony_ci	/* SM Power Save disabled */
4548c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_MIMO_PS_NO_LIMIT = 3,
4558c2ecf20Sopenharmony_ci
4568c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_MIMO_PS_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
4578c2ecf20Sopenharmony_ci};
4588c2ecf20Sopenharmony_ci
4598c2ecf20Sopenharmony_ci/* each station added has a rate mode which specifies the sta attributes */
4608c2ecf20Sopenharmony_cienum sta_rate_mode {
4618c2ecf20Sopenharmony_ci	STA_TAURUS = 0,
4628c2ecf20Sopenharmony_ci	STA_TITAN,
4638c2ecf20Sopenharmony_ci	STA_POLARIS,
4648c2ecf20Sopenharmony_ci	STA_11b,
4658c2ecf20Sopenharmony_ci	STA_11bg,
4668c2ecf20Sopenharmony_ci	STA_11a,
4678c2ecf20Sopenharmony_ci	STA_11n,
4688c2ecf20Sopenharmony_ci	STA_11ac,
4698c2ecf20Sopenharmony_ci	STA_INVALID_RATE_MODE = WCN36XX_HAL_MAX_ENUM_SIZE
4708c2ecf20Sopenharmony_ci};
4718c2ecf20Sopenharmony_ci
4728c2ecf20Sopenharmony_ci/* 1,2,5.5,11 */
4738c2ecf20Sopenharmony_ci#define WCN36XX_HAL_NUM_DSSS_RATES           4
4748c2ecf20Sopenharmony_ci
4758c2ecf20Sopenharmony_ci/* 6,9,12,18,24,36,48,54 */
4768c2ecf20Sopenharmony_ci#define WCN36XX_HAL_NUM_OFDM_RATES           8
4778c2ecf20Sopenharmony_ci
4788c2ecf20Sopenharmony_ci/* 72,96,108 */
4798c2ecf20Sopenharmony_ci#define WCN36XX_HAL_NUM_POLARIS_RATES       3
4808c2ecf20Sopenharmony_ci
4818c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MAC_MAX_SUPPORTED_MCS_SET    16
4828c2ecf20Sopenharmony_ci
4838c2ecf20Sopenharmony_cienum wcn36xx_hal_bss_type {
4848c2ecf20Sopenharmony_ci	WCN36XX_HAL_INFRASTRUCTURE_MODE,
4858c2ecf20Sopenharmony_ci
4868c2ecf20Sopenharmony_ci	/* Added for softAP support */
4878c2ecf20Sopenharmony_ci	WCN36XX_HAL_INFRA_AP_MODE,
4888c2ecf20Sopenharmony_ci
4898c2ecf20Sopenharmony_ci	WCN36XX_HAL_IBSS_MODE,
4908c2ecf20Sopenharmony_ci
4918c2ecf20Sopenharmony_ci	/* Added for BT-AMP support */
4928c2ecf20Sopenharmony_ci	WCN36XX_HAL_BTAMP_STA_MODE,
4938c2ecf20Sopenharmony_ci
4948c2ecf20Sopenharmony_ci	/* Added for BT-AMP support */
4958c2ecf20Sopenharmony_ci	WCN36XX_HAL_BTAMP_AP_MODE,
4968c2ecf20Sopenharmony_ci
4978c2ecf20Sopenharmony_ci	WCN36XX_HAL_AUTO_MODE,
4988c2ecf20Sopenharmony_ci
4998c2ecf20Sopenharmony_ci	WCN36XX_HAL_DONOT_USE_BSS_TYPE = WCN36XX_HAL_MAX_ENUM_SIZE
5008c2ecf20Sopenharmony_ci};
5018c2ecf20Sopenharmony_ci
5028c2ecf20Sopenharmony_cienum wcn36xx_hal_nw_type {
5038c2ecf20Sopenharmony_ci	WCN36XX_HAL_11A_NW_TYPE,
5048c2ecf20Sopenharmony_ci	WCN36XX_HAL_11B_NW_TYPE,
5058c2ecf20Sopenharmony_ci	WCN36XX_HAL_11G_NW_TYPE,
5068c2ecf20Sopenharmony_ci	WCN36XX_HAL_11N_NW_TYPE,
5078c2ecf20Sopenharmony_ci	WCN36XX_HAL_DONOT_USE_NW_TYPE = WCN36XX_HAL_MAX_ENUM_SIZE
5088c2ecf20Sopenharmony_ci};
5098c2ecf20Sopenharmony_ci
5108c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MAC_RATESET_EID_MAX            12
5118c2ecf20Sopenharmony_ci
5128c2ecf20Sopenharmony_cienum wcn36xx_hal_ht_operating_mode {
5138c2ecf20Sopenharmony_ci	/* No Protection */
5148c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_OP_MODE_PURE,
5158c2ecf20Sopenharmony_ci
5168c2ecf20Sopenharmony_ci	/* Overlap Legacy device present, protection is optional */
5178c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_OP_MODE_OVERLAP_LEGACY,
5188c2ecf20Sopenharmony_ci
5198c2ecf20Sopenharmony_ci	/* No legacy device, but 20 MHz HT present */
5208c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_OP_MODE_NO_LEGACY_20MHZ_HT,
5218c2ecf20Sopenharmony_ci
5228c2ecf20Sopenharmony_ci	/* Protection is required */
5238c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_OP_MODE_MIXED,
5248c2ecf20Sopenharmony_ci
5258c2ecf20Sopenharmony_ci	WCN36XX_HAL_HT_OP_MODE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
5268c2ecf20Sopenharmony_ci};
5278c2ecf20Sopenharmony_ci
5288c2ecf20Sopenharmony_ci/* Encryption type enum used with peer */
5298c2ecf20Sopenharmony_cienum ani_ed_type {
5308c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_NONE,
5318c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_WEP40,
5328c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_WEP104,
5338c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_TKIP,
5348c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_CCMP,
5358c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_WPI,
5368c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_AES_128_CMAC,
5378c2ecf20Sopenharmony_ci	WCN36XX_HAL_ED_NOT_IMPLEMENTED = WCN36XX_HAL_MAX_ENUM_SIZE
5388c2ecf20Sopenharmony_ci};
5398c2ecf20Sopenharmony_ci
5408c2ecf20Sopenharmony_ci#define WLAN_MAX_KEY_RSC_LEN                16
5418c2ecf20Sopenharmony_ci#define WLAN_WAPI_KEY_RSC_LEN               16
5428c2ecf20Sopenharmony_ci
5438c2ecf20Sopenharmony_ci/* MAX key length when ULA is used */
5448c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MAC_MAX_KEY_LENGTH              32
5458c2ecf20Sopenharmony_ci#define WCN36XX_HAL_MAC_MAX_NUM_OF_DEFAULT_KEYS     4
5468c2ecf20Sopenharmony_ci
5478c2ecf20Sopenharmony_ci/*
5488c2ecf20Sopenharmony_ci * Enum to specify whether key is used for TX only, RX only or both.
5498c2ecf20Sopenharmony_ci */
5508c2ecf20Sopenharmony_cienum ani_key_direction {
5518c2ecf20Sopenharmony_ci	WCN36XX_HAL_TX_ONLY,
5528c2ecf20Sopenharmony_ci	WCN36XX_HAL_RX_ONLY,
5538c2ecf20Sopenharmony_ci	WCN36XX_HAL_TX_RX,
5548c2ecf20Sopenharmony_ci	WCN36XX_HAL_TX_DEFAULT,
5558c2ecf20Sopenharmony_ci	WCN36XX_HAL_DONOT_USE_KEY_DIRECTION = WCN36XX_HAL_MAX_ENUM_SIZE
5568c2ecf20Sopenharmony_ci};
5578c2ecf20Sopenharmony_ci
5588c2ecf20Sopenharmony_cienum ani_wep_type {
5598c2ecf20Sopenharmony_ci	WCN36XX_HAL_WEP_STATIC,
5608c2ecf20Sopenharmony_ci	WCN36XX_HAL_WEP_DYNAMIC,
5618c2ecf20Sopenharmony_ci	WCN36XX_HAL_WEP_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
5628c2ecf20Sopenharmony_ci};
5638c2ecf20Sopenharmony_ci
5648c2ecf20Sopenharmony_cienum wcn36xx_hal_link_state {
5658c2ecf20Sopenharmony_ci
5668c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_IDLE_STATE = 0,
5678c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_PREASSOC_STATE = 1,
5688c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_POSTASSOC_STATE = 2,
5698c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_AP_STATE = 3,
5708c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_IBSS_STATE = 4,
5718c2ecf20Sopenharmony_ci
5728c2ecf20Sopenharmony_ci	/* BT-AMP Case */
5738c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_BTAMP_PREASSOC_STATE = 5,
5748c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_BTAMP_POSTASSOC_STATE = 6,
5758c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_BTAMP_AP_STATE = 7,
5768c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_BTAMP_STA_STATE = 8,
5778c2ecf20Sopenharmony_ci
5788c2ecf20Sopenharmony_ci	/* Reserved for HAL Internal Use */
5798c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_LEARN_STATE = 9,
5808c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_SCAN_STATE = 10,
5818c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_FINISH_SCAN_STATE = 11,
5828c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_INIT_CAL_STATE = 12,
5838c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_FINISH_CAL_STATE = 13,
5848c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_LISTEN_STATE = 14,
5858c2ecf20Sopenharmony_ci
5868c2ecf20Sopenharmony_ci	WCN36XX_HAL_LINK_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
5878c2ecf20Sopenharmony_ci};
5888c2ecf20Sopenharmony_ci
5898c2ecf20Sopenharmony_cienum wcn36xx_hal_stats_mask {
5908c2ecf20Sopenharmony_ci	HAL_SUMMARY_STATS_INFO = 0x00000001,
5918c2ecf20Sopenharmony_ci	HAL_GLOBAL_CLASS_A_STATS_INFO = 0x00000002,
5928c2ecf20Sopenharmony_ci	HAL_GLOBAL_CLASS_B_STATS_INFO = 0x00000004,
5938c2ecf20Sopenharmony_ci	HAL_GLOBAL_CLASS_C_STATS_INFO = 0x00000008,
5948c2ecf20Sopenharmony_ci	HAL_GLOBAL_CLASS_D_STATS_INFO = 0x00000010,
5958c2ecf20Sopenharmony_ci	HAL_PER_STA_STATS_INFO = 0x00000020
5968c2ecf20Sopenharmony_ci};
5978c2ecf20Sopenharmony_ci
5988c2ecf20Sopenharmony_ci/* BT-AMP events type */
5998c2ecf20Sopenharmony_cienum bt_amp_event_type {
6008c2ecf20Sopenharmony_ci	BTAMP_EVENT_CONNECTION_START,
6018c2ecf20Sopenharmony_ci	BTAMP_EVENT_CONNECTION_STOP,
6028c2ecf20Sopenharmony_ci	BTAMP_EVENT_CONNECTION_TERMINATED,
6038c2ecf20Sopenharmony_ci
6048c2ecf20Sopenharmony_ci	/* This and beyond are invalid values */
6058c2ecf20Sopenharmony_ci	BTAMP_EVENT_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE,
6068c2ecf20Sopenharmony_ci};
6078c2ecf20Sopenharmony_ci
6088c2ecf20Sopenharmony_ci/* PE Statistics */
6098c2ecf20Sopenharmony_cienum pe_stats_mask {
6108c2ecf20Sopenharmony_ci	PE_SUMMARY_STATS_INFO = 0x00000001,
6118c2ecf20Sopenharmony_ci	PE_GLOBAL_CLASS_A_STATS_INFO = 0x00000002,
6128c2ecf20Sopenharmony_ci	PE_GLOBAL_CLASS_B_STATS_INFO = 0x00000004,
6138c2ecf20Sopenharmony_ci	PE_GLOBAL_CLASS_C_STATS_INFO = 0x00000008,
6148c2ecf20Sopenharmony_ci	PE_GLOBAL_CLASS_D_STATS_INFO = 0x00000010,
6158c2ecf20Sopenharmony_ci	PE_PER_STA_STATS_INFO = 0x00000020,
6168c2ecf20Sopenharmony_ci
6178c2ecf20Sopenharmony_ci	/* This and beyond are invalid values */
6188c2ecf20Sopenharmony_ci	PE_STATS_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
6198c2ecf20Sopenharmony_ci};
6208c2ecf20Sopenharmony_ci
6218c2ecf20Sopenharmony_ci/*
6228c2ecf20Sopenharmony_ci * Configuration Parameter IDs
6238c2ecf20Sopenharmony_ci */
6248c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_STA_ID				0
6258c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_CURRENT_TX_ANTENNA		1
6268c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_CURRENT_RX_ANTENNA		2
6278c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_LOW_GAIN_OVERRIDE		3
6288c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_POWER_STATE_PER_CHAIN		4
6298c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_CAL_PERIOD			5
6308c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_CAL_CONTROL			6
6318c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PROXIMITY			7
6328c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_NETWORK_DENSITY			8
6338c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_MEDIUM_TIME			9
6348c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_MPDUS_IN_AMPDU		10
6358c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RTS_THRESHOLD			11
6368c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_SHORT_RETRY_LIMIT		12
6378c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_LONG_RETRY_LIMIT		13
6388c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FRAGMENTATION_THRESHOLD		14
6398c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DYNAMIC_THRESHOLD_ZERO		15
6408c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DYNAMIC_THRESHOLD_ONE		16
6418c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DYNAMIC_THRESHOLD_TWO		17
6428c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FIXED_RATE			18
6438c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RETRYRATE_POLICY		19
6448c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RETRYRATE_SECONDARY		20
6458c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RETRYRATE_TERTIARY		21
6468c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FORCE_POLICY_PROTECTION		22
6478c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FIXED_RATE_MULTICAST_24GHZ	23
6488c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FIXED_RATE_MULTICAST_5GHZ	24
6498c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DEFAULT_RATE_INDEX_24GHZ	25
6508c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DEFAULT_RATE_INDEX_5GHZ		26
6518c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_BA_SESSIONS			27
6528c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_DATA_INACTIVITY_TIMEOUT	28
6538c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_ENABLE_BCN_FILTER		29
6548c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_ENABLE_RSSI_MONITOR		30
6558c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_NUM_BEACON_PER_RSSI_AVERAGE	31
6568c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_STATS_PERIOD			32
6578c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_CFP_MAX_DURATION		33
6588c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FRAME_TRANS_ENABLED		34
6598c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DTIM_PERIOD			35
6608c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_EDCA_WMM_ACBK			36
6618c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_EDCA_WMM_ACBE			37
6628c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_EDCA_WMM_ACVO			38
6638c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_EDCA_WMM_ACVI			39
6648c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BA_THRESHOLD_HIGH		40
6658c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_BA_BUFFERS			41
6668c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RPE_POLLING_THRESHOLD		42
6678c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RPE_AGING_THRESHOLD_FOR_AC0_REG	43
6688c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RPE_AGING_THRESHOLD_FOR_AC1_REG	44
6698c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RPE_AGING_THRESHOLD_FOR_AC2_REG	45
6708c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RPE_AGING_THRESHOLD_FOR_AC3_REG	46
6718c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_NO_OF_ONCHIP_REORDER_SESSIONS	47
6728c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_LISTEN_INTERVAL		48
6738c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_HEART_BEAT_THRESHOLD		49
6748c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_NTH_BEACON_FILTER		50
6758c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_MAX_PS_POLL			51
6768c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_MIN_RSSI_THRESHOLD		52
6778c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_RSSI_FILTER_PERIOD		53
6788c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_BROADCAST_FRAME_FILTER_ENABLE 54
6798c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_IGNORE_DTIM			55
6808c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_ENABLE_BCN_EARLY_TERM	56
6818c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DYNAMIC_PS_POLL_VALUE		57
6828c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_NULLDATA_AP_RESP_TIMEOUT	58
6838c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TELE_BCN_WAKEUP_EN		59
6848c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TELE_BCN_TRANS_LI		60
6858c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS	61
6868c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TELE_BCN_MAX_LI			62
6878c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TELE_BCN_MAX_LI_IDLE_BCNS	63
6888c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TX_PWR_CTRL_ENABLE		64
6898c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_VALID_RADAR_CHANNEL_LIST	65
6908c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TX_POWER_24_20			66
6918c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TX_POWER_24_40			67
6928c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TX_POWER_50_20			68
6938c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TX_POWER_50_40			69
6948c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MCAST_BCAST_FILTER_SETTING	70
6958c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BCN_EARLY_TERM_WAKEUP_INTERVAL	71
6968c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_TX_POWER_2_4		72
6978c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_TX_POWER_5			73
6988c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_INFRA_STA_KEEP_ALIVE_PERIOD	74
6998c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_CLOSE_LOOP		75
7008c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_EXECUTION_MODE		76
7018c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DHCP_BT_SLOTS_TO_BLOCK	77
7028c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_A2DP_DHCP_BT_SUB_INTERVALS	78
7038c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PS_TX_INACTIVITY_TIMEOUT	79
7048c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_WCNSS_API_VERSION		80
7058c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_AP_KEEPALIVE_TIMEOUT		81
7068c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_GO_KEEPALIVE_TIMEOUT		82
7078c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_MC_ADDR_LIST		83
7088c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_INQ_BT		84
7098c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_PAGE_BT		85
7108c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_CONN_BT		86
7118c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_LE_BT		87
7128c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_INQ_WLAN		88
7138c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_PAGE_WLAN	89
7148c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_CONN_WLAN	90
7158c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_LEN_LE_WLAN		91
7168c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DYN_MAX_LEN_BT		92
7178c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DYN_MAX_LEN_WLAN		93
7188c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_MAX_SCO_BLOCK_PERC		94
7198c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DHCP_PROT_ON_A2DP		95
7208c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DHCP_PROT_ON_SCO		96
7218c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_UNICAST_FILTER		97
7228c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_ASSOC_LIMIT			98
7238c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_LPWR_IMG_TRANSITION	99
7248c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_MCC_ADAPTIVE_SCHEDULER	100
7258c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_DETECT_PS_SUPPORT	101
7268c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_AP_LINK_MONITOR_TIMEOUT		102
7278c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DWELL_TIME_MULTIPLIER	103
7288c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_TDLS_OXYGEN_MODE		104
7298c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_NAT_KEEP_ALIVE_FILTER	105
7308c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_SAP_OBSS_PROT		106
7318c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_PSPOLL_DATA_RECEP_TIMEOUT	107
7328c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TDLS_PUAPSD_BUFFER_STA_CAPABLE	108
7338c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TDLS_PUAPSD_MASK		109
7348c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TDLS_PUAPSD_INACTIVITY_TIME	110
7358c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD	111
7368c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ANTENNA_DIVERSITY		112
7378c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ATH_DISABLE			113
7388c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_FLEXCONNECT_POWER_FACTOR	114
7398c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_ADAPTIVE_RX_DRAIN	115
7408c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TDLS_OFF_CHANNEL_CAPABLE	116
7418c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V1_WAN_FREQ		117
7428c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V1_WLAN_FREQ		118
7438c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V1_CONFIG		119
7448c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V1_CONFIG2		120
7458c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V2_WAN_FREQ		121
7468c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V2_WLAN_FREQ		122
7478c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V2_CONFIG		123
7488c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V2_CONFIG2		124
7498c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V3_WAN_FREQ		125
7508c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V3_WLAN_FREQ		126
7518c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V3_CONFIG		127
7528c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V3_CONFIG2		128
7538c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V4_WAN_FREQ		129
7548c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V4_WLAN_FREQ		130
7558c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V4_CONFIG		131
7568c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V4_CONFIG2		132
7578c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V5_WAN_FREQ		133
7588c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V5_WLAN_FREQ		134
7598c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V5_CONFIG		135
7608c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V5_CONFIG2		136
7618c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V6_WAN_FREQ		137
7628c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V6_WLAN_FREQ		138
7638c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V6_CONFIG		139
7648c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V6_CONFIG2		140
7658c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V7_WAN_FREQ		141
7668c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V7_WLAN_FREQ		142
7678c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V7_CONFIG		143
7688c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V7_CONFIG2		144
7698c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V8_WAN_FREQ		145
7708c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V8_WLAN_FREQ		146
7718c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V8_CONFIG		147
7728c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V8_CONFIG2		148
7738c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V9_WAN_FREQ		149
7748c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V9_WLAN_FREQ		150
7758c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V9_CONFIG		151
7768c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V9_CONFIG2		152
7778c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V10_WAN_FREQ		153
7788c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V10_WLAN_FREQ		154
7798c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V10_CONFIG		155
7808c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_V10_CONFIG2		156
7818c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_MODEM_BACKOFF		157
7828c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_CONFIG1		158
7838c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_CONFIG2		159
7848c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_CONFIG3		160
7858c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_CONFIG4		161
7868c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_CONFIG5		162
7878c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MWS_COEX_CONFIG6		163
7888c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_SAR_POWER_BACKOFF		164
7898c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_GO_LINK_MONITOR_TIMEOUT		165
7908c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_OPP_WLAN_ACTIVE_WLAN_LEN	166
7918c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_OPP_WLAN_ACTIVE_BT_LEN	167
7928c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_SAP_STATIC_OPP_ACTIVE_WLAN_LEN	168
7938c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_SAP_STATIC_OPP_ACTIVE_BT_LEN	169
7948c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RMC_FIXED_RATE			170
7958c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ASD_PROBE_INTERVAL		171
7968c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ASD_TRIGGER_THRESHOLD		172
7978c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD	173
7988c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_CTS2S_ON_STA_DURING_SCO	174
7998c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_SHORT_PREAMBLE			175
8008c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_SHORT_SLOT_TIME			176
8018c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DELAYED_BA			177
8028c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_IMMEDIATE_BA			178
8038c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DOT11_MODE			179
8048c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_HT_CAPS				180
8058c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_AMPDU_PARAMS			181
8068c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TX_BF_INFO			182
8078c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ASC_CAP_INFO			183
8088c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_EXT_HT_CAPS			184
8098c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_QOS_ENABLED			185
8108c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_WME_ENABLED			186
8118c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_WSM_ENABLED			187
8128c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_WMM_ENABLED			188
8138c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_UAPSD_PER_AC_BITMASK		189
8148c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MCS_RATES			190
8158c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_VHT_CAPS			191
8168c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_VHT_RX_SUPP_MCS			192
8178c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_VHT_TX_SUPP_MCS			193
8188c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RA_FILTER_ENABLE		194
8198c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_RA_RATE_LIMIT_INTERVAL		195
8208c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_FATAL_HID_NSNIFF_BLK	196
8218c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_CRITICAL_HID_NSNIFF_BLK	197
8228c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD	198
8238c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD	199
8248c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_LINK_FAIL_TIMEOUT		200
8258c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_UAPSD_CONSEC_SP		201
8268c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_UAPSD_CONSEC_RX_CNT		202
8278c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_UAPSD_CONSEC_TX_CNT		203
8288c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_UAPSD_CONSEC_RX_CNT_MEAS_WINDOW	204
8298c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_UAPSD_CONSEC_TX_CNT_MEAS_WINDOW	205
8308c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_PSPOLL_IN_WMM_UAPSD_PS_MODE	206
8318c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_UAPSD_INACTIVITY_INTERVALS	207
8328c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_DYNAMIC_WMMPS		208
8338c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BURST_MODE_BE_TXOP_VALUE	209
8348c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_DYNAMIC_RA_START_RATE	210
8358c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_FAST_WLAN_CONN_PREF		211
8368c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_RTSCTS_HTVHT		212
8378c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_OPP_WLAN_IDLE_WLAN_LEN	213
8388c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_STATIC_OPP_WLAN_IDLE_BT_LEN	214
8398c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_LINK_FAIL_TX_CNT		215
8408c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TOGGLE_ARP_BDRATES		216
8418c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_OPTIMIZE_CA_EVENT		217
8428c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_EXT_SCAN_CONC_MODE		218
8438c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BAR_WAKEUP_HOST_DISABLE		219
8448c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_SAR_BOFFSET_CORRECTION_ENABLE	220
8458c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_UNITS_OF_BCN_WAIT_TIME		221
8468c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_CONS_BCNMISS_COUNT		222
8478c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_BTC_DISABLE_WLAN_LINK_CRITICAL	223
8488c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_DISABLE_SCAN_DURING_SCO		224
8498c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_TRIGGER_NULLFRAME_BEFORE_HB	225
8508c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_POWERSAVE_OFFLOAD	226
8518c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_MAX_PARAMS			227
8528c2ecf20Sopenharmony_ci
8538c2ecf20Sopenharmony_ci/* Specify the starting bitrate, 11B and 11A/G rates can be specified in
8548c2ecf20Sopenharmony_ci * multiples of 0.5 So for 5.5 mbps => 11. for MCS 0 - 7 rates, Bit 7 should
8558c2ecf20Sopenharmony_ci * set to 1 and Bit 0-6 represent the MCS index. so for MCS2 => 130.
8568c2ecf20Sopenharmony_ci * Any invalid non-zero value or unsupported rate will set the start rate
8578c2ecf20Sopenharmony_ci * to 6 mbps.
8588c2ecf20Sopenharmony_ci */
8598c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CFG_ENABLE_DYNAMIC_RA_START_RATE	210
8608c2ecf20Sopenharmony_ci
8618c2ecf20Sopenharmony_ci/* Message definitons - All the messages below need to be packed */
8628c2ecf20Sopenharmony_ci
8638c2ecf20Sopenharmony_ci/* Definition for HAL API Version. */
8648c2ecf20Sopenharmony_cistruct wcnss_wlan_version {
8658c2ecf20Sopenharmony_ci	u8 revision;
8668c2ecf20Sopenharmony_ci	u8 version;
8678c2ecf20Sopenharmony_ci	u8 minor;
8688c2ecf20Sopenharmony_ci	u8 major;
8698c2ecf20Sopenharmony_ci} __packed;
8708c2ecf20Sopenharmony_ci
8718c2ecf20Sopenharmony_ci/* Definition for Encryption Keys */
8728c2ecf20Sopenharmony_cistruct wcn36xx_hal_keys {
8738c2ecf20Sopenharmony_ci	u8 id;
8748c2ecf20Sopenharmony_ci
8758c2ecf20Sopenharmony_ci	/* 0 for multicast */
8768c2ecf20Sopenharmony_ci	u8 unicast;
8778c2ecf20Sopenharmony_ci
8788c2ecf20Sopenharmony_ci	enum ani_key_direction direction;
8798c2ecf20Sopenharmony_ci
8808c2ecf20Sopenharmony_ci	/* Usage is unknown */
8818c2ecf20Sopenharmony_ci	u8 rsc[WLAN_MAX_KEY_RSC_LEN];
8828c2ecf20Sopenharmony_ci
8838c2ecf20Sopenharmony_ci	/* =1 for authenticator,=0 for supplicant */
8848c2ecf20Sopenharmony_ci	u8 pae_role;
8858c2ecf20Sopenharmony_ci
8868c2ecf20Sopenharmony_ci	u16 length;
8878c2ecf20Sopenharmony_ci	u8 key[WCN36XX_HAL_MAC_MAX_KEY_LENGTH];
8888c2ecf20Sopenharmony_ci} __packed;
8898c2ecf20Sopenharmony_ci
8908c2ecf20Sopenharmony_ci/*
8918c2ecf20Sopenharmony_ci * set_sta_key_params Moving here since it is shared by
8928c2ecf20Sopenharmony_ci * configbss/setstakey msgs
8938c2ecf20Sopenharmony_ci */
8948c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_sta_key_params {
8958c2ecf20Sopenharmony_ci	/* STA Index */
8968c2ecf20Sopenharmony_ci	u16 sta_index;
8978c2ecf20Sopenharmony_ci
8988c2ecf20Sopenharmony_ci	/* Encryption Type used with peer */
8998c2ecf20Sopenharmony_ci	enum ani_ed_type enc_type;
9008c2ecf20Sopenharmony_ci
9018c2ecf20Sopenharmony_ci	/* STATIC/DYNAMIC - valid only for WEP */
9028c2ecf20Sopenharmony_ci	enum ani_wep_type wep_type;
9038c2ecf20Sopenharmony_ci
9048c2ecf20Sopenharmony_ci	/* Default WEP key, valid only for static WEP, must between 0 and 3. */
9058c2ecf20Sopenharmony_ci	u8 def_wep_idx;
9068c2ecf20Sopenharmony_ci
9078c2ecf20Sopenharmony_ci	/* valid only for non-static WEP encyrptions */
9088c2ecf20Sopenharmony_ci	struct wcn36xx_hal_keys key[WCN36XX_HAL_MAC_MAX_NUM_OF_DEFAULT_KEYS];
9098c2ecf20Sopenharmony_ci
9108c2ecf20Sopenharmony_ci	/*
9118c2ecf20Sopenharmony_ci	 * Control for Replay Count, 1= Single TID based replay count on Tx
9128c2ecf20Sopenharmony_ci	 * 0 = Per TID based replay count on TX
9138c2ecf20Sopenharmony_ci	 */
9148c2ecf20Sopenharmony_ci	u8 single_tid_rc;
9158c2ecf20Sopenharmony_ci
9168c2ecf20Sopenharmony_ci} __packed;
9178c2ecf20Sopenharmony_ci
9188c2ecf20Sopenharmony_ci/* 4-byte control message header used by HAL*/
9198c2ecf20Sopenharmony_cistruct wcn36xx_hal_msg_header {
9208c2ecf20Sopenharmony_ci	enum wcn36xx_hal_host_msg_type msg_type:16;
9218c2ecf20Sopenharmony_ci	enum wcn36xx_hal_host_msg_version msg_version:16;
9228c2ecf20Sopenharmony_ci	u32 len;
9238c2ecf20Sopenharmony_ci} __packed;
9248c2ecf20Sopenharmony_ci
9258c2ecf20Sopenharmony_ci/* Config format required by HAL for each CFG item*/
9268c2ecf20Sopenharmony_cistruct wcn36xx_hal_cfg {
9278c2ecf20Sopenharmony_ci	/* Cfg Id. The Id required by HAL is exported by HAL
9288c2ecf20Sopenharmony_ci	 * in shared header file between UMAC and HAL.*/
9298c2ecf20Sopenharmony_ci	u16 id;
9308c2ecf20Sopenharmony_ci
9318c2ecf20Sopenharmony_ci	/* Length of the Cfg. This parameter is used to go to next cfg
9328c2ecf20Sopenharmony_ci	 * in the TLV format.*/
9338c2ecf20Sopenharmony_ci	u16 len;
9348c2ecf20Sopenharmony_ci
9358c2ecf20Sopenharmony_ci	/* Padding bytes for unaligned address's */
9368c2ecf20Sopenharmony_ci	u16 pad_bytes;
9378c2ecf20Sopenharmony_ci
9388c2ecf20Sopenharmony_ci	/* Reserve bytes for making cfgVal to align address */
9398c2ecf20Sopenharmony_ci	u16 reserve;
9408c2ecf20Sopenharmony_ci
9418c2ecf20Sopenharmony_ci	/* Following the uCfgLen field there should be a 'uCfgLen' bytes
9428c2ecf20Sopenharmony_ci	 * containing the uCfgValue ; u8 uCfgValue[uCfgLen] */
9438c2ecf20Sopenharmony_ci} __packed;
9448c2ecf20Sopenharmony_ci
9458c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_start_parameters {
9468c2ecf20Sopenharmony_ci	/* Drive Type - Production or FTM etc */
9478c2ecf20Sopenharmony_ci	enum driver_type type;
9488c2ecf20Sopenharmony_ci
9498c2ecf20Sopenharmony_ci	/* Length of the config buffer */
9508c2ecf20Sopenharmony_ci	u32 len;
9518c2ecf20Sopenharmony_ci
9528c2ecf20Sopenharmony_ci	/* Following this there is a TLV formatted buffer of length
9538c2ecf20Sopenharmony_ci	 * "len" bytes containing all config values.
9548c2ecf20Sopenharmony_ci	 * The TLV is expected to be formatted like this:
9558c2ecf20Sopenharmony_ci	 * 0           15            31           31+CFG_LEN-1        length-1
9568c2ecf20Sopenharmony_ci	 * |   CFG_ID   |   CFG_LEN   |   CFG_BODY    |  CFG_ID  |......|
9578c2ecf20Sopenharmony_ci	 */
9588c2ecf20Sopenharmony_ci} __packed;
9598c2ecf20Sopenharmony_ci
9608c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_start_req_msg {
9618c2ecf20Sopenharmony_ci	/* config buffer must start in TLV format just here */
9628c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
9638c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_start_parameters params;
9648c2ecf20Sopenharmony_ci} __packed;
9658c2ecf20Sopenharmony_ci
9668c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_start_rsp_params {
9678c2ecf20Sopenharmony_ci	/* success or failure */
9688c2ecf20Sopenharmony_ci	u16 status;
9698c2ecf20Sopenharmony_ci
9708c2ecf20Sopenharmony_ci	/* Max number of STA supported by the device */
9718c2ecf20Sopenharmony_ci	u8 stations;
9728c2ecf20Sopenharmony_ci
9738c2ecf20Sopenharmony_ci	/* Max number of BSS supported by the device */
9748c2ecf20Sopenharmony_ci	u8 bssids;
9758c2ecf20Sopenharmony_ci
9768c2ecf20Sopenharmony_ci	/* API Version */
9778c2ecf20Sopenharmony_ci	struct wcnss_wlan_version version;
9788c2ecf20Sopenharmony_ci
9798c2ecf20Sopenharmony_ci	/* CRM build information */
9808c2ecf20Sopenharmony_ci	u8 crm_version[WCN36XX_HAL_VERSION_LENGTH];
9818c2ecf20Sopenharmony_ci
9828c2ecf20Sopenharmony_ci	/* hardware/chipset/misc version information */
9838c2ecf20Sopenharmony_ci	u8 wlan_version[WCN36XX_HAL_VERSION_LENGTH];
9848c2ecf20Sopenharmony_ci
9858c2ecf20Sopenharmony_ci} __packed;
9868c2ecf20Sopenharmony_ci
9878c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_start_rsp_msg {
9888c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
9898c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_start_rsp_params start_rsp_params;
9908c2ecf20Sopenharmony_ci} __packed;
9918c2ecf20Sopenharmony_ci
9928c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_stop_req_params {
9938c2ecf20Sopenharmony_ci	/* The reason for which the device is being stopped */
9948c2ecf20Sopenharmony_ci	enum wcn36xx_hal_stop_type reason;
9958c2ecf20Sopenharmony_ci
9968c2ecf20Sopenharmony_ci} __packed;
9978c2ecf20Sopenharmony_ci
9988c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_stop_req_msg {
9998c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
10008c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_stop_req_params stop_req_params;
10018c2ecf20Sopenharmony_ci} __packed;
10028c2ecf20Sopenharmony_ci
10038c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_stop_rsp_msg {
10048c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
10058c2ecf20Sopenharmony_ci
10068c2ecf20Sopenharmony_ci	/* success or failure */
10078c2ecf20Sopenharmony_ci	u32 status;
10088c2ecf20Sopenharmony_ci} __packed;
10098c2ecf20Sopenharmony_ci
10108c2ecf20Sopenharmony_cistruct wcn36xx_hal_update_cfg_req_msg {
10118c2ecf20Sopenharmony_ci	/*
10128c2ecf20Sopenharmony_ci	 * Note: The length specified in tHalUpdateCfgReqMsg messages should be
10138c2ecf20Sopenharmony_ci	 * header.msgLen = sizeof(tHalUpdateCfgReqMsg) + uConfigBufferLen
10148c2ecf20Sopenharmony_ci	 */
10158c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
10168c2ecf20Sopenharmony_ci
10178c2ecf20Sopenharmony_ci	/* Length of the config buffer. Allows UMAC to update multiple CFGs */
10188c2ecf20Sopenharmony_ci	u32 len;
10198c2ecf20Sopenharmony_ci
10208c2ecf20Sopenharmony_ci	/*
10218c2ecf20Sopenharmony_ci	 * Following this there is a TLV formatted buffer of length
10228c2ecf20Sopenharmony_ci	 * "uConfigBufferLen" bytes containing all config values.
10238c2ecf20Sopenharmony_ci	 * The TLV is expected to be formatted like this:
10248c2ecf20Sopenharmony_ci	 * 0           15            31           31+CFG_LEN-1        length-1
10258c2ecf20Sopenharmony_ci	 * |   CFG_ID   |   CFG_LEN   |   CFG_BODY    |  CFG_ID  |......|
10268c2ecf20Sopenharmony_ci	 */
10278c2ecf20Sopenharmony_ci
10288c2ecf20Sopenharmony_ci} __packed;
10298c2ecf20Sopenharmony_ci
10308c2ecf20Sopenharmony_cistruct wcn36xx_hal_update_cfg_rsp_msg {
10318c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
10328c2ecf20Sopenharmony_ci
10338c2ecf20Sopenharmony_ci	/* success or failure */
10348c2ecf20Sopenharmony_ci	u32 status;
10358c2ecf20Sopenharmony_ci
10368c2ecf20Sopenharmony_ci} __packed;
10378c2ecf20Sopenharmony_ci
10388c2ecf20Sopenharmony_ci/* Frame control field format (2 bytes) */
10398c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_frame_ctl {
10408c2ecf20Sopenharmony_ci
10418c2ecf20Sopenharmony_ci#ifndef ANI_LITTLE_BIT_ENDIAN
10428c2ecf20Sopenharmony_ci
10438c2ecf20Sopenharmony_ci	u8 subType:4;
10448c2ecf20Sopenharmony_ci	u8 type:2;
10458c2ecf20Sopenharmony_ci	u8 protVer:2;
10468c2ecf20Sopenharmony_ci
10478c2ecf20Sopenharmony_ci	u8 order:1;
10488c2ecf20Sopenharmony_ci	u8 wep:1;
10498c2ecf20Sopenharmony_ci	u8 moreData:1;
10508c2ecf20Sopenharmony_ci	u8 powerMgmt:1;
10518c2ecf20Sopenharmony_ci	u8 retry:1;
10528c2ecf20Sopenharmony_ci	u8 moreFrag:1;
10538c2ecf20Sopenharmony_ci	u8 fromDS:1;
10548c2ecf20Sopenharmony_ci	u8 toDS:1;
10558c2ecf20Sopenharmony_ci
10568c2ecf20Sopenharmony_ci#else
10578c2ecf20Sopenharmony_ci
10588c2ecf20Sopenharmony_ci	u8 protVer:2;
10598c2ecf20Sopenharmony_ci	u8 type:2;
10608c2ecf20Sopenharmony_ci	u8 subType:4;
10618c2ecf20Sopenharmony_ci
10628c2ecf20Sopenharmony_ci	u8 toDS:1;
10638c2ecf20Sopenharmony_ci	u8 fromDS:1;
10648c2ecf20Sopenharmony_ci	u8 moreFrag:1;
10658c2ecf20Sopenharmony_ci	u8 retry:1;
10668c2ecf20Sopenharmony_ci	u8 powerMgmt:1;
10678c2ecf20Sopenharmony_ci	u8 moreData:1;
10688c2ecf20Sopenharmony_ci	u8 wep:1;
10698c2ecf20Sopenharmony_ci	u8 order:1;
10708c2ecf20Sopenharmony_ci
10718c2ecf20Sopenharmony_ci#endif
10728c2ecf20Sopenharmony_ci
10738c2ecf20Sopenharmony_ci};
10748c2ecf20Sopenharmony_ci
10758c2ecf20Sopenharmony_ci/* Sequence control field */
10768c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_seq_ctl {
10778c2ecf20Sopenharmony_ci	u8 fragNum:4;
10788c2ecf20Sopenharmony_ci	u8 seqNumLo:4;
10798c2ecf20Sopenharmony_ci	u8 seqNumHi:8;
10808c2ecf20Sopenharmony_ci};
10818c2ecf20Sopenharmony_ci
10828c2ecf20Sopenharmony_ci/* Management header format */
10838c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_mgmt_hdr {
10848c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_frame_ctl fc;
10858c2ecf20Sopenharmony_ci	u8 durationLo;
10868c2ecf20Sopenharmony_ci	u8 durationHi;
10878c2ecf20Sopenharmony_ci	u8 da[6];
10888c2ecf20Sopenharmony_ci	u8 sa[6];
10898c2ecf20Sopenharmony_ci	u8 bssId[6];
10908c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_seq_ctl seqControl;
10918c2ecf20Sopenharmony_ci};
10928c2ecf20Sopenharmony_ci
10938c2ecf20Sopenharmony_ci/* FIXME: pronto v1 apparently has 4 */
10948c2ecf20Sopenharmony_ci#define WCN36XX_HAL_NUM_BSSID               2
10958c2ecf20Sopenharmony_ci
10968c2ecf20Sopenharmony_ci/* Scan Entry to hold active BSS idx's */
10978c2ecf20Sopenharmony_cistruct wcn36xx_hal_scan_entry {
10988c2ecf20Sopenharmony_ci	u8 bss_index[WCN36XX_HAL_NUM_BSSID];
10998c2ecf20Sopenharmony_ci	u8 active_bss_count;
11008c2ecf20Sopenharmony_ci};
11018c2ecf20Sopenharmony_ci
11028c2ecf20Sopenharmony_cistruct wcn36xx_hal_init_scan_req_msg {
11038c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
11048c2ecf20Sopenharmony_ci
11058c2ecf20Sopenharmony_ci	/* LEARN - AP Role
11068c2ecf20Sopenharmony_ci	   SCAN - STA Role */
11078c2ecf20Sopenharmony_ci	enum wcn36xx_hal_sys_mode mode;
11088c2ecf20Sopenharmony_ci
11098c2ecf20Sopenharmony_ci	/* BSSID of the BSS */
11108c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
11118c2ecf20Sopenharmony_ci
11128c2ecf20Sopenharmony_ci	/* Whether BSS needs to be notified */
11138c2ecf20Sopenharmony_ci	u8 notify;
11148c2ecf20Sopenharmony_ci
11158c2ecf20Sopenharmony_ci	/* Kind of frame to be used for notifying the BSS (Data Null, QoS
11168c2ecf20Sopenharmony_ci	 * Null, or CTS to Self). Must always be a valid frame type. */
11178c2ecf20Sopenharmony_ci	u8 frame_type;
11188c2ecf20Sopenharmony_ci
11198c2ecf20Sopenharmony_ci	/* UMAC has the option of passing the MAC frame to be used for
11208c2ecf20Sopenharmony_ci	 * notifying the BSS. If non-zero, HAL will use the MAC frame
11218c2ecf20Sopenharmony_ci	 * buffer pointed to by macMgmtHdr. If zero, HAL will generate the
11228c2ecf20Sopenharmony_ci	 * appropriate MAC frame based on frameType. */
11238c2ecf20Sopenharmony_ci	u8 frame_len;
11248c2ecf20Sopenharmony_ci
11258c2ecf20Sopenharmony_ci	/* Following the framelength there is a MAC frame buffer if
11268c2ecf20Sopenharmony_ci	 * frameLength is non-zero. */
11278c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_mgmt_hdr mac_mgmt_hdr;
11288c2ecf20Sopenharmony_ci
11298c2ecf20Sopenharmony_ci	/* Entry to hold number of active BSS idx's */
11308c2ecf20Sopenharmony_ci	struct wcn36xx_hal_scan_entry scan_entry;
11318c2ecf20Sopenharmony_ci};
11328c2ecf20Sopenharmony_ci
11338c2ecf20Sopenharmony_cistruct wcn36xx_hal_init_scan_con_req_msg {
11348c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
11358c2ecf20Sopenharmony_ci
11368c2ecf20Sopenharmony_ci	/* LEARN - AP Role
11378c2ecf20Sopenharmony_ci	   SCAN - STA Role */
11388c2ecf20Sopenharmony_ci	enum wcn36xx_hal_sys_mode mode;
11398c2ecf20Sopenharmony_ci
11408c2ecf20Sopenharmony_ci	/* BSSID of the BSS */
11418c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
11428c2ecf20Sopenharmony_ci
11438c2ecf20Sopenharmony_ci	/* Whether BSS needs to be notified */
11448c2ecf20Sopenharmony_ci	u8 notify;
11458c2ecf20Sopenharmony_ci
11468c2ecf20Sopenharmony_ci	/* Kind of frame to be used for notifying the BSS (Data Null, QoS
11478c2ecf20Sopenharmony_ci	 * Null, or CTS to Self). Must always be a valid frame type. */
11488c2ecf20Sopenharmony_ci	u8 frame_type;
11498c2ecf20Sopenharmony_ci
11508c2ecf20Sopenharmony_ci	/* UMAC has the option of passing the MAC frame to be used for
11518c2ecf20Sopenharmony_ci	 * notifying the BSS. If non-zero, HAL will use the MAC frame
11528c2ecf20Sopenharmony_ci	 * buffer pointed to by macMgmtHdr. If zero, HAL will generate the
11538c2ecf20Sopenharmony_ci	 * appropriate MAC frame based on frameType. */
11548c2ecf20Sopenharmony_ci	u8 frame_length;
11558c2ecf20Sopenharmony_ci
11568c2ecf20Sopenharmony_ci	/* Following the framelength there is a MAC frame buffer if
11578c2ecf20Sopenharmony_ci	 * frameLength is non-zero. */
11588c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_mgmt_hdr mac_mgmt_hdr;
11598c2ecf20Sopenharmony_ci
11608c2ecf20Sopenharmony_ci	/* Entry to hold number of active BSS idx's */
11618c2ecf20Sopenharmony_ci	struct wcn36xx_hal_scan_entry scan_entry;
11628c2ecf20Sopenharmony_ci
11638c2ecf20Sopenharmony_ci	/* Single NoA usage in Scanning */
11648c2ecf20Sopenharmony_ci	u8 use_noa;
11658c2ecf20Sopenharmony_ci
11668c2ecf20Sopenharmony_ci	/* Indicates the scan duration (in ms) */
11678c2ecf20Sopenharmony_ci	u16 scan_duration;
11688c2ecf20Sopenharmony_ci
11698c2ecf20Sopenharmony_ci};
11708c2ecf20Sopenharmony_ci
11718c2ecf20Sopenharmony_cistruct wcn36xx_hal_init_scan_rsp_msg {
11728c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
11738c2ecf20Sopenharmony_ci
11748c2ecf20Sopenharmony_ci	/* success or failure */
11758c2ecf20Sopenharmony_ci	u32 status;
11768c2ecf20Sopenharmony_ci
11778c2ecf20Sopenharmony_ci} __packed;
11788c2ecf20Sopenharmony_ci
11798c2ecf20Sopenharmony_cistruct wcn36xx_hal_start_scan_req_msg {
11808c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
11818c2ecf20Sopenharmony_ci
11828c2ecf20Sopenharmony_ci	/* Indicates the channel to scan */
11838c2ecf20Sopenharmony_ci	u8 scan_channel;
11848c2ecf20Sopenharmony_ci} __packed;
11858c2ecf20Sopenharmony_ci
11868c2ecf20Sopenharmony_cistruct wcn36xx_hal_start_rsp_msg {
11878c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
11888c2ecf20Sopenharmony_ci
11898c2ecf20Sopenharmony_ci	/* success or failure */
11908c2ecf20Sopenharmony_ci	u32 status;
11918c2ecf20Sopenharmony_ci
11928c2ecf20Sopenharmony_ci	u32 start_tsf[2];
11938c2ecf20Sopenharmony_ci	u8 tx_mgmt_power;
11948c2ecf20Sopenharmony_ci
11958c2ecf20Sopenharmony_ci} __packed;
11968c2ecf20Sopenharmony_ci
11978c2ecf20Sopenharmony_cistruct wcn36xx_hal_end_scan_req_msg {
11988c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
11998c2ecf20Sopenharmony_ci
12008c2ecf20Sopenharmony_ci	/* Indicates the channel to stop scanning. Not used really. But
12018c2ecf20Sopenharmony_ci	 * retained for symmetry with "start Scan" message. It can also
12028c2ecf20Sopenharmony_ci	 * help in error check if needed. */
12038c2ecf20Sopenharmony_ci	u8 scan_channel;
12048c2ecf20Sopenharmony_ci} __packed;
12058c2ecf20Sopenharmony_ci
12068c2ecf20Sopenharmony_cistruct wcn36xx_hal_end_scan_rsp_msg {
12078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
12088c2ecf20Sopenharmony_ci
12098c2ecf20Sopenharmony_ci	/* success or failure */
12108c2ecf20Sopenharmony_ci	u32 status;
12118c2ecf20Sopenharmony_ci} __packed;
12128c2ecf20Sopenharmony_ci
12138c2ecf20Sopenharmony_cistruct wcn36xx_hal_finish_scan_req_msg {
12148c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
12158c2ecf20Sopenharmony_ci
12168c2ecf20Sopenharmony_ci	/* Identifies the operational state of the AP/STA
12178c2ecf20Sopenharmony_ci	 * LEARN - AP Role SCAN - STA Role */
12188c2ecf20Sopenharmony_ci	enum wcn36xx_hal_sys_mode mode;
12198c2ecf20Sopenharmony_ci
12208c2ecf20Sopenharmony_ci	/* Operating channel to tune to. */
12218c2ecf20Sopenharmony_ci	u8 oper_channel;
12228c2ecf20Sopenharmony_ci
12238c2ecf20Sopenharmony_ci	/* Channel Bonding state If 20/40 MHz is operational, this will
12248c2ecf20Sopenharmony_ci	 * indicate the 40 MHz extension channel in combination with the
12258c2ecf20Sopenharmony_ci	 * control channel */
12268c2ecf20Sopenharmony_ci	enum phy_chan_bond_state cb_state;
12278c2ecf20Sopenharmony_ci
12288c2ecf20Sopenharmony_ci	/* BSSID of the BSS */
12298c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
12308c2ecf20Sopenharmony_ci
12318c2ecf20Sopenharmony_ci	/* Whether BSS needs to be notified */
12328c2ecf20Sopenharmony_ci	u8 notify;
12338c2ecf20Sopenharmony_ci
12348c2ecf20Sopenharmony_ci	/* Kind of frame to be used for notifying the BSS (Data Null, QoS
12358c2ecf20Sopenharmony_ci	 * Null, or CTS to Self). Must always be a valid frame type. */
12368c2ecf20Sopenharmony_ci	u8 frame_type;
12378c2ecf20Sopenharmony_ci
12388c2ecf20Sopenharmony_ci	/* UMAC has the option of passing the MAC frame to be used for
12398c2ecf20Sopenharmony_ci	 * notifying the BSS. If non-zero, HAL will use the MAC frame
12408c2ecf20Sopenharmony_ci	 * buffer pointed to by macMgmtHdr. If zero, HAL will generate the
12418c2ecf20Sopenharmony_ci	 * appropriate MAC frame based on frameType. */
12428c2ecf20Sopenharmony_ci	u8 frame_length;
12438c2ecf20Sopenharmony_ci
12448c2ecf20Sopenharmony_ci	/* Following the framelength there is a MAC frame buffer if
12458c2ecf20Sopenharmony_ci	 * frameLength is non-zero. */
12468c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_mgmt_hdr mac_mgmt_hdr;
12478c2ecf20Sopenharmony_ci
12488c2ecf20Sopenharmony_ci	/* Entry to hold number of active BSS idx's */
12498c2ecf20Sopenharmony_ci	struct wcn36xx_hal_scan_entry scan_entry;
12508c2ecf20Sopenharmony_ci
12518c2ecf20Sopenharmony_ci} __packed;
12528c2ecf20Sopenharmony_ci
12538c2ecf20Sopenharmony_cistruct wcn36xx_hal_finish_scan_rsp_msg {
12548c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
12558c2ecf20Sopenharmony_ci
12568c2ecf20Sopenharmony_ci	/* success or failure */
12578c2ecf20Sopenharmony_ci	u32 status;
12588c2ecf20Sopenharmony_ci
12598c2ecf20Sopenharmony_ci} __packed;
12608c2ecf20Sopenharmony_ci
12618c2ecf20Sopenharmony_cienum wcn36xx_hal_scan_type {
12628c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_TYPE_PASSIVE = 0x00,
12638c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_TYPE_ACTIVE = WCN36XX_HAL_MAX_ENUM_SIZE
12648c2ecf20Sopenharmony_ci};
12658c2ecf20Sopenharmony_ci
12668c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_ssid {
12678c2ecf20Sopenharmony_ci	u8 length;
12688c2ecf20Sopenharmony_ci	u8 ssid[32];
12698c2ecf20Sopenharmony_ci} __packed;
12708c2ecf20Sopenharmony_ci
12718c2ecf20Sopenharmony_cistruct wcn36xx_hal_start_scan_offload_req_msg {
12728c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
12738c2ecf20Sopenharmony_ci
12748c2ecf20Sopenharmony_ci	/* BSSIDs hot list */
12758c2ecf20Sopenharmony_ci	u8 num_bssid;
12768c2ecf20Sopenharmony_ci	u8 bssids[4][ETH_ALEN];
12778c2ecf20Sopenharmony_ci
12788c2ecf20Sopenharmony_ci	/* Directed probe-requests will be sent for listed SSIDs (max 10)*/
12798c2ecf20Sopenharmony_ci	u8 num_ssid;
12808c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_ssid ssids[10];
12818c2ecf20Sopenharmony_ci
12828c2ecf20Sopenharmony_ci	/* Report AP with hidden ssid */
12838c2ecf20Sopenharmony_ci	u8 scan_hidden;
12848c2ecf20Sopenharmony_ci
12858c2ecf20Sopenharmony_ci	/* Self MAC address */
12868c2ecf20Sopenharmony_ci	u8 mac[ETH_ALEN];
12878c2ecf20Sopenharmony_ci
12888c2ecf20Sopenharmony_ci	/* BSS type */
12898c2ecf20Sopenharmony_ci	enum wcn36xx_hal_bss_type bss_type;
12908c2ecf20Sopenharmony_ci
12918c2ecf20Sopenharmony_ci	/* Scan type */
12928c2ecf20Sopenharmony_ci	enum wcn36xx_hal_scan_type scan_type;
12938c2ecf20Sopenharmony_ci
12948c2ecf20Sopenharmony_ci	/* Minimum scanning time on each channel (ms) */
12958c2ecf20Sopenharmony_ci	u32 min_ch_time;
12968c2ecf20Sopenharmony_ci
12978c2ecf20Sopenharmony_ci	/* Maximum scanning time on each channel */
12988c2ecf20Sopenharmony_ci	u32 max_ch_time;
12998c2ecf20Sopenharmony_ci
13008c2ecf20Sopenharmony_ci	/* Is a p2p search */
13018c2ecf20Sopenharmony_ci	u8 p2p_search;
13028c2ecf20Sopenharmony_ci
13038c2ecf20Sopenharmony_ci	/* Channels to scan */
13048c2ecf20Sopenharmony_ci	u8 num_channel;
13058c2ecf20Sopenharmony_ci	u8 channels[80];
13068c2ecf20Sopenharmony_ci
13078c2ecf20Sopenharmony_ci	/* IE field */
13088c2ecf20Sopenharmony_ci	u16 ie_len;
13098c2ecf20Sopenharmony_ci	u8 ie[WCN36XX_MAX_SCAN_IE_LEN];
13108c2ecf20Sopenharmony_ci} __packed;
13118c2ecf20Sopenharmony_ci
13128c2ecf20Sopenharmony_cistruct wcn36xx_hal_start_scan_offload_rsp_msg {
13138c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
13148c2ecf20Sopenharmony_ci
13158c2ecf20Sopenharmony_ci	/* success or failure */
13168c2ecf20Sopenharmony_ci	u32 status;
13178c2ecf20Sopenharmony_ci} __packed;
13188c2ecf20Sopenharmony_ci
13198c2ecf20Sopenharmony_cienum wcn36xx_hal_scan_offload_ind_type {
13208c2ecf20Sopenharmony_ci	/* Scan has been started */
13218c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_STARTED = 0x01,
13228c2ecf20Sopenharmony_ci	/* Scan has been completed */
13238c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_COMPLETED = 0x02,
13248c2ecf20Sopenharmony_ci	/* Moved to foreign channel */
13258c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_FOREIGN_CHANNEL = 0x08,
13268c2ecf20Sopenharmony_ci	/* scan request has been dequeued */
13278c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_DEQUEUED = 0x10,
13288c2ecf20Sopenharmony_ci	/* preempted by other high priority scan */
13298c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_PREEMPTED = 0x20,
13308c2ecf20Sopenharmony_ci	/* scan start failed */
13318c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_FAILED = 0x40,
13328c2ecf20Sopenharmony_ci	 /*scan restarted */
13338c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_RESTARTED = 0x80,
13348c2ecf20Sopenharmony_ci	WCN36XX_HAL_SCAN_IND_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
13358c2ecf20Sopenharmony_ci};
13368c2ecf20Sopenharmony_ci
13378c2ecf20Sopenharmony_cistruct wcn36xx_hal_scan_offload_ind {
13388c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
13398c2ecf20Sopenharmony_ci
13408c2ecf20Sopenharmony_ci	u32 type;
13418c2ecf20Sopenharmony_ci	u32 channel_mhz;
13428c2ecf20Sopenharmony_ci	u32 scan_id;
13438c2ecf20Sopenharmony_ci} __packed;
13448c2ecf20Sopenharmony_ci
13458c2ecf20Sopenharmony_cistruct wcn36xx_hal_stop_scan_offload_req_msg {
13468c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
13478c2ecf20Sopenharmony_ci} __packed;
13488c2ecf20Sopenharmony_ci
13498c2ecf20Sopenharmony_cistruct wcn36xx_hal_stop_scan_offload_rsp_msg {
13508c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
13518c2ecf20Sopenharmony_ci
13528c2ecf20Sopenharmony_ci	/* success or failure */
13538c2ecf20Sopenharmony_ci	u32 status;
13548c2ecf20Sopenharmony_ci} __packed;
13558c2ecf20Sopenharmony_ci
13568c2ecf20Sopenharmony_cienum wcn36xx_hal_rate_index {
13578c2ecf20Sopenharmony_ci	HW_RATE_INDEX_1MBPS	= 0x82,
13588c2ecf20Sopenharmony_ci	HW_RATE_INDEX_2MBPS	= 0x84,
13598c2ecf20Sopenharmony_ci	HW_RATE_INDEX_5_5MBPS	= 0x8B,
13608c2ecf20Sopenharmony_ci	HW_RATE_INDEX_6MBPS	= 0x0C,
13618c2ecf20Sopenharmony_ci	HW_RATE_INDEX_9MBPS	= 0x12,
13628c2ecf20Sopenharmony_ci	HW_RATE_INDEX_11MBPS	= 0x96,
13638c2ecf20Sopenharmony_ci	HW_RATE_INDEX_12MBPS	= 0x18,
13648c2ecf20Sopenharmony_ci	HW_RATE_INDEX_18MBPS	= 0x24,
13658c2ecf20Sopenharmony_ci	HW_RATE_INDEX_24MBPS	= 0x30,
13668c2ecf20Sopenharmony_ci	HW_RATE_INDEX_36MBPS	= 0x48,
13678c2ecf20Sopenharmony_ci	HW_RATE_INDEX_48MBPS	= 0x60,
13688c2ecf20Sopenharmony_ci	HW_RATE_INDEX_54MBPS	= 0x6C
13698c2ecf20Sopenharmony_ci};
13708c2ecf20Sopenharmony_ci
13718c2ecf20Sopenharmony_cistruct wcn36xx_hal_supported_rates {
13728c2ecf20Sopenharmony_ci	/*
13738c2ecf20Sopenharmony_ci	 * For Self STA Entry: this represents Self Mode.
13748c2ecf20Sopenharmony_ci	 * For Peer Stations, this represents the mode of the peer.
13758c2ecf20Sopenharmony_ci	 * On Station:
13768c2ecf20Sopenharmony_ci	 *
13778c2ecf20Sopenharmony_ci	 * --this mode is updated when PE adds the Self Entry.
13788c2ecf20Sopenharmony_ci	 *
13798c2ecf20Sopenharmony_ci	 * -- OR when PE sends 'ADD_BSS' message and station context in BSS
13808c2ecf20Sopenharmony_ci	 *    is used to indicate the mode of the AP.
13818c2ecf20Sopenharmony_ci	 *
13828c2ecf20Sopenharmony_ci	 * ON AP:
13838c2ecf20Sopenharmony_ci	 *
13848c2ecf20Sopenharmony_ci	 * -- this mode is updated when PE sends 'ADD_BSS' and Sta entry
13858c2ecf20Sopenharmony_ci	 *     for that BSS is used to indicate the self mode of the AP.
13868c2ecf20Sopenharmony_ci	 *
13878c2ecf20Sopenharmony_ci	 * -- OR when a station is associated, PE sends 'ADD_STA' message
13888c2ecf20Sopenharmony_ci	 *    with this mode updated.
13898c2ecf20Sopenharmony_ci	 */
13908c2ecf20Sopenharmony_ci
13918c2ecf20Sopenharmony_ci	enum sta_rate_mode op_rate_mode;
13928c2ecf20Sopenharmony_ci
13938c2ecf20Sopenharmony_ci	/* 11b, 11a and aniLegacyRates are IE rates which gives rate in
13948c2ecf20Sopenharmony_ci	 * unit of 500Kbps */
13958c2ecf20Sopenharmony_ci	u16 dsss_rates[WCN36XX_HAL_NUM_DSSS_RATES];
13968c2ecf20Sopenharmony_ci	u16 ofdm_rates[WCN36XX_HAL_NUM_OFDM_RATES];
13978c2ecf20Sopenharmony_ci	u16 legacy_rates[WCN36XX_HAL_NUM_POLARIS_RATES];
13988c2ecf20Sopenharmony_ci	u16 reserved;
13998c2ecf20Sopenharmony_ci
14008c2ecf20Sopenharmony_ci	/* Taurus only supports 26 Titan Rates(no ESF/concat Rates will be
14018c2ecf20Sopenharmony_ci	 * supported) First 26 bits are reserved for those Titan rates and
14028c2ecf20Sopenharmony_ci	 * the last 4 bits(bit28-31) for Taurus, 2(bit26-27) bits are
14038c2ecf20Sopenharmony_ci	 * reserved. */
14048c2ecf20Sopenharmony_ci	/* Titan and Taurus Rates */
14058c2ecf20Sopenharmony_ci	u32 enhanced_rate_bitmap;
14068c2ecf20Sopenharmony_ci
14078c2ecf20Sopenharmony_ci	/*
14088c2ecf20Sopenharmony_ci	 * 0-76 bits used, remaining reserved
14098c2ecf20Sopenharmony_ci	 * bits 0-15 and 32 should be set.
14108c2ecf20Sopenharmony_ci	 */
14118c2ecf20Sopenharmony_ci	u8 supported_mcs_set[WCN36XX_HAL_MAC_MAX_SUPPORTED_MCS_SET];
14128c2ecf20Sopenharmony_ci
14138c2ecf20Sopenharmony_ci	/*
14148c2ecf20Sopenharmony_ci	 * RX Highest Supported Data Rate defines the highest data
14158c2ecf20Sopenharmony_ci	 * rate that the STA is able to receive, in unites of 1Mbps.
14168c2ecf20Sopenharmony_ci	 * This value is derived from "Supported MCS Set field" inside
14178c2ecf20Sopenharmony_ci	 * the HT capability element.
14188c2ecf20Sopenharmony_ci	 */
14198c2ecf20Sopenharmony_ci	u16 rx_highest_data_rate;
14208c2ecf20Sopenharmony_ci
14218c2ecf20Sopenharmony_ci} __packed;
14228c2ecf20Sopenharmony_ci
14238c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_sta_params {
14248c2ecf20Sopenharmony_ci	/* BSSID of STA */
14258c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
14268c2ecf20Sopenharmony_ci
14278c2ecf20Sopenharmony_ci	/* ASSOC ID, as assigned by UMAC */
14288c2ecf20Sopenharmony_ci	u16 aid;
14298c2ecf20Sopenharmony_ci
14308c2ecf20Sopenharmony_ci	/* STA entry Type: 0 - Self, 1 - Other/Peer, 2 - BSSID, 3 - BCAST */
14318c2ecf20Sopenharmony_ci	u8 type;
14328c2ecf20Sopenharmony_ci
14338c2ecf20Sopenharmony_ci	/* Short Preamble Supported. */
14348c2ecf20Sopenharmony_ci	u8 short_preamble_supported;
14358c2ecf20Sopenharmony_ci
14368c2ecf20Sopenharmony_ci	/* MAC Address of STA */
14378c2ecf20Sopenharmony_ci	u8 mac[ETH_ALEN];
14388c2ecf20Sopenharmony_ci
14398c2ecf20Sopenharmony_ci	/* Listen interval of the STA */
14408c2ecf20Sopenharmony_ci	u16 listen_interval;
14418c2ecf20Sopenharmony_ci
14428c2ecf20Sopenharmony_ci	/* Support for 11e/WMM */
14438c2ecf20Sopenharmony_ci	u8 wmm_enabled;
14448c2ecf20Sopenharmony_ci
14458c2ecf20Sopenharmony_ci	/* 11n HT capable STA */
14468c2ecf20Sopenharmony_ci	u8 ht_capable;
14478c2ecf20Sopenharmony_ci
14488c2ecf20Sopenharmony_ci	/* TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz */
14498c2ecf20Sopenharmony_ci	u8 tx_channel_width_set;
14508c2ecf20Sopenharmony_ci
14518c2ecf20Sopenharmony_ci	/* RIFS mode 0 - NA, 1 - Allowed */
14528c2ecf20Sopenharmony_ci	u8 rifs_mode;
14538c2ecf20Sopenharmony_ci
14548c2ecf20Sopenharmony_ci	/* L-SIG TXOP Protection mechanism
14558c2ecf20Sopenharmony_ci	   0 - No Support, 1 - Supported
14568c2ecf20Sopenharmony_ci	   SG - there is global field */
14578c2ecf20Sopenharmony_ci	u8 lsig_txop_protection;
14588c2ecf20Sopenharmony_ci
14598c2ecf20Sopenharmony_ci	/* Max Ampdu Size supported by STA. TPE programming.
14608c2ecf20Sopenharmony_ci	   0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k */
14618c2ecf20Sopenharmony_ci	u8 max_ampdu_size;
14628c2ecf20Sopenharmony_ci
14638c2ecf20Sopenharmony_ci	/* Max Ampdu density. Used by RA.  3 : 0~7 : 2^(11nAMPDUdensity -4) */
14648c2ecf20Sopenharmony_ci	u8 max_ampdu_density;
14658c2ecf20Sopenharmony_ci
14668c2ecf20Sopenharmony_ci	/* Max AMSDU size 1 : 3839 bytes, 0 : 7935 bytes */
14678c2ecf20Sopenharmony_ci	u8 max_amsdu_size;
14688c2ecf20Sopenharmony_ci
14698c2ecf20Sopenharmony_ci	/* Short GI support for 40Mhz packets */
14708c2ecf20Sopenharmony_ci	u8 sgi_40mhz;
14718c2ecf20Sopenharmony_ci
14728c2ecf20Sopenharmony_ci	/* Short GI support for 20Mhz packets */
14738c2ecf20Sopenharmony_ci	u8 sgi_20Mhz;
14748c2ecf20Sopenharmony_ci
14758c2ecf20Sopenharmony_ci	/* TODO move this parameter to the end for 3680 */
14768c2ecf20Sopenharmony_ci	/* These rates are the intersection of peer and self capabilities. */
14778c2ecf20Sopenharmony_ci	struct wcn36xx_hal_supported_rates supported_rates;
14788c2ecf20Sopenharmony_ci
14798c2ecf20Sopenharmony_ci	/* Robust Management Frame (RMF) enabled/disabled */
14808c2ecf20Sopenharmony_ci	u8 rmf;
14818c2ecf20Sopenharmony_ci
14828c2ecf20Sopenharmony_ci	/* The unicast encryption type in the association */
14838c2ecf20Sopenharmony_ci	u32 encrypt_type;
14848c2ecf20Sopenharmony_ci
14858c2ecf20Sopenharmony_ci	/* HAL should update the existing STA entry, if this flag is set. UMAC
14868c2ecf20Sopenharmony_ci	   will set this flag in case of RE-ASSOC, where we want to reuse the
14878c2ecf20Sopenharmony_ci	   old STA ID. 0 = Add, 1 = Update */
14888c2ecf20Sopenharmony_ci	u8 action;
14898c2ecf20Sopenharmony_ci
14908c2ecf20Sopenharmony_ci	/* U-APSD Flags: 1b per AC.  Encoded as follows:
14918c2ecf20Sopenharmony_ci	   b7 b6 b5 b4 b3 b2 b1 b0 =
14928c2ecf20Sopenharmony_ci	   X  X  X  X  BE BK VI VO */
14938c2ecf20Sopenharmony_ci	u8 uapsd;
14948c2ecf20Sopenharmony_ci
14958c2ecf20Sopenharmony_ci	/* Max SP Length */
14968c2ecf20Sopenharmony_ci	u8 max_sp_len;
14978c2ecf20Sopenharmony_ci
14988c2ecf20Sopenharmony_ci	/* 11n Green Field preamble support
14998c2ecf20Sopenharmony_ci	   0 - Not supported, 1 - Supported */
15008c2ecf20Sopenharmony_ci	u8 green_field_capable;
15018c2ecf20Sopenharmony_ci
15028c2ecf20Sopenharmony_ci	/* MIMO Power Save mode */
15038c2ecf20Sopenharmony_ci	enum wcn36xx_hal_ht_mimo_state mimo_ps;
15048c2ecf20Sopenharmony_ci
15058c2ecf20Sopenharmony_ci	/* Delayed BA Support */
15068c2ecf20Sopenharmony_ci	u8 delayed_ba_support;
15078c2ecf20Sopenharmony_ci
15088c2ecf20Sopenharmony_ci	/* Max AMPDU duration in 32us */
15098c2ecf20Sopenharmony_ci	u8 max_ampdu_duration;
15108c2ecf20Sopenharmony_ci
15118c2ecf20Sopenharmony_ci	/* HT STA should set it to 1 if it is enabled in BSS. HT STA should
15128c2ecf20Sopenharmony_ci	 * set it to 0 if AP does not support it. This indication is sent
15138c2ecf20Sopenharmony_ci	 * to HAL and HAL uses this flag to pickup up appropriate 40Mhz
15148c2ecf20Sopenharmony_ci	 * rates. */
15158c2ecf20Sopenharmony_ci	u8 dsss_cck_mode_40mhz;
15168c2ecf20Sopenharmony_ci
15178c2ecf20Sopenharmony_ci	/* Valid STA Idx when action=Update. Set to 0xFF when invalid!
15188c2ecf20Sopenharmony_ci	 * Retained for backward compalibity with existing HAL code */
15198c2ecf20Sopenharmony_ci	u8 sta_index;
15208c2ecf20Sopenharmony_ci
15218c2ecf20Sopenharmony_ci	/* BSSID of BSS to which station is associated. Set to 0xFF when
15228c2ecf20Sopenharmony_ci	 * invalid. Retained for backward compalibity with existing HAL
15238c2ecf20Sopenharmony_ci	 * code */
15248c2ecf20Sopenharmony_ci	u8 bssid_index;
15258c2ecf20Sopenharmony_ci
15268c2ecf20Sopenharmony_ci	u8 p2p;
15278c2ecf20Sopenharmony_ci
15288c2ecf20Sopenharmony_ci	/* TODO add this parameter for 3680. */
15298c2ecf20Sopenharmony_ci	/* Reserved to align next field on a dword boundary */
15308c2ecf20Sopenharmony_ci	/* u8 reserved; */
15318c2ecf20Sopenharmony_ci} __packed;
15328c2ecf20Sopenharmony_ci
15338c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_sta_req_msg {
15348c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
15358c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_sta_params sta_params;
15368c2ecf20Sopenharmony_ci} __packed;
15378c2ecf20Sopenharmony_ci
15388c2ecf20Sopenharmony_cistruct wcn36xx_hal_supported_rates_v1 {
15398c2ecf20Sopenharmony_ci	/* For Self STA Entry: this represents Self Mode.
15408c2ecf20Sopenharmony_ci	 * For Peer Stations, this represents the mode of the peer.
15418c2ecf20Sopenharmony_ci	 * On Station:
15428c2ecf20Sopenharmony_ci	 *
15438c2ecf20Sopenharmony_ci	 * --this mode is updated when PE adds the Self Entry.
15448c2ecf20Sopenharmony_ci	 *
15458c2ecf20Sopenharmony_ci	 * -- OR when PE sends 'ADD_BSS' message and station context in BSS
15468c2ecf20Sopenharmony_ci	 *    is used to indicate the mode of the AP.
15478c2ecf20Sopenharmony_ci	 *
15488c2ecf20Sopenharmony_ci	 * ON AP:
15498c2ecf20Sopenharmony_ci	 *
15508c2ecf20Sopenharmony_ci	 * -- this mode is updated when PE sends 'ADD_BSS' and Sta entry
15518c2ecf20Sopenharmony_ci	 *     for that BSS is used to indicate the self mode of the AP.
15528c2ecf20Sopenharmony_ci	 *
15538c2ecf20Sopenharmony_ci	 * -- OR when a station is associated, PE sends 'ADD_STA' message
15548c2ecf20Sopenharmony_ci	 *    with this mode updated.
15558c2ecf20Sopenharmony_ci	 */
15568c2ecf20Sopenharmony_ci
15578c2ecf20Sopenharmony_ci	enum sta_rate_mode op_rate_mode;
15588c2ecf20Sopenharmony_ci
15598c2ecf20Sopenharmony_ci	/* 11b, 11a and aniLegacyRates are IE rates which gives rate in
15608c2ecf20Sopenharmony_ci	 * unit of 500Kbps
15618c2ecf20Sopenharmony_ci	 */
15628c2ecf20Sopenharmony_ci	u16 dsss_rates[WCN36XX_HAL_NUM_DSSS_RATES];
15638c2ecf20Sopenharmony_ci	u16 ofdm_rates[WCN36XX_HAL_NUM_OFDM_RATES];
15648c2ecf20Sopenharmony_ci	u16 legacy_rates[WCN36XX_HAL_NUM_POLARIS_RATES];
15658c2ecf20Sopenharmony_ci	u16 reserved;
15668c2ecf20Sopenharmony_ci
15678c2ecf20Sopenharmony_ci	/* Taurus only supports 26 Titan Rates(no ESF/concat Rates will be
15688c2ecf20Sopenharmony_ci	 * supported) First 26 bits are reserved for those Titan rates and
15698c2ecf20Sopenharmony_ci	 * the last 4 bits(bit28-31) for Taurus, 2(bit26-27) bits are
15708c2ecf20Sopenharmony_ci	 * reserved
15718c2ecf20Sopenharmony_ci	 * Titan and Taurus Rates
15728c2ecf20Sopenharmony_ci	 */
15738c2ecf20Sopenharmony_ci	u32 enhanced_rate_bitmap;
15748c2ecf20Sopenharmony_ci
15758c2ecf20Sopenharmony_ci	/* 0-76 bits used, remaining reserved
15768c2ecf20Sopenharmony_ci	 * bits 0-15 and 32 should be set.
15778c2ecf20Sopenharmony_ci	 */
15788c2ecf20Sopenharmony_ci	u8 supported_mcs_set[WCN36XX_HAL_MAC_MAX_SUPPORTED_MCS_SET];
15798c2ecf20Sopenharmony_ci
15808c2ecf20Sopenharmony_ci	/* RX Highest Supported Data Rate defines the highest data
15818c2ecf20Sopenharmony_ci	 * rate that the STA is able to receive, in unites of 1Mbps.
15828c2ecf20Sopenharmony_ci	 * This value is derived from "Supported MCS Set field" inside
15838c2ecf20Sopenharmony_ci	 * the HT capability element.
15848c2ecf20Sopenharmony_ci	 */
15858c2ecf20Sopenharmony_ci	u16 rx_highest_data_rate;
15868c2ecf20Sopenharmony_ci
15878c2ecf20Sopenharmony_ci	/* Indicates the Maximum MCS that can be received for each spatial
15888c2ecf20Sopenharmony_ci	 * stream.
15898c2ecf20Sopenharmony_ci	 */
15908c2ecf20Sopenharmony_ci	u16 vht_rx_mcs_map;
15918c2ecf20Sopenharmony_ci
15928c2ecf20Sopenharmony_ci	/* Indicates the highest VHT data rate that the STA is able to
15938c2ecf20Sopenharmony_ci	 * receive.
15948c2ecf20Sopenharmony_ci	 */
15958c2ecf20Sopenharmony_ci	u16 vht_rx_highest_data_rate;
15968c2ecf20Sopenharmony_ci
15978c2ecf20Sopenharmony_ci	/* Indicates the Maximum MCS that can be transmitted for each spatial
15988c2ecf20Sopenharmony_ci	 * stream.
15998c2ecf20Sopenharmony_ci	 */
16008c2ecf20Sopenharmony_ci	u16 vht_tx_mcs_map;
16018c2ecf20Sopenharmony_ci
16028c2ecf20Sopenharmony_ci	/* Indicates the highest VHT data rate that the STA is able to
16038c2ecf20Sopenharmony_ci	 * transmit.
16048c2ecf20Sopenharmony_ci	 */
16058c2ecf20Sopenharmony_ci	u16 vht_tx_highest_data_rate;
16068c2ecf20Sopenharmony_ci} __packed;
16078c2ecf20Sopenharmony_ci
16088c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_sta_params_v1 {
16098c2ecf20Sopenharmony_ci	/* BSSID of STA */
16108c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
16118c2ecf20Sopenharmony_ci
16128c2ecf20Sopenharmony_ci	/* ASSOC ID, as assigned by UMAC */
16138c2ecf20Sopenharmony_ci	u16 aid;
16148c2ecf20Sopenharmony_ci
16158c2ecf20Sopenharmony_ci	/* STA entry Type: 0 - Self, 1 - Other/Peer, 2 - BSSID, 3 - BCAST */
16168c2ecf20Sopenharmony_ci	u8 type;
16178c2ecf20Sopenharmony_ci
16188c2ecf20Sopenharmony_ci	/* Short Preamble Supported. */
16198c2ecf20Sopenharmony_ci	u8 short_preamble_supported;
16208c2ecf20Sopenharmony_ci
16218c2ecf20Sopenharmony_ci	/* MAC Address of STA */
16228c2ecf20Sopenharmony_ci	u8 mac[ETH_ALEN];
16238c2ecf20Sopenharmony_ci
16248c2ecf20Sopenharmony_ci	/* Listen interval of the STA */
16258c2ecf20Sopenharmony_ci	u16 listen_interval;
16268c2ecf20Sopenharmony_ci
16278c2ecf20Sopenharmony_ci	/* Support for 11e/WMM */
16288c2ecf20Sopenharmony_ci	u8 wmm_enabled;
16298c2ecf20Sopenharmony_ci
16308c2ecf20Sopenharmony_ci	/* 11n HT capable STA */
16318c2ecf20Sopenharmony_ci	u8 ht_capable;
16328c2ecf20Sopenharmony_ci
16338c2ecf20Sopenharmony_ci	/* TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz */
16348c2ecf20Sopenharmony_ci	u8 tx_channel_width_set;
16358c2ecf20Sopenharmony_ci
16368c2ecf20Sopenharmony_ci	/* RIFS mode 0 - NA, 1 - Allowed */
16378c2ecf20Sopenharmony_ci	u8 rifs_mode;
16388c2ecf20Sopenharmony_ci
16398c2ecf20Sopenharmony_ci	/* L-SIG TXOP Protection mechanism
16408c2ecf20Sopenharmony_ci	   0 - No Support, 1 - Supported
16418c2ecf20Sopenharmony_ci	   SG - there is global field */
16428c2ecf20Sopenharmony_ci	u8 lsig_txop_protection;
16438c2ecf20Sopenharmony_ci
16448c2ecf20Sopenharmony_ci	/* Max Ampdu Size supported by STA. TPE programming.
16458c2ecf20Sopenharmony_ci	   0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k */
16468c2ecf20Sopenharmony_ci	u8 max_ampdu_size;
16478c2ecf20Sopenharmony_ci
16488c2ecf20Sopenharmony_ci	/* Max Ampdu density. Used by RA.  3 : 0~7 : 2^(11nAMPDUdensity -4) */
16498c2ecf20Sopenharmony_ci	u8 max_ampdu_density;
16508c2ecf20Sopenharmony_ci
16518c2ecf20Sopenharmony_ci	/* Max AMSDU size 1 : 3839 bytes, 0 : 7935 bytes */
16528c2ecf20Sopenharmony_ci	u8 max_amsdu_size;
16538c2ecf20Sopenharmony_ci
16548c2ecf20Sopenharmony_ci	/* Short GI support for 40Mhz packets */
16558c2ecf20Sopenharmony_ci	u8 sgi_40mhz;
16568c2ecf20Sopenharmony_ci
16578c2ecf20Sopenharmony_ci	/* Short GI support for 20Mhz packets */
16588c2ecf20Sopenharmony_ci	u8 sgi_20Mhz;
16598c2ecf20Sopenharmony_ci
16608c2ecf20Sopenharmony_ci	/* Robust Management Frame (RMF) enabled/disabled */
16618c2ecf20Sopenharmony_ci	u8 rmf;
16628c2ecf20Sopenharmony_ci
16638c2ecf20Sopenharmony_ci	/* The unicast encryption type in the association */
16648c2ecf20Sopenharmony_ci	u32 encrypt_type;
16658c2ecf20Sopenharmony_ci
16668c2ecf20Sopenharmony_ci	/* HAL should update the existing STA entry, if this flag is set. UMAC
16678c2ecf20Sopenharmony_ci	   will set this flag in case of RE-ASSOC, where we want to reuse the
16688c2ecf20Sopenharmony_ci	   old STA ID. 0 = Add, 1 = Update */
16698c2ecf20Sopenharmony_ci	u8 action;
16708c2ecf20Sopenharmony_ci
16718c2ecf20Sopenharmony_ci	/* U-APSD Flags: 1b per AC.  Encoded as follows:
16728c2ecf20Sopenharmony_ci	   b7 b6 b5 b4 b3 b2 b1 b0 =
16738c2ecf20Sopenharmony_ci	   X  X  X  X  BE BK VI VO */
16748c2ecf20Sopenharmony_ci	u8 uapsd;
16758c2ecf20Sopenharmony_ci
16768c2ecf20Sopenharmony_ci	/* Max SP Length */
16778c2ecf20Sopenharmony_ci	u8 max_sp_len;
16788c2ecf20Sopenharmony_ci
16798c2ecf20Sopenharmony_ci	/* 11n Green Field preamble support
16808c2ecf20Sopenharmony_ci	   0 - Not supported, 1 - Supported */
16818c2ecf20Sopenharmony_ci	u8 green_field_capable;
16828c2ecf20Sopenharmony_ci
16838c2ecf20Sopenharmony_ci	/* MIMO Power Save mode */
16848c2ecf20Sopenharmony_ci	enum wcn36xx_hal_ht_mimo_state mimo_ps;
16858c2ecf20Sopenharmony_ci
16868c2ecf20Sopenharmony_ci	/* Delayed BA Support */
16878c2ecf20Sopenharmony_ci	u8 delayed_ba_support;
16888c2ecf20Sopenharmony_ci
16898c2ecf20Sopenharmony_ci	/* Max AMPDU duration in 32us */
16908c2ecf20Sopenharmony_ci	u8 max_ampdu_duration;
16918c2ecf20Sopenharmony_ci
16928c2ecf20Sopenharmony_ci	/* HT STA should set it to 1 if it is enabled in BSS. HT STA should
16938c2ecf20Sopenharmony_ci	 * set it to 0 if AP does not support it. This indication is sent
16948c2ecf20Sopenharmony_ci	 * to HAL and HAL uses this flag to pickup up appropriate 40Mhz
16958c2ecf20Sopenharmony_ci	 * rates. */
16968c2ecf20Sopenharmony_ci	u8 dsss_cck_mode_40mhz;
16978c2ecf20Sopenharmony_ci
16988c2ecf20Sopenharmony_ci	/* Valid STA Idx when action=Update. Set to 0xFF when invalid!
16998c2ecf20Sopenharmony_ci	 * Retained for backward compalibity with existing HAL code */
17008c2ecf20Sopenharmony_ci	u8 sta_index;
17018c2ecf20Sopenharmony_ci
17028c2ecf20Sopenharmony_ci	/* BSSID of BSS to which station is associated. Set to 0xFF when
17038c2ecf20Sopenharmony_ci	 * invalid. Retained for backward compalibity with existing HAL
17048c2ecf20Sopenharmony_ci	 * code */
17058c2ecf20Sopenharmony_ci	u8 bssid_index;
17068c2ecf20Sopenharmony_ci
17078c2ecf20Sopenharmony_ci	u8 p2p;
17088c2ecf20Sopenharmony_ci
17098c2ecf20Sopenharmony_ci	/* Reserved to align next field on a dword boundary */
17108c2ecf20Sopenharmony_ci	u8 ht_ldpc_enabled:1;
17118c2ecf20Sopenharmony_ci	u8 vht_ldpc_enabled:1;
17128c2ecf20Sopenharmony_ci	u8 vht_tx_bf_enabled:1;
17138c2ecf20Sopenharmony_ci	u8 vht_tx_mu_beamformee_capable:1;
17148c2ecf20Sopenharmony_ci	u8 reserved:4;
17158c2ecf20Sopenharmony_ci
17168c2ecf20Sopenharmony_ci	/* These rates are the intersection of peer and self capabilities. */
17178c2ecf20Sopenharmony_ci	struct wcn36xx_hal_supported_rates_v1 supported_rates;
17188c2ecf20Sopenharmony_ci
17198c2ecf20Sopenharmony_ci	u8 vht_capable;
17208c2ecf20Sopenharmony_ci	u8 vht_tx_channel_width_set;
17218c2ecf20Sopenharmony_ci
17228c2ecf20Sopenharmony_ci} __packed;
17238c2ecf20Sopenharmony_ci
17248c2ecf20Sopenharmony_ci#define WCN36XX_DIFF_STA_PARAMS_V1_NOVHT 10
17258c2ecf20Sopenharmony_ci
17268c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_sta_req_msg_v1 {
17278c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
17288c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_sta_params_v1 sta_params;
17298c2ecf20Sopenharmony_ci} __packed;
17308c2ecf20Sopenharmony_ci
17318c2ecf20Sopenharmony_cistruct config_sta_rsp_params {
17328c2ecf20Sopenharmony_ci	/* success or failure */
17338c2ecf20Sopenharmony_ci	u32 status;
17348c2ecf20Sopenharmony_ci
17358c2ecf20Sopenharmony_ci	/* Station index; valid only when 'status' field value SUCCESS */
17368c2ecf20Sopenharmony_ci	u8 sta_index;
17378c2ecf20Sopenharmony_ci
17388c2ecf20Sopenharmony_ci	/* BSSID Index of BSS to which the station is associated */
17398c2ecf20Sopenharmony_ci	u8 bssid_index;
17408c2ecf20Sopenharmony_ci
17418c2ecf20Sopenharmony_ci	/* DPU Index for PTK */
17428c2ecf20Sopenharmony_ci	u8 dpu_index;
17438c2ecf20Sopenharmony_ci
17448c2ecf20Sopenharmony_ci	/* DPU Index for GTK */
17458c2ecf20Sopenharmony_ci	u8 bcast_dpu_index;
17468c2ecf20Sopenharmony_ci
17478c2ecf20Sopenharmony_ci	/* DPU Index for IGTK  */
17488c2ecf20Sopenharmony_ci	u8 bcast_mgmt_dpu_idx;
17498c2ecf20Sopenharmony_ci
17508c2ecf20Sopenharmony_ci	/* PTK DPU signature */
17518c2ecf20Sopenharmony_ci	u8 uc_ucast_sig;
17528c2ecf20Sopenharmony_ci
17538c2ecf20Sopenharmony_ci	/* GTK DPU isignature */
17548c2ecf20Sopenharmony_ci	u8 uc_bcast_sig;
17558c2ecf20Sopenharmony_ci
17568c2ecf20Sopenharmony_ci	/* IGTK DPU signature */
17578c2ecf20Sopenharmony_ci	u8 uc_mgmt_sig;
17588c2ecf20Sopenharmony_ci
17598c2ecf20Sopenharmony_ci	u8 p2p;
17608c2ecf20Sopenharmony_ci
17618c2ecf20Sopenharmony_ci} __packed;
17628c2ecf20Sopenharmony_ci
17638c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_sta_rsp_msg {
17648c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
17658c2ecf20Sopenharmony_ci
17668c2ecf20Sopenharmony_ci	struct config_sta_rsp_params params;
17678c2ecf20Sopenharmony_ci} __packed;
17688c2ecf20Sopenharmony_ci
17698c2ecf20Sopenharmony_ci/* Delete STA Request message */
17708c2ecf20Sopenharmony_cistruct wcn36xx_hal_delete_sta_req_msg {
17718c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
17728c2ecf20Sopenharmony_ci
17738c2ecf20Sopenharmony_ci	/* Index of STA to delete */
17748c2ecf20Sopenharmony_ci	u8 sta_index;
17758c2ecf20Sopenharmony_ci
17768c2ecf20Sopenharmony_ci} __packed;
17778c2ecf20Sopenharmony_ci
17788c2ecf20Sopenharmony_ci/* Delete STA Response message */
17798c2ecf20Sopenharmony_cistruct wcn36xx_hal_delete_sta_rsp_msg {
17808c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
17818c2ecf20Sopenharmony_ci
17828c2ecf20Sopenharmony_ci	/* success or failure */
17838c2ecf20Sopenharmony_ci	u32 status;
17848c2ecf20Sopenharmony_ci
17858c2ecf20Sopenharmony_ci	/* Index of STA deleted */
17868c2ecf20Sopenharmony_ci	u8 sta_id;
17878c2ecf20Sopenharmony_ci} __packed;
17888c2ecf20Sopenharmony_ci
17898c2ecf20Sopenharmony_ci/* 12 Bytes long because this structure can be used to represent rate and
17908c2ecf20Sopenharmony_ci * extended rate set IEs. The parser assume this to be at least 12 */
17918c2ecf20Sopenharmony_cistruct wcn36xx_hal_rate_set {
17928c2ecf20Sopenharmony_ci	u8 num_rates;
17938c2ecf20Sopenharmony_ci	u8 rate[WCN36XX_HAL_MAC_RATESET_EID_MAX];
17948c2ecf20Sopenharmony_ci} __packed;
17958c2ecf20Sopenharmony_ci
17968c2ecf20Sopenharmony_ci/* access category record */
17978c2ecf20Sopenharmony_cistruct wcn36xx_hal_aci_aifsn {
17988c2ecf20Sopenharmony_ci#ifndef ANI_LITTLE_BIT_ENDIAN
17998c2ecf20Sopenharmony_ci	u8 rsvd:1;
18008c2ecf20Sopenharmony_ci	u8 aci:2;
18018c2ecf20Sopenharmony_ci	u8 acm:1;
18028c2ecf20Sopenharmony_ci	u8 aifsn:4;
18038c2ecf20Sopenharmony_ci#else
18048c2ecf20Sopenharmony_ci	u8 aifsn:4;
18058c2ecf20Sopenharmony_ci	u8 acm:1;
18068c2ecf20Sopenharmony_ci	u8 aci:2;
18078c2ecf20Sopenharmony_ci	u8 rsvd:1;
18088c2ecf20Sopenharmony_ci#endif
18098c2ecf20Sopenharmony_ci} __packed;
18108c2ecf20Sopenharmony_ci
18118c2ecf20Sopenharmony_ci/* contention window size */
18128c2ecf20Sopenharmony_cistruct wcn36xx_hal_mac_cw {
18138c2ecf20Sopenharmony_ci#ifndef ANI_LITTLE_BIT_ENDIAN
18148c2ecf20Sopenharmony_ci	u8 max:4;
18158c2ecf20Sopenharmony_ci	u8 min:4;
18168c2ecf20Sopenharmony_ci#else
18178c2ecf20Sopenharmony_ci	u8 min:4;
18188c2ecf20Sopenharmony_ci	u8 max:4;
18198c2ecf20Sopenharmony_ci#endif
18208c2ecf20Sopenharmony_ci} __packed;
18218c2ecf20Sopenharmony_ci
18228c2ecf20Sopenharmony_cistruct wcn36xx_hal_edca_param_record {
18238c2ecf20Sopenharmony_ci	struct wcn36xx_hal_aci_aifsn aci;
18248c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_cw cw;
18258c2ecf20Sopenharmony_ci	u16 txop_limit;
18268c2ecf20Sopenharmony_ci} __packed;
18278c2ecf20Sopenharmony_ci
18288c2ecf20Sopenharmony_ci/* Concurrency role. These are generic IDs that identify the various roles
18298c2ecf20Sopenharmony_ci *  in the software system. */
18308c2ecf20Sopenharmony_cienum wcn36xx_hal_con_mode {
18318c2ecf20Sopenharmony_ci	WCN36XX_HAL_STA_MODE = 0,
18328c2ecf20Sopenharmony_ci
18338c2ecf20Sopenharmony_ci	/* to support softAp mode . This is misleading.
18348c2ecf20Sopenharmony_ci	   It means AP MODE only. */
18358c2ecf20Sopenharmony_ci	WCN36XX_HAL_STA_SAP_MODE = 1,
18368c2ecf20Sopenharmony_ci
18378c2ecf20Sopenharmony_ci	WCN36XX_HAL_P2P_CLIENT_MODE,
18388c2ecf20Sopenharmony_ci	WCN36XX_HAL_P2P_GO_MODE,
18398c2ecf20Sopenharmony_ci	WCN36XX_HAL_MONITOR_MODE,
18408c2ecf20Sopenharmony_ci};
18418c2ecf20Sopenharmony_ci
18428c2ecf20Sopenharmony_ci/* This is a bit pattern to be set for each mode
18438c2ecf20Sopenharmony_ci * bit 0 - sta mode
18448c2ecf20Sopenharmony_ci * bit 1 - ap mode
18458c2ecf20Sopenharmony_ci * bit 2 - p2p client mode
18468c2ecf20Sopenharmony_ci * bit 3 - p2p go mode */
18478c2ecf20Sopenharmony_cienum wcn36xx_hal_concurrency_mode {
18488c2ecf20Sopenharmony_ci	HAL_STA = 1,
18498c2ecf20Sopenharmony_ci	HAL_SAP = 2,
18508c2ecf20Sopenharmony_ci
18518c2ecf20Sopenharmony_ci	/* to support sta, softAp  mode . This means STA+AP mode */
18528c2ecf20Sopenharmony_ci	HAL_STA_SAP = 3,
18538c2ecf20Sopenharmony_ci
18548c2ecf20Sopenharmony_ci	HAL_P2P_CLIENT = 4,
18558c2ecf20Sopenharmony_ci	HAL_P2P_GO = 8,
18568c2ecf20Sopenharmony_ci	HAL_MAX_CONCURRENCY_PERSONA = 4
18578c2ecf20Sopenharmony_ci};
18588c2ecf20Sopenharmony_ci
18598c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_bss_params {
18608c2ecf20Sopenharmony_ci	/* BSSID */
18618c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
18628c2ecf20Sopenharmony_ci
18638c2ecf20Sopenharmony_ci	/* Self Mac Address */
18648c2ecf20Sopenharmony_ci	u8 self_mac_addr[ETH_ALEN];
18658c2ecf20Sopenharmony_ci
18668c2ecf20Sopenharmony_ci	/* BSS type */
18678c2ecf20Sopenharmony_ci	enum wcn36xx_hal_bss_type bss_type;
18688c2ecf20Sopenharmony_ci
18698c2ecf20Sopenharmony_ci	/* Operational Mode: AP =0, STA = 1 */
18708c2ecf20Sopenharmony_ci	u8 oper_mode;
18718c2ecf20Sopenharmony_ci
18728c2ecf20Sopenharmony_ci	/* Network Type */
18738c2ecf20Sopenharmony_ci	enum wcn36xx_hal_nw_type nw_type;
18748c2ecf20Sopenharmony_ci
18758c2ecf20Sopenharmony_ci	/* Used to classify PURE_11G/11G_MIXED to program MTU */
18768c2ecf20Sopenharmony_ci	u8 short_slot_time_supported;
18778c2ecf20Sopenharmony_ci
18788c2ecf20Sopenharmony_ci	/* Co-exist with 11a STA */
18798c2ecf20Sopenharmony_ci	u8 lla_coexist;
18808c2ecf20Sopenharmony_ci
18818c2ecf20Sopenharmony_ci	/* Co-exist with 11b STA */
18828c2ecf20Sopenharmony_ci	u8 llb_coexist;
18838c2ecf20Sopenharmony_ci
18848c2ecf20Sopenharmony_ci	/* Co-exist with 11g STA */
18858c2ecf20Sopenharmony_ci	u8 llg_coexist;
18868c2ecf20Sopenharmony_ci
18878c2ecf20Sopenharmony_ci	/* Coexistence with 11n STA */
18888c2ecf20Sopenharmony_ci	u8 ht20_coexist;
18898c2ecf20Sopenharmony_ci
18908c2ecf20Sopenharmony_ci	/* Non GF coexist flag */
18918c2ecf20Sopenharmony_ci	u8 lln_non_gf_coexist;
18928c2ecf20Sopenharmony_ci
18938c2ecf20Sopenharmony_ci	/* TXOP protection support */
18948c2ecf20Sopenharmony_ci	u8 lsig_tx_op_protection_full_support;
18958c2ecf20Sopenharmony_ci
18968c2ecf20Sopenharmony_ci	/* RIFS mode */
18978c2ecf20Sopenharmony_ci	u8 rifs_mode;
18988c2ecf20Sopenharmony_ci
18998c2ecf20Sopenharmony_ci	/* Beacon Interval in TU */
19008c2ecf20Sopenharmony_ci	u16 beacon_interval;
19018c2ecf20Sopenharmony_ci
19028c2ecf20Sopenharmony_ci	/* DTIM period */
19038c2ecf20Sopenharmony_ci	u8 dtim_period;
19048c2ecf20Sopenharmony_ci
19058c2ecf20Sopenharmony_ci	/* TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz */
19068c2ecf20Sopenharmony_ci	u8 tx_channel_width_set;
19078c2ecf20Sopenharmony_ci
19088c2ecf20Sopenharmony_ci	/* Operating channel */
19098c2ecf20Sopenharmony_ci	u8 oper_channel;
19108c2ecf20Sopenharmony_ci
19118c2ecf20Sopenharmony_ci	/* Extension channel for channel bonding */
19128c2ecf20Sopenharmony_ci	u8 ext_channel;
19138c2ecf20Sopenharmony_ci
19148c2ecf20Sopenharmony_ci	/* Reserved to align next field on a dword boundary */
19158c2ecf20Sopenharmony_ci	u8 reserved;
19168c2ecf20Sopenharmony_ci
19178c2ecf20Sopenharmony_ci	/* TODO move sta to the end for 3680 */
19188c2ecf20Sopenharmony_ci	/* Context of the station being added in HW
19198c2ecf20Sopenharmony_ci	 *  Add a STA entry for "itself" -
19208c2ecf20Sopenharmony_ci	 *
19218c2ecf20Sopenharmony_ci	 *  On AP  - Add the AP itself in an "STA context"
19228c2ecf20Sopenharmony_ci	 *
19238c2ecf20Sopenharmony_ci	 *  On STA - Add the AP to which this STA is joining in an
19248c2ecf20Sopenharmony_ci	 *  "STA context"
19258c2ecf20Sopenharmony_ci	 */
19268c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_sta_params sta;
19278c2ecf20Sopenharmony_ci	/* SSID of the BSS */
19288c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_ssid ssid;
19298c2ecf20Sopenharmony_ci
19308c2ecf20Sopenharmony_ci	/* HAL should update the existing BSS entry, if this flag is set.
19318c2ecf20Sopenharmony_ci	 * UMAC will set this flag in case of reassoc, where we want to
19328c2ecf20Sopenharmony_ci	 * resue the the old BSSID and still return success 0 = Add, 1 =
19338c2ecf20Sopenharmony_ci	 * Update */
19348c2ecf20Sopenharmony_ci	u8 action;
19358c2ecf20Sopenharmony_ci
19368c2ecf20Sopenharmony_ci	/* MAC Rate Set */
19378c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rate_set rateset;
19388c2ecf20Sopenharmony_ci
19398c2ecf20Sopenharmony_ci	/* Enable/Disable HT capabilities of the BSS */
19408c2ecf20Sopenharmony_ci	u8 ht;
19418c2ecf20Sopenharmony_ci
19428c2ecf20Sopenharmony_ci	/* Enable/Disable OBSS protection */
19438c2ecf20Sopenharmony_ci	u8 obss_prot_enabled;
19448c2ecf20Sopenharmony_ci
19458c2ecf20Sopenharmony_ci	/* RMF enabled/disabled */
19468c2ecf20Sopenharmony_ci	u8 rmf;
19478c2ecf20Sopenharmony_ci
19488c2ecf20Sopenharmony_ci	/* HT Operating Mode operating mode of the 802.11n STA */
19498c2ecf20Sopenharmony_ci	enum wcn36xx_hal_ht_operating_mode ht_oper_mode;
19508c2ecf20Sopenharmony_ci
19518c2ecf20Sopenharmony_ci	/* Dual CTS Protection: 0 - Unused, 1 - Used */
19528c2ecf20Sopenharmony_ci	u8 dual_cts_protection;
19538c2ecf20Sopenharmony_ci
19548c2ecf20Sopenharmony_ci	/* Probe Response Max retries */
19558c2ecf20Sopenharmony_ci	u8 max_probe_resp_retry_limit;
19568c2ecf20Sopenharmony_ci
19578c2ecf20Sopenharmony_ci	/* To Enable Hidden ssid */
19588c2ecf20Sopenharmony_ci	u8 hidden_ssid;
19598c2ecf20Sopenharmony_ci
19608c2ecf20Sopenharmony_ci	/* To Enable Disable FW Proxy Probe Resp */
19618c2ecf20Sopenharmony_ci	u8 proxy_probe_resp;
19628c2ecf20Sopenharmony_ci
19638c2ecf20Sopenharmony_ci	/* Boolean to indicate if EDCA params are valid. UMAC might not
19648c2ecf20Sopenharmony_ci	 * have valid EDCA params or might not desire to apply EDCA params
19658c2ecf20Sopenharmony_ci	 * during config BSS. 0 implies Not Valid ; Non-Zero implies
19668c2ecf20Sopenharmony_ci	 * valid */
19678c2ecf20Sopenharmony_ci	u8 edca_params_valid;
19688c2ecf20Sopenharmony_ci
19698c2ecf20Sopenharmony_ci	/* EDCA Parameters for Best Effort Access Category */
19708c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acbe;
19718c2ecf20Sopenharmony_ci
19728c2ecf20Sopenharmony_ci	/* EDCA Parameters forBackground Access Category */
19738c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acbk;
19748c2ecf20Sopenharmony_ci
19758c2ecf20Sopenharmony_ci	/* EDCA Parameters for Video Access Category */
19768c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acvi;
19778c2ecf20Sopenharmony_ci
19788c2ecf20Sopenharmony_ci	/* EDCA Parameters for Voice Access Category */
19798c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acvo;
19808c2ecf20Sopenharmony_ci
19818c2ecf20Sopenharmony_ci	/* Ext Bss Config Msg if set */
19828c2ecf20Sopenharmony_ci	u8 ext_set_sta_key_param_valid;
19838c2ecf20Sopenharmony_ci
19848c2ecf20Sopenharmony_ci	/* SetStaKeyParams for ext bss msg */
19858c2ecf20Sopenharmony_ci	struct wcn36xx_hal_set_sta_key_params ext_set_sta_key_param;
19868c2ecf20Sopenharmony_ci
19878c2ecf20Sopenharmony_ci	/* Persona for the BSS can be STA,AP,GO,CLIENT value same as enum
19888c2ecf20Sopenharmony_ci	 * wcn36xx_hal_con_mode */
19898c2ecf20Sopenharmony_ci	u8 wcn36xx_hal_persona;
19908c2ecf20Sopenharmony_ci
19918c2ecf20Sopenharmony_ci	u8 spectrum_mgt_enable;
19928c2ecf20Sopenharmony_ci
19938c2ecf20Sopenharmony_ci	/* HAL fills in the tx power used for mgmt frames in txMgmtPower */
19948c2ecf20Sopenharmony_ci	s8 tx_mgmt_power;
19958c2ecf20Sopenharmony_ci
19968c2ecf20Sopenharmony_ci	/* maxTxPower has max power to be used after applying the power
19978c2ecf20Sopenharmony_ci	 * constraint if any */
19988c2ecf20Sopenharmony_ci	s8 max_tx_power;
19998c2ecf20Sopenharmony_ci} __packed;
20008c2ecf20Sopenharmony_ci
20018c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_bss_req_msg {
20028c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
20038c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_bss_params bss_params;
20048c2ecf20Sopenharmony_ci} __packed;
20058c2ecf20Sopenharmony_ci
20068c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_bss_params_v1 {
20078c2ecf20Sopenharmony_ci	/* BSSID */
20088c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
20098c2ecf20Sopenharmony_ci
20108c2ecf20Sopenharmony_ci	/* Self Mac Address */
20118c2ecf20Sopenharmony_ci	u8 self_mac_addr[ETH_ALEN];
20128c2ecf20Sopenharmony_ci
20138c2ecf20Sopenharmony_ci	/* BSS type */
20148c2ecf20Sopenharmony_ci	enum wcn36xx_hal_bss_type bss_type;
20158c2ecf20Sopenharmony_ci
20168c2ecf20Sopenharmony_ci	/* Operational Mode: AP =0, STA = 1 */
20178c2ecf20Sopenharmony_ci	u8 oper_mode;
20188c2ecf20Sopenharmony_ci
20198c2ecf20Sopenharmony_ci	/* Network Type */
20208c2ecf20Sopenharmony_ci	enum wcn36xx_hal_nw_type nw_type;
20218c2ecf20Sopenharmony_ci
20228c2ecf20Sopenharmony_ci	/* Used to classify PURE_11G/11G_MIXED to program MTU */
20238c2ecf20Sopenharmony_ci	u8 short_slot_time_supported;
20248c2ecf20Sopenharmony_ci
20258c2ecf20Sopenharmony_ci	/* Co-exist with 11a STA */
20268c2ecf20Sopenharmony_ci	u8 lla_coexist;
20278c2ecf20Sopenharmony_ci
20288c2ecf20Sopenharmony_ci	/* Co-exist with 11b STA */
20298c2ecf20Sopenharmony_ci	u8 llb_coexist;
20308c2ecf20Sopenharmony_ci
20318c2ecf20Sopenharmony_ci	/* Co-exist with 11g STA */
20328c2ecf20Sopenharmony_ci	u8 llg_coexist;
20338c2ecf20Sopenharmony_ci
20348c2ecf20Sopenharmony_ci	/* Coexistence with 11n STA */
20358c2ecf20Sopenharmony_ci	u8 ht20_coexist;
20368c2ecf20Sopenharmony_ci
20378c2ecf20Sopenharmony_ci	/* Non GF coexist flag */
20388c2ecf20Sopenharmony_ci	u8 lln_non_gf_coexist;
20398c2ecf20Sopenharmony_ci
20408c2ecf20Sopenharmony_ci	/* TXOP protection support */
20418c2ecf20Sopenharmony_ci	u8 lsig_tx_op_protection_full_support;
20428c2ecf20Sopenharmony_ci
20438c2ecf20Sopenharmony_ci	/* RIFS mode */
20448c2ecf20Sopenharmony_ci	u8 rifs_mode;
20458c2ecf20Sopenharmony_ci
20468c2ecf20Sopenharmony_ci	/* Beacon Interval in TU */
20478c2ecf20Sopenharmony_ci	u16 beacon_interval;
20488c2ecf20Sopenharmony_ci
20498c2ecf20Sopenharmony_ci	/* DTIM period */
20508c2ecf20Sopenharmony_ci	u8 dtim_period;
20518c2ecf20Sopenharmony_ci
20528c2ecf20Sopenharmony_ci	/* TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz */
20538c2ecf20Sopenharmony_ci	u8 tx_channel_width_set;
20548c2ecf20Sopenharmony_ci
20558c2ecf20Sopenharmony_ci	/* Operating channel */
20568c2ecf20Sopenharmony_ci	u8 oper_channel;
20578c2ecf20Sopenharmony_ci
20588c2ecf20Sopenharmony_ci	/* Extension channel for channel bonding */
20598c2ecf20Sopenharmony_ci	u8 ext_channel;
20608c2ecf20Sopenharmony_ci
20618c2ecf20Sopenharmony_ci	/* Reserved to align next field on a dword boundary */
20628c2ecf20Sopenharmony_ci	u8 reserved;
20638c2ecf20Sopenharmony_ci
20648c2ecf20Sopenharmony_ci	/* SSID of the BSS */
20658c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_ssid ssid;
20668c2ecf20Sopenharmony_ci
20678c2ecf20Sopenharmony_ci	/* HAL should update the existing BSS entry, if this flag is set.
20688c2ecf20Sopenharmony_ci	 * UMAC will set this flag in case of reassoc, where we want to
20698c2ecf20Sopenharmony_ci	 * resue the the old BSSID and still return success 0 = Add, 1 =
20708c2ecf20Sopenharmony_ci	 * Update */
20718c2ecf20Sopenharmony_ci	u8 action;
20728c2ecf20Sopenharmony_ci
20738c2ecf20Sopenharmony_ci	/* MAC Rate Set */
20748c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rate_set rateset;
20758c2ecf20Sopenharmony_ci
20768c2ecf20Sopenharmony_ci	/* Enable/Disable HT capabilities of the BSS */
20778c2ecf20Sopenharmony_ci	u8 ht;
20788c2ecf20Sopenharmony_ci
20798c2ecf20Sopenharmony_ci	/* Enable/Disable OBSS protection */
20808c2ecf20Sopenharmony_ci	u8 obss_prot_enabled;
20818c2ecf20Sopenharmony_ci
20828c2ecf20Sopenharmony_ci	/* RMF enabled/disabled */
20838c2ecf20Sopenharmony_ci	u8 rmf;
20848c2ecf20Sopenharmony_ci
20858c2ecf20Sopenharmony_ci	/* HT Operating Mode operating mode of the 802.11n STA */
20868c2ecf20Sopenharmony_ci	enum wcn36xx_hal_ht_operating_mode ht_oper_mode;
20878c2ecf20Sopenharmony_ci
20888c2ecf20Sopenharmony_ci	/* Dual CTS Protection: 0 - Unused, 1 - Used */
20898c2ecf20Sopenharmony_ci	u8 dual_cts_protection;
20908c2ecf20Sopenharmony_ci
20918c2ecf20Sopenharmony_ci	/* Probe Response Max retries */
20928c2ecf20Sopenharmony_ci	u8 max_probe_resp_retry_limit;
20938c2ecf20Sopenharmony_ci
20948c2ecf20Sopenharmony_ci	/* To Enable Hidden ssid */
20958c2ecf20Sopenharmony_ci	u8 hidden_ssid;
20968c2ecf20Sopenharmony_ci
20978c2ecf20Sopenharmony_ci	/* To Enable Disable FW Proxy Probe Resp */
20988c2ecf20Sopenharmony_ci	u8 proxy_probe_resp;
20998c2ecf20Sopenharmony_ci
21008c2ecf20Sopenharmony_ci	/* Boolean to indicate if EDCA params are valid. UMAC might not
21018c2ecf20Sopenharmony_ci	 * have valid EDCA params or might not desire to apply EDCA params
21028c2ecf20Sopenharmony_ci	 * during config BSS. 0 implies Not Valid ; Non-Zero implies
21038c2ecf20Sopenharmony_ci	 * valid */
21048c2ecf20Sopenharmony_ci	u8 edca_params_valid;
21058c2ecf20Sopenharmony_ci
21068c2ecf20Sopenharmony_ci	/* EDCA Parameters for Best Effort Access Category */
21078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acbe;
21088c2ecf20Sopenharmony_ci
21098c2ecf20Sopenharmony_ci	/* EDCA Parameters forBackground Access Category */
21108c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acbk;
21118c2ecf20Sopenharmony_ci
21128c2ecf20Sopenharmony_ci	/* EDCA Parameters for Video Access Category */
21138c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acvi;
21148c2ecf20Sopenharmony_ci
21158c2ecf20Sopenharmony_ci	/* EDCA Parameters for Voice Access Category */
21168c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acvo;
21178c2ecf20Sopenharmony_ci
21188c2ecf20Sopenharmony_ci	/* Ext Bss Config Msg if set */
21198c2ecf20Sopenharmony_ci	u8 ext_set_sta_key_param_valid;
21208c2ecf20Sopenharmony_ci
21218c2ecf20Sopenharmony_ci	/* SetStaKeyParams for ext bss msg */
21228c2ecf20Sopenharmony_ci	struct wcn36xx_hal_set_sta_key_params ext_set_sta_key_param;
21238c2ecf20Sopenharmony_ci
21248c2ecf20Sopenharmony_ci	/* Persona for the BSS can be STA,AP,GO,CLIENT value same as enum
21258c2ecf20Sopenharmony_ci	 * wcn36xx_hal_con_mode */
21268c2ecf20Sopenharmony_ci	u8 wcn36xx_hal_persona;
21278c2ecf20Sopenharmony_ci
21288c2ecf20Sopenharmony_ci	u8 spectrum_mgt_enable;
21298c2ecf20Sopenharmony_ci
21308c2ecf20Sopenharmony_ci	/* HAL fills in the tx power used for mgmt frames in txMgmtPower */
21318c2ecf20Sopenharmony_ci	s8 tx_mgmt_power;
21328c2ecf20Sopenharmony_ci
21338c2ecf20Sopenharmony_ci	/* maxTxPower has max power to be used after applying the power
21348c2ecf20Sopenharmony_ci	 * constraint if any */
21358c2ecf20Sopenharmony_ci	s8 max_tx_power;
21368c2ecf20Sopenharmony_ci
21378c2ecf20Sopenharmony_ci	/* Context of the station being added in HW
21388c2ecf20Sopenharmony_ci	 *  Add a STA entry for "itself" -
21398c2ecf20Sopenharmony_ci	 *
21408c2ecf20Sopenharmony_ci	 *  On AP  - Add the AP itself in an "STA context"
21418c2ecf20Sopenharmony_ci	 *
21428c2ecf20Sopenharmony_ci	 *  On STA - Add the AP to which this STA is joining in an
21438c2ecf20Sopenharmony_ci	 *  "STA context"
21448c2ecf20Sopenharmony_ci	 */
21458c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_sta_params_v1 sta;
21468c2ecf20Sopenharmony_ci
21478c2ecf20Sopenharmony_ci	u8 vht_capable;
21488c2ecf20Sopenharmony_ci	u8 vht_tx_channel_width_set;
21498c2ecf20Sopenharmony_ci
21508c2ecf20Sopenharmony_ci} __packed;
21518c2ecf20Sopenharmony_ci
21528c2ecf20Sopenharmony_ci#define WCN36XX_DIFF_BSS_PARAMS_V1_NOVHT (WCN36XX_DIFF_STA_PARAMS_V1_NOVHT + 2)
21538c2ecf20Sopenharmony_ci
21548c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_bss_req_msg_v1 {
21558c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
21568c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_bss_params_v1 bss_params;
21578c2ecf20Sopenharmony_ci} __packed;
21588c2ecf20Sopenharmony_ci
21598c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_bss_rsp_params {
21608c2ecf20Sopenharmony_ci	/* Success or Failure */
21618c2ecf20Sopenharmony_ci	u32 status;
21628c2ecf20Sopenharmony_ci
21638c2ecf20Sopenharmony_ci	/* BSS index allocated by HAL */
21648c2ecf20Sopenharmony_ci	u8 bss_index;
21658c2ecf20Sopenharmony_ci
21668c2ecf20Sopenharmony_ci	/* DPU descriptor index for PTK */
21678c2ecf20Sopenharmony_ci	u8 dpu_desc_index;
21688c2ecf20Sopenharmony_ci
21698c2ecf20Sopenharmony_ci	/* PTK DPU signature */
21708c2ecf20Sopenharmony_ci	u8 ucast_dpu_signature;
21718c2ecf20Sopenharmony_ci
21728c2ecf20Sopenharmony_ci	/* DPU descriptor index for GTK */
21738c2ecf20Sopenharmony_ci	u8 bcast_dpu_desc_indx;
21748c2ecf20Sopenharmony_ci
21758c2ecf20Sopenharmony_ci	/* GTK DPU signature */
21768c2ecf20Sopenharmony_ci	u8 bcast_dpu_signature;
21778c2ecf20Sopenharmony_ci
21788c2ecf20Sopenharmony_ci	/* DPU descriptor for IGTK */
21798c2ecf20Sopenharmony_ci	u8 mgmt_dpu_desc_index;
21808c2ecf20Sopenharmony_ci
21818c2ecf20Sopenharmony_ci	/* IGTK DPU signature */
21828c2ecf20Sopenharmony_ci	u8 mgmt_dpu_signature;
21838c2ecf20Sopenharmony_ci
21848c2ecf20Sopenharmony_ci	/* Station Index for BSS entry */
21858c2ecf20Sopenharmony_ci	u8 bss_sta_index;
21868c2ecf20Sopenharmony_ci
21878c2ecf20Sopenharmony_ci	/* Self station index for this BSS */
21888c2ecf20Sopenharmony_ci	u8 bss_self_sta_index;
21898c2ecf20Sopenharmony_ci
21908c2ecf20Sopenharmony_ci	/* Bcast station for buffering bcast frames in AP role */
21918c2ecf20Sopenharmony_ci	u8 bss_bcast_sta_idx;
21928c2ecf20Sopenharmony_ci
21938c2ecf20Sopenharmony_ci	/* MAC Address of STA(PEER/SELF) in staContext of configBSSReq */
21948c2ecf20Sopenharmony_ci	u8 mac[ETH_ALEN];
21958c2ecf20Sopenharmony_ci
21968c2ecf20Sopenharmony_ci	/* HAL fills in the tx power used for mgmt frames in this field. */
21978c2ecf20Sopenharmony_ci	s8 tx_mgmt_power;
21988c2ecf20Sopenharmony_ci
21998c2ecf20Sopenharmony_ci} __packed;
22008c2ecf20Sopenharmony_ci
22018c2ecf20Sopenharmony_cistruct wcn36xx_hal_config_bss_rsp_msg {
22028c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22038c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_bss_rsp_params bss_rsp_params;
22048c2ecf20Sopenharmony_ci} __packed;
22058c2ecf20Sopenharmony_ci
22068c2ecf20Sopenharmony_cistruct wcn36xx_hal_delete_bss_req_msg {
22078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22088c2ecf20Sopenharmony_ci
22098c2ecf20Sopenharmony_ci	/* BSS index to be deleted */
22108c2ecf20Sopenharmony_ci	u8 bss_index;
22118c2ecf20Sopenharmony_ci
22128c2ecf20Sopenharmony_ci} __packed;
22138c2ecf20Sopenharmony_ci
22148c2ecf20Sopenharmony_cistruct wcn36xx_hal_delete_bss_rsp_msg {
22158c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22168c2ecf20Sopenharmony_ci
22178c2ecf20Sopenharmony_ci	/* Success or Failure */
22188c2ecf20Sopenharmony_ci	u32 status;
22198c2ecf20Sopenharmony_ci
22208c2ecf20Sopenharmony_ci	/* BSS index that has been deleted */
22218c2ecf20Sopenharmony_ci	u8 bss_index;
22228c2ecf20Sopenharmony_ci
22238c2ecf20Sopenharmony_ci} __packed;
22248c2ecf20Sopenharmony_ci
22258c2ecf20Sopenharmony_cistruct wcn36xx_hal_join_req_msg {
22268c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22278c2ecf20Sopenharmony_ci
22288c2ecf20Sopenharmony_ci	/* Indicates the BSSID to which STA is going to associate */
22298c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
22308c2ecf20Sopenharmony_ci
22318c2ecf20Sopenharmony_ci	/* Indicates the channel to switch to. */
22328c2ecf20Sopenharmony_ci	u8 channel;
22338c2ecf20Sopenharmony_ci
22348c2ecf20Sopenharmony_ci	/* Self STA MAC */
22358c2ecf20Sopenharmony_ci	u8 self_sta_mac_addr[ETH_ALEN];
22368c2ecf20Sopenharmony_ci
22378c2ecf20Sopenharmony_ci	/* Local power constraint */
22388c2ecf20Sopenharmony_ci	u8 local_power_constraint;
22398c2ecf20Sopenharmony_ci
22408c2ecf20Sopenharmony_ci	/* Secondary channel offset */
22418c2ecf20Sopenharmony_ci	enum phy_chan_bond_state secondary_channel_offset;
22428c2ecf20Sopenharmony_ci
22438c2ecf20Sopenharmony_ci	/* link State */
22448c2ecf20Sopenharmony_ci	enum wcn36xx_hal_link_state link_state;
22458c2ecf20Sopenharmony_ci
22468c2ecf20Sopenharmony_ci	/* Max TX power */
22478c2ecf20Sopenharmony_ci	s8 max_tx_power;
22488c2ecf20Sopenharmony_ci} __packed;
22498c2ecf20Sopenharmony_ci
22508c2ecf20Sopenharmony_cistruct wcn36xx_hal_join_rsp_msg {
22518c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22528c2ecf20Sopenharmony_ci
22538c2ecf20Sopenharmony_ci	/* success or failure */
22548c2ecf20Sopenharmony_ci	u32 status;
22558c2ecf20Sopenharmony_ci
22568c2ecf20Sopenharmony_ci	/* HAL fills in the tx power used for mgmt frames in this field */
22578c2ecf20Sopenharmony_ci	u8 tx_mgmt_power;
22588c2ecf20Sopenharmony_ci} __packed;
22598c2ecf20Sopenharmony_ci
22608c2ecf20Sopenharmony_cistruct post_assoc_req_msg {
22618c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22628c2ecf20Sopenharmony_ci
22638c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_sta_params sta_params;
22648c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_bss_params bss_params;
22658c2ecf20Sopenharmony_ci};
22668c2ecf20Sopenharmony_ci
22678c2ecf20Sopenharmony_cistruct post_assoc_rsp_msg {
22688c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22698c2ecf20Sopenharmony_ci	struct config_sta_rsp_params sta_rsp_params;
22708c2ecf20Sopenharmony_ci	struct wcn36xx_hal_config_bss_rsp_params bss_rsp_params;
22718c2ecf20Sopenharmony_ci};
22728c2ecf20Sopenharmony_ci
22738c2ecf20Sopenharmony_ci/* This is used to create a set of WEP keys for a given BSS. */
22748c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_bss_key_req_msg {
22758c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
22768c2ecf20Sopenharmony_ci
22778c2ecf20Sopenharmony_ci	/* BSS Index of the BSS */
22788c2ecf20Sopenharmony_ci	u8 bss_idx;
22798c2ecf20Sopenharmony_ci
22808c2ecf20Sopenharmony_ci	/* Encryption Type used with peer */
22818c2ecf20Sopenharmony_ci	enum ani_ed_type enc_type;
22828c2ecf20Sopenharmony_ci
22838c2ecf20Sopenharmony_ci	/* Number of keys */
22848c2ecf20Sopenharmony_ci	u8 num_keys;
22858c2ecf20Sopenharmony_ci
22868c2ecf20Sopenharmony_ci	/* Array of keys. */
22878c2ecf20Sopenharmony_ci	struct wcn36xx_hal_keys keys[WCN36XX_HAL_MAC_MAX_NUM_OF_DEFAULT_KEYS];
22888c2ecf20Sopenharmony_ci
22898c2ecf20Sopenharmony_ci	/* Control for Replay Count, 1= Single TID based replay count on Tx
22908c2ecf20Sopenharmony_ci	 * 0 = Per TID based replay count on TX */
22918c2ecf20Sopenharmony_ci	u8 single_tid_rc;
22928c2ecf20Sopenharmony_ci} __packed;
22938c2ecf20Sopenharmony_ci
22948c2ecf20Sopenharmony_ci/* tagged version of set bss key */
22958c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_bss_key_req_msg_tagged {
22968c2ecf20Sopenharmony_ci	struct wcn36xx_hal_set_bss_key_req_msg Msg;
22978c2ecf20Sopenharmony_ci	u32 tag;
22988c2ecf20Sopenharmony_ci} __packed;
22998c2ecf20Sopenharmony_ci
23008c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_bss_key_rsp_msg {
23018c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23028c2ecf20Sopenharmony_ci
23038c2ecf20Sopenharmony_ci	/* success or failure */
23048c2ecf20Sopenharmony_ci	u32 status;
23058c2ecf20Sopenharmony_ci} __packed;
23068c2ecf20Sopenharmony_ci
23078c2ecf20Sopenharmony_ci/*
23088c2ecf20Sopenharmony_ci * This is used  configure the key information on a given station.
23098c2ecf20Sopenharmony_ci * When the sec_type is WEP40 or WEP104, the def_wep_idx is used to locate
23108c2ecf20Sopenharmony_ci * a preconfigured key from a BSS the station associated with; otherwise
23118c2ecf20Sopenharmony_ci * a new key descriptor is created based on the key field.
23128c2ecf20Sopenharmony_ci */
23138c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_sta_key_req_msg {
23148c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23158c2ecf20Sopenharmony_ci	struct wcn36xx_hal_set_sta_key_params set_sta_key_params;
23168c2ecf20Sopenharmony_ci} __packed;
23178c2ecf20Sopenharmony_ci
23188c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_sta_key_rsp_msg {
23198c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23208c2ecf20Sopenharmony_ci
23218c2ecf20Sopenharmony_ci	/* success or failure */
23228c2ecf20Sopenharmony_ci	u32 status;
23238c2ecf20Sopenharmony_ci} __packed;
23248c2ecf20Sopenharmony_ci
23258c2ecf20Sopenharmony_cistruct wcn36xx_hal_remove_bss_key_req_msg {
23268c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23278c2ecf20Sopenharmony_ci
23288c2ecf20Sopenharmony_ci	/* BSS Index of the BSS */
23298c2ecf20Sopenharmony_ci	u8 bss_idx;
23308c2ecf20Sopenharmony_ci
23318c2ecf20Sopenharmony_ci	/* Encryption Type used with peer */
23328c2ecf20Sopenharmony_ci	enum ani_ed_type enc_type;
23338c2ecf20Sopenharmony_ci
23348c2ecf20Sopenharmony_ci	/* Key Id */
23358c2ecf20Sopenharmony_ci	u8 key_id;
23368c2ecf20Sopenharmony_ci
23378c2ecf20Sopenharmony_ci	/* STATIC/DYNAMIC. Used in Nullifying in Key Descriptors for
23388c2ecf20Sopenharmony_ci	 * Static/Dynamic keys */
23398c2ecf20Sopenharmony_ci	enum ani_wep_type wep_type;
23408c2ecf20Sopenharmony_ci} __packed;
23418c2ecf20Sopenharmony_ci
23428c2ecf20Sopenharmony_cistruct wcn36xx_hal_remove_bss_key_rsp_msg {
23438c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23448c2ecf20Sopenharmony_ci
23458c2ecf20Sopenharmony_ci	/* success or failure */
23468c2ecf20Sopenharmony_ci	u32 status;
23478c2ecf20Sopenharmony_ci} __packed;
23488c2ecf20Sopenharmony_ci
23498c2ecf20Sopenharmony_ci/*
23508c2ecf20Sopenharmony_ci * This is used by PE to Remove the key information on a given station.
23518c2ecf20Sopenharmony_ci */
23528c2ecf20Sopenharmony_cistruct wcn36xx_hal_remove_sta_key_req_msg {
23538c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23548c2ecf20Sopenharmony_ci
23558c2ecf20Sopenharmony_ci	/* STA Index */
23568c2ecf20Sopenharmony_ci	u16 sta_idx;
23578c2ecf20Sopenharmony_ci
23588c2ecf20Sopenharmony_ci	/* Encryption Type used with peer */
23598c2ecf20Sopenharmony_ci	enum ani_ed_type enc_type;
23608c2ecf20Sopenharmony_ci
23618c2ecf20Sopenharmony_ci	/* Key Id */
23628c2ecf20Sopenharmony_ci	u8 key_id;
23638c2ecf20Sopenharmony_ci
23648c2ecf20Sopenharmony_ci	/* Whether to invalidate the Broadcast key or Unicast key. In case
23658c2ecf20Sopenharmony_ci	 * of WEP, the same key is used for both broadcast and unicast. */
23668c2ecf20Sopenharmony_ci	u8 unicast;
23678c2ecf20Sopenharmony_ci
23688c2ecf20Sopenharmony_ci} __packed;
23698c2ecf20Sopenharmony_ci
23708c2ecf20Sopenharmony_cistruct wcn36xx_hal_remove_sta_key_rsp_msg {
23718c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23728c2ecf20Sopenharmony_ci
23738c2ecf20Sopenharmony_ci	/*success or failure */
23748c2ecf20Sopenharmony_ci	u32 status;
23758c2ecf20Sopenharmony_ci
23768c2ecf20Sopenharmony_ci} __packed;
23778c2ecf20Sopenharmony_ci
23788c2ecf20Sopenharmony_ci#ifdef FEATURE_OEM_DATA_SUPPORT
23798c2ecf20Sopenharmony_ci
23808c2ecf20Sopenharmony_ci#ifndef OEM_DATA_REQ_SIZE
23818c2ecf20Sopenharmony_ci#define OEM_DATA_REQ_SIZE 134
23828c2ecf20Sopenharmony_ci#endif
23838c2ecf20Sopenharmony_ci
23848c2ecf20Sopenharmony_ci#ifndef OEM_DATA_RSP_SIZE
23858c2ecf20Sopenharmony_ci#define OEM_DATA_RSP_SIZE 1968
23868c2ecf20Sopenharmony_ci#endif
23878c2ecf20Sopenharmony_ci
23888c2ecf20Sopenharmony_cistruct start_oem_data_req_msg {
23898c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23908c2ecf20Sopenharmony_ci
23918c2ecf20Sopenharmony_ci	u32 status;
23928c2ecf20Sopenharmony_ci	tSirMacAddr self_mac_addr;
23938c2ecf20Sopenharmony_ci	u8 oem_data_req[OEM_DATA_REQ_SIZE];
23948c2ecf20Sopenharmony_ci
23958c2ecf20Sopenharmony_ci};
23968c2ecf20Sopenharmony_ci
23978c2ecf20Sopenharmony_cistruct start_oem_data_rsp_msg {
23988c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
23998c2ecf20Sopenharmony_ci
24008c2ecf20Sopenharmony_ci	u8 oem_data_rsp[OEM_DATA_RSP_SIZE];
24018c2ecf20Sopenharmony_ci};
24028c2ecf20Sopenharmony_ci
24038c2ecf20Sopenharmony_ci#endif
24048c2ecf20Sopenharmony_ci
24058c2ecf20Sopenharmony_cistruct wcn36xx_hal_switch_channel_req_msg {
24068c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
24078c2ecf20Sopenharmony_ci
24088c2ecf20Sopenharmony_ci	/* Channel number */
24098c2ecf20Sopenharmony_ci	u8 channel_number;
24108c2ecf20Sopenharmony_ci
24118c2ecf20Sopenharmony_ci	/* Local power constraint */
24128c2ecf20Sopenharmony_ci	u8 local_power_constraint;
24138c2ecf20Sopenharmony_ci
24148c2ecf20Sopenharmony_ci	/* Secondary channel offset */
24158c2ecf20Sopenharmony_ci	enum phy_chan_bond_state secondary_channel_offset;
24168c2ecf20Sopenharmony_ci
24178c2ecf20Sopenharmony_ci	/* HAL fills in the tx power used for mgmt frames in this field. */
24188c2ecf20Sopenharmony_ci	u8 tx_mgmt_power;
24198c2ecf20Sopenharmony_ci
24208c2ecf20Sopenharmony_ci	/* Max TX power */
24218c2ecf20Sopenharmony_ci	u8 max_tx_power;
24228c2ecf20Sopenharmony_ci
24238c2ecf20Sopenharmony_ci	/* Self STA MAC */
24248c2ecf20Sopenharmony_ci	u8 self_sta_mac_addr[ETH_ALEN];
24258c2ecf20Sopenharmony_ci
24268c2ecf20Sopenharmony_ci	/* VO WIFI comment: BSSID needed to identify session. As the
24278c2ecf20Sopenharmony_ci	 * request has power constraints, this should be applied only to
24288c2ecf20Sopenharmony_ci	 * that session Since MTU timing and EDCA are sessionized, this
24298c2ecf20Sopenharmony_ci	 * struct needs to be sessionized and bssid needs to be out of the
24308c2ecf20Sopenharmony_ci	 * VOWifi feature flag V IMP: Keep bssId field at the end of this
24318c2ecf20Sopenharmony_ci	 * msg. It is used to mantain backward compatbility by way of
24328c2ecf20Sopenharmony_ci	 * ignoring if using new host/old FW or old host/new FW since it is
24338c2ecf20Sopenharmony_ci	 * at the end of this struct
24348c2ecf20Sopenharmony_ci	 */
24358c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
24368c2ecf20Sopenharmony_ci} __packed;
24378c2ecf20Sopenharmony_ci
24388c2ecf20Sopenharmony_cistruct wcn36xx_hal_switch_channel_rsp_msg {
24398c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
24408c2ecf20Sopenharmony_ci
24418c2ecf20Sopenharmony_ci	/* Status */
24428c2ecf20Sopenharmony_ci	u32 status;
24438c2ecf20Sopenharmony_ci
24448c2ecf20Sopenharmony_ci	/* Channel number - same as in request */
24458c2ecf20Sopenharmony_ci	u8 channel_number;
24468c2ecf20Sopenharmony_ci
24478c2ecf20Sopenharmony_ci	/* HAL fills in the tx power used for mgmt frames in this field */
24488c2ecf20Sopenharmony_ci	u8 tx_mgmt_power;
24498c2ecf20Sopenharmony_ci
24508c2ecf20Sopenharmony_ci	/* BSSID needed to identify session - same as in request */
24518c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
24528c2ecf20Sopenharmony_ci
24538c2ecf20Sopenharmony_ci} __packed;
24548c2ecf20Sopenharmony_ci
24558c2ecf20Sopenharmony_cistruct wcn36xx_hal_process_ptt_msg_req_msg {
24568c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
24578c2ecf20Sopenharmony_ci
24588c2ecf20Sopenharmony_ci	/* Actual FTM Command body */
24598c2ecf20Sopenharmony_ci	u8 ptt_msg[];
24608c2ecf20Sopenharmony_ci} __packed;
24618c2ecf20Sopenharmony_ci
24628c2ecf20Sopenharmony_cistruct wcn36xx_hal_process_ptt_msg_rsp_msg {
24638c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
24648c2ecf20Sopenharmony_ci
24658c2ecf20Sopenharmony_ci	/* FTM Command response status */
24668c2ecf20Sopenharmony_ci	u32 ptt_msg_resp_status;
24678c2ecf20Sopenharmony_ci	/* Actual FTM Command body */
24688c2ecf20Sopenharmony_ci	u8 ptt_msg[];
24698c2ecf20Sopenharmony_ci} __packed;
24708c2ecf20Sopenharmony_ci
24718c2ecf20Sopenharmony_cistruct update_edca_params_req_msg {
24728c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
24738c2ecf20Sopenharmony_ci
24748c2ecf20Sopenharmony_ci	/*BSS Index */
24758c2ecf20Sopenharmony_ci	u16 bss_index;
24768c2ecf20Sopenharmony_ci
24778c2ecf20Sopenharmony_ci	/* Best Effort */
24788c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acbe;
24798c2ecf20Sopenharmony_ci
24808c2ecf20Sopenharmony_ci	/* Background */
24818c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acbk;
24828c2ecf20Sopenharmony_ci
24838c2ecf20Sopenharmony_ci	/* Video */
24848c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acvi;
24858c2ecf20Sopenharmony_ci
24868c2ecf20Sopenharmony_ci	/* Voice */
24878c2ecf20Sopenharmony_ci	struct wcn36xx_hal_edca_param_record acvo;
24888c2ecf20Sopenharmony_ci};
24898c2ecf20Sopenharmony_ci
24908c2ecf20Sopenharmony_cistruct update_edca_params_rsp_msg {
24918c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
24928c2ecf20Sopenharmony_ci
24938c2ecf20Sopenharmony_ci	/* success or failure */
24948c2ecf20Sopenharmony_ci	u32 status;
24958c2ecf20Sopenharmony_ci};
24968c2ecf20Sopenharmony_ci
24978c2ecf20Sopenharmony_cistruct dpu_stats_params {
24988c2ecf20Sopenharmony_ci	/* Index of STA to which the statistics */
24998c2ecf20Sopenharmony_ci	u16 sta_index;
25008c2ecf20Sopenharmony_ci
25018c2ecf20Sopenharmony_ci	/* Encryption mode */
25028c2ecf20Sopenharmony_ci	u8 enc_mode;
25038c2ecf20Sopenharmony_ci
25048c2ecf20Sopenharmony_ci	/* status */
25058c2ecf20Sopenharmony_ci	u32 status;
25068c2ecf20Sopenharmony_ci
25078c2ecf20Sopenharmony_ci	/* Statistics */
25088c2ecf20Sopenharmony_ci	u32 send_blocks;
25098c2ecf20Sopenharmony_ci	u32 recv_blocks;
25108c2ecf20Sopenharmony_ci	u32 replays;
25118c2ecf20Sopenharmony_ci	u8 mic_error_cnt;
25128c2ecf20Sopenharmony_ci	u32 prot_excl_cnt;
25138c2ecf20Sopenharmony_ci	u16 format_err_cnt;
25148c2ecf20Sopenharmony_ci	u16 un_decryptable_cnt;
25158c2ecf20Sopenharmony_ci	u32 decrypt_err_cnt;
25168c2ecf20Sopenharmony_ci	u32 decrypt_ok_cnt;
25178c2ecf20Sopenharmony_ci};
25188c2ecf20Sopenharmony_ci
25198c2ecf20Sopenharmony_cistruct wcn36xx_hal_stats_req_msg {
25208c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
25218c2ecf20Sopenharmony_ci
25228c2ecf20Sopenharmony_ci	/* Valid STA Idx for per STA stats request */
25238c2ecf20Sopenharmony_ci	u32 sta_id;
25248c2ecf20Sopenharmony_ci
25258c2ecf20Sopenharmony_ci	/* Categories of stats requested as specified in eHalStatsMask */
25268c2ecf20Sopenharmony_ci	u32 stats_mask;
25278c2ecf20Sopenharmony_ci};
25288c2ecf20Sopenharmony_ci
25298c2ecf20Sopenharmony_cistruct ani_summary_stats_info {
25308c2ecf20Sopenharmony_ci	/* Total number of packets(per AC) that were successfully
25318c2ecf20Sopenharmony_ci	 * transmitted with retries */
25328c2ecf20Sopenharmony_ci	u32 retry_cnt[4];
25338c2ecf20Sopenharmony_ci
25348c2ecf20Sopenharmony_ci	/* The number of MSDU packets and MMPDU frames per AC that the
25358c2ecf20Sopenharmony_ci	 * 802.11 station successfully transmitted after more than one
25368c2ecf20Sopenharmony_ci	 * retransmission attempt */
25378c2ecf20Sopenharmony_ci	u32 multiple_retry_cnt[4];
25388c2ecf20Sopenharmony_ci
25398c2ecf20Sopenharmony_ci	/* Total number of packets(per AC) that were successfully
25408c2ecf20Sopenharmony_ci	 * transmitted (with and without retries, including multi-cast,
25418c2ecf20Sopenharmony_ci	 * broadcast) */
25428c2ecf20Sopenharmony_ci	u32 tx_frm_cnt[4];
25438c2ecf20Sopenharmony_ci
25448c2ecf20Sopenharmony_ci	/* Total number of packets that were successfully received (after
25458c2ecf20Sopenharmony_ci	 * appropriate filter rules including multi-cast, broadcast) */
25468c2ecf20Sopenharmony_ci	u32 rx_frm_cnt;
25478c2ecf20Sopenharmony_ci
25488c2ecf20Sopenharmony_ci	/* Total number of duplicate frames received successfully */
25498c2ecf20Sopenharmony_ci	u32 frm_dup_cnt;
25508c2ecf20Sopenharmony_ci
25518c2ecf20Sopenharmony_ci	/* Total number packets(per AC) failed to transmit */
25528c2ecf20Sopenharmony_ci	u32 fail_cnt[4];
25538c2ecf20Sopenharmony_ci
25548c2ecf20Sopenharmony_ci	/* Total number of RTS/CTS sequence failures for transmission of a
25558c2ecf20Sopenharmony_ci	 * packet */
25568c2ecf20Sopenharmony_ci	u32 rts_fail_cnt;
25578c2ecf20Sopenharmony_ci
25588c2ecf20Sopenharmony_ci	/* Total number packets failed transmit because of no ACK from the
25598c2ecf20Sopenharmony_ci	 * remote entity */
25608c2ecf20Sopenharmony_ci	u32 ack_fail_cnt;
25618c2ecf20Sopenharmony_ci
25628c2ecf20Sopenharmony_ci	/* Total number of RTS/CTS sequence success for transmission of a
25638c2ecf20Sopenharmony_ci	 * packet */
25648c2ecf20Sopenharmony_ci	u32 rts_succ_cnt;
25658c2ecf20Sopenharmony_ci
25668c2ecf20Sopenharmony_ci	/* The sum of the receive error count and dropped-receive-buffer
25678c2ecf20Sopenharmony_ci	 * error count. HAL will provide this as a sum of (FCS error) +
25688c2ecf20Sopenharmony_ci	 * (Fail get BD/PDU in HW) */
25698c2ecf20Sopenharmony_ci	u32 rx_discard_cnt;
25708c2ecf20Sopenharmony_ci
25718c2ecf20Sopenharmony_ci	/*
25728c2ecf20Sopenharmony_ci	 * The receive error count. HAL will provide the RxP FCS error
25738c2ecf20Sopenharmony_ci	 * global counter. */
25748c2ecf20Sopenharmony_ci	u32 rx_error_cnt;
25758c2ecf20Sopenharmony_ci
25768c2ecf20Sopenharmony_ci	/* The sum of the transmit-directed byte count, transmit-multicast
25778c2ecf20Sopenharmony_ci	 * byte count and transmit-broadcast byte count. HAL will sum TPE
25788c2ecf20Sopenharmony_ci	 * UC/MC/BCAST global counters to provide this. */
25798c2ecf20Sopenharmony_ci	u32 tx_byte_cnt;
25808c2ecf20Sopenharmony_ci};
25818c2ecf20Sopenharmony_ci
25828c2ecf20Sopenharmony_ci/* defines tx_rate_flags */
25838c2ecf20Sopenharmony_cienum tx_rate_info {
25848c2ecf20Sopenharmony_ci	/* Legacy rates */
25858c2ecf20Sopenharmony_ci	HAL_TX_RATE_LEGACY = 0x1,
25868c2ecf20Sopenharmony_ci
25878c2ecf20Sopenharmony_ci	/* HT20 rates */
25888c2ecf20Sopenharmony_ci	HAL_TX_RATE_HT20 = 0x2,
25898c2ecf20Sopenharmony_ci
25908c2ecf20Sopenharmony_ci	/* HT40 rates */
25918c2ecf20Sopenharmony_ci	HAL_TX_RATE_HT40 = 0x4,
25928c2ecf20Sopenharmony_ci
25938c2ecf20Sopenharmony_ci	/* Rate with Short guard interval */
25948c2ecf20Sopenharmony_ci	HAL_TX_RATE_SGI = 0x8,
25958c2ecf20Sopenharmony_ci
25968c2ecf20Sopenharmony_ci	/* Rate with Long guard interval */
25978c2ecf20Sopenharmony_ci	HAL_TX_RATE_LGI = 0x10
25988c2ecf20Sopenharmony_ci};
25998c2ecf20Sopenharmony_ci
26008c2ecf20Sopenharmony_cistruct ani_global_class_a_stats_info {
26018c2ecf20Sopenharmony_ci	/* The number of MPDU frames received by the 802.11 station for
26028c2ecf20Sopenharmony_ci	 * MSDU packets or MMPDU frames */
26038c2ecf20Sopenharmony_ci	u32 rx_frag_cnt;
26048c2ecf20Sopenharmony_ci
26058c2ecf20Sopenharmony_ci	/* The number of MPDU frames received by the 802.11 station for
26068c2ecf20Sopenharmony_ci	 * MSDU packets or MMPDU frames when a promiscuous packet filter
26078c2ecf20Sopenharmony_ci	 * was enabled */
26088c2ecf20Sopenharmony_ci	u32 promiscuous_rx_frag_cnt;
26098c2ecf20Sopenharmony_ci
26108c2ecf20Sopenharmony_ci	/* The receiver input sensitivity referenced to a FER of 8% at an
26118c2ecf20Sopenharmony_ci	 * MPDU length of 1024 bytes at the antenna connector. Each element
26128c2ecf20Sopenharmony_ci	 * of the array shall correspond to a supported rate and the order
26138c2ecf20Sopenharmony_ci	 * shall be the same as the supporteRates parameter. */
26148c2ecf20Sopenharmony_ci	u32 rx_input_sensitivity;
26158c2ecf20Sopenharmony_ci
26168c2ecf20Sopenharmony_ci	/* The maximum transmit power in dBm upto one decimal. for eg: if
26178c2ecf20Sopenharmony_ci	 * it is 10.5dBm, the value would be 105 */
26188c2ecf20Sopenharmony_ci	u32 max_pwr;
26198c2ecf20Sopenharmony_ci
26208c2ecf20Sopenharmony_ci	/* Number of times the receiver failed to synchronize with the
26218c2ecf20Sopenharmony_ci	 * incoming signal after detecting the sync in the preamble of the
26228c2ecf20Sopenharmony_ci	 * transmitted PLCP protocol data unit. */
26238c2ecf20Sopenharmony_ci	u32 sync_fail_cnt;
26248c2ecf20Sopenharmony_ci
26258c2ecf20Sopenharmony_ci	/* Legacy transmit rate, in units of 500 kbit/sec, for the most
26268c2ecf20Sopenharmony_ci	 * recently transmitted frame */
26278c2ecf20Sopenharmony_ci	u32 tx_rate;
26288c2ecf20Sopenharmony_ci
26298c2ecf20Sopenharmony_ci	/* mcs index for HT20 and HT40 rates */
26308c2ecf20Sopenharmony_ci	u32 mcs_index;
26318c2ecf20Sopenharmony_ci
26328c2ecf20Sopenharmony_ci	/* to differentiate between HT20 and HT40 rates; short and long
26338c2ecf20Sopenharmony_ci	 * guard interval */
26348c2ecf20Sopenharmony_ci	u32 tx_rate_flags;
26358c2ecf20Sopenharmony_ci};
26368c2ecf20Sopenharmony_ci
26378c2ecf20Sopenharmony_cistruct ani_global_security_stats {
26388c2ecf20Sopenharmony_ci	/* The number of unencrypted received MPDU frames that the MAC
26398c2ecf20Sopenharmony_ci	 * layer discarded when the IEEE 802.11 dot11ExcludeUnencrypted
26408c2ecf20Sopenharmony_ci	 * management information base (MIB) object is enabled */
26418c2ecf20Sopenharmony_ci	u32 rx_wep_unencrypted_frm_cnt;
26428c2ecf20Sopenharmony_ci
26438c2ecf20Sopenharmony_ci	/* The number of received MSDU packets that that the 802.11 station
26448c2ecf20Sopenharmony_ci	 * discarded because of MIC failures */
26458c2ecf20Sopenharmony_ci	u32 rx_mic_fail_cnt;
26468c2ecf20Sopenharmony_ci
26478c2ecf20Sopenharmony_ci	/* The number of encrypted MPDU frames that the 802.11 station
26488c2ecf20Sopenharmony_ci	 * failed to decrypt because of a TKIP ICV error */
26498c2ecf20Sopenharmony_ci	u32 tkip_icv_err;
26508c2ecf20Sopenharmony_ci
26518c2ecf20Sopenharmony_ci	/* The number of received MPDU frames that the 802.11 discarded
26528c2ecf20Sopenharmony_ci	 * because of an invalid AES-CCMP format */
26538c2ecf20Sopenharmony_ci	u32 aes_ccmp_format_err;
26548c2ecf20Sopenharmony_ci
26558c2ecf20Sopenharmony_ci	/* The number of received MPDU frames that the 802.11 station
26568c2ecf20Sopenharmony_ci	 * discarded because of the AES-CCMP replay protection procedure */
26578c2ecf20Sopenharmony_ci	u32 aes_ccmp_replay_cnt;
26588c2ecf20Sopenharmony_ci
26598c2ecf20Sopenharmony_ci	/* The number of received MPDU frames that the 802.11 station
26608c2ecf20Sopenharmony_ci	 * discarded because of errors detected by the AES-CCMP decryption
26618c2ecf20Sopenharmony_ci	 * algorithm */
26628c2ecf20Sopenharmony_ci	u32 aes_ccmp_decrpt_err;
26638c2ecf20Sopenharmony_ci
26648c2ecf20Sopenharmony_ci	/* The number of encrypted MPDU frames received for which a WEP
26658c2ecf20Sopenharmony_ci	 * decryption key was not available on the 802.11 station */
26668c2ecf20Sopenharmony_ci	u32 wep_undecryptable_cnt;
26678c2ecf20Sopenharmony_ci
26688c2ecf20Sopenharmony_ci	/* The number of encrypted MPDU frames that the 802.11 station
26698c2ecf20Sopenharmony_ci	 * failed to decrypt because of a WEP ICV error */
26708c2ecf20Sopenharmony_ci	u32 wep_icv_err;
26718c2ecf20Sopenharmony_ci
26728c2ecf20Sopenharmony_ci	/* The number of received encrypted packets that the 802.11 station
26738c2ecf20Sopenharmony_ci	 * successfully decrypted */
26748c2ecf20Sopenharmony_ci	u32 rx_decrypt_succ_cnt;
26758c2ecf20Sopenharmony_ci
26768c2ecf20Sopenharmony_ci	/* The number of encrypted packets that the 802.11 station failed
26778c2ecf20Sopenharmony_ci	 * to decrypt */
26788c2ecf20Sopenharmony_ci	u32 rx_decrypt_fail_cnt;
26798c2ecf20Sopenharmony_ci};
26808c2ecf20Sopenharmony_ci
26818c2ecf20Sopenharmony_cistruct ani_global_class_b_stats_info {
26828c2ecf20Sopenharmony_ci	struct ani_global_security_stats uc_stats;
26838c2ecf20Sopenharmony_ci	struct ani_global_security_stats mc_bc_stats;
26848c2ecf20Sopenharmony_ci};
26858c2ecf20Sopenharmony_ci
26868c2ecf20Sopenharmony_cistruct ani_global_class_c_stats_info {
26878c2ecf20Sopenharmony_ci	/* This counter shall be incremented for a received A-MSDU frame
26888c2ecf20Sopenharmony_ci	 * with the stations MAC address in the address 1 field or an
26898c2ecf20Sopenharmony_ci	 * A-MSDU frame with a group address in the address 1 field */
26908c2ecf20Sopenharmony_ci	u32 rx_amsdu_cnt;
26918c2ecf20Sopenharmony_ci
26928c2ecf20Sopenharmony_ci	/* This counter shall be incremented when the MAC receives an AMPDU
26938c2ecf20Sopenharmony_ci	 * from the PHY */
26948c2ecf20Sopenharmony_ci	u32 rx_ampdu_cnt;
26958c2ecf20Sopenharmony_ci
26968c2ecf20Sopenharmony_ci	/* This counter shall be incremented when a Frame is transmitted
26978c2ecf20Sopenharmony_ci	 * only on the primary channel */
26988c2ecf20Sopenharmony_ci	u32 tx_20_frm_cnt;
26998c2ecf20Sopenharmony_ci
27008c2ecf20Sopenharmony_ci	/* This counter shall be incremented when a Frame is received only
27018c2ecf20Sopenharmony_ci	 * on the primary channel */
27028c2ecf20Sopenharmony_ci	u32 rx_20_frm_cnt;
27038c2ecf20Sopenharmony_ci
27048c2ecf20Sopenharmony_ci	/* This counter shall be incremented by the number of MPDUs
27058c2ecf20Sopenharmony_ci	 * received in the A-MPDU when an A-MPDU is received */
27068c2ecf20Sopenharmony_ci	u32 rx_mpdu_in_ampdu_cnt;
27078c2ecf20Sopenharmony_ci
27088c2ecf20Sopenharmony_ci	/* This counter shall be incremented when an MPDU delimiter has a
27098c2ecf20Sopenharmony_ci	 * CRC error when this is the first CRC error in the received AMPDU
27108c2ecf20Sopenharmony_ci	 * or when the previous delimiter has been decoded correctly */
27118c2ecf20Sopenharmony_ci	u32 ampdu_delimiter_crc_err;
27128c2ecf20Sopenharmony_ci};
27138c2ecf20Sopenharmony_ci
27148c2ecf20Sopenharmony_cistruct ani_per_sta_stats_info {
27158c2ecf20Sopenharmony_ci	/* The number of MPDU frames that the 802.11 station transmitted
27168c2ecf20Sopenharmony_ci	 * and acknowledged through a received 802.11 ACK frame */
27178c2ecf20Sopenharmony_ci	u32 tx_frag_cnt[4];
27188c2ecf20Sopenharmony_ci
27198c2ecf20Sopenharmony_ci	/* This counter shall be incremented when an A-MPDU is transmitted */
27208c2ecf20Sopenharmony_ci	u32 tx_ampdu_cnt;
27218c2ecf20Sopenharmony_ci
27228c2ecf20Sopenharmony_ci	/* This counter shall increment by the number of MPDUs in the AMPDU
27238c2ecf20Sopenharmony_ci	 * when an A-MPDU is transmitted */
27248c2ecf20Sopenharmony_ci	u32 tx_mpdu_in_ampdu_cnt;
27258c2ecf20Sopenharmony_ci};
27268c2ecf20Sopenharmony_ci
27278c2ecf20Sopenharmony_cistruct wcn36xx_hal_stats_rsp_msg {
27288c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
27298c2ecf20Sopenharmony_ci
27308c2ecf20Sopenharmony_ci	/* Success or Failure */
27318c2ecf20Sopenharmony_ci	u32 status;
27328c2ecf20Sopenharmony_ci
27338c2ecf20Sopenharmony_ci	/* STA Idx */
27348c2ecf20Sopenharmony_ci	u32 sta_index;
27358c2ecf20Sopenharmony_ci
27368c2ecf20Sopenharmony_ci	/* Categories of STATS being returned as per eHalStatsMask */
27378c2ecf20Sopenharmony_ci	u32 stats_mask;
27388c2ecf20Sopenharmony_ci
27398c2ecf20Sopenharmony_ci	/* message type is same as the request type */
27408c2ecf20Sopenharmony_ci	u16 msg_type;
27418c2ecf20Sopenharmony_ci
27428c2ecf20Sopenharmony_ci	/* length of the entire request, includes the pStatsBuf length too */
27438c2ecf20Sopenharmony_ci	u16 msg_len;
27448c2ecf20Sopenharmony_ci};
27458c2ecf20Sopenharmony_ci
27468c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_link_state_req_msg {
27478c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
27488c2ecf20Sopenharmony_ci
27498c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
27508c2ecf20Sopenharmony_ci	enum wcn36xx_hal_link_state state;
27518c2ecf20Sopenharmony_ci	u8 self_mac_addr[ETH_ALEN];
27528c2ecf20Sopenharmony_ci
27538c2ecf20Sopenharmony_ci} __packed;
27548c2ecf20Sopenharmony_ci
27558c2ecf20Sopenharmony_cistruct set_link_state_rsp_msg {
27568c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
27578c2ecf20Sopenharmony_ci
27588c2ecf20Sopenharmony_ci	/* success or failure */
27598c2ecf20Sopenharmony_ci	u32 status;
27608c2ecf20Sopenharmony_ci};
27618c2ecf20Sopenharmony_ci
27628c2ecf20Sopenharmony_ci/* TSPEC Params */
27638c2ecf20Sopenharmony_cistruct wcn36xx_hal_ts_info_tfc {
27648c2ecf20Sopenharmony_ci#ifndef ANI_LITTLE_BIT_ENDIAN
27658c2ecf20Sopenharmony_ci	u16 ackPolicy:2;
27668c2ecf20Sopenharmony_ci	u16 userPrio:3;
27678c2ecf20Sopenharmony_ci	u16 psb:1;
27688c2ecf20Sopenharmony_ci	u16 aggregation:1;
27698c2ecf20Sopenharmony_ci	u16 accessPolicy:2;
27708c2ecf20Sopenharmony_ci	u16 direction:2;
27718c2ecf20Sopenharmony_ci	u16 tsid:4;
27728c2ecf20Sopenharmony_ci	u16 trafficType:1;
27738c2ecf20Sopenharmony_ci#else
27748c2ecf20Sopenharmony_ci	u16 trafficType:1;
27758c2ecf20Sopenharmony_ci	u16 tsid:4;
27768c2ecf20Sopenharmony_ci	u16 direction:2;
27778c2ecf20Sopenharmony_ci	u16 accessPolicy:2;
27788c2ecf20Sopenharmony_ci	u16 aggregation:1;
27798c2ecf20Sopenharmony_ci	u16 psb:1;
27808c2ecf20Sopenharmony_ci	u16 userPrio:3;
27818c2ecf20Sopenharmony_ci	u16 ackPolicy:2;
27828c2ecf20Sopenharmony_ci#endif
27838c2ecf20Sopenharmony_ci};
27848c2ecf20Sopenharmony_ci
27858c2ecf20Sopenharmony_ci/* Flag to schedule the traffic type */
27868c2ecf20Sopenharmony_cistruct wcn36xx_hal_ts_info_sch {
27878c2ecf20Sopenharmony_ci#ifndef ANI_LITTLE_BIT_ENDIAN
27888c2ecf20Sopenharmony_ci	u8 rsvd:7;
27898c2ecf20Sopenharmony_ci	u8 schedule:1;
27908c2ecf20Sopenharmony_ci#else
27918c2ecf20Sopenharmony_ci	u8 schedule:1;
27928c2ecf20Sopenharmony_ci	u8 rsvd:7;
27938c2ecf20Sopenharmony_ci#endif
27948c2ecf20Sopenharmony_ci};
27958c2ecf20Sopenharmony_ci
27968c2ecf20Sopenharmony_ci/* Traffic and scheduling info */
27978c2ecf20Sopenharmony_cistruct wcn36xx_hal_ts_info {
27988c2ecf20Sopenharmony_ci	struct wcn36xx_hal_ts_info_tfc traffic;
27998c2ecf20Sopenharmony_ci	struct wcn36xx_hal_ts_info_sch schedule;
28008c2ecf20Sopenharmony_ci};
28018c2ecf20Sopenharmony_ci
28028c2ecf20Sopenharmony_ci/* Information elements */
28038c2ecf20Sopenharmony_cistruct wcn36xx_hal_tspec_ie {
28048c2ecf20Sopenharmony_ci	u8 type;
28058c2ecf20Sopenharmony_ci	u8 length;
28068c2ecf20Sopenharmony_ci	struct wcn36xx_hal_ts_info ts_info;
28078c2ecf20Sopenharmony_ci	u16 nom_msdu_size;
28088c2ecf20Sopenharmony_ci	u16 max_msdu_size;
28098c2ecf20Sopenharmony_ci	u32 min_svc_interval;
28108c2ecf20Sopenharmony_ci	u32 max_svc_interval;
28118c2ecf20Sopenharmony_ci	u32 inact_interval;
28128c2ecf20Sopenharmony_ci	u32 suspend_interval;
28138c2ecf20Sopenharmony_ci	u32 svc_start_time;
28148c2ecf20Sopenharmony_ci	u32 min_data_rate;
28158c2ecf20Sopenharmony_ci	u32 mean_data_rate;
28168c2ecf20Sopenharmony_ci	u32 peak_data_rate;
28178c2ecf20Sopenharmony_ci	u32 max_burst_sz;
28188c2ecf20Sopenharmony_ci	u32 delay_bound;
28198c2ecf20Sopenharmony_ci	u32 min_phy_rate;
28208c2ecf20Sopenharmony_ci	u16 surplus_bw;
28218c2ecf20Sopenharmony_ci	u16 medium_time;
28228c2ecf20Sopenharmony_ci};
28238c2ecf20Sopenharmony_ci
28248c2ecf20Sopenharmony_cistruct add_ts_req_msg {
28258c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
28268c2ecf20Sopenharmony_ci
28278c2ecf20Sopenharmony_ci	/* Station Index */
28288c2ecf20Sopenharmony_ci	u16 sta_index;
28298c2ecf20Sopenharmony_ci
28308c2ecf20Sopenharmony_ci	/* TSPEC handler uniquely identifying a TSPEC for a STA in a BSS */
28318c2ecf20Sopenharmony_ci	u16 tspec_index;
28328c2ecf20Sopenharmony_ci
28338c2ecf20Sopenharmony_ci	/* To program TPE with required parameters */
28348c2ecf20Sopenharmony_ci	struct wcn36xx_hal_tspec_ie tspec;
28358c2ecf20Sopenharmony_ci
28368c2ecf20Sopenharmony_ci	/* U-APSD Flags: 1b per AC.  Encoded as follows:
28378c2ecf20Sopenharmony_ci	   b7 b6 b5 b4 b3 b2 b1 b0 =
28388c2ecf20Sopenharmony_ci	   X  X  X  X  BE BK VI VO */
28398c2ecf20Sopenharmony_ci	u8 uapsd;
28408c2ecf20Sopenharmony_ci
28418c2ecf20Sopenharmony_ci	/* These parameters are for all the access categories */
28428c2ecf20Sopenharmony_ci
28438c2ecf20Sopenharmony_ci	/* Service Interval */
28448c2ecf20Sopenharmony_ci	u32 service_interval[WCN36XX_HAL_MAX_AC];
28458c2ecf20Sopenharmony_ci
28468c2ecf20Sopenharmony_ci	/* Suspend Interval */
28478c2ecf20Sopenharmony_ci	u32 suspend_interval[WCN36XX_HAL_MAX_AC];
28488c2ecf20Sopenharmony_ci
28498c2ecf20Sopenharmony_ci	/* Delay Interval */
28508c2ecf20Sopenharmony_ci	u32 delay_interval[WCN36XX_HAL_MAX_AC];
28518c2ecf20Sopenharmony_ci};
28528c2ecf20Sopenharmony_ci
28538c2ecf20Sopenharmony_cistruct add_rs_rsp_msg {
28548c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
28558c2ecf20Sopenharmony_ci
28568c2ecf20Sopenharmony_ci	/* success or failure */
28578c2ecf20Sopenharmony_ci	u32 status;
28588c2ecf20Sopenharmony_ci};
28598c2ecf20Sopenharmony_ci
28608c2ecf20Sopenharmony_cistruct del_ts_req_msg {
28618c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
28628c2ecf20Sopenharmony_ci
28638c2ecf20Sopenharmony_ci	/* Station Index */
28648c2ecf20Sopenharmony_ci	u16 sta_index;
28658c2ecf20Sopenharmony_ci
28668c2ecf20Sopenharmony_ci	/* TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS */
28678c2ecf20Sopenharmony_ci	u16 tspec_index;
28688c2ecf20Sopenharmony_ci
28698c2ecf20Sopenharmony_ci	/* To lookup station id using the mac address */
28708c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
28718c2ecf20Sopenharmony_ci};
28728c2ecf20Sopenharmony_ci
28738c2ecf20Sopenharmony_cistruct del_ts_rsp_msg {
28748c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
28758c2ecf20Sopenharmony_ci
28768c2ecf20Sopenharmony_ci	/* success or failure */
28778c2ecf20Sopenharmony_ci	u32 status;
28788c2ecf20Sopenharmony_ci};
28798c2ecf20Sopenharmony_ci
28808c2ecf20Sopenharmony_ci/* End of TSpec Parameters */
28818c2ecf20Sopenharmony_ci
28828c2ecf20Sopenharmony_ci/* Start of BLOCK ACK related Parameters */
28838c2ecf20Sopenharmony_ci
28848c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_ba_session_req_msg {
28858c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
28868c2ecf20Sopenharmony_ci
28878c2ecf20Sopenharmony_ci	/* Station Index */
28888c2ecf20Sopenharmony_ci	u16 sta_index;
28898c2ecf20Sopenharmony_ci
28908c2ecf20Sopenharmony_ci	/* Peer MAC Address */
28918c2ecf20Sopenharmony_ci	u8 mac_addr[ETH_ALEN];
28928c2ecf20Sopenharmony_ci
28938c2ecf20Sopenharmony_ci	/* ADDBA Action Frame dialog token
28948c2ecf20Sopenharmony_ci	   HAL will not interpret this object */
28958c2ecf20Sopenharmony_ci	u8 dialog_token;
28968c2ecf20Sopenharmony_ci
28978c2ecf20Sopenharmony_ci	/* TID for which the BA is being setup
28988c2ecf20Sopenharmony_ci	   This identifies the TC or TS of interest */
28998c2ecf20Sopenharmony_ci	u8 tid;
29008c2ecf20Sopenharmony_ci
29018c2ecf20Sopenharmony_ci	/* 0 - Delayed BA (Not supported)
29028c2ecf20Sopenharmony_ci	   1 - Immediate BA */
29038c2ecf20Sopenharmony_ci	u8 policy;
29048c2ecf20Sopenharmony_ci
29058c2ecf20Sopenharmony_ci	/* Indicates the number of buffers for this TID (baTID)
29068c2ecf20Sopenharmony_ci	   NOTE - This is the requested buffer size. When this
29078c2ecf20Sopenharmony_ci	   is processed by HAL and subsequently by HDD, it is
29088c2ecf20Sopenharmony_ci	   possible that HDD may change this buffer size. Any
29098c2ecf20Sopenharmony_ci	   change in the buffer size should be noted by PE and
29108c2ecf20Sopenharmony_ci	   advertized appropriately in the ADDBA response */
29118c2ecf20Sopenharmony_ci	u16 buffer_size;
29128c2ecf20Sopenharmony_ci
29138c2ecf20Sopenharmony_ci	/* BA timeout in TU's 0 means no timeout will occur */
29148c2ecf20Sopenharmony_ci	u16 timeout;
29158c2ecf20Sopenharmony_ci
29168c2ecf20Sopenharmony_ci	/* b0..b3 - Fragment Number - Always set to 0
29178c2ecf20Sopenharmony_ci	   b4..b15 - Starting Sequence Number of first MSDU
29188c2ecf20Sopenharmony_ci	   for which this BA is setup */
29198c2ecf20Sopenharmony_ci	u16 ssn;
29208c2ecf20Sopenharmony_ci
29218c2ecf20Sopenharmony_ci	/* ADDBA direction
29228c2ecf20Sopenharmony_ci	   1 - Originator
29238c2ecf20Sopenharmony_ci	   0 - Recipient */
29248c2ecf20Sopenharmony_ci	u8 direction;
29258c2ecf20Sopenharmony_ci} __packed;
29268c2ecf20Sopenharmony_ci
29278c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_ba_session_rsp_msg {
29288c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
29298c2ecf20Sopenharmony_ci
29308c2ecf20Sopenharmony_ci	/* success or failure */
29318c2ecf20Sopenharmony_ci	u32 status;
29328c2ecf20Sopenharmony_ci
29338c2ecf20Sopenharmony_ci	/* Dialog token */
29348c2ecf20Sopenharmony_ci	u8 dialog_token;
29358c2ecf20Sopenharmony_ci
29368c2ecf20Sopenharmony_ci	/* TID for which the BA session has been setup */
29378c2ecf20Sopenharmony_ci	u8 ba_tid;
29388c2ecf20Sopenharmony_ci
29398c2ecf20Sopenharmony_ci	/* BA Buffer Size allocated for the current BA session */
29408c2ecf20Sopenharmony_ci	u8 ba_buffer_size;
29418c2ecf20Sopenharmony_ci
29428c2ecf20Sopenharmony_ci	u8 ba_session_id;
29438c2ecf20Sopenharmony_ci
29448c2ecf20Sopenharmony_ci	/* Reordering Window buffer */
29458c2ecf20Sopenharmony_ci	u8 win_size;
29468c2ecf20Sopenharmony_ci
29478c2ecf20Sopenharmony_ci	/* Station Index to id the sta */
29488c2ecf20Sopenharmony_ci	u8 sta_index;
29498c2ecf20Sopenharmony_ci
29508c2ecf20Sopenharmony_ci	/* Starting Sequence Number */
29518c2ecf20Sopenharmony_ci	u16 ssn;
29528c2ecf20Sopenharmony_ci} __packed;
29538c2ecf20Sopenharmony_ci
29548c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_ba_req_msg {
29558c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
29568c2ecf20Sopenharmony_ci
29578c2ecf20Sopenharmony_ci	/* Session Id */
29588c2ecf20Sopenharmony_ci	u8 session_id;
29598c2ecf20Sopenharmony_ci
29608c2ecf20Sopenharmony_ci	/* Reorder Window Size */
29618c2ecf20Sopenharmony_ci	u8 win_size;
29628c2ecf20Sopenharmony_ci/* Old FW 1.2.2.4 does not support this*/
29638c2ecf20Sopenharmony_ci#ifdef FEATURE_ON_CHIP_REORDERING
29648c2ecf20Sopenharmony_ci	u8 reordering_done_on_chip;
29658c2ecf20Sopenharmony_ci#endif
29668c2ecf20Sopenharmony_ci} __packed;
29678c2ecf20Sopenharmony_ci
29688c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_ba_rsp_msg {
29698c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
29708c2ecf20Sopenharmony_ci
29718c2ecf20Sopenharmony_ci	/* success or failure */
29728c2ecf20Sopenharmony_ci	u32 status;
29738c2ecf20Sopenharmony_ci
29748c2ecf20Sopenharmony_ci	/* Dialog token */
29758c2ecf20Sopenharmony_ci	u8 dialog_token;
29768c2ecf20Sopenharmony_ci} __packed;
29778c2ecf20Sopenharmony_ci
29788c2ecf20Sopenharmony_cistruct add_ba_info {
29798c2ecf20Sopenharmony_ci	u16 ba_enable:1;
29808c2ecf20Sopenharmony_ci	u16 starting_seq_num:12;
29818c2ecf20Sopenharmony_ci	u16 reserved:3;
29828c2ecf20Sopenharmony_ci};
29838c2ecf20Sopenharmony_ci
29848c2ecf20Sopenharmony_cistruct wcn36xx_hal_trigger_ba_rsp_candidate {
29858c2ecf20Sopenharmony_ci	u8 sta_addr[ETH_ALEN];
29868c2ecf20Sopenharmony_ci	struct add_ba_info ba_info[STACFG_MAX_TC];
29878c2ecf20Sopenharmony_ci} __packed;
29888c2ecf20Sopenharmony_ci
29898c2ecf20Sopenharmony_cistruct wcn36xx_hal_trigger_ba_req_candidate {
29908c2ecf20Sopenharmony_ci	u8 sta_index;
29918c2ecf20Sopenharmony_ci	u8 tid_bitmap;
29928c2ecf20Sopenharmony_ci} __packed;
29938c2ecf20Sopenharmony_ci
29948c2ecf20Sopenharmony_cistruct wcn36xx_hal_trigger_ba_req_msg {
29958c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
29968c2ecf20Sopenharmony_ci
29978c2ecf20Sopenharmony_ci	/* Session Id */
29988c2ecf20Sopenharmony_ci	u8 session_id;
29998c2ecf20Sopenharmony_ci
30008c2ecf20Sopenharmony_ci	/* baCandidateCnt is followed by trigger BA
30018c2ecf20Sopenharmony_ci	 * Candidate List(tTriggerBaCandidate)
30028c2ecf20Sopenharmony_ci	 */
30038c2ecf20Sopenharmony_ci	u16 candidate_cnt;
30048c2ecf20Sopenharmony_ci
30058c2ecf20Sopenharmony_ci} __packed;
30068c2ecf20Sopenharmony_ci
30078c2ecf20Sopenharmony_cistruct wcn36xx_hal_trigger_ba_rsp_msg {
30088c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30098c2ecf20Sopenharmony_ci
30108c2ecf20Sopenharmony_ci	/* TO SUPPORT BT-AMP */
30118c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
30128c2ecf20Sopenharmony_ci
30138c2ecf20Sopenharmony_ci	/* success or failure */
30148c2ecf20Sopenharmony_ci	u32 status;
30158c2ecf20Sopenharmony_ci
30168c2ecf20Sopenharmony_ci	/* baCandidateCnt is followed by trigger BA
30178c2ecf20Sopenharmony_ci	 * Rsp Candidate List(tTriggerRspBaCandidate)
30188c2ecf20Sopenharmony_ci	 */
30198c2ecf20Sopenharmony_ci	u16 candidate_cnt;
30208c2ecf20Sopenharmony_ci} __packed;
30218c2ecf20Sopenharmony_ci
30228c2ecf20Sopenharmony_cistruct wcn36xx_hal_del_ba_req_msg {
30238c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30248c2ecf20Sopenharmony_ci
30258c2ecf20Sopenharmony_ci	/* Station Index */
30268c2ecf20Sopenharmony_ci	u16 sta_index;
30278c2ecf20Sopenharmony_ci
30288c2ecf20Sopenharmony_ci	/* TID for which the BA session is being deleted */
30298c2ecf20Sopenharmony_ci	u8 tid;
30308c2ecf20Sopenharmony_ci
30318c2ecf20Sopenharmony_ci	/* DELBA direction
30328c2ecf20Sopenharmony_ci	   1 - Originator
30338c2ecf20Sopenharmony_ci	   0 - Recipient */
30348c2ecf20Sopenharmony_ci	u8 direction;
30358c2ecf20Sopenharmony_ci} __packed;
30368c2ecf20Sopenharmony_ci
30378c2ecf20Sopenharmony_cistruct wcn36xx_hal_del_ba_rsp_msg {
30388c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30398c2ecf20Sopenharmony_ci
30408c2ecf20Sopenharmony_ci	/* success or failure */
30418c2ecf20Sopenharmony_ci	u32 status;
30428c2ecf20Sopenharmony_ci} __packed;
30438c2ecf20Sopenharmony_ci
30448c2ecf20Sopenharmony_cistruct tsm_stats_req_msg {
30458c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30468c2ecf20Sopenharmony_ci
30478c2ecf20Sopenharmony_ci	/* Traffic Id */
30488c2ecf20Sopenharmony_ci	u8 tid;
30498c2ecf20Sopenharmony_ci
30508c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
30518c2ecf20Sopenharmony_ci};
30528c2ecf20Sopenharmony_ci
30538c2ecf20Sopenharmony_cistruct tsm_stats_rsp_msg {
30548c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30558c2ecf20Sopenharmony_ci
30568c2ecf20Sopenharmony_ci	/*success or failure */
30578c2ecf20Sopenharmony_ci	u32 status;
30588c2ecf20Sopenharmony_ci
30598c2ecf20Sopenharmony_ci	/* Uplink Packet Queue delay */
30608c2ecf20Sopenharmony_ci	u16 uplink_pkt_queue_delay;
30618c2ecf20Sopenharmony_ci
30628c2ecf20Sopenharmony_ci	/* Uplink Packet Queue delay histogram */
30638c2ecf20Sopenharmony_ci	u16 uplink_pkt_queue_delay_hist[4];
30648c2ecf20Sopenharmony_ci
30658c2ecf20Sopenharmony_ci	/* Uplink Packet Transmit delay */
30668c2ecf20Sopenharmony_ci	u32 uplink_pkt_tx_delay;
30678c2ecf20Sopenharmony_ci
30688c2ecf20Sopenharmony_ci	/* Uplink Packet loss */
30698c2ecf20Sopenharmony_ci	u16 uplink_pkt_loss;
30708c2ecf20Sopenharmony_ci
30718c2ecf20Sopenharmony_ci	/* Uplink Packet count */
30728c2ecf20Sopenharmony_ci	u16 uplink_pkt_count;
30738c2ecf20Sopenharmony_ci
30748c2ecf20Sopenharmony_ci	/* Roaming count */
30758c2ecf20Sopenharmony_ci	u8 roaming_count;
30768c2ecf20Sopenharmony_ci
30778c2ecf20Sopenharmony_ci	/* Roaming Delay */
30788c2ecf20Sopenharmony_ci	u16 roaming_delay;
30798c2ecf20Sopenharmony_ci};
30808c2ecf20Sopenharmony_ci
30818c2ecf20Sopenharmony_cistruct set_key_done_msg {
30828c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30838c2ecf20Sopenharmony_ci
30848c2ecf20Sopenharmony_ci	/*bssid of the keys */
30858c2ecf20Sopenharmony_ci	u8 bssidx;
30868c2ecf20Sopenharmony_ci	u8 enc_type;
30878c2ecf20Sopenharmony_ci};
30888c2ecf20Sopenharmony_ci
30898c2ecf20Sopenharmony_cistruct wcn36xx_hal_nv_img_download_req_msg {
30908c2ecf20Sopenharmony_ci	/* Note: The length specified in wcn36xx_hal_nv_img_download_req_msg
30918c2ecf20Sopenharmony_ci	 * messages should be
30928c2ecf20Sopenharmony_ci	 * header.len = sizeof(wcn36xx_hal_nv_img_download_req_msg) +
30938c2ecf20Sopenharmony_ci	 * nv_img_buffer_size */
30948c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
30958c2ecf20Sopenharmony_ci
30968c2ecf20Sopenharmony_ci	/* Fragment sequence number of the NV Image. Note that NV Image
30978c2ecf20Sopenharmony_ci	 * might not fit into one message due to size limitation of the SMD
30988c2ecf20Sopenharmony_ci	 * channel FIFO. UMAC can hence choose to chop the NV blob into
30998c2ecf20Sopenharmony_ci	 * multiple fragments starting with seqeunce number 0, 1, 2 etc.
31008c2ecf20Sopenharmony_ci	 * The last fragment MUST be indicated by marking the
31018c2ecf20Sopenharmony_ci	 * isLastFragment field to 1. Note that all the NV blobs would be
31028c2ecf20Sopenharmony_ci	 * concatenated together by HAL without any padding bytes in
31038c2ecf20Sopenharmony_ci	 * between.*/
31048c2ecf20Sopenharmony_ci	u16 frag_number;
31058c2ecf20Sopenharmony_ci
31068c2ecf20Sopenharmony_ci	/* Is this the last fragment? When set to 1 it indicates that no
31078c2ecf20Sopenharmony_ci	 * more fragments will be sent by UMAC and HAL can concatenate all
31088c2ecf20Sopenharmony_ci	 * the NV blobs rcvd & proceed with the parsing. HAL would generate
31098c2ecf20Sopenharmony_ci	 * a WCN36XX_HAL_DOWNLOAD_NV_RSP to the WCN36XX_HAL_DOWNLOAD_NV_REQ
31108c2ecf20Sopenharmony_ci	 * after it receives each fragment */
31118c2ecf20Sopenharmony_ci	u16 last_fragment;
31128c2ecf20Sopenharmony_ci
31138c2ecf20Sopenharmony_ci	/* NV Image size (number of bytes) */
31148c2ecf20Sopenharmony_ci	u32 nv_img_buffer_size;
31158c2ecf20Sopenharmony_ci
31168c2ecf20Sopenharmony_ci	/* Following the 'nv_img_buffer_size', there should be
31178c2ecf20Sopenharmony_ci	 * nv_img_buffer_size bytes of NV Image i.e.
31188c2ecf20Sopenharmony_ci	 * u8[nv_img_buffer_size] */
31198c2ecf20Sopenharmony_ci} __packed;
31208c2ecf20Sopenharmony_ci
31218c2ecf20Sopenharmony_cistruct wcn36xx_hal_nv_img_download_rsp_msg {
31228c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
31238c2ecf20Sopenharmony_ci
31248c2ecf20Sopenharmony_ci	/* Success or Failure. HAL would generate a
31258c2ecf20Sopenharmony_ci	 * WCN36XX_HAL_DOWNLOAD_NV_RSP after each fragment */
31268c2ecf20Sopenharmony_ci	u32 status;
31278c2ecf20Sopenharmony_ci} __packed;
31288c2ecf20Sopenharmony_ci
31298c2ecf20Sopenharmony_cistruct wcn36xx_hal_nv_store_ind {
31308c2ecf20Sopenharmony_ci	/* Note: The length specified in tHalNvStoreInd messages should be
31318c2ecf20Sopenharmony_ci	 * header.msgLen = sizeof(tHalNvStoreInd) + nvBlobSize */
31328c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
31338c2ecf20Sopenharmony_ci
31348c2ecf20Sopenharmony_ci	/* NV Item */
31358c2ecf20Sopenharmony_ci	u32 table_id;
31368c2ecf20Sopenharmony_ci
31378c2ecf20Sopenharmony_ci	/* Size of NV Blob */
31388c2ecf20Sopenharmony_ci	u32 nv_blob_size;
31398c2ecf20Sopenharmony_ci
31408c2ecf20Sopenharmony_ci	/* Following the 'nvBlobSize', there should be nvBlobSize bytes of
31418c2ecf20Sopenharmony_ci	 * NV blob i.e. u8[nvBlobSize] */
31428c2ecf20Sopenharmony_ci};
31438c2ecf20Sopenharmony_ci
31448c2ecf20Sopenharmony_ci/* End of Block Ack Related Parameters */
31458c2ecf20Sopenharmony_ci
31468c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CIPHER_SEQ_CTR_SIZE 6
31478c2ecf20Sopenharmony_ci
31488c2ecf20Sopenharmony_ci/* Definition for MIC failure indication MAC reports this each time a MIC
31498c2ecf20Sopenharmony_ci * failure occures on Rx TKIP packet
31508c2ecf20Sopenharmony_ci */
31518c2ecf20Sopenharmony_cistruct mic_failure_ind_msg {
31528c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
31538c2ecf20Sopenharmony_ci
31548c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
31558c2ecf20Sopenharmony_ci
31568c2ecf20Sopenharmony_ci	/* address used to compute MIC */
31578c2ecf20Sopenharmony_ci	u8 src_addr[ETH_ALEN];
31588c2ecf20Sopenharmony_ci
31598c2ecf20Sopenharmony_ci	/* transmitter address */
31608c2ecf20Sopenharmony_ci	u8 ta_addr[ETH_ALEN];
31618c2ecf20Sopenharmony_ci
31628c2ecf20Sopenharmony_ci	u8 dst_addr[ETH_ALEN];
31638c2ecf20Sopenharmony_ci
31648c2ecf20Sopenharmony_ci	u8 multicast;
31658c2ecf20Sopenharmony_ci
31668c2ecf20Sopenharmony_ci	/* first byte of IV */
31678c2ecf20Sopenharmony_ci	u8 iv1;
31688c2ecf20Sopenharmony_ci
31698c2ecf20Sopenharmony_ci	/* second byte of IV */
31708c2ecf20Sopenharmony_ci	u8 key_id;
31718c2ecf20Sopenharmony_ci
31728c2ecf20Sopenharmony_ci	/* sequence number */
31738c2ecf20Sopenharmony_ci	u8 tsc[WCN36XX_HAL_CIPHER_SEQ_CTR_SIZE];
31748c2ecf20Sopenharmony_ci
31758c2ecf20Sopenharmony_ci	/* receive address */
31768c2ecf20Sopenharmony_ci	u8 rx_addr[ETH_ALEN];
31778c2ecf20Sopenharmony_ci};
31788c2ecf20Sopenharmony_ci
31798c2ecf20Sopenharmony_cistruct update_vht_op_mode_req_msg {
31808c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
31818c2ecf20Sopenharmony_ci
31828c2ecf20Sopenharmony_ci	u16 op_mode;
31838c2ecf20Sopenharmony_ci	u16 sta_id;
31848c2ecf20Sopenharmony_ci};
31858c2ecf20Sopenharmony_ci
31868c2ecf20Sopenharmony_cistruct update_vht_op_mode_params_rsp_msg {
31878c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
31888c2ecf20Sopenharmony_ci
31898c2ecf20Sopenharmony_ci	u32 status;
31908c2ecf20Sopenharmony_ci};
31918c2ecf20Sopenharmony_ci
31928c2ecf20Sopenharmony_cistruct update_beacon_req_msg {
31938c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
31948c2ecf20Sopenharmony_ci
31958c2ecf20Sopenharmony_ci	u8 bss_index;
31968c2ecf20Sopenharmony_ci
31978c2ecf20Sopenharmony_ci	/* shortPreamble mode. HAL should update all the STA rates when it
31988c2ecf20Sopenharmony_ci	 * receives this message */
31998c2ecf20Sopenharmony_ci	u8 short_preamble;
32008c2ecf20Sopenharmony_ci
32018c2ecf20Sopenharmony_ci	/* short Slot time. */
32028c2ecf20Sopenharmony_ci	u8 short_slot_time;
32038c2ecf20Sopenharmony_ci
32048c2ecf20Sopenharmony_ci	/* Beacon Interval */
32058c2ecf20Sopenharmony_ci	u16 beacon_interval;
32068c2ecf20Sopenharmony_ci
32078c2ecf20Sopenharmony_ci	/* Protection related */
32088c2ecf20Sopenharmony_ci	u8 lla_coexist;
32098c2ecf20Sopenharmony_ci	u8 llb_coexist;
32108c2ecf20Sopenharmony_ci	u8 llg_coexist;
32118c2ecf20Sopenharmony_ci	u8 ht20_coexist;
32128c2ecf20Sopenharmony_ci	u8 lln_non_gf_coexist;
32138c2ecf20Sopenharmony_ci	u8 lsig_tx_op_protection_full_support;
32148c2ecf20Sopenharmony_ci	u8 rifs_mode;
32158c2ecf20Sopenharmony_ci
32168c2ecf20Sopenharmony_ci	u16 param_change_bitmap;
32178c2ecf20Sopenharmony_ci};
32188c2ecf20Sopenharmony_ci
32198c2ecf20Sopenharmony_cistruct update_beacon_rsp_msg {
32208c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32218c2ecf20Sopenharmony_ci	u32 status;
32228c2ecf20Sopenharmony_ci};
32238c2ecf20Sopenharmony_ci
32248c2ecf20Sopenharmony_cistruct wcn36xx_hal_send_beacon_req_msg {
32258c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32268c2ecf20Sopenharmony_ci
32278c2ecf20Sopenharmony_ci	/* length of the template + 6. Only qcom knows why */
32288c2ecf20Sopenharmony_ci	u32 beacon_length6;
32298c2ecf20Sopenharmony_ci
32308c2ecf20Sopenharmony_ci	/* length of the template. */
32318c2ecf20Sopenharmony_ci	u32 beacon_length;
32328c2ecf20Sopenharmony_ci
32338c2ecf20Sopenharmony_ci	/* Beacon data. */
32348c2ecf20Sopenharmony_ci	u8 beacon[BEACON_TEMPLATE_SIZE - sizeof(u32)];
32358c2ecf20Sopenharmony_ci
32368c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
32378c2ecf20Sopenharmony_ci
32388c2ecf20Sopenharmony_ci	/* TIM IE offset from the beginning of the template. */
32398c2ecf20Sopenharmony_ci	u32 tim_ie_offset;
32408c2ecf20Sopenharmony_ci
32418c2ecf20Sopenharmony_ci	/* P2P IE offset from the begining of the template */
32428c2ecf20Sopenharmony_ci	u16 p2p_ie_offset;
32438c2ecf20Sopenharmony_ci} __packed;
32448c2ecf20Sopenharmony_ci
32458c2ecf20Sopenharmony_cistruct send_beacon_rsp_msg {
32468c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32478c2ecf20Sopenharmony_ci	u32 status;
32488c2ecf20Sopenharmony_ci} __packed;
32498c2ecf20Sopenharmony_ci
32508c2ecf20Sopenharmony_cistruct enable_radar_req_msg {
32518c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32528c2ecf20Sopenharmony_ci
32538c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
32548c2ecf20Sopenharmony_ci	u8 channel;
32558c2ecf20Sopenharmony_ci};
32568c2ecf20Sopenharmony_ci
32578c2ecf20Sopenharmony_cistruct enable_radar_rsp_msg {
32588c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32598c2ecf20Sopenharmony_ci
32608c2ecf20Sopenharmony_ci	/* Link Parameters */
32618c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
32628c2ecf20Sopenharmony_ci
32638c2ecf20Sopenharmony_ci	/* success or failure */
32648c2ecf20Sopenharmony_ci	u32 status;
32658c2ecf20Sopenharmony_ci};
32668c2ecf20Sopenharmony_ci
32678c2ecf20Sopenharmony_cistruct radar_detect_intr_ind_msg {
32688c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32698c2ecf20Sopenharmony_ci
32708c2ecf20Sopenharmony_ci	u8 radar_det_channel;
32718c2ecf20Sopenharmony_ci};
32728c2ecf20Sopenharmony_ci
32738c2ecf20Sopenharmony_cistruct radar_detect_ind_msg {
32748c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32758c2ecf20Sopenharmony_ci
32768c2ecf20Sopenharmony_ci	/* channel number in which the RADAR detected */
32778c2ecf20Sopenharmony_ci	u8 channel_number;
32788c2ecf20Sopenharmony_ci
32798c2ecf20Sopenharmony_ci	/* RADAR pulse width in usecond */
32808c2ecf20Sopenharmony_ci	u16 radar_pulse_width;
32818c2ecf20Sopenharmony_ci
32828c2ecf20Sopenharmony_ci	/* Number of RADAR pulses */
32838c2ecf20Sopenharmony_ci	u16 num_radar_pulse;
32848c2ecf20Sopenharmony_ci};
32858c2ecf20Sopenharmony_ci
32868c2ecf20Sopenharmony_cistruct wcn36xx_hal_get_tpc_report_req_msg {
32878c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32888c2ecf20Sopenharmony_ci
32898c2ecf20Sopenharmony_ci	u8 sta[ETH_ALEN];
32908c2ecf20Sopenharmony_ci	u8 dialog_token;
32918c2ecf20Sopenharmony_ci	u8 txpower;
32928c2ecf20Sopenharmony_ci};
32938c2ecf20Sopenharmony_ci
32948c2ecf20Sopenharmony_cistruct wcn36xx_hal_get_tpc_report_rsp_msg {
32958c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
32968c2ecf20Sopenharmony_ci
32978c2ecf20Sopenharmony_ci	/* success or failure */
32988c2ecf20Sopenharmony_ci	u32 status;
32998c2ecf20Sopenharmony_ci};
33008c2ecf20Sopenharmony_ci
33018c2ecf20Sopenharmony_cistruct wcn36xx_hal_send_probe_resp_req_msg {
33028c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33038c2ecf20Sopenharmony_ci
33048c2ecf20Sopenharmony_ci	u8 probe_resp_template[BEACON_TEMPLATE_SIZE];
33058c2ecf20Sopenharmony_ci	u32 probe_resp_template_len;
33068c2ecf20Sopenharmony_ci	u32 proxy_probe_req_valid_ie_bmap[8];
33078c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
33088c2ecf20Sopenharmony_ci};
33098c2ecf20Sopenharmony_ci
33108c2ecf20Sopenharmony_cistruct send_probe_resp_rsp_msg {
33118c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33128c2ecf20Sopenharmony_ci
33138c2ecf20Sopenharmony_ci	/* success or failure */
33148c2ecf20Sopenharmony_ci	u32 status;
33158c2ecf20Sopenharmony_ci};
33168c2ecf20Sopenharmony_ci
33178c2ecf20Sopenharmony_cistruct send_unknown_frame_rx_ind_msg {
33188c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33198c2ecf20Sopenharmony_ci
33208c2ecf20Sopenharmony_ci	/* success or failure */
33218c2ecf20Sopenharmony_ci	u32 status;
33228c2ecf20Sopenharmony_ci};
33238c2ecf20Sopenharmony_ci
33248c2ecf20Sopenharmony_cistruct wcn36xx_hal_delete_sta_context_ind_msg {
33258c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33268c2ecf20Sopenharmony_ci
33278c2ecf20Sopenharmony_ci	u16 aid;
33288c2ecf20Sopenharmony_ci	u16 sta_id;
33298c2ecf20Sopenharmony_ci
33308c2ecf20Sopenharmony_ci	/* TO SUPPORT BT-AMP */
33318c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
33328c2ecf20Sopenharmony_ci
33338c2ecf20Sopenharmony_ci	/* HAL copies bssid from the sta table. */
33348c2ecf20Sopenharmony_ci	u8 addr2[ETH_ALEN];
33358c2ecf20Sopenharmony_ci
33368c2ecf20Sopenharmony_ci	/* To unify the keepalive / unknown A2 / tim-based disa */
33378c2ecf20Sopenharmony_ci	u16 reason_code;
33388c2ecf20Sopenharmony_ci} __packed;
33398c2ecf20Sopenharmony_ci
33408c2ecf20Sopenharmony_cistruct indicate_del_sta {
33418c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33428c2ecf20Sopenharmony_ci	u8 aid;
33438c2ecf20Sopenharmony_ci	u8 sta_index;
33448c2ecf20Sopenharmony_ci	u8 bss_index;
33458c2ecf20Sopenharmony_ci	u8 reason_code;
33468c2ecf20Sopenharmony_ci	u32 status;
33478c2ecf20Sopenharmony_ci};
33488c2ecf20Sopenharmony_ci
33498c2ecf20Sopenharmony_cistruct bt_amp_event_msg {
33508c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33518c2ecf20Sopenharmony_ci
33528c2ecf20Sopenharmony_ci	enum bt_amp_event_type btAmpEventType;
33538c2ecf20Sopenharmony_ci};
33548c2ecf20Sopenharmony_ci
33558c2ecf20Sopenharmony_cistruct bt_amp_event_rsp {
33568c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33578c2ecf20Sopenharmony_ci
33588c2ecf20Sopenharmony_ci	/* success or failure */
33598c2ecf20Sopenharmony_ci	u32 status;
33608c2ecf20Sopenharmony_ci};
33618c2ecf20Sopenharmony_ci
33628c2ecf20Sopenharmony_cistruct tl_hal_flush_ac_req_msg {
33638c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33648c2ecf20Sopenharmony_ci
33658c2ecf20Sopenharmony_ci	/* Station Index. originates from HAL */
33668c2ecf20Sopenharmony_ci	u8 sta_id;
33678c2ecf20Sopenharmony_ci
33688c2ecf20Sopenharmony_ci	/* TID for which the transmit queue is being flushed */
33698c2ecf20Sopenharmony_ci	u8 tid;
33708c2ecf20Sopenharmony_ci};
33718c2ecf20Sopenharmony_ci
33728c2ecf20Sopenharmony_cistruct tl_hal_flush_ac_rsp_msg {
33738c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33748c2ecf20Sopenharmony_ci
33758c2ecf20Sopenharmony_ci	/* Station Index. originates from HAL */
33768c2ecf20Sopenharmony_ci	u8 sta_id;
33778c2ecf20Sopenharmony_ci
33788c2ecf20Sopenharmony_ci	/* TID for which the transmit queue is being flushed */
33798c2ecf20Sopenharmony_ci	u8 tid;
33808c2ecf20Sopenharmony_ci
33818c2ecf20Sopenharmony_ci	/* success or failure */
33828c2ecf20Sopenharmony_ci	u32 status;
33838c2ecf20Sopenharmony_ci};
33848c2ecf20Sopenharmony_ci
33858c2ecf20Sopenharmony_cistruct wcn36xx_hal_enter_imps_req_msg {
33868c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33878c2ecf20Sopenharmony_ci};
33888c2ecf20Sopenharmony_ci
33898c2ecf20Sopenharmony_cistruct wcn36xx_hal_exit_imps_req {
33908c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33918c2ecf20Sopenharmony_ci};
33928c2ecf20Sopenharmony_ci
33938c2ecf20Sopenharmony_cistruct wcn36xx_hal_enter_bmps_req_msg {
33948c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
33958c2ecf20Sopenharmony_ci
33968c2ecf20Sopenharmony_ci	u8 bss_index;
33978c2ecf20Sopenharmony_ci
33988c2ecf20Sopenharmony_ci	/* TBTT value derived from the last beacon */
33998c2ecf20Sopenharmony_ci#ifndef BUILD_QWPTTSTATIC
34008c2ecf20Sopenharmony_ci	u64 tbtt;
34018c2ecf20Sopenharmony_ci#endif
34028c2ecf20Sopenharmony_ci	u8 dtim_count;
34038c2ecf20Sopenharmony_ci
34048c2ecf20Sopenharmony_ci	/* DTIM period given to HAL during association may not be valid, if
34058c2ecf20Sopenharmony_ci	 * association is based on ProbeRsp instead of beacon. */
34068c2ecf20Sopenharmony_ci	u8 dtim_period;
34078c2ecf20Sopenharmony_ci
34088c2ecf20Sopenharmony_ci	/* For CCX and 11R Roaming */
34098c2ecf20Sopenharmony_ci	u32 rssi_filter_period;
34108c2ecf20Sopenharmony_ci
34118c2ecf20Sopenharmony_ci	u32 num_beacon_per_rssi_average;
34128c2ecf20Sopenharmony_ci	u8 rssi_filter_enable;
34138c2ecf20Sopenharmony_ci} __packed;
34148c2ecf20Sopenharmony_ci
34158c2ecf20Sopenharmony_cistruct wcn36xx_hal_exit_bmps_req_msg {
34168c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
34178c2ecf20Sopenharmony_ci
34188c2ecf20Sopenharmony_ci	u8 send_data_null;
34198c2ecf20Sopenharmony_ci	u8 bss_index;
34208c2ecf20Sopenharmony_ci} __packed;
34218c2ecf20Sopenharmony_ci
34228c2ecf20Sopenharmony_cistruct wcn36xx_hal_missed_beacon_ind_msg {
34238c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
34248c2ecf20Sopenharmony_ci
34258c2ecf20Sopenharmony_ci	u8 bss_index;
34268c2ecf20Sopenharmony_ci} __packed;
34278c2ecf20Sopenharmony_ci
34288c2ecf20Sopenharmony_ci/* Beacon Filtering data structures */
34298c2ecf20Sopenharmony_ci
34308c2ecf20Sopenharmony_ci/* The above structure would be followed by multiple of below mentioned
34318c2ecf20Sopenharmony_ci * structure
34328c2ecf20Sopenharmony_ci */
34338c2ecf20Sopenharmony_cistruct beacon_filter_ie {
34348c2ecf20Sopenharmony_ci	u8 element_id;
34358c2ecf20Sopenharmony_ci	u8 check_ie_presence;
34368c2ecf20Sopenharmony_ci	u8 offset;
34378c2ecf20Sopenharmony_ci	u8 value;
34388c2ecf20Sopenharmony_ci	u8 bitmask;
34398c2ecf20Sopenharmony_ci	u8 ref;
34408c2ecf20Sopenharmony_ci};
34418c2ecf20Sopenharmony_ci
34428c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_bcn_filter_req_msg {
34438c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
34448c2ecf20Sopenharmony_ci
34458c2ecf20Sopenharmony_ci	u16 capability_info;
34468c2ecf20Sopenharmony_ci	u16 capability_mask;
34478c2ecf20Sopenharmony_ci	u16 beacon_interval;
34488c2ecf20Sopenharmony_ci	u16 ie_num;
34498c2ecf20Sopenharmony_ci	u8 bss_index;
34508c2ecf20Sopenharmony_ci	u8 reserved;
34518c2ecf20Sopenharmony_ci};
34528c2ecf20Sopenharmony_ci
34538c2ecf20Sopenharmony_cistruct wcn36xx_hal_rem_bcn_filter_req {
34548c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
34558c2ecf20Sopenharmony_ci
34568c2ecf20Sopenharmony_ci	u8 ie_Count;
34578c2ecf20Sopenharmony_ci	u8 rem_ie_id[1];
34588c2ecf20Sopenharmony_ci};
34598c2ecf20Sopenharmony_ci
34608c2ecf20Sopenharmony_ci#define WCN36XX_HAL_IPV4_ARP_REPLY_OFFLOAD                  0
34618c2ecf20Sopenharmony_ci#define WCN36XX_HAL_IPV6_NEIGHBOR_DISCOVERY_OFFLOAD         1
34628c2ecf20Sopenharmony_ci#define WCN36XX_HAL_IPV6_NS_OFFLOAD                         2
34638c2ecf20Sopenharmony_ci#define WCN36XX_HAL_IPV6_ADDR_LEN                           16
34648c2ecf20Sopenharmony_ci#define WCN36XX_HAL_OFFLOAD_DISABLE                         0
34658c2ecf20Sopenharmony_ci#define WCN36XX_HAL_OFFLOAD_ENABLE                          1
34668c2ecf20Sopenharmony_ci#define WCN36XX_HAL_OFFLOAD_BCAST_FILTER_ENABLE             0x2
34678c2ecf20Sopenharmony_ci#define WCN36XX_HAL_OFFLOAD_ARP_AND_BCAST_FILTER_ENABLE	\
34688c2ecf20Sopenharmony_ci	(HAL_OFFLOAD_ENABLE|HAL_OFFLOAD_BCAST_FILTER_ENABLE)
34698c2ecf20Sopenharmony_ci
34708c2ecf20Sopenharmony_cistruct wcn36xx_hal_ns_offload_params {
34718c2ecf20Sopenharmony_ci	u8 src_ipv6_addr[WCN36XX_HAL_IPV6_ADDR_LEN];
34728c2ecf20Sopenharmony_ci	u8 self_ipv6_addr[WCN36XX_HAL_IPV6_ADDR_LEN];
34738c2ecf20Sopenharmony_ci
34748c2ecf20Sopenharmony_ci	/* Only support 2 possible Network Advertisement IPv6 address */
34758c2ecf20Sopenharmony_ci	u8 target_ipv6_addr1[WCN36XX_HAL_IPV6_ADDR_LEN];
34768c2ecf20Sopenharmony_ci	u8 target_ipv6_addr2[WCN36XX_HAL_IPV6_ADDR_LEN];
34778c2ecf20Sopenharmony_ci
34788c2ecf20Sopenharmony_ci	u8 self_addr[ETH_ALEN];
34798c2ecf20Sopenharmony_ci	u8 src_ipv6_addr_valid:1;
34808c2ecf20Sopenharmony_ci	u8 target_ipv6_addr1_valid:1;
34818c2ecf20Sopenharmony_ci	u8 target_ipv6_addr2_valid:1;
34828c2ecf20Sopenharmony_ci	u8 reserved1:5;
34838c2ecf20Sopenharmony_ci
34848c2ecf20Sopenharmony_ci	/* make it DWORD aligned */
34858c2ecf20Sopenharmony_ci	u8 reserved2;
34868c2ecf20Sopenharmony_ci
34878c2ecf20Sopenharmony_ci	/* slot index for this offload */
34888c2ecf20Sopenharmony_ci	u32 slot_index;
34898c2ecf20Sopenharmony_ci	u8 bss_index;
34908c2ecf20Sopenharmony_ci};
34918c2ecf20Sopenharmony_ci
34928c2ecf20Sopenharmony_cistruct wcn36xx_hal_host_offload_req {
34938c2ecf20Sopenharmony_ci	u8 offload_Type;
34948c2ecf20Sopenharmony_ci
34958c2ecf20Sopenharmony_ci	/* enable or disable */
34968c2ecf20Sopenharmony_ci	u8 enable;
34978c2ecf20Sopenharmony_ci
34988c2ecf20Sopenharmony_ci	union {
34998c2ecf20Sopenharmony_ci		u8 host_ipv4_addr[4];
35008c2ecf20Sopenharmony_ci		u8 host_ipv6_addr[WCN36XX_HAL_IPV6_ADDR_LEN];
35018c2ecf20Sopenharmony_ci	} u;
35028c2ecf20Sopenharmony_ci};
35038c2ecf20Sopenharmony_ci
35048c2ecf20Sopenharmony_cistruct wcn36xx_hal_host_offload_req_msg {
35058c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
35068c2ecf20Sopenharmony_ci	struct wcn36xx_hal_host_offload_req host_offload_params;
35078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_ns_offload_params ns_offload_params;
35088c2ecf20Sopenharmony_ci};
35098c2ecf20Sopenharmony_ci
35108c2ecf20Sopenharmony_ci/* Packet Types. */
35118c2ecf20Sopenharmony_ci#define WCN36XX_HAL_KEEP_ALIVE_NULL_PKT              1
35128c2ecf20Sopenharmony_ci#define WCN36XX_HAL_KEEP_ALIVE_UNSOLICIT_ARP_RSP     2
35138c2ecf20Sopenharmony_ci
35148c2ecf20Sopenharmony_ci/* Enable or disable keep alive */
35158c2ecf20Sopenharmony_ci#define WCN36XX_HAL_KEEP_ALIVE_DISABLE   0
35168c2ecf20Sopenharmony_ci#define WCN36XX_HAL_KEEP_ALIVE_ENABLE    1
35178c2ecf20Sopenharmony_ci#define WCN36XX_KEEP_ALIVE_TIME_PERIOD	 30 /* unit: s */
35188c2ecf20Sopenharmony_ci
35198c2ecf20Sopenharmony_ci/* Keep Alive request. */
35208c2ecf20Sopenharmony_cistruct wcn36xx_hal_keep_alive_req_msg {
35218c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
35228c2ecf20Sopenharmony_ci
35238c2ecf20Sopenharmony_ci	u8 packet_type;
35248c2ecf20Sopenharmony_ci	u32 time_period;
35258c2ecf20Sopenharmony_ci	u8 host_ipv4_addr[WCN36XX_HAL_IPV4_ADDR_LEN];
35268c2ecf20Sopenharmony_ci	u8 dest_ipv4_addr[WCN36XX_HAL_IPV4_ADDR_LEN];
35278c2ecf20Sopenharmony_ci	u8 dest_addr[ETH_ALEN];
35288c2ecf20Sopenharmony_ci	u8 bss_index;
35298c2ecf20Sopenharmony_ci} __packed;
35308c2ecf20Sopenharmony_ci
35318c2ecf20Sopenharmony_cistruct wcn36xx_hal_rssi_threshold_req_msg {
35328c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
35338c2ecf20Sopenharmony_ci
35348c2ecf20Sopenharmony_ci	s8 threshold1:8;
35358c2ecf20Sopenharmony_ci	s8 threshold2:8;
35368c2ecf20Sopenharmony_ci	s8 threshold3:8;
35378c2ecf20Sopenharmony_ci	u8 thres1_pos_notify:1;
35388c2ecf20Sopenharmony_ci	u8 thres1_neg_notify:1;
35398c2ecf20Sopenharmony_ci	u8 thres2_pos_notify:1;
35408c2ecf20Sopenharmony_ci	u8 thres2_neg_notify:1;
35418c2ecf20Sopenharmony_ci	u8 thres3_pos_notify:1;
35428c2ecf20Sopenharmony_ci	u8 thres3_neg_notify:1;
35438c2ecf20Sopenharmony_ci	u8 reserved10:2;
35448c2ecf20Sopenharmony_ci};
35458c2ecf20Sopenharmony_ci
35468c2ecf20Sopenharmony_cistruct wcn36xx_hal_enter_uapsd_req_msg {
35478c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
35488c2ecf20Sopenharmony_ci
35498c2ecf20Sopenharmony_ci	u8 bk_delivery:1;
35508c2ecf20Sopenharmony_ci	u8 be_delivery:1;
35518c2ecf20Sopenharmony_ci	u8 vi_delivery:1;
35528c2ecf20Sopenharmony_ci	u8 vo_delivery:1;
35538c2ecf20Sopenharmony_ci	u8 bk_trigger:1;
35548c2ecf20Sopenharmony_ci	u8 be_trigger:1;
35558c2ecf20Sopenharmony_ci	u8 vi_trigger:1;
35568c2ecf20Sopenharmony_ci	u8 vo_trigger:1;
35578c2ecf20Sopenharmony_ci	u8 bss_index;
35588c2ecf20Sopenharmony_ci};
35598c2ecf20Sopenharmony_ci
35608c2ecf20Sopenharmony_cistruct wcn36xx_hal_exit_uapsd_req_msg {
35618c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
35628c2ecf20Sopenharmony_ci	u8 bss_index;
35638c2ecf20Sopenharmony_ci};
35648c2ecf20Sopenharmony_ci
35658c2ecf20Sopenharmony_ci#define WCN36XX_HAL_WOWL_BCAST_PATTERN_MAX_SIZE 128
35668c2ecf20Sopenharmony_ci#define WCN36XX_HAL_WOWL_BCAST_MAX_NUM_PATTERNS 16
35678c2ecf20Sopenharmony_ci
35688c2ecf20Sopenharmony_cistruct wcn36xx_hal_wowl_add_bcast_ptrn_req_msg {
35698c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
35708c2ecf20Sopenharmony_ci
35718c2ecf20Sopenharmony_ci	/* Pattern ID */
35728c2ecf20Sopenharmony_ci	u8 id;
35738c2ecf20Sopenharmony_ci
35748c2ecf20Sopenharmony_ci	/* Pattern byte offset from beginning of the 802.11 packet to start
35758c2ecf20Sopenharmony_ci	 * of the wake-up pattern */
35768c2ecf20Sopenharmony_ci	u8 byte_Offset;
35778c2ecf20Sopenharmony_ci
35788c2ecf20Sopenharmony_ci	/* Non-Zero Pattern size */
35798c2ecf20Sopenharmony_ci	u8 size;
35808c2ecf20Sopenharmony_ci
35818c2ecf20Sopenharmony_ci	/* Pattern */
35828c2ecf20Sopenharmony_ci	u8 pattern[WCN36XX_HAL_WOWL_BCAST_PATTERN_MAX_SIZE];
35838c2ecf20Sopenharmony_ci
35848c2ecf20Sopenharmony_ci	/* Non-zero pattern mask size */
35858c2ecf20Sopenharmony_ci	u8 mask_size;
35868c2ecf20Sopenharmony_ci
35878c2ecf20Sopenharmony_ci	/* Pattern mask */
35888c2ecf20Sopenharmony_ci	u8 mask[WCN36XX_HAL_WOWL_BCAST_PATTERN_MAX_SIZE];
35898c2ecf20Sopenharmony_ci
35908c2ecf20Sopenharmony_ci	/* Extra pattern */
35918c2ecf20Sopenharmony_ci	u8 extra[WCN36XX_HAL_WOWL_BCAST_PATTERN_MAX_SIZE];
35928c2ecf20Sopenharmony_ci
35938c2ecf20Sopenharmony_ci	/* Extra pattern mask */
35948c2ecf20Sopenharmony_ci	u8 mask_extra[WCN36XX_HAL_WOWL_BCAST_PATTERN_MAX_SIZE];
35958c2ecf20Sopenharmony_ci
35968c2ecf20Sopenharmony_ci	u8 bss_index;
35978c2ecf20Sopenharmony_ci};
35988c2ecf20Sopenharmony_ci
35998c2ecf20Sopenharmony_cistruct wcn36xx_hal_wow_del_bcast_ptrn_req_msg {
36008c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
36018c2ecf20Sopenharmony_ci
36028c2ecf20Sopenharmony_ci	/* Pattern ID of the wakeup pattern to be deleted */
36038c2ecf20Sopenharmony_ci	u8 id;
36048c2ecf20Sopenharmony_ci	u8 bss_index;
36058c2ecf20Sopenharmony_ci};
36068c2ecf20Sopenharmony_ci
36078c2ecf20Sopenharmony_cistruct wcn36xx_hal_wowl_enter_req_msg {
36088c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
36098c2ecf20Sopenharmony_ci
36108c2ecf20Sopenharmony_ci	/* Enables/disables magic packet filtering */
36118c2ecf20Sopenharmony_ci	u8 magic_packet_enable;
36128c2ecf20Sopenharmony_ci
36138c2ecf20Sopenharmony_ci	/* Magic pattern */
36148c2ecf20Sopenharmony_ci	u8 magic_pattern[ETH_ALEN];
36158c2ecf20Sopenharmony_ci
36168c2ecf20Sopenharmony_ci	/* Enables/disables packet pattern filtering in firmware. Enabling
36178c2ecf20Sopenharmony_ci	 * this flag enables broadcast pattern matching in Firmware. If
36188c2ecf20Sopenharmony_ci	 * unicast pattern matching is also desired,
36198c2ecf20Sopenharmony_ci	 * ucUcastPatternFilteringEnable flag must be set tot true as well
36208c2ecf20Sopenharmony_ci	 */
36218c2ecf20Sopenharmony_ci	u8 pattern_filtering_enable;
36228c2ecf20Sopenharmony_ci
36238c2ecf20Sopenharmony_ci	/* Enables/disables unicast packet pattern filtering. This flag
36248c2ecf20Sopenharmony_ci	 * specifies whether we want to do pattern match on unicast packets
36258c2ecf20Sopenharmony_ci	 * as well and not just broadcast packets. This flag has no effect
36268c2ecf20Sopenharmony_ci	 * if the ucPatternFilteringEnable (main controlling flag) is set
36278c2ecf20Sopenharmony_ci	 * to false
36288c2ecf20Sopenharmony_ci	 */
36298c2ecf20Sopenharmony_ci	u8 ucast_pattern_filtering_enable;
36308c2ecf20Sopenharmony_ci
36318c2ecf20Sopenharmony_ci	/* This configuration is valid only when magicPktEnable=1. It
36328c2ecf20Sopenharmony_ci	 * requests hardware to wake up when it receives the Channel Switch
36338c2ecf20Sopenharmony_ci	 * Action Frame.
36348c2ecf20Sopenharmony_ci	 */
36358c2ecf20Sopenharmony_ci	u8 wow_channel_switch_receive;
36368c2ecf20Sopenharmony_ci
36378c2ecf20Sopenharmony_ci	/* This configuration is valid only when magicPktEnable=1. It
36388c2ecf20Sopenharmony_ci	 * requests hardware to wake up when it receives the
36398c2ecf20Sopenharmony_ci	 * Deauthentication Frame.
36408c2ecf20Sopenharmony_ci	 */
36418c2ecf20Sopenharmony_ci	u8 wow_deauth_receive;
36428c2ecf20Sopenharmony_ci
36438c2ecf20Sopenharmony_ci	/* This configuration is valid only when magicPktEnable=1. It
36448c2ecf20Sopenharmony_ci	 * requests hardware to wake up when it receives the Disassociation
36458c2ecf20Sopenharmony_ci	 * Frame.
36468c2ecf20Sopenharmony_ci	 */
36478c2ecf20Sopenharmony_ci	u8 wow_disassoc_receive;
36488c2ecf20Sopenharmony_ci
36498c2ecf20Sopenharmony_ci	/* This configuration is valid only when magicPktEnable=1. It
36508c2ecf20Sopenharmony_ci	 * requests hardware to wake up when it has missed consecutive
36518c2ecf20Sopenharmony_ci	 * beacons. This is a hardware register configuration (NOT a
36528c2ecf20Sopenharmony_ci	 * firmware configuration).
36538c2ecf20Sopenharmony_ci	 */
36548c2ecf20Sopenharmony_ci	u8 wow_max_missed_beacons;
36558c2ecf20Sopenharmony_ci
36568c2ecf20Sopenharmony_ci	/* This configuration is valid only when magicPktEnable=1. This is
36578c2ecf20Sopenharmony_ci	 * a timeout value in units of microsec. It requests hardware to
36588c2ecf20Sopenharmony_ci	 * unconditionally wake up after it has stayed in WoWLAN mode for
36598c2ecf20Sopenharmony_ci	 * some time. Set 0 to disable this feature.
36608c2ecf20Sopenharmony_ci	 */
36618c2ecf20Sopenharmony_ci	u8 wow_max_sleep;
36628c2ecf20Sopenharmony_ci
36638c2ecf20Sopenharmony_ci	/* This configuration directs the WoW packet filtering to look for
36648c2ecf20Sopenharmony_ci	 * EAP-ID requests embedded in EAPOL frames and use this as a wake
36658c2ecf20Sopenharmony_ci	 * source.
36668c2ecf20Sopenharmony_ci	 */
36678c2ecf20Sopenharmony_ci	u8 wow_eap_id_request_enable;
36688c2ecf20Sopenharmony_ci
36698c2ecf20Sopenharmony_ci	/* This configuration directs the WoW packet filtering to look for
36708c2ecf20Sopenharmony_ci	 * EAPOL-4WAY requests and use this as a wake source.
36718c2ecf20Sopenharmony_ci	 */
36728c2ecf20Sopenharmony_ci	u8 wow_eapol_4way_enable;
36738c2ecf20Sopenharmony_ci
36748c2ecf20Sopenharmony_ci	/* This configuration allows a host wakeup on an network scan
36758c2ecf20Sopenharmony_ci	 * offload match.
36768c2ecf20Sopenharmony_ci	 */
36778c2ecf20Sopenharmony_ci	u8 wow_net_scan_offload_match;
36788c2ecf20Sopenharmony_ci
36798c2ecf20Sopenharmony_ci	/* This configuration allows a host wakeup on any GTK rekeying
36808c2ecf20Sopenharmony_ci	 * error.
36818c2ecf20Sopenharmony_ci	 */
36828c2ecf20Sopenharmony_ci	u8 wow_gtk_rekey_error;
36838c2ecf20Sopenharmony_ci
36848c2ecf20Sopenharmony_ci	/* This configuration allows a host wakeup on BSS connection loss.
36858c2ecf20Sopenharmony_ci	 */
36868c2ecf20Sopenharmony_ci	u8 wow_bss_connection_loss;
36878c2ecf20Sopenharmony_ci
36888c2ecf20Sopenharmony_ci	u8 bss_index;
36898c2ecf20Sopenharmony_ci};
36908c2ecf20Sopenharmony_ci
36918c2ecf20Sopenharmony_cistruct wcn36xx_hal_wowl_exit_req_msg {
36928c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
36938c2ecf20Sopenharmony_ci
36948c2ecf20Sopenharmony_ci	u8 bss_index;
36958c2ecf20Sopenharmony_ci};
36968c2ecf20Sopenharmony_ci
36978c2ecf20Sopenharmony_cistruct wcn36xx_hal_get_rssi_req_msg {
36988c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
36998c2ecf20Sopenharmony_ci};
37008c2ecf20Sopenharmony_ci
37018c2ecf20Sopenharmony_cistruct wcn36xx_hal_get_roam_rssi_req_msg {
37028c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37038c2ecf20Sopenharmony_ci
37048c2ecf20Sopenharmony_ci	/* Valid STA Idx for per STA stats request */
37058c2ecf20Sopenharmony_ci	u32 sta_id;
37068c2ecf20Sopenharmony_ci};
37078c2ecf20Sopenharmony_ci
37088c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_uapsd_ac_params_req_msg {
37098c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37108c2ecf20Sopenharmony_ci
37118c2ecf20Sopenharmony_ci	/* STA index */
37128c2ecf20Sopenharmony_ci	u8 sta_idx;
37138c2ecf20Sopenharmony_ci
37148c2ecf20Sopenharmony_ci	/* Access Category */
37158c2ecf20Sopenharmony_ci	u8 ac;
37168c2ecf20Sopenharmony_ci
37178c2ecf20Sopenharmony_ci	/* User Priority */
37188c2ecf20Sopenharmony_ci	u8 up;
37198c2ecf20Sopenharmony_ci
37208c2ecf20Sopenharmony_ci	/* Service Interval */
37218c2ecf20Sopenharmony_ci	u32 service_interval;
37228c2ecf20Sopenharmony_ci
37238c2ecf20Sopenharmony_ci	/* Suspend Interval */
37248c2ecf20Sopenharmony_ci	u32 suspend_interval;
37258c2ecf20Sopenharmony_ci
37268c2ecf20Sopenharmony_ci	/* Delay Interval */
37278c2ecf20Sopenharmony_ci	u32 delay_interval;
37288c2ecf20Sopenharmony_ci};
37298c2ecf20Sopenharmony_ci
37308c2ecf20Sopenharmony_cistruct wcn36xx_hal_configure_rxp_filter_req_msg {
37318c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37328c2ecf20Sopenharmony_ci
37338c2ecf20Sopenharmony_ci	u8 set_mcst_bcst_filter_setting;
37348c2ecf20Sopenharmony_ci	u8 set_mcst_bcst_filter;
37358c2ecf20Sopenharmony_ci};
37368c2ecf20Sopenharmony_ci
37378c2ecf20Sopenharmony_cistruct wcn36xx_hal_enter_imps_rsp_msg {
37388c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37398c2ecf20Sopenharmony_ci
37408c2ecf20Sopenharmony_ci	/* success or failure */
37418c2ecf20Sopenharmony_ci	u32 status;
37428c2ecf20Sopenharmony_ci};
37438c2ecf20Sopenharmony_ci
37448c2ecf20Sopenharmony_cistruct wcn36xx_hal_exit_imps_rsp_msg {
37458c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37468c2ecf20Sopenharmony_ci
37478c2ecf20Sopenharmony_ci	/* success or failure */
37488c2ecf20Sopenharmony_ci	u32 status;
37498c2ecf20Sopenharmony_ci};
37508c2ecf20Sopenharmony_ci
37518c2ecf20Sopenharmony_cistruct wcn36xx_hal_enter_bmps_rsp_msg {
37528c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37538c2ecf20Sopenharmony_ci
37548c2ecf20Sopenharmony_ci	/* success or failure */
37558c2ecf20Sopenharmony_ci	u32 status;
37568c2ecf20Sopenharmony_ci
37578c2ecf20Sopenharmony_ci	u8 bss_index;
37588c2ecf20Sopenharmony_ci} __packed;
37598c2ecf20Sopenharmony_ci
37608c2ecf20Sopenharmony_cistruct wcn36xx_hal_exit_bmps_rsp_msg {
37618c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37628c2ecf20Sopenharmony_ci
37638c2ecf20Sopenharmony_ci	/* success or failure */
37648c2ecf20Sopenharmony_ci	u32 status;
37658c2ecf20Sopenharmony_ci
37668c2ecf20Sopenharmony_ci	u8 bss_index;
37678c2ecf20Sopenharmony_ci} __packed;
37688c2ecf20Sopenharmony_ci
37698c2ecf20Sopenharmony_cistruct wcn36xx_hal_enter_uapsd_rsp_msg {
37708c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37718c2ecf20Sopenharmony_ci
37728c2ecf20Sopenharmony_ci	/* success or failure */
37738c2ecf20Sopenharmony_ci	u32 status;
37748c2ecf20Sopenharmony_ci
37758c2ecf20Sopenharmony_ci	u8 bss_index;
37768c2ecf20Sopenharmony_ci};
37778c2ecf20Sopenharmony_ci
37788c2ecf20Sopenharmony_cistruct wcn36xx_hal_exit_uapsd_rsp_msg {
37798c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37808c2ecf20Sopenharmony_ci
37818c2ecf20Sopenharmony_ci	/* success or failure */
37828c2ecf20Sopenharmony_ci	u32 status;
37838c2ecf20Sopenharmony_ci
37848c2ecf20Sopenharmony_ci	u8 bss_index;
37858c2ecf20Sopenharmony_ci};
37868c2ecf20Sopenharmony_ci
37878c2ecf20Sopenharmony_cistruct wcn36xx_hal_rssi_notification_ind_msg {
37888c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
37898c2ecf20Sopenharmony_ci
37908c2ecf20Sopenharmony_ci	u32 rssi_thres1_pos_cross:1;
37918c2ecf20Sopenharmony_ci	u32 rssi_thres1_neg_cross:1;
37928c2ecf20Sopenharmony_ci	u32 rssi_thres2_pos_cross:1;
37938c2ecf20Sopenharmony_ci	u32 rssi_thres2_neg_cross:1;
37948c2ecf20Sopenharmony_ci	u32 rssi_thres3_pos_cross:1;
37958c2ecf20Sopenharmony_ci	u32 rssi_thres3_neg_cross:1;
37968c2ecf20Sopenharmony_ci	u32 avg_rssi:8;
37978c2ecf20Sopenharmony_ci	u32 reserved:18;
37988c2ecf20Sopenharmony_ci
37998c2ecf20Sopenharmony_ci};
38008c2ecf20Sopenharmony_ci
38018c2ecf20Sopenharmony_cistruct wcn36xx_hal_get_rssio_rsp_msg {
38028c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38038c2ecf20Sopenharmony_ci
38048c2ecf20Sopenharmony_ci	/* success or failure */
38058c2ecf20Sopenharmony_ci	u32 status;
38068c2ecf20Sopenharmony_ci	s8 rssi;
38078c2ecf20Sopenharmony_ci
38088c2ecf20Sopenharmony_ci};
38098c2ecf20Sopenharmony_ci
38108c2ecf20Sopenharmony_cistruct wcn36xx_hal_get_roam_rssi_rsp_msg {
38118c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38128c2ecf20Sopenharmony_ci
38138c2ecf20Sopenharmony_ci	/* success or failure */
38148c2ecf20Sopenharmony_ci	u32 status;
38158c2ecf20Sopenharmony_ci
38168c2ecf20Sopenharmony_ci	u8 sta_id;
38178c2ecf20Sopenharmony_ci	s8 rssi;
38188c2ecf20Sopenharmony_ci};
38198c2ecf20Sopenharmony_ci
38208c2ecf20Sopenharmony_cistruct wcn36xx_hal_wowl_enter_rsp_msg {
38218c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38228c2ecf20Sopenharmony_ci
38238c2ecf20Sopenharmony_ci	/* success or failure */
38248c2ecf20Sopenharmony_ci	u32 status;
38258c2ecf20Sopenharmony_ci	u8 bss_index;
38268c2ecf20Sopenharmony_ci};
38278c2ecf20Sopenharmony_ci
38288c2ecf20Sopenharmony_cistruct wcn36xx_hal_wowl_exit_rsp_msg {
38298c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38308c2ecf20Sopenharmony_ci
38318c2ecf20Sopenharmony_ci	/* success or failure */
38328c2ecf20Sopenharmony_ci	u32 status;
38338c2ecf20Sopenharmony_ci	u8 bss_index;
38348c2ecf20Sopenharmony_ci};
38358c2ecf20Sopenharmony_ci
38368c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_bcn_filter_rsp_msg {
38378c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38388c2ecf20Sopenharmony_ci
38398c2ecf20Sopenharmony_ci	/* success or failure */
38408c2ecf20Sopenharmony_ci	u32 status;
38418c2ecf20Sopenharmony_ci};
38428c2ecf20Sopenharmony_ci
38438c2ecf20Sopenharmony_cistruct wcn36xx_hal_rem_bcn_filter_rsp_msg {
38448c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38458c2ecf20Sopenharmony_ci
38468c2ecf20Sopenharmony_ci	/* success or failure */
38478c2ecf20Sopenharmony_ci	u32 status;
38488c2ecf20Sopenharmony_ci};
38498c2ecf20Sopenharmony_ci
38508c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_wowl_bcast_ptrn_rsp_msg {
38518c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38528c2ecf20Sopenharmony_ci
38538c2ecf20Sopenharmony_ci	/* success or failure */
38548c2ecf20Sopenharmony_ci	u32 status;
38558c2ecf20Sopenharmony_ci	u8 bss_index;
38568c2ecf20Sopenharmony_ci};
38578c2ecf20Sopenharmony_ci
38588c2ecf20Sopenharmony_cistruct wcn36xx_hal_del_wowl_bcast_ptrn_rsp_msg {
38598c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38608c2ecf20Sopenharmony_ci
38618c2ecf20Sopenharmony_ci	/* success or failure */
38628c2ecf20Sopenharmony_ci	u32 status;
38638c2ecf20Sopenharmony_ci	u8 bss_index;
38648c2ecf20Sopenharmony_ci};
38658c2ecf20Sopenharmony_ci
38668c2ecf20Sopenharmony_cistruct wcn36xx_hal_host_offload_rsp_msg {
38678c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38688c2ecf20Sopenharmony_ci
38698c2ecf20Sopenharmony_ci	/* success or failure */
38708c2ecf20Sopenharmony_ci	u32 status;
38718c2ecf20Sopenharmony_ci};
38728c2ecf20Sopenharmony_ci
38738c2ecf20Sopenharmony_cistruct wcn36xx_hal_keep_alive_rsp_msg {
38748c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38758c2ecf20Sopenharmony_ci
38768c2ecf20Sopenharmony_ci	/* success or failure */
38778c2ecf20Sopenharmony_ci	u32 status;
38788c2ecf20Sopenharmony_ci};
38798c2ecf20Sopenharmony_ci
38808c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_rssi_thresh_rsp_msg {
38818c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38828c2ecf20Sopenharmony_ci
38838c2ecf20Sopenharmony_ci	/* success or failure */
38848c2ecf20Sopenharmony_ci	u32 status;
38858c2ecf20Sopenharmony_ci};
38868c2ecf20Sopenharmony_ci
38878c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_uapsd_ac_params_rsp_msg {
38888c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38898c2ecf20Sopenharmony_ci
38908c2ecf20Sopenharmony_ci	/* success or failure */
38918c2ecf20Sopenharmony_ci	u32 status;
38928c2ecf20Sopenharmony_ci};
38938c2ecf20Sopenharmony_ci
38948c2ecf20Sopenharmony_cistruct wcn36xx_hal_configure_rxp_filter_rsp_msg {
38958c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
38968c2ecf20Sopenharmony_ci
38978c2ecf20Sopenharmony_ci	/* success or failure */
38988c2ecf20Sopenharmony_ci	u32 status;
38998c2ecf20Sopenharmony_ci};
39008c2ecf20Sopenharmony_ci
39018c2ecf20Sopenharmony_cistruct set_max_tx_pwr_req {
39028c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39038c2ecf20Sopenharmony_ci
39048c2ecf20Sopenharmony_ci	/* BSSID is needed to identify which session issued this request.
39058c2ecf20Sopenharmony_ci	 * As the request has power constraints, this should be applied
39068c2ecf20Sopenharmony_ci	 * only to that session */
39078c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
39088c2ecf20Sopenharmony_ci
39098c2ecf20Sopenharmony_ci	u8 self_addr[ETH_ALEN];
39108c2ecf20Sopenharmony_ci
39118c2ecf20Sopenharmony_ci	/* In request, power == MaxTx power to be used. */
39128c2ecf20Sopenharmony_ci	u8 power;
39138c2ecf20Sopenharmony_ci};
39148c2ecf20Sopenharmony_ci
39158c2ecf20Sopenharmony_cistruct set_max_tx_pwr_rsp_msg {
39168c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39178c2ecf20Sopenharmony_ci
39188c2ecf20Sopenharmony_ci	/* power == tx power used for management frames */
39198c2ecf20Sopenharmony_ci	u8 power;
39208c2ecf20Sopenharmony_ci
39218c2ecf20Sopenharmony_ci	/* success or failure */
39228c2ecf20Sopenharmony_ci	u32 status;
39238c2ecf20Sopenharmony_ci};
39248c2ecf20Sopenharmony_ci
39258c2ecf20Sopenharmony_cistruct set_tx_pwr_req_msg {
39268c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39278c2ecf20Sopenharmony_ci
39288c2ecf20Sopenharmony_ci	/* TX Power in milli watts */
39298c2ecf20Sopenharmony_ci	u32 tx_power;
39308c2ecf20Sopenharmony_ci
39318c2ecf20Sopenharmony_ci	u8 bss_index;
39328c2ecf20Sopenharmony_ci};
39338c2ecf20Sopenharmony_ci
39348c2ecf20Sopenharmony_cistruct set_tx_pwr_rsp_msg {
39358c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39368c2ecf20Sopenharmony_ci
39378c2ecf20Sopenharmony_ci	/* success or failure */
39388c2ecf20Sopenharmony_ci	u32 status;
39398c2ecf20Sopenharmony_ci};
39408c2ecf20Sopenharmony_ci
39418c2ecf20Sopenharmony_cistruct get_tx_pwr_req_msg {
39428c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39438c2ecf20Sopenharmony_ci
39448c2ecf20Sopenharmony_ci	u8 sta_id;
39458c2ecf20Sopenharmony_ci};
39468c2ecf20Sopenharmony_ci
39478c2ecf20Sopenharmony_cistruct get_tx_pwr_rsp_msg {
39488c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39498c2ecf20Sopenharmony_ci
39508c2ecf20Sopenharmony_ci	/* success or failure */
39518c2ecf20Sopenharmony_ci	u32 status;
39528c2ecf20Sopenharmony_ci
39538c2ecf20Sopenharmony_ci	/* TX Power in milli watts */
39548c2ecf20Sopenharmony_ci	u32 tx_power;
39558c2ecf20Sopenharmony_ci};
39568c2ecf20Sopenharmony_ci
39578c2ecf20Sopenharmony_cistruct set_p2p_gonoa_req_msg {
39588c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39598c2ecf20Sopenharmony_ci
39608c2ecf20Sopenharmony_ci	u8 opp_ps;
39618c2ecf20Sopenharmony_ci	u32 ct_window;
39628c2ecf20Sopenharmony_ci	u8 count;
39638c2ecf20Sopenharmony_ci	u32 duration;
39648c2ecf20Sopenharmony_ci	u32 interval;
39658c2ecf20Sopenharmony_ci	u32 single_noa_duration;
39668c2ecf20Sopenharmony_ci	u8 ps_selection;
39678c2ecf20Sopenharmony_ci};
39688c2ecf20Sopenharmony_ci
39698c2ecf20Sopenharmony_cistruct set_p2p_gonoa_rsp_msg {
39708c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39718c2ecf20Sopenharmony_ci
39728c2ecf20Sopenharmony_ci	/* success or failure */
39738c2ecf20Sopenharmony_ci	u32 status;
39748c2ecf20Sopenharmony_ci};
39758c2ecf20Sopenharmony_ci
39768c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_sta_self_req {
39778c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39788c2ecf20Sopenharmony_ci
39798c2ecf20Sopenharmony_ci	u8 self_addr[ETH_ALEN];
39808c2ecf20Sopenharmony_ci	u32 status;
39818c2ecf20Sopenharmony_ci} __packed;
39828c2ecf20Sopenharmony_ci
39838c2ecf20Sopenharmony_cistruct wcn36xx_hal_add_sta_self_rsp_msg {
39848c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
39858c2ecf20Sopenharmony_ci
39868c2ecf20Sopenharmony_ci	/* success or failure */
39878c2ecf20Sopenharmony_ci	u32 status;
39888c2ecf20Sopenharmony_ci
39898c2ecf20Sopenharmony_ci	/* Self STA Index */
39908c2ecf20Sopenharmony_ci	u8 self_sta_index;
39918c2ecf20Sopenharmony_ci
39928c2ecf20Sopenharmony_ci	/* DPU Index (IGTK, PTK, GTK all same) */
39938c2ecf20Sopenharmony_ci	u8 dpu_index;
39948c2ecf20Sopenharmony_ci
39958c2ecf20Sopenharmony_ci	/* DPU Signature */
39968c2ecf20Sopenharmony_ci	u8 dpu_signature;
39978c2ecf20Sopenharmony_ci} __packed;
39988c2ecf20Sopenharmony_ci
39998c2ecf20Sopenharmony_cistruct wcn36xx_hal_del_sta_self_req_msg {
40008c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40018c2ecf20Sopenharmony_ci
40028c2ecf20Sopenharmony_ci	u8 self_addr[ETH_ALEN];
40038c2ecf20Sopenharmony_ci} __packed;
40048c2ecf20Sopenharmony_ci
40058c2ecf20Sopenharmony_cistruct wcn36xx_hal_del_sta_self_rsp_msg {
40068c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40078c2ecf20Sopenharmony_ci
40088c2ecf20Sopenharmony_ci	/*success or failure */
40098c2ecf20Sopenharmony_ci	u32 status;
40108c2ecf20Sopenharmony_ci
40118c2ecf20Sopenharmony_ci	u8 self_addr[ETH_ALEN];
40128c2ecf20Sopenharmony_ci} __packed;
40138c2ecf20Sopenharmony_ci
40148c2ecf20Sopenharmony_cistruct aggr_add_ts_req {
40158c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40168c2ecf20Sopenharmony_ci
40178c2ecf20Sopenharmony_ci	/* Station Index */
40188c2ecf20Sopenharmony_ci	u16 sta_idx;
40198c2ecf20Sopenharmony_ci
40208c2ecf20Sopenharmony_ci	/* TSPEC handler uniquely identifying a TSPEC for a STA in a BSS.
40218c2ecf20Sopenharmony_ci	 * This will carry the bitmap with the bit positions representing
40228c2ecf20Sopenharmony_ci	 * different AC.s */
40238c2ecf20Sopenharmony_ci	u16 tspec_index;
40248c2ecf20Sopenharmony_ci
40258c2ecf20Sopenharmony_ci	/* Tspec info per AC To program TPE with required parameters */
40268c2ecf20Sopenharmony_ci	struct wcn36xx_hal_tspec_ie tspec[WCN36XX_HAL_MAX_AC];
40278c2ecf20Sopenharmony_ci
40288c2ecf20Sopenharmony_ci	/* U-APSD Flags: 1b per AC.  Encoded as follows:
40298c2ecf20Sopenharmony_ci	   b7 b6 b5 b4 b3 b2 b1 b0 =
40308c2ecf20Sopenharmony_ci	   X  X  X  X  BE BK VI VO */
40318c2ecf20Sopenharmony_ci	u8 uapsd;
40328c2ecf20Sopenharmony_ci
40338c2ecf20Sopenharmony_ci	/* These parameters are for all the access categories */
40348c2ecf20Sopenharmony_ci
40358c2ecf20Sopenharmony_ci	/* Service Interval */
40368c2ecf20Sopenharmony_ci	u32 service_interval[WCN36XX_HAL_MAX_AC];
40378c2ecf20Sopenharmony_ci
40388c2ecf20Sopenharmony_ci	/* Suspend Interval */
40398c2ecf20Sopenharmony_ci	u32 suspend_interval[WCN36XX_HAL_MAX_AC];
40408c2ecf20Sopenharmony_ci
40418c2ecf20Sopenharmony_ci	/* Delay Interval */
40428c2ecf20Sopenharmony_ci	u32 delay_interval[WCN36XX_HAL_MAX_AC];
40438c2ecf20Sopenharmony_ci};
40448c2ecf20Sopenharmony_ci
40458c2ecf20Sopenharmony_cistruct aggr_add_ts_rsp_msg {
40468c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40478c2ecf20Sopenharmony_ci
40488c2ecf20Sopenharmony_ci	/* success or failure */
40498c2ecf20Sopenharmony_ci	u32 status0;
40508c2ecf20Sopenharmony_ci
40518c2ecf20Sopenharmony_ci	/* FIXME PRIMA for future use for 11R */
40528c2ecf20Sopenharmony_ci	u32 status1;
40538c2ecf20Sopenharmony_ci};
40548c2ecf20Sopenharmony_ci
40558c2ecf20Sopenharmony_cistruct wcn36xx_hal_configure_apps_cpu_wakeup_state_req_msg {
40568c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40578c2ecf20Sopenharmony_ci
40588c2ecf20Sopenharmony_ci	u8 is_apps_cpu_awake;
40598c2ecf20Sopenharmony_ci};
40608c2ecf20Sopenharmony_ci
40618c2ecf20Sopenharmony_cistruct wcn36xx_hal_configure_apps_cpu_wakeup_state_rsp_msg {
40628c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40638c2ecf20Sopenharmony_ci
40648c2ecf20Sopenharmony_ci	/* success or failure */
40658c2ecf20Sopenharmony_ci	u32 status;
40668c2ecf20Sopenharmony_ci};
40678c2ecf20Sopenharmony_ci
40688c2ecf20Sopenharmony_cistruct wcn36xx_hal_dump_cmd_req_msg {
40698c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40708c2ecf20Sopenharmony_ci
40718c2ecf20Sopenharmony_ci	u32 arg1;
40728c2ecf20Sopenharmony_ci	u32 arg2;
40738c2ecf20Sopenharmony_ci	u32 arg3;
40748c2ecf20Sopenharmony_ci	u32 arg4;
40758c2ecf20Sopenharmony_ci	u32 arg5;
40768c2ecf20Sopenharmony_ci} __packed;
40778c2ecf20Sopenharmony_ci
40788c2ecf20Sopenharmony_cistruct wcn36xx_hal_dump_cmd_rsp_msg {
40798c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40808c2ecf20Sopenharmony_ci
40818c2ecf20Sopenharmony_ci	/* success or failure */
40828c2ecf20Sopenharmony_ci	u32 status;
40838c2ecf20Sopenharmony_ci
40848c2ecf20Sopenharmony_ci	/* Length of the responce message */
40858c2ecf20Sopenharmony_ci	u32 rsp_length;
40868c2ecf20Sopenharmony_ci
40878c2ecf20Sopenharmony_ci	/* FIXME: Currently considering the the responce will be less than
40888c2ecf20Sopenharmony_ci	 * 100bytes */
40898c2ecf20Sopenharmony_ci	u8 rsp_buffer[DUMPCMD_RSP_BUFFER];
40908c2ecf20Sopenharmony_ci} __packed;
40918c2ecf20Sopenharmony_ci
40928c2ecf20Sopenharmony_ci#define WLAN_COEX_IND_DATA_SIZE (4)
40938c2ecf20Sopenharmony_ci#define WLAN_COEX_IND_TYPE_DISABLE_HB_MONITOR (0)
40948c2ecf20Sopenharmony_ci#define WLAN_COEX_IND_TYPE_ENABLE_HB_MONITOR (1)
40958c2ecf20Sopenharmony_ci
40968c2ecf20Sopenharmony_cistruct coex_ind_msg {
40978c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
40988c2ecf20Sopenharmony_ci
40998c2ecf20Sopenharmony_ci	/* Coex Indication Type */
41008c2ecf20Sopenharmony_ci	u32 type;
41018c2ecf20Sopenharmony_ci
41028c2ecf20Sopenharmony_ci	/* Coex Indication Data */
41038c2ecf20Sopenharmony_ci	u32 data[WLAN_COEX_IND_DATA_SIZE];
41048c2ecf20Sopenharmony_ci};
41058c2ecf20Sopenharmony_ci
41068c2ecf20Sopenharmony_cistruct wcn36xx_hal_tx_compl_ind_msg {
41078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41088c2ecf20Sopenharmony_ci
41098c2ecf20Sopenharmony_ci	/* Tx Complete Indication Success or Failure */
41108c2ecf20Sopenharmony_ci	u32 status;
41118c2ecf20Sopenharmony_ci};
41128c2ecf20Sopenharmony_ci
41138c2ecf20Sopenharmony_cistruct wcn36xx_hal_wlan_host_suspend_ind_msg {
41148c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41158c2ecf20Sopenharmony_ci
41168c2ecf20Sopenharmony_ci	u32 configured_mcst_bcst_filter_setting;
41178c2ecf20Sopenharmony_ci	u32 active_session_count;
41188c2ecf20Sopenharmony_ci};
41198c2ecf20Sopenharmony_ci
41208c2ecf20Sopenharmony_cistruct wcn36xx_hal_wlan_exclude_unencrpted_ind_msg {
41218c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41228c2ecf20Sopenharmony_ci
41238c2ecf20Sopenharmony_ci	u8 dot11_exclude_unencrypted;
41248c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
41258c2ecf20Sopenharmony_ci};
41268c2ecf20Sopenharmony_ci
41278c2ecf20Sopenharmony_cistruct noa_attr_ind_msg {
41288c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41298c2ecf20Sopenharmony_ci
41308c2ecf20Sopenharmony_ci	u8 index;
41318c2ecf20Sopenharmony_ci	u8 opp_ps_flag;
41328c2ecf20Sopenharmony_ci	u16 ctwin;
41338c2ecf20Sopenharmony_ci
41348c2ecf20Sopenharmony_ci	u16 noa1_interval_count;
41358c2ecf20Sopenharmony_ci	u16 bss_index;
41368c2ecf20Sopenharmony_ci	u32 noa1_duration;
41378c2ecf20Sopenharmony_ci	u32 noa1_interval;
41388c2ecf20Sopenharmony_ci	u32 noa1_starttime;
41398c2ecf20Sopenharmony_ci
41408c2ecf20Sopenharmony_ci	u16 noa2_interval_count;
41418c2ecf20Sopenharmony_ci	u16 reserved2;
41428c2ecf20Sopenharmony_ci	u32 noa2_duration;
41438c2ecf20Sopenharmony_ci	u32 noa2_interval;
41448c2ecf20Sopenharmony_ci	u32 noa2_start_time;
41458c2ecf20Sopenharmony_ci
41468c2ecf20Sopenharmony_ci	u32 status;
41478c2ecf20Sopenharmony_ci};
41488c2ecf20Sopenharmony_ci
41498c2ecf20Sopenharmony_cistruct noa_start_ind_msg {
41508c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41518c2ecf20Sopenharmony_ci
41528c2ecf20Sopenharmony_ci	u32 status;
41538c2ecf20Sopenharmony_ci	u32 bss_index;
41548c2ecf20Sopenharmony_ci};
41558c2ecf20Sopenharmony_ci
41568c2ecf20Sopenharmony_cistruct wcn36xx_hal_wlan_host_resume_req_msg {
41578c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41588c2ecf20Sopenharmony_ci
41598c2ecf20Sopenharmony_ci	u8 configured_mcst_bcst_filter_setting;
41608c2ecf20Sopenharmony_ci};
41618c2ecf20Sopenharmony_ci
41628c2ecf20Sopenharmony_cistruct wcn36xx_hal_host_resume_rsp_msg {
41638c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41648c2ecf20Sopenharmony_ci
41658c2ecf20Sopenharmony_ci	/* success or failure */
41668c2ecf20Sopenharmony_ci	u32 status;
41678c2ecf20Sopenharmony_ci};
41688c2ecf20Sopenharmony_ci
41698c2ecf20Sopenharmony_cistruct wcn36xx_hal_del_ba_ind_msg {
41708c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
41718c2ecf20Sopenharmony_ci
41728c2ecf20Sopenharmony_ci	u16 sta_idx;
41738c2ecf20Sopenharmony_ci
41748c2ecf20Sopenharmony_ci	/* Peer MAC Address, whose BA session has timed out */
41758c2ecf20Sopenharmony_ci	u8 peer_addr[ETH_ALEN];
41768c2ecf20Sopenharmony_ci
41778c2ecf20Sopenharmony_ci	/* TID for which a BA session timeout is being triggered */
41788c2ecf20Sopenharmony_ci	u8 ba_tid;
41798c2ecf20Sopenharmony_ci
41808c2ecf20Sopenharmony_ci	/* DELBA direction
41818c2ecf20Sopenharmony_ci	 * 1 - Originator
41828c2ecf20Sopenharmony_ci	 * 0 - Recipient
41838c2ecf20Sopenharmony_ci	 */
41848c2ecf20Sopenharmony_ci	u8 direction;
41858c2ecf20Sopenharmony_ci
41868c2ecf20Sopenharmony_ci	u32 reason_code;
41878c2ecf20Sopenharmony_ci
41888c2ecf20Sopenharmony_ci	/* TO SUPPORT BT-AMP */
41898c2ecf20Sopenharmony_ci	u8 bssid[ETH_ALEN];
41908c2ecf20Sopenharmony_ci};
41918c2ecf20Sopenharmony_ci
41928c2ecf20Sopenharmony_ci/* PNO Messages */
41938c2ecf20Sopenharmony_ci
41948c2ecf20Sopenharmony_ci/* Max number of channels that a network can be found on */
41958c2ecf20Sopenharmony_ci#define WCN36XX_HAL_PNO_MAX_NETW_CHANNELS  26
41968c2ecf20Sopenharmony_ci
41978c2ecf20Sopenharmony_ci/* Max number of channels that a network can be found on */
41988c2ecf20Sopenharmony_ci#define WCN36XX_HAL_PNO_MAX_NETW_CHANNELS_EX  60
41998c2ecf20Sopenharmony_ci
42008c2ecf20Sopenharmony_ci/* Maximum numbers of networks supported by PNO */
42018c2ecf20Sopenharmony_ci#define WCN36XX_HAL_PNO_MAX_SUPP_NETWORKS  16
42028c2ecf20Sopenharmony_ci
42038c2ecf20Sopenharmony_ci/* The number of scan time intervals that can be programmed into PNO */
42048c2ecf20Sopenharmony_ci#define WCN36XX_HAL_PNO_MAX_SCAN_TIMERS    10
42058c2ecf20Sopenharmony_ci
42068c2ecf20Sopenharmony_ci/* Maximum size of the probe template */
42078c2ecf20Sopenharmony_ci#define WCN36XX_HAL_PNO_MAX_PROBE_SIZE     450
42088c2ecf20Sopenharmony_ci
42098c2ecf20Sopenharmony_ci/* Type of PNO enabling:
42108c2ecf20Sopenharmony_ci *
42118c2ecf20Sopenharmony_ci * Immediate - scanning will start immediately and PNO procedure will be
42128c2ecf20Sopenharmony_ci * repeated based on timer
42138c2ecf20Sopenharmony_ci *
42148c2ecf20Sopenharmony_ci * Suspend - scanning will start at suspend
42158c2ecf20Sopenharmony_ci *
42168c2ecf20Sopenharmony_ci * Resume - scanning will start on system resume
42178c2ecf20Sopenharmony_ci */
42188c2ecf20Sopenharmony_cienum pno_mode {
42198c2ecf20Sopenharmony_ci	PNO_MODE_IMMEDIATE,
42208c2ecf20Sopenharmony_ci	PNO_MODE_ON_SUSPEND,
42218c2ecf20Sopenharmony_ci	PNO_MODE_ON_RESUME,
42228c2ecf20Sopenharmony_ci	PNO_MODE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
42238c2ecf20Sopenharmony_ci};
42248c2ecf20Sopenharmony_ci
42258c2ecf20Sopenharmony_ci/* Authentication type */
42268c2ecf20Sopenharmony_cienum auth_type {
42278c2ecf20Sopenharmony_ci	AUTH_TYPE_ANY = 0,
42288c2ecf20Sopenharmony_ci	AUTH_TYPE_OPEN_SYSTEM = 1,
42298c2ecf20Sopenharmony_ci
42308c2ecf20Sopenharmony_ci	/* Upper layer authentication types */
42318c2ecf20Sopenharmony_ci	AUTH_TYPE_WPA = 2,
42328c2ecf20Sopenharmony_ci	AUTH_TYPE_WPA_PSK = 3,
42338c2ecf20Sopenharmony_ci
42348c2ecf20Sopenharmony_ci	AUTH_TYPE_RSN = 4,
42358c2ecf20Sopenharmony_ci	AUTH_TYPE_RSN_PSK = 5,
42368c2ecf20Sopenharmony_ci	AUTH_TYPE_FT_RSN = 6,
42378c2ecf20Sopenharmony_ci	AUTH_TYPE_FT_RSN_PSK = 7,
42388c2ecf20Sopenharmony_ci	AUTH_TYPE_WAPI_WAI_CERTIFICATE = 8,
42398c2ecf20Sopenharmony_ci	AUTH_TYPE_WAPI_WAI_PSK = 9,
42408c2ecf20Sopenharmony_ci
42418c2ecf20Sopenharmony_ci	AUTH_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
42428c2ecf20Sopenharmony_ci};
42438c2ecf20Sopenharmony_ci
42448c2ecf20Sopenharmony_ci/* Encryption type */
42458c2ecf20Sopenharmony_cienum ed_type {
42468c2ecf20Sopenharmony_ci	ED_ANY = 0,
42478c2ecf20Sopenharmony_ci	ED_NONE = 1,
42488c2ecf20Sopenharmony_ci	ED_WEP = 2,
42498c2ecf20Sopenharmony_ci	ED_TKIP = 3,
42508c2ecf20Sopenharmony_ci	ED_CCMP = 4,
42518c2ecf20Sopenharmony_ci	ED_WPI = 5,
42528c2ecf20Sopenharmony_ci
42538c2ecf20Sopenharmony_ci	ED_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
42548c2ecf20Sopenharmony_ci};
42558c2ecf20Sopenharmony_ci
42568c2ecf20Sopenharmony_ci/* SSID broadcast  type */
42578c2ecf20Sopenharmony_cienum ssid_bcast_type {
42588c2ecf20Sopenharmony_ci	BCAST_UNKNOWN = 0,
42598c2ecf20Sopenharmony_ci	BCAST_NORMAL = 1,
42608c2ecf20Sopenharmony_ci	BCAST_HIDDEN = 2,
42618c2ecf20Sopenharmony_ci
42628c2ecf20Sopenharmony_ci	BCAST_TYPE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE
42638c2ecf20Sopenharmony_ci};
42648c2ecf20Sopenharmony_ci
42658c2ecf20Sopenharmony_ci/* The network description for which PNO will have to look for */
42668c2ecf20Sopenharmony_cistruct network_type {
42678c2ecf20Sopenharmony_ci	/* SSID of the BSS */
42688c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_ssid ssid;
42698c2ecf20Sopenharmony_ci
42708c2ecf20Sopenharmony_ci	/* Authentication type for the network */
42718c2ecf20Sopenharmony_ci	enum auth_type authentication;
42728c2ecf20Sopenharmony_ci
42738c2ecf20Sopenharmony_ci	/* Encryption type for the network */
42748c2ecf20Sopenharmony_ci	enum ed_type encryption;
42758c2ecf20Sopenharmony_ci
42768c2ecf20Sopenharmony_ci	/* Indicate the channel on which the Network can be found 0 - if
42778c2ecf20Sopenharmony_ci	 * all channels */
42788c2ecf20Sopenharmony_ci	u8 channel_count;
42798c2ecf20Sopenharmony_ci	u8 channels[WCN36XX_HAL_PNO_MAX_NETW_CHANNELS];
42808c2ecf20Sopenharmony_ci
42818c2ecf20Sopenharmony_ci	/* Indicates the RSSI threshold for the network to be considered */
42828c2ecf20Sopenharmony_ci	u8 rssi_threshold;
42838c2ecf20Sopenharmony_ci};
42848c2ecf20Sopenharmony_ci
42858c2ecf20Sopenharmony_cistruct scan_timer {
42868c2ecf20Sopenharmony_ci	/* How much it should wait */
42878c2ecf20Sopenharmony_ci	u32 value;
42888c2ecf20Sopenharmony_ci
42898c2ecf20Sopenharmony_ci	/* How many times it should repeat that wait value 0 - keep using
42908c2ecf20Sopenharmony_ci	 * this timer until PNO is disabled */
42918c2ecf20Sopenharmony_ci	u32 repeat;
42928c2ecf20Sopenharmony_ci
42938c2ecf20Sopenharmony_ci	/* e.g: 2 3 4 0 - it will wait 2s between consecutive scans for 3
42948c2ecf20Sopenharmony_ci	 * times - after that it will wait 4s between consecutive scans
42958c2ecf20Sopenharmony_ci	 * until disabled */
42968c2ecf20Sopenharmony_ci};
42978c2ecf20Sopenharmony_ci
42988c2ecf20Sopenharmony_ci/* The network parameters to be sent to the PNO algorithm */
42998c2ecf20Sopenharmony_cistruct scan_timers_type {
43008c2ecf20Sopenharmony_ci	/* set to 0 if you wish for PNO to use its default telescopic timer */
43018c2ecf20Sopenharmony_ci	u8 count;
43028c2ecf20Sopenharmony_ci
43038c2ecf20Sopenharmony_ci	/* A set value represents the amount of time that PNO will wait
43048c2ecf20Sopenharmony_ci	 * between two consecutive scan procedures If the desired is for a
43058c2ecf20Sopenharmony_ci	 * uniform timer that fires always at the exact same interval - one
43068c2ecf20Sopenharmony_ci	 * single value is to be set If there is a desire for a more
43078c2ecf20Sopenharmony_ci	 * complex - telescopic like timer multiple values can be set -
43088c2ecf20Sopenharmony_ci	 * once PNO reaches the end of the array it will continue scanning
43098c2ecf20Sopenharmony_ci	 * at intervals presented by the last value */
43108c2ecf20Sopenharmony_ci	struct scan_timer values[WCN36XX_HAL_PNO_MAX_SCAN_TIMERS];
43118c2ecf20Sopenharmony_ci};
43128c2ecf20Sopenharmony_ci
43138c2ecf20Sopenharmony_ci/* Preferred network list request */
43148c2ecf20Sopenharmony_cistruct set_pref_netw_list_req {
43158c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
43168c2ecf20Sopenharmony_ci
43178c2ecf20Sopenharmony_ci	/* Enable PNO */
43188c2ecf20Sopenharmony_ci	u32 enable;
43198c2ecf20Sopenharmony_ci
43208c2ecf20Sopenharmony_ci	/* Immediate,  On Suspend,   On Resume */
43218c2ecf20Sopenharmony_ci	enum pno_mode mode;
43228c2ecf20Sopenharmony_ci
43238c2ecf20Sopenharmony_ci	/* Number of networks sent for PNO */
43248c2ecf20Sopenharmony_ci	u32 networks_count;
43258c2ecf20Sopenharmony_ci
43268c2ecf20Sopenharmony_ci	/* The networks that PNO needs to look for */
43278c2ecf20Sopenharmony_ci	struct network_type networks[WCN36XX_HAL_PNO_MAX_SUPP_NETWORKS];
43288c2ecf20Sopenharmony_ci
43298c2ecf20Sopenharmony_ci	/* The scan timers required for PNO */
43308c2ecf20Sopenharmony_ci	struct scan_timers_type scan_timers;
43318c2ecf20Sopenharmony_ci
43328c2ecf20Sopenharmony_ci	/* Probe template for 2.4GHz band */
43338c2ecf20Sopenharmony_ci	u16 band_24g_probe_size;
43348c2ecf20Sopenharmony_ci	u8 band_24g_probe_template[WCN36XX_HAL_PNO_MAX_PROBE_SIZE];
43358c2ecf20Sopenharmony_ci
43368c2ecf20Sopenharmony_ci	/* Probe template for 5GHz band */
43378c2ecf20Sopenharmony_ci	u16 band_5g_probe_size;
43388c2ecf20Sopenharmony_ci	u8 band_5g_probe_template[WCN36XX_HAL_PNO_MAX_PROBE_SIZE];
43398c2ecf20Sopenharmony_ci};
43408c2ecf20Sopenharmony_ci
43418c2ecf20Sopenharmony_ci/* The network description for which PNO will have to look for */
43428c2ecf20Sopenharmony_cistruct network_type_new {
43438c2ecf20Sopenharmony_ci	/* SSID of the BSS */
43448c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_ssid ssid;
43458c2ecf20Sopenharmony_ci
43468c2ecf20Sopenharmony_ci	/* Authentication type for the network */
43478c2ecf20Sopenharmony_ci	enum auth_type authentication;
43488c2ecf20Sopenharmony_ci
43498c2ecf20Sopenharmony_ci	/* Encryption type for the network */
43508c2ecf20Sopenharmony_ci	enum ed_type encryption;
43518c2ecf20Sopenharmony_ci
43528c2ecf20Sopenharmony_ci	/* SSID broadcast type, normal, hidden or unknown */
43538c2ecf20Sopenharmony_ci	enum ssid_bcast_type bcast_network_type;
43548c2ecf20Sopenharmony_ci
43558c2ecf20Sopenharmony_ci	/* Indicate the channel on which the Network can be found 0 - if
43568c2ecf20Sopenharmony_ci	 * all channels */
43578c2ecf20Sopenharmony_ci	u8 channel_count;
43588c2ecf20Sopenharmony_ci	u8 channels[WCN36XX_HAL_PNO_MAX_NETW_CHANNELS];
43598c2ecf20Sopenharmony_ci
43608c2ecf20Sopenharmony_ci	/* Indicates the RSSI threshold for the network to be considered */
43618c2ecf20Sopenharmony_ci	u8 rssi_threshold;
43628c2ecf20Sopenharmony_ci};
43638c2ecf20Sopenharmony_ci
43648c2ecf20Sopenharmony_ci/* Preferred network list request new */
43658c2ecf20Sopenharmony_cistruct set_pref_netw_list_req_new {
43668c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
43678c2ecf20Sopenharmony_ci
43688c2ecf20Sopenharmony_ci	/* Enable PNO */
43698c2ecf20Sopenharmony_ci	u32 enable;
43708c2ecf20Sopenharmony_ci
43718c2ecf20Sopenharmony_ci	/* Immediate,  On Suspend,   On Resume */
43728c2ecf20Sopenharmony_ci	enum pno_mode mode;
43738c2ecf20Sopenharmony_ci
43748c2ecf20Sopenharmony_ci	/* Number of networks sent for PNO */
43758c2ecf20Sopenharmony_ci	u32 networks_count;
43768c2ecf20Sopenharmony_ci
43778c2ecf20Sopenharmony_ci	/* The networks that PNO needs to look for */
43788c2ecf20Sopenharmony_ci	struct network_type_new networks[WCN36XX_HAL_PNO_MAX_SUPP_NETWORKS];
43798c2ecf20Sopenharmony_ci
43808c2ecf20Sopenharmony_ci	/* The scan timers required for PNO */
43818c2ecf20Sopenharmony_ci	struct scan_timers_type scan_timers;
43828c2ecf20Sopenharmony_ci
43838c2ecf20Sopenharmony_ci	/* Probe template for 2.4GHz band */
43848c2ecf20Sopenharmony_ci	u16 band_24g_probe_size;
43858c2ecf20Sopenharmony_ci	u8 band_24g_probe_template[WCN36XX_HAL_PNO_MAX_PROBE_SIZE];
43868c2ecf20Sopenharmony_ci
43878c2ecf20Sopenharmony_ci	/* Probe template for 5GHz band */
43888c2ecf20Sopenharmony_ci	u16 band_5g_probe_size;
43898c2ecf20Sopenharmony_ci	u8 band_5g_probe_template[WCN36XX_HAL_PNO_MAX_PROBE_SIZE];
43908c2ecf20Sopenharmony_ci};
43918c2ecf20Sopenharmony_ci
43928c2ecf20Sopenharmony_ci/* Preferred network list response */
43938c2ecf20Sopenharmony_cistruct set_pref_netw_list_resp {
43948c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
43958c2ecf20Sopenharmony_ci
43968c2ecf20Sopenharmony_ci	/* status of the request - just to indicate that PNO has
43978c2ecf20Sopenharmony_ci	 * acknowledged the request and will start scanning */
43988c2ecf20Sopenharmony_ci	u32 status;
43998c2ecf20Sopenharmony_ci};
44008c2ecf20Sopenharmony_ci
44018c2ecf20Sopenharmony_ci/* Preferred network found indication */
44028c2ecf20Sopenharmony_cistruct pref_netw_found_ind {
44038c2ecf20Sopenharmony_ci
44048c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
44058c2ecf20Sopenharmony_ci
44068c2ecf20Sopenharmony_ci	/* Network that was found with the highest RSSI */
44078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_mac_ssid ssid;
44088c2ecf20Sopenharmony_ci
44098c2ecf20Sopenharmony_ci	/* Indicates the RSSI */
44108c2ecf20Sopenharmony_ci	u8 rssi;
44118c2ecf20Sopenharmony_ci};
44128c2ecf20Sopenharmony_ci
44138c2ecf20Sopenharmony_ci/* RSSI Filter request */
44148c2ecf20Sopenharmony_cistruct set_rssi_filter_req {
44158c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
44168c2ecf20Sopenharmony_ci
44178c2ecf20Sopenharmony_ci	/* RSSI Threshold */
44188c2ecf20Sopenharmony_ci	u8 rssi_threshold;
44198c2ecf20Sopenharmony_ci};
44208c2ecf20Sopenharmony_ci
44218c2ecf20Sopenharmony_ci/* Set RSSI filter resp */
44228c2ecf20Sopenharmony_cistruct set_rssi_filter_resp {
44238c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
44248c2ecf20Sopenharmony_ci
44258c2ecf20Sopenharmony_ci	/* status of the request */
44268c2ecf20Sopenharmony_ci	u32 status;
44278c2ecf20Sopenharmony_ci};
44288c2ecf20Sopenharmony_ci
44298c2ecf20Sopenharmony_ci/* Update scan params - sent from host to PNO to be used during PNO
44308c2ecf20Sopenharmony_ci * scanningx */
44318c2ecf20Sopenharmony_cistruct wcn36xx_hal_update_scan_params_req {
44328c2ecf20Sopenharmony_ci
44338c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
44348c2ecf20Sopenharmony_ci
44358c2ecf20Sopenharmony_ci	/* Host setting for 11d */
44368c2ecf20Sopenharmony_ci	u8 dot11d_enabled;
44378c2ecf20Sopenharmony_ci
44388c2ecf20Sopenharmony_ci	/* Lets PNO know that host has determined the regulatory domain */
44398c2ecf20Sopenharmony_ci	u8 dot11d_resolved;
44408c2ecf20Sopenharmony_ci
44418c2ecf20Sopenharmony_ci	/* Channels on which PNO is allowed to scan */
44428c2ecf20Sopenharmony_ci	u8 channel_count;
44438c2ecf20Sopenharmony_ci	u8 channels[WCN36XX_HAL_PNO_MAX_NETW_CHANNELS];
44448c2ecf20Sopenharmony_ci
44458c2ecf20Sopenharmony_ci	/* Minimum channel time */
44468c2ecf20Sopenharmony_ci	u16 active_min_ch_time;
44478c2ecf20Sopenharmony_ci
44488c2ecf20Sopenharmony_ci	/* Maximum channel time */
44498c2ecf20Sopenharmony_ci	u16 active_max_ch_time;
44508c2ecf20Sopenharmony_ci
44518c2ecf20Sopenharmony_ci	/* Minimum channel time */
44528c2ecf20Sopenharmony_ci	u16 passive_min_ch_time;
44538c2ecf20Sopenharmony_ci
44548c2ecf20Sopenharmony_ci	/* Maximum channel time */
44558c2ecf20Sopenharmony_ci	u16 passive_max_ch_time;
44568c2ecf20Sopenharmony_ci
44578c2ecf20Sopenharmony_ci	/* Cb State */
44588c2ecf20Sopenharmony_ci	enum phy_chan_bond_state state;
44598c2ecf20Sopenharmony_ci} __packed;
44608c2ecf20Sopenharmony_ci
44618c2ecf20Sopenharmony_ci/* Update scan params - sent from host to PNO to be used during PNO
44628c2ecf20Sopenharmony_ci * scanningx */
44638c2ecf20Sopenharmony_cistruct wcn36xx_hal_update_scan_params_req_ex {
44648c2ecf20Sopenharmony_ci
44658c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
44668c2ecf20Sopenharmony_ci
44678c2ecf20Sopenharmony_ci	/* Host setting for 11d */
44688c2ecf20Sopenharmony_ci	u8 dot11d_enabled;
44698c2ecf20Sopenharmony_ci
44708c2ecf20Sopenharmony_ci	/* Lets PNO know that host has determined the regulatory domain */
44718c2ecf20Sopenharmony_ci	u8 dot11d_resolved;
44728c2ecf20Sopenharmony_ci
44738c2ecf20Sopenharmony_ci	/* Channels on which PNO is allowed to scan */
44748c2ecf20Sopenharmony_ci	u8 channel_count;
44758c2ecf20Sopenharmony_ci	u8 channels[WCN36XX_HAL_PNO_MAX_NETW_CHANNELS_EX];
44768c2ecf20Sopenharmony_ci
44778c2ecf20Sopenharmony_ci	/* Minimum channel time */
44788c2ecf20Sopenharmony_ci	u16 active_min_ch_time;
44798c2ecf20Sopenharmony_ci
44808c2ecf20Sopenharmony_ci	/* Maximum channel time */
44818c2ecf20Sopenharmony_ci	u16 active_max_ch_time;
44828c2ecf20Sopenharmony_ci
44838c2ecf20Sopenharmony_ci	/* Minimum channel time */
44848c2ecf20Sopenharmony_ci	u16 passive_min_ch_time;
44858c2ecf20Sopenharmony_ci
44868c2ecf20Sopenharmony_ci	/* Maximum channel time */
44878c2ecf20Sopenharmony_ci	u16 passive_max_ch_time;
44888c2ecf20Sopenharmony_ci
44898c2ecf20Sopenharmony_ci	/* Cb State */
44908c2ecf20Sopenharmony_ci	enum phy_chan_bond_state state;
44918c2ecf20Sopenharmony_ci} __packed;
44928c2ecf20Sopenharmony_ci
44938c2ecf20Sopenharmony_ci/* Update scan params - sent from host to PNO to be used during PNO
44948c2ecf20Sopenharmony_ci * scanningx */
44958c2ecf20Sopenharmony_cistruct wcn36xx_hal_update_scan_params_resp {
44968c2ecf20Sopenharmony_ci
44978c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
44988c2ecf20Sopenharmony_ci
44998c2ecf20Sopenharmony_ci	/* status of the request */
45008c2ecf20Sopenharmony_ci	u32 status;
45018c2ecf20Sopenharmony_ci} __packed;
45028c2ecf20Sopenharmony_ci
45038c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_tx_per_tracking_req_msg {
45048c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
45058c2ecf20Sopenharmony_ci
45068c2ecf20Sopenharmony_ci	/* 0: disable, 1:enable */
45078c2ecf20Sopenharmony_ci	u8 tx_per_tracking_enable;
45088c2ecf20Sopenharmony_ci
45098c2ecf20Sopenharmony_ci	/* Check period, unit is sec. */
45108c2ecf20Sopenharmony_ci	u8 tx_per_tracking_period;
45118c2ecf20Sopenharmony_ci
45128c2ecf20Sopenharmony_ci	/* (Fail TX packet)/(Total TX packet) ratio, the unit is 10%. */
45138c2ecf20Sopenharmony_ci	u8 tx_per_tracking_ratio;
45148c2ecf20Sopenharmony_ci
45158c2ecf20Sopenharmony_ci	/* A watermark of check number, once the tx packet exceed this
45168c2ecf20Sopenharmony_ci	 * number, we do the check, default is 5 */
45178c2ecf20Sopenharmony_ci	u32 tx_per_tracking_watermark;
45188c2ecf20Sopenharmony_ci};
45198c2ecf20Sopenharmony_ci
45208c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_tx_per_tracking_rsp_msg {
45218c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
45228c2ecf20Sopenharmony_ci
45238c2ecf20Sopenharmony_ci	/* success or failure */
45248c2ecf20Sopenharmony_ci	u32 status;
45258c2ecf20Sopenharmony_ci
45268c2ecf20Sopenharmony_ci};
45278c2ecf20Sopenharmony_ci
45288c2ecf20Sopenharmony_cistruct tx_per_hit_ind_msg {
45298c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
45308c2ecf20Sopenharmony_ci};
45318c2ecf20Sopenharmony_ci
45328c2ecf20Sopenharmony_ci/* Packet Filtering Definitions Begin */
45338c2ecf20Sopenharmony_ci#define    WCN36XX_HAL_PROTOCOL_DATA_LEN                  8
45348c2ecf20Sopenharmony_ci#define    WCN36XX_HAL_MAX_NUM_MULTICAST_ADDRESS        240
45358c2ecf20Sopenharmony_ci#define    WCN36XX_HAL_MAX_NUM_FILTERS                   20
45368c2ecf20Sopenharmony_ci#define    WCN36XX_HAL_MAX_CMP_PER_FILTER                10
45378c2ecf20Sopenharmony_ci
45388c2ecf20Sopenharmony_cienum wcn36xx_hal_receive_packet_filter_type {
45398c2ecf20Sopenharmony_ci	HAL_RCV_FILTER_TYPE_INVALID,
45408c2ecf20Sopenharmony_ci	HAL_RCV_FILTER_TYPE_FILTER_PKT,
45418c2ecf20Sopenharmony_ci	HAL_RCV_FILTER_TYPE_BUFFER_PKT,
45428c2ecf20Sopenharmony_ci	HAL_RCV_FILTER_TYPE_MAX_ENUM_SIZE
45438c2ecf20Sopenharmony_ci};
45448c2ecf20Sopenharmony_ci
45458c2ecf20Sopenharmony_cienum wcn36xx_hal_rcv_pkt_flt_protocol_type {
45468c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_INVALID,
45478c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_MAC,
45488c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_ARP,
45498c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_IPV4,
45508c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_IPV6,
45518c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_UDP,
45528c2ecf20Sopenharmony_ci	HAL_FILTER_PROTO_TYPE_MAX
45538c2ecf20Sopenharmony_ci};
45548c2ecf20Sopenharmony_ci
45558c2ecf20Sopenharmony_cienum wcn36xx_hal_rcv_pkt_flt_cmp_flag_type {
45568c2ecf20Sopenharmony_ci	HAL_FILTER_CMP_TYPE_INVALID,
45578c2ecf20Sopenharmony_ci	HAL_FILTER_CMP_TYPE_EQUAL,
45588c2ecf20Sopenharmony_ci	HAL_FILTER_CMP_TYPE_MASK_EQUAL,
45598c2ecf20Sopenharmony_ci	HAL_FILTER_CMP_TYPE_NOT_EQUAL,
45608c2ecf20Sopenharmony_ci	HAL_FILTER_CMP_TYPE_MAX
45618c2ecf20Sopenharmony_ci};
45628c2ecf20Sopenharmony_ci
45638c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_pkt_filter_params {
45648c2ecf20Sopenharmony_ci	u8 protocol_layer;
45658c2ecf20Sopenharmony_ci	u8 cmp_flag;
45668c2ecf20Sopenharmony_ci
45678c2ecf20Sopenharmony_ci	/* Length of the data to compare */
45688c2ecf20Sopenharmony_ci	u16 data_length;
45698c2ecf20Sopenharmony_ci
45708c2ecf20Sopenharmony_ci	/* from start of the respective frame header */
45718c2ecf20Sopenharmony_ci	u8 data_offset;
45728c2ecf20Sopenharmony_ci
45738c2ecf20Sopenharmony_ci	/* Reserved field */
45748c2ecf20Sopenharmony_ci	u8 reserved;
45758c2ecf20Sopenharmony_ci
45768c2ecf20Sopenharmony_ci	/* Data to compare */
45778c2ecf20Sopenharmony_ci	u8 compare_data[WCN36XX_HAL_PROTOCOL_DATA_LEN];
45788c2ecf20Sopenharmony_ci
45798c2ecf20Sopenharmony_ci	/* Mask to be applied on the received packet data before compare */
45808c2ecf20Sopenharmony_ci	u8 data_mask[WCN36XX_HAL_PROTOCOL_DATA_LEN];
45818c2ecf20Sopenharmony_ci};
45828c2ecf20Sopenharmony_ci
45838c2ecf20Sopenharmony_cistruct wcn36xx_hal_sessionized_rcv_pkt_filter_cfg_type {
45848c2ecf20Sopenharmony_ci	u8 id;
45858c2ecf20Sopenharmony_ci	u8 type;
45868c2ecf20Sopenharmony_ci	u8 params_count;
45878c2ecf20Sopenharmony_ci	u32 coleasce_time;
45888c2ecf20Sopenharmony_ci	u8 bss_index;
45898c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rcv_pkt_filter_params params[1];
45908c2ecf20Sopenharmony_ci};
45918c2ecf20Sopenharmony_ci
45928c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_rcv_pkt_filter_req_msg {
45938c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
45948c2ecf20Sopenharmony_ci
45958c2ecf20Sopenharmony_ci	u8 id;
45968c2ecf20Sopenharmony_ci	u8 type;
45978c2ecf20Sopenharmony_ci	u8 params_count;
45988c2ecf20Sopenharmony_ci	u32 coalesce_time;
45998c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rcv_pkt_filter_params params[1];
46008c2ecf20Sopenharmony_ci};
46018c2ecf20Sopenharmony_ci
46028c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_mc_addr_list_type {
46038c2ecf20Sopenharmony_ci	/* from start of the respective frame header */
46048c2ecf20Sopenharmony_ci	u8 data_offset;
46058c2ecf20Sopenharmony_ci
46068c2ecf20Sopenharmony_ci	u32 mc_addr_count;
46078c2ecf20Sopenharmony_ci	u8 mc_addr[WCN36XX_HAL_MAX_NUM_MULTICAST_ADDRESS][ETH_ALEN];
46088c2ecf20Sopenharmony_ci	u8 bss_index;
46098c2ecf20Sopenharmony_ci} __packed;
46108c2ecf20Sopenharmony_ci
46118c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_pkt_filter_rsp_msg {
46128c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46138c2ecf20Sopenharmony_ci
46148c2ecf20Sopenharmony_ci	/* success or failure */
46158c2ecf20Sopenharmony_ci	u32 status;
46168c2ecf20Sopenharmony_ci
46178c2ecf20Sopenharmony_ci	u8 bss_index;
46188c2ecf20Sopenharmony_ci};
46198c2ecf20Sopenharmony_ci
46208c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_match_cnt_req_msg {
46218c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46228c2ecf20Sopenharmony_ci
46238c2ecf20Sopenharmony_ci	u8 bss_index;
46248c2ecf20Sopenharmony_ci};
46258c2ecf20Sopenharmony_ci
46268c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_match_cnt {
46278c2ecf20Sopenharmony_ci	u8 id;
46288c2ecf20Sopenharmony_ci	u32 match_cnt;
46298c2ecf20Sopenharmony_ci};
46308c2ecf20Sopenharmony_ci
46318c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_match_cnt_rsp_msg {
46328c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46338c2ecf20Sopenharmony_ci
46348c2ecf20Sopenharmony_ci	/* Success or Failure */
46358c2ecf20Sopenharmony_ci	u32 status;
46368c2ecf20Sopenharmony_ci
46378c2ecf20Sopenharmony_ci	u32 match_count;
46388c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rcv_flt_pkt_match_cnt
46398c2ecf20Sopenharmony_ci		matches[WCN36XX_HAL_MAX_NUM_FILTERS];
46408c2ecf20Sopenharmony_ci	u8 bss_index;
46418c2ecf20Sopenharmony_ci};
46428c2ecf20Sopenharmony_ci
46438c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_clear_param {
46448c2ecf20Sopenharmony_ci	/* only valid for response message */
46458c2ecf20Sopenharmony_ci	u32 status;
46468c2ecf20Sopenharmony_ci	u8 id;
46478c2ecf20Sopenharmony_ci	u8 bss_index;
46488c2ecf20Sopenharmony_ci};
46498c2ecf20Sopenharmony_ci
46508c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_clear_req_msg {
46518c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46528c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rcv_flt_pkt_clear_param param;
46538c2ecf20Sopenharmony_ci};
46548c2ecf20Sopenharmony_ci
46558c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_clear_rsp_msg {
46568c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46578c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rcv_flt_pkt_clear_param param;
46588c2ecf20Sopenharmony_ci};
46598c2ecf20Sopenharmony_ci
46608c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_set_mc_list_req_msg {
46618c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46628c2ecf20Sopenharmony_ci	struct wcn36xx_hal_rcv_flt_mc_addr_list_type mc_addr_list;
46638c2ecf20Sopenharmony_ci} __packed;
46648c2ecf20Sopenharmony_ci
46658c2ecf20Sopenharmony_cistruct wcn36xx_hal_rcv_flt_pkt_set_mc_list_rsp_msg {
46668c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46678c2ecf20Sopenharmony_ci	u32 status;
46688c2ecf20Sopenharmony_ci	u8 bss_index;
46698c2ecf20Sopenharmony_ci};
46708c2ecf20Sopenharmony_ci
46718c2ecf20Sopenharmony_ci/* Packet Filtering Definitions End */
46728c2ecf20Sopenharmony_ci
46738c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_power_params_req_msg {
46748c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46758c2ecf20Sopenharmony_ci
46768c2ecf20Sopenharmony_ci	/*  Ignore DTIM */
46778c2ecf20Sopenharmony_ci	u32 ignore_dtim;
46788c2ecf20Sopenharmony_ci
46798c2ecf20Sopenharmony_ci	/* DTIM Period */
46808c2ecf20Sopenharmony_ci	u32 dtim_period;
46818c2ecf20Sopenharmony_ci
46828c2ecf20Sopenharmony_ci	/* Listen Interval */
46838c2ecf20Sopenharmony_ci	u32 listen_interval;
46848c2ecf20Sopenharmony_ci
46858c2ecf20Sopenharmony_ci	/* Broadcast Multicast Filter  */
46868c2ecf20Sopenharmony_ci	u32 bcast_mcast_filter;
46878c2ecf20Sopenharmony_ci
46888c2ecf20Sopenharmony_ci	/* Beacon Early Termination */
46898c2ecf20Sopenharmony_ci	u32 enable_bet;
46908c2ecf20Sopenharmony_ci
46918c2ecf20Sopenharmony_ci	/* Beacon Early Termination Interval */
46928c2ecf20Sopenharmony_ci	u32 bet_interval;
46938c2ecf20Sopenharmony_ci} __packed;
46948c2ecf20Sopenharmony_ci
46958c2ecf20Sopenharmony_cistruct wcn36xx_hal_set_power_params_resp {
46968c2ecf20Sopenharmony_ci
46978c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
46988c2ecf20Sopenharmony_ci
46998c2ecf20Sopenharmony_ci	/* status of the request */
47008c2ecf20Sopenharmony_ci	u32 status;
47018c2ecf20Sopenharmony_ci} __packed;
47028c2ecf20Sopenharmony_ci
47038c2ecf20Sopenharmony_ci/* Capability bitmap exchange definitions and macros starts */
47048c2ecf20Sopenharmony_ci
47058c2ecf20Sopenharmony_cienum place_holder_in_cap_bitmap {
47068c2ecf20Sopenharmony_ci	MCC = 0,
47078c2ecf20Sopenharmony_ci	P2P = 1,
47088c2ecf20Sopenharmony_ci	DOT11AC = 2,
47098c2ecf20Sopenharmony_ci	SLM_SESSIONIZATION = 3,
47108c2ecf20Sopenharmony_ci	DOT11AC_OPMODE = 4,
47118c2ecf20Sopenharmony_ci	SAP32STA = 5,
47128c2ecf20Sopenharmony_ci	TDLS = 6,
47138c2ecf20Sopenharmony_ci	P2P_GO_NOA_DECOUPLE_INIT_SCAN = 7,
47148c2ecf20Sopenharmony_ci	WLANACTIVE_OFFLOAD = 8,
47158c2ecf20Sopenharmony_ci	BEACON_OFFLOAD = 9,
47168c2ecf20Sopenharmony_ci	SCAN_OFFLOAD = 10,
47178c2ecf20Sopenharmony_ci	ROAM_OFFLOAD = 11,
47188c2ecf20Sopenharmony_ci	BCN_MISS_OFFLOAD = 12,
47198c2ecf20Sopenharmony_ci	STA_POWERSAVE = 13,
47208c2ecf20Sopenharmony_ci	STA_ADVANCED_PWRSAVE = 14,
47218c2ecf20Sopenharmony_ci	AP_UAPSD = 15,
47228c2ecf20Sopenharmony_ci	AP_DFS = 16,
47238c2ecf20Sopenharmony_ci	BLOCKACK = 17,
47248c2ecf20Sopenharmony_ci	PHY_ERR = 18,
47258c2ecf20Sopenharmony_ci	BCN_FILTER = 19,
47268c2ecf20Sopenharmony_ci	RTT = 20,
47278c2ecf20Sopenharmony_ci	RATECTRL = 21,
47288c2ecf20Sopenharmony_ci	WOW = 22,
47298c2ecf20Sopenharmony_ci	WLAN_ROAM_SCAN_OFFLOAD = 23,
47308c2ecf20Sopenharmony_ci	SPECULATIVE_PS_POLL = 24,
47318c2ecf20Sopenharmony_ci	SCAN_SCH = 25,
47328c2ecf20Sopenharmony_ci	IBSS_HEARTBEAT_OFFLOAD = 26,
47338c2ecf20Sopenharmony_ci	WLAN_SCAN_OFFLOAD = 27,
47348c2ecf20Sopenharmony_ci	WLAN_PERIODIC_TX_PTRN = 28,
47358c2ecf20Sopenharmony_ci	ADVANCE_TDLS = 29,
47368c2ecf20Sopenharmony_ci	BATCH_SCAN = 30,
47378c2ecf20Sopenharmony_ci	FW_IN_TX_PATH = 31,
47388c2ecf20Sopenharmony_ci	EXTENDED_NSOFFLOAD_SLOT = 32,
47398c2ecf20Sopenharmony_ci	CH_SWITCH_V1 = 33,
47408c2ecf20Sopenharmony_ci	HT40_OBSS_SCAN = 34,
47418c2ecf20Sopenharmony_ci	UPDATE_CHANNEL_LIST = 35,
47428c2ecf20Sopenharmony_ci	WLAN_MCADDR_FLT = 36,
47438c2ecf20Sopenharmony_ci	WLAN_CH144 = 37,
47448c2ecf20Sopenharmony_ci	NAN = 38,
47458c2ecf20Sopenharmony_ci	TDLS_SCAN_COEXISTENCE = 39,
47468c2ecf20Sopenharmony_ci	LINK_LAYER_STATS_MEAS = 40,
47478c2ecf20Sopenharmony_ci	MU_MIMO = 41,
47488c2ecf20Sopenharmony_ci	EXTENDED_SCAN = 42,
47498c2ecf20Sopenharmony_ci	DYNAMIC_WMM_PS = 43,
47508c2ecf20Sopenharmony_ci	MAC_SPOOFED_SCAN = 44,
47518c2ecf20Sopenharmony_ci	BMU_ERROR_GENERIC_RECOVERY = 45,
47528c2ecf20Sopenharmony_ci	DISA = 46,
47538c2ecf20Sopenharmony_ci	FW_STATS = 47,
47548c2ecf20Sopenharmony_ci	WPS_PRBRSP_TMPL = 48,
47558c2ecf20Sopenharmony_ci	BCN_IE_FLT_DELTA = 49,
47568c2ecf20Sopenharmony_ci	TDLS_OFF_CHANNEL = 51,
47578c2ecf20Sopenharmony_ci	RTT3 = 52,
47588c2ecf20Sopenharmony_ci	MGMT_FRAME_LOGGING = 53,
47598c2ecf20Sopenharmony_ci	ENHANCED_TXBD_COMPLETION = 54,
47608c2ecf20Sopenharmony_ci	LOGGING_ENHANCEMENT = 55,
47618c2ecf20Sopenharmony_ci	EXT_SCAN_ENHANCED = 56,
47628c2ecf20Sopenharmony_ci	MEMORY_DUMP_SUPPORTED = 57,
47638c2ecf20Sopenharmony_ci	PER_PKT_STATS_SUPPORTED = 58,
47648c2ecf20Sopenharmony_ci	EXT_LL_STAT = 60,
47658c2ecf20Sopenharmony_ci	WIFI_CONFIG = 61,
47668c2ecf20Sopenharmony_ci	ANTENNA_DIVERSITY_SELECTION = 62,
47678c2ecf20Sopenharmony_ci
47688c2ecf20Sopenharmony_ci	MAX_FEATURE_SUPPORTED = 128,
47698c2ecf20Sopenharmony_ci};
47708c2ecf20Sopenharmony_ci
47718c2ecf20Sopenharmony_ci#define WCN36XX_HAL_CAPS_SIZE 4
47728c2ecf20Sopenharmony_ci
47738c2ecf20Sopenharmony_cistruct wcn36xx_hal_feat_caps_msg {
47748c2ecf20Sopenharmony_ci
47758c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
47768c2ecf20Sopenharmony_ci
47778c2ecf20Sopenharmony_ci	u32 feat_caps[WCN36XX_HAL_CAPS_SIZE];
47788c2ecf20Sopenharmony_ci} __packed;
47798c2ecf20Sopenharmony_ci
47808c2ecf20Sopenharmony_ci/* status codes to help debug rekey failures */
47818c2ecf20Sopenharmony_cienum gtk_rekey_status {
47828c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_SUCCESS = 0,
47838c2ecf20Sopenharmony_ci
47848c2ecf20Sopenharmony_ci	/* rekey detected, but not handled */
47858c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_NOT_HANDLED = 1,
47868c2ecf20Sopenharmony_ci
47878c2ecf20Sopenharmony_ci	/* MIC check error on M1 */
47888c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_MIC_ERROR = 2,
47898c2ecf20Sopenharmony_ci
47908c2ecf20Sopenharmony_ci	/* decryption error on M1  */
47918c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_DECRYPT_ERROR = 3,
47928c2ecf20Sopenharmony_ci
47938c2ecf20Sopenharmony_ci	/* M1 replay detected */
47948c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_REPLAY_ERROR = 4,
47958c2ecf20Sopenharmony_ci
47968c2ecf20Sopenharmony_ci	/* missing GTK key descriptor in M1 */
47978c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_MISSING_KDE = 5,
47988c2ecf20Sopenharmony_ci
47998c2ecf20Sopenharmony_ci	/* missing iGTK key descriptor in M1 */
48008c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_MISSING_IGTK_KDE = 6,
48018c2ecf20Sopenharmony_ci
48028c2ecf20Sopenharmony_ci	/* key installation error */
48038c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_INSTALL_ERROR = 7,
48048c2ecf20Sopenharmony_ci
48058c2ecf20Sopenharmony_ci	/* iGTK key installation error */
48068c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_IGTK_INSTALL_ERROR = 8,
48078c2ecf20Sopenharmony_ci
48088c2ecf20Sopenharmony_ci	/* GTK rekey M2 response TX error */
48098c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_RESP_TX_ERROR = 9,
48108c2ecf20Sopenharmony_ci
48118c2ecf20Sopenharmony_ci	/* non-specific general error */
48128c2ecf20Sopenharmony_ci	WCN36XX_HAL_GTK_REKEY_STATUS_GEN_ERROR = 255
48138c2ecf20Sopenharmony_ci};
48148c2ecf20Sopenharmony_ci
48158c2ecf20Sopenharmony_ci/* wake reason types */
48168c2ecf20Sopenharmony_cienum wake_reason_type {
48178c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_NONE = 0,
48188c2ecf20Sopenharmony_ci
48198c2ecf20Sopenharmony_ci	/* magic packet match */
48208c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_MAGIC_PACKET = 1,
48218c2ecf20Sopenharmony_ci
48228c2ecf20Sopenharmony_ci	/* host defined pattern match */
48238c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_PATTERN_MATCH = 2,
48248c2ecf20Sopenharmony_ci
48258c2ecf20Sopenharmony_ci	/* EAP-ID frame detected */
48268c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_EAPID_PACKET = 3,
48278c2ecf20Sopenharmony_ci
48288c2ecf20Sopenharmony_ci	/* start of EAPOL 4-way handshake detected */
48298c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_EAPOL4WAY_PACKET = 4,
48308c2ecf20Sopenharmony_ci
48318c2ecf20Sopenharmony_ci	/* network scan offload match */
48328c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_NETSCAN_OFFL_MATCH = 5,
48338c2ecf20Sopenharmony_ci
48348c2ecf20Sopenharmony_ci	/* GTK rekey status wakeup (see status) */
48358c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_GTK_REKEY_STATUS = 6,
48368c2ecf20Sopenharmony_ci
48378c2ecf20Sopenharmony_ci	/* BSS connection lost */
48388c2ecf20Sopenharmony_ci	WCN36XX_HAL_WAKE_REASON_BSS_CONN_LOST = 7,
48398c2ecf20Sopenharmony_ci};
48408c2ecf20Sopenharmony_ci
48418c2ecf20Sopenharmony_ci/*
48428c2ecf20Sopenharmony_ci  Wake Packet which is saved at tWakeReasonParams.DataStart
48438c2ecf20Sopenharmony_ci  This data is sent for any wake reasons that involve a packet-based wakeup :
48448c2ecf20Sopenharmony_ci
48458c2ecf20Sopenharmony_ci  WCN36XX_HAL_WAKE_REASON_TYPE_MAGIC_PACKET
48468c2ecf20Sopenharmony_ci  WCN36XX_HAL_WAKE_REASON_TYPE_PATTERN_MATCH
48478c2ecf20Sopenharmony_ci  WCN36XX_HAL_WAKE_REASON_TYPE_EAPID_PACKET
48488c2ecf20Sopenharmony_ci  WCN36XX_HAL_WAKE_REASON_TYPE_EAPOL4WAY_PACKET
48498c2ecf20Sopenharmony_ci  WCN36XX_HAL_WAKE_REASON_TYPE_GTK_REKEY_STATUS
48508c2ecf20Sopenharmony_ci
48518c2ecf20Sopenharmony_ci  The information is provided to the host for auditing and debug purposes
48528c2ecf20Sopenharmony_ci
48538c2ecf20Sopenharmony_ci*/
48548c2ecf20Sopenharmony_ci
48558c2ecf20Sopenharmony_ci/* Wake reason indication */
48568c2ecf20Sopenharmony_cistruct wcn36xx_hal_wake_reason_ind {
48578c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
48588c2ecf20Sopenharmony_ci
48598c2ecf20Sopenharmony_ci	/* see tWakeReasonType */
48608c2ecf20Sopenharmony_ci	u32 reason;
48618c2ecf20Sopenharmony_ci
48628c2ecf20Sopenharmony_ci	/* argument specific to the reason type */
48638c2ecf20Sopenharmony_ci	u32 reason_arg;
48648c2ecf20Sopenharmony_ci
48658c2ecf20Sopenharmony_ci	/* length of optional data stored in this message, in case HAL
48668c2ecf20Sopenharmony_ci	 * truncates the data (i.e. data packets) this length will be less
48678c2ecf20Sopenharmony_ci	 * than the actual length */
48688c2ecf20Sopenharmony_ci	u32 stored_data_len;
48698c2ecf20Sopenharmony_ci
48708c2ecf20Sopenharmony_ci	/* actual length of data */
48718c2ecf20Sopenharmony_ci	u32 actual_data_len;
48728c2ecf20Sopenharmony_ci
48738c2ecf20Sopenharmony_ci	/* variable length start of data (length == storedDataLen) see
48748c2ecf20Sopenharmony_ci	 * specific wake type */
48758c2ecf20Sopenharmony_ci	u8 data_start[1];
48768c2ecf20Sopenharmony_ci
48778c2ecf20Sopenharmony_ci	u32 bss_index:8;
48788c2ecf20Sopenharmony_ci	u32 reserved:24;
48798c2ecf20Sopenharmony_ci};
48808c2ecf20Sopenharmony_ci
48818c2ecf20Sopenharmony_ci#define WCN36XX_HAL_GTK_KEK_BYTES 16
48828c2ecf20Sopenharmony_ci#define WCN36XX_HAL_GTK_KCK_BYTES 16
48838c2ecf20Sopenharmony_ci
48848c2ecf20Sopenharmony_ci#define WCN36XX_HAL_GTK_OFFLOAD_FLAGS_DISABLE (1 << 0)
48858c2ecf20Sopenharmony_ci
48868c2ecf20Sopenharmony_ci#define GTK_SET_BSS_KEY_TAG  0x1234AA55
48878c2ecf20Sopenharmony_ci
48888c2ecf20Sopenharmony_cistruct wcn36xx_hal_gtk_offload_req_msg {
48898c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
48908c2ecf20Sopenharmony_ci
48918c2ecf20Sopenharmony_ci	/* optional flags */
48928c2ecf20Sopenharmony_ci	u32 flags;
48938c2ecf20Sopenharmony_ci
48948c2ecf20Sopenharmony_ci	/* Key confirmation key */
48958c2ecf20Sopenharmony_ci	u8 kck[WCN36XX_HAL_GTK_KCK_BYTES];
48968c2ecf20Sopenharmony_ci
48978c2ecf20Sopenharmony_ci	/* key encryption key */
48988c2ecf20Sopenharmony_ci	u8 kek[WCN36XX_HAL_GTK_KEK_BYTES];
48998c2ecf20Sopenharmony_ci
49008c2ecf20Sopenharmony_ci	/* replay counter */
49018c2ecf20Sopenharmony_ci	u64 key_replay_counter;
49028c2ecf20Sopenharmony_ci
49038c2ecf20Sopenharmony_ci	u8 bss_index;
49048c2ecf20Sopenharmony_ci};
49058c2ecf20Sopenharmony_ci
49068c2ecf20Sopenharmony_cistruct wcn36xx_hal_gtk_offload_rsp_msg {
49078c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
49088c2ecf20Sopenharmony_ci
49098c2ecf20Sopenharmony_ci	/* success or failure */
49108c2ecf20Sopenharmony_ci	u32 status;
49118c2ecf20Sopenharmony_ci
49128c2ecf20Sopenharmony_ci	u8 bss_index;
49138c2ecf20Sopenharmony_ci};
49148c2ecf20Sopenharmony_ci
49158c2ecf20Sopenharmony_cistruct wcn36xx_hal_gtk_offload_get_info_req_msg {
49168c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
49178c2ecf20Sopenharmony_ci	u8 bss_index;
49188c2ecf20Sopenharmony_ci};
49198c2ecf20Sopenharmony_ci
49208c2ecf20Sopenharmony_cistruct wcn36xx_hal_gtk_offload_get_info_rsp_msg {
49218c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
49228c2ecf20Sopenharmony_ci
49238c2ecf20Sopenharmony_ci	/* success or failure */
49248c2ecf20Sopenharmony_ci	u32 status;
49258c2ecf20Sopenharmony_ci
49268c2ecf20Sopenharmony_ci	/* last rekey status when the rekey was offloaded */
49278c2ecf20Sopenharmony_ci	u32 last_rekey_status;
49288c2ecf20Sopenharmony_ci
49298c2ecf20Sopenharmony_ci	/* current replay counter value */
49308c2ecf20Sopenharmony_ci	u64 key_replay_counter;
49318c2ecf20Sopenharmony_ci
49328c2ecf20Sopenharmony_ci	/* total rekey attempts */
49338c2ecf20Sopenharmony_ci	u32 total_rekey_count;
49348c2ecf20Sopenharmony_ci
49358c2ecf20Sopenharmony_ci	/* successful GTK rekeys */
49368c2ecf20Sopenharmony_ci	u32 gtk_rekey_count;
49378c2ecf20Sopenharmony_ci
49388c2ecf20Sopenharmony_ci	/* successful iGTK rekeys */
49398c2ecf20Sopenharmony_ci	u32 igtk_rekey_count;
49408c2ecf20Sopenharmony_ci
49418c2ecf20Sopenharmony_ci	u8 bss_index;
49428c2ecf20Sopenharmony_ci};
49438c2ecf20Sopenharmony_ci
49448c2ecf20Sopenharmony_cistruct dhcp_info {
49458c2ecf20Sopenharmony_ci	/* Indicates the device mode which indicates about the DHCP activity */
49468c2ecf20Sopenharmony_ci	u8 device_mode;
49478c2ecf20Sopenharmony_ci
49488c2ecf20Sopenharmony_ci	u8 addr[ETH_ALEN];
49498c2ecf20Sopenharmony_ci};
49508c2ecf20Sopenharmony_ci
49518c2ecf20Sopenharmony_cistruct dhcp_ind_status {
49528c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
49538c2ecf20Sopenharmony_ci
49548c2ecf20Sopenharmony_ci	/* success or failure */
49558c2ecf20Sopenharmony_ci	u32 status;
49568c2ecf20Sopenharmony_ci};
49578c2ecf20Sopenharmony_ci
49588c2ecf20Sopenharmony_ci/*
49598c2ecf20Sopenharmony_ci *   Thermal Mitigation mode of operation.
49608c2ecf20Sopenharmony_ci *
49618c2ecf20Sopenharmony_ci *  WCN36XX_HAL_THERMAL_MITIGATION_MODE_0 - Based on AMPDU disabling aggregation
49628c2ecf20Sopenharmony_ci *
49638c2ecf20Sopenharmony_ci *  WCN36XX_HAL_THERMAL_MITIGATION_MODE_1 - Based on AMPDU disabling aggregation
49648c2ecf20Sopenharmony_ci *  and reducing transmit power
49658c2ecf20Sopenharmony_ci *
49668c2ecf20Sopenharmony_ci *  WCN36XX_HAL_THERMAL_MITIGATION_MODE_2 - Not supported */
49678c2ecf20Sopenharmony_cienum wcn36xx_hal_thermal_mitigation_mode_type {
49688c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_MODE_INVALID = -1,
49698c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_MODE_0,
49708c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_MODE_1,
49718c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_MODE_2,
49728c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_MODE_MAX = WCN36XX_HAL_MAX_ENUM_SIZE,
49738c2ecf20Sopenharmony_ci};
49748c2ecf20Sopenharmony_ci
49758c2ecf20Sopenharmony_ci
49768c2ecf20Sopenharmony_ci/*
49778c2ecf20Sopenharmony_ci *   Thermal Mitigation level.
49788c2ecf20Sopenharmony_ci * Note the levels are incremental i.e WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_2 =
49798c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_0 +
49808c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_1
49818c2ecf20Sopenharmony_ci *
49828c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_0 - lowest level of thermal mitigation.
49838c2ecf20Sopenharmony_ci * This level indicates normal mode of operation
49848c2ecf20Sopenharmony_ci *
49858c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_1 - 1st level of thermal mitigation
49868c2ecf20Sopenharmony_ci *
49878c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_2 - 2nd level of thermal mitigation
49888c2ecf20Sopenharmony_ci *
49898c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_3 - 3rd level of thermal mitigation
49908c2ecf20Sopenharmony_ci *
49918c2ecf20Sopenharmony_ci * WCN36XX_HAL_THERMAL_MITIGATION_LEVEL_4 - 4th level of thermal mitigation
49928c2ecf20Sopenharmony_ci */
49938c2ecf20Sopenharmony_cienum wcn36xx_hal_thermal_mitigation_level_type {
49948c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_INVALID = -1,
49958c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_0,
49968c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_1,
49978c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_2,
49988c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_3,
49998c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_4,
50008c2ecf20Sopenharmony_ci	HAL_THERMAL_MITIGATION_LEVEL_MAX = WCN36XX_HAL_MAX_ENUM_SIZE,
50018c2ecf20Sopenharmony_ci};
50028c2ecf20Sopenharmony_ci
50038c2ecf20Sopenharmony_ci
50048c2ecf20Sopenharmony_ci/* WCN36XX_HAL_SET_THERMAL_MITIGATION_REQ */
50058c2ecf20Sopenharmony_cistruct set_thermal_mitigation_req_msg {
50068c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
50078c2ecf20Sopenharmony_ci
50088c2ecf20Sopenharmony_ci	/* Thermal Mitigation Operation Mode */
50098c2ecf20Sopenharmony_ci	enum wcn36xx_hal_thermal_mitigation_mode_type mode;
50108c2ecf20Sopenharmony_ci
50118c2ecf20Sopenharmony_ci	/* Thermal Mitigation Level */
50128c2ecf20Sopenharmony_ci	enum wcn36xx_hal_thermal_mitigation_level_type level;
50138c2ecf20Sopenharmony_ci};
50148c2ecf20Sopenharmony_ci
50158c2ecf20Sopenharmony_cistruct set_thermal_mitigation_resp {
50168c2ecf20Sopenharmony_ci
50178c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
50188c2ecf20Sopenharmony_ci
50198c2ecf20Sopenharmony_ci	/* status of the request */
50208c2ecf20Sopenharmony_ci	u32 status;
50218c2ecf20Sopenharmony_ci};
50228c2ecf20Sopenharmony_ci
50238c2ecf20Sopenharmony_ci/* Per STA Class B Statistics. Class B statistics are STA TX/RX stats
50248c2ecf20Sopenharmony_ci * provided to FW from Host via periodic messages */
50258c2ecf20Sopenharmony_cistruct stats_class_b_ind {
50268c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
50278c2ecf20Sopenharmony_ci
50288c2ecf20Sopenharmony_ci	/* Duration over which this stats was collected */
50298c2ecf20Sopenharmony_ci	u32 duration;
50308c2ecf20Sopenharmony_ci
50318c2ecf20Sopenharmony_ci	/* Per STA Stats */
50328c2ecf20Sopenharmony_ci
50338c2ecf20Sopenharmony_ci	/* TX stats */
50348c2ecf20Sopenharmony_ci	u32 tx_bytes_pushed;
50358c2ecf20Sopenharmony_ci	u32 tx_packets_pushed;
50368c2ecf20Sopenharmony_ci
50378c2ecf20Sopenharmony_ci	/* RX stats */
50388c2ecf20Sopenharmony_ci	u32 rx_bytes_rcvd;
50398c2ecf20Sopenharmony_ci	u32 rx_packets_rcvd;
50408c2ecf20Sopenharmony_ci	u32 rx_time_total;
50418c2ecf20Sopenharmony_ci};
50428c2ecf20Sopenharmony_ci
50438c2ecf20Sopenharmony_ci/* WCN36XX_HAL_PRINT_REG_INFO_IND */
50448c2ecf20Sopenharmony_cistruct wcn36xx_hal_print_reg_info_ind {
50458c2ecf20Sopenharmony_ci	struct wcn36xx_hal_msg_header header;
50468c2ecf20Sopenharmony_ci
50478c2ecf20Sopenharmony_ci	u32 count;
50488c2ecf20Sopenharmony_ci	u32 scenario;
50498c2ecf20Sopenharmony_ci	u32 reason;
50508c2ecf20Sopenharmony_ci
50518c2ecf20Sopenharmony_ci	struct {
50528c2ecf20Sopenharmony_ci		u32 addr;
50538c2ecf20Sopenharmony_ci		u32 value;
50548c2ecf20Sopenharmony_ci	} regs[];
50558c2ecf20Sopenharmony_ci} __packed;
50568c2ecf20Sopenharmony_ci
50578c2ecf20Sopenharmony_ci#endif /* _HAL_H_ */
5058