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