diff --git a/target/inc/dbglog_id.h b/target/inc/dbglog_id.h index 171701a023..e6855e74e3 100644 --- a/target/inc/dbglog_id.h +++ b/target/inc/dbglog_id.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -580,7 +580,42 @@ extern "C" { #define SCAN_FWLOG_EVENT_RESTARTED 10 #define SCAN_FWLOG_EVENT_COMPLETED 11 #define SCAN_SM_REQ_NEXT_CH 12 -#define SCAN_DBGID_DEFINITION_END 13 +#define SCAN_ENG_START 13 +#define SCAN_ENG_CANCEL 14 +#define SCAN_ENG_SPOOFED_MAC_ADDR 15 +#define SCAN_ENG_PARAM_1 16 +#define SCAN_ENG_PARAM_2 17 +#define SCAN_ENG_MAX_SCAN_TIMEOUT 18 +#define SCAN_ENG_START_IN_PROGRESS 19 +#define SCAN_SM_START_COMMAND_FAILED 20 +#define SCAN_SCH_START 21 +#define SCAN_SCH_START_INFO 22 +#define SCAN_SCH_START_NEW_REQ_FAILED 23 +#define SCAN_SCH_START_ALLOC_FAIL 24 +#define SCAN_SCH_ENGINE_STOP_DUE_TO_TIMEOUT 25 +#define SCAN_SCH_POLICY_EVENT 26 +#define SCAN_SCH_CANCEL 27 +#define SCAN_SCH_STOP_COMMAND_FAILED 28 +#define SCAN_SCH_NEXT_SCAN_FAILED 29 +#define SCAN_WMI_SET_CHAN_LIST 30 +#define SCAN_EVENT_STARTED 31 +#define SCAN_EVENT_BSS_CHANNEL 32 +#define SCAN_EVENT_FOREIGN_CHANNEL 33 +#define SCAN_EVENT_DEQUEUED 34 +#define SCAN_EVENT_START_FAILED 35 +#define SCAN_EVENT_FOREIGN_CHANNEL_EXIT 36 +#define SCAN_SM_DISPATCH 37 +#define SCAN_SM_TRANSITIONS 38 +#define SCAN_SM_REQ_NEXT_CHAN 39 +#define SCAN_SEND_PROBE_REQ_RET_VDEV 40 +#define SCAN_SEND_PROBE_REQ_RET_PLM 41 +#define SCAN_SEND_PROBE_REQ_RET_PASSIVE 42 +#define SCAN_SEND_PROBE_REQ_RET_RADAR 43 +#define SCAN_SEND_PROBE_REQ_RET_DFS 44 +#define SCAN_SEND_PROBE_REQ_INFO 45 +#define SCAN_SM_CANCEL 46 +#define SCAN_SM_PROBE_REQ_FRAME_SEND_FAILED 47 +#define SCAN_DBGID_DEFINITION_END 48 #define BEACON_EVENT_SWBA_SEND_FAILED 0 #define BEACON_EVENT_EARLY_RX_BMISS_STATUS 1 @@ -1531,6 +1566,7 @@ extern "C" { #define EXTSCAN_NOTIFY_HOTLIST_MATCH 38 #define EXTSCAN_CONFIG_HOTLIST_TABLE 39 #define EXTSCAN_CONFIG_WLAN_CHANGE_TABLE 40 +#define EXTSCAN_EVENT_SEND_FAILED 41 /* NLO DBGIDs */ #define NLO_DBGID_SSID_TO_BE_SCANNED_LIST 0 diff --git a/target/inc/wlan_defs.h b/target/inc/wlan_defs.h index 8369bfb939..2a60036753 100644 --- a/target/inc/wlan_defs.h +++ b/target/inc/wlan_defs.h @@ -55,6 +55,10 @@ #define CONFIG_160MHZ_SUPPORT 0 #endif +#ifndef SUPPORT_11AX +#define SUPPORT_11AX 0 /* 11ax not supported by default */ +#endif + typedef enum { MODE_11A = 0, /* 11a Mode */ MODE_11G = 1, /* 11b/g Mode */ @@ -75,9 +79,29 @@ typedef enum { MODE_11AC_VHT160 = 15, #endif +#if SUPPORT_11AX + MODE_11AX_HE20 = 16, + MODE_11AX_HE40 = 17, + MODE_11AX_HE80 = 18, + MODE_11AX_HE80_80 = 19, + MODE_11AX_HE160 = 20, + MODE_11AX_HE20_2G = 21, + MODE_11AX_HE40_2G = 22, + MODE_11AX_HE80_2G = 23, +#endif + + /* + * MODE_UNKNOWN should not be used within the host / target interface. + * Thus, it is permissible for ODE_UNKNOWN to be conditionally-defined, + * taking different values when compiling for different targets. + */ + MODE_UNKNOWN, - MODE_UNKNOWN_NO_160MHZ_SUPPORT = 14, - MODE_UNKNOWN_160MHZ_SUPPORT = 16, + MODE_UNKNOWN_NO_160MHZ_SUPPORT = 14, /* not needed? */ + /* MODE_UNKNOWN_NO_11AX_SUPPORT = 16,*/ /* not needed? */ + /* MODE_UNKNOWN_11AX_SUPPORT = 24,*/ /* not needed? */ + MODE_UNKNOWN_160MHZ_SUPPORT = MODE_UNKNOWN, /* not needed? */ + MODE_MAX = MODE_UNKNOWN, MODE_MAX_NO_160_MHZ_SUPPORT = MODE_UNKNOWN_NO_160MHZ_SUPPORT, MODE_MAX_160_MHZ_SUPPORT = MODE_UNKNOWN_160MHZ_SUPPORT, diff --git a/target/inc/wmi.h b/target/inc/wmi.h index 6645ebac19..e7fec58b29 100644 --- a/target/inc/wmi.h +++ b/target/inc/wmi.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2010, 2013-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2004-2010, 2013-2014, 2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -151,6 +151,7 @@ typedef enum { WMI_11NG_CAPABILITY = 5, WMI_11NAG_CAPABILITY = 6, WMI_11AC_CAPABILITY = 7, + WMI_11AX_CAPABILITY = 8, /* END CAPABILITY */ WMI_11N_CAPABILITY_OFFSET = (WMI_11NA_CAPABILITY - WMI_11A_CAPABILITY), diff --git a/target/inc/wmi_services.h b/target/inc/wmi_services.h index 9e76ddb209..c6b3acc1f2 100644 --- a/target/inc/wmi_services.h +++ b/target/inc/wmi_services.h @@ -147,6 +147,7 @@ typedef enum { WMI_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES, WMI_SERVICE_NAN_DATA, /* FW supports NAN data */ WMI_SERVICE_NAN_RTT, /* FW supports NAN RTT */ + WMI_SERVICE_11AX, /* FW supports 802.11ax */ WMI_MAX_SERVICE = 128 /* max service */ } WMI_SERVICE; diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index fbf9404d9b..a031d93a3e 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -1528,6 +1528,64 @@ typedef enum { #define WMI_VHT_MAX_SUPP_RATE_MASK 0x1fff0000 #define WMI_VHT_MAX_SUPP_RATE_MASK_SHIFT 16 +/** 11ax capabilities */ +#define WMI_HE_CAP_PPE_PRESENT 0x00000001 +#define WMI_HE_CAP_TWT_RESPONDER_SUPPORT 0x00000002 +#define WMI_HE_CAP_TWT_REQUESTER_SUPPORT 0x00000004 +#define WMI_HE_FRAG_SUPPORT_MASK 0x00000018 +#define WMI_HE_FRAG_SUPPORT_SHIFT 3 +/** NOTE: This defs cannot be changed in the future without + * breaking WMI compatibility + */ +#define WMI_MAX_NUM_SS 8 +#define WMI_MAX_NUM_RU 4 + +/* + * Figure 8 554ae: -PPE Threshold Info field format + * we pack PPET16 and PPT8 for four RU's in one element of array. + * + * ppet16_ppet8_ru3_ru0 array element 0 holds: + * | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | + *rsvd |NSS1,RU4|NSS1,RU4|NSS1,RU3|NSS1,RU3|NSS1,RU2|NSS1,RU2|NSS1,RU1|NSS1,RU1| + *31:23| 22:20 | 19:17 | 17:15 | 14:12 | 11:9 | 8:6 | 5:3 | 2:0 | + * + * ppet16_ppet8_ru3_ru0 array element 1 holds: + * | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | + *rsvd |NSS2,RU4|NSS2,RU4|NSS2,RU3|NSS2,RU3|NSS2,RU2|NSS2,RU2|NSS2,RU1|NSS2,RU1| + *31:23| 22:20 | 19:17 | 17:15 | 14:12 | 11:9 | 8:6 | 5:3 | 2:0 | + * + * etc. + */ + +/* + * Note that in these macros, "ru" is one-based, not zero-based, while + * nssm1 is zero-based. + */ +#define WMI_SET_PPET8(ppet16_ppet8_ru3_ru0, ppet, ru, nssm1) \ + do { \ + ppet16_ppet8_ru3_ru0[nssm1] &= ~(7 << (((ru-1)%4)*6)); \ + ppet16_ppet8_ru3_ru0[nssm1] |= ((ppet&7) << (((ru-1)%4)*6)); \ + } while (0) + +#define WMI_GET_PPET8(ppet16_ppet8_ru3_ru0, ru, nssm1) \ + ((ppet16_ppet8_ru3_ru0[nssm1] >> (((ru-1)%4)*6))&7) + +#define WMI_SET_PPET16(ppet16_ppet8_ru3_ru0, ppet, ru, nssm1) \ + do { \ + ppet16_ppet8_ru3_ru0[nssm1] &= ~(7 << (((ru-1)%4)*6+3)); \ + ppet16_ppet8_ru3_ru0[nssm1] |= ((ppet&7) << (((ru-1)%4)*6+3)); \ + } while (0) + +#define WMI_GET_PPET16(ppet16_ppet8_ru3_ru0, ru, nssm1) \ + ((ppet16_ppet8_ru3_ru0[nssm1] >> (((ru-1)%4)*6+3))&7) + +typedef struct _wmi_ppe_threshold { + A_UINT32 numss_m1; /** NSS - 1*/ + A_UINT32 ru_count; /** Max RU count */ + /** ppet8 and ppet16 for max num ss */ + A_UINT32 ppet16_ppet8_ru3_ru0[WMI_MAX_NUM_SS]; +} wmi_ppe_threshold; + /* WMI_SYS_CAPS_* refer to the capabilities that system support */ #define WMI_SYS_CAP_ENABLE 0x00000001 @@ -1749,6 +1807,9 @@ typedef struct { A_UINT32 default_conc_scan_config_bits; /* which WMI_DBS_FW_MODE_CFG setting the FW is initialized with */ A_UINT32 default_fw_config_bits; + wmi_ppe_threshold ppet; + /* see section 8.4.2.213 from draft r8 of 802.11ax */ + A_UINT32 he_cap_info; } wmi_service_ready_ext_event_fixed_param; typedef enum { @@ -6355,6 +6416,11 @@ typedef struct { * set to 0 by host */ A_UINT32 peer_bw_rxnss_override; + /* 802.11ax capabilities */ + wmi_ppe_threshold peer_ppet; + /* protocol-defined HE / 11ax capability flags */ + A_UINT32 peer_he_cap_info; + A_UINT32 peer_he_ops; /* HE operation contains BSS color */ /* Following this struc are the TLV's: * A_UINT8 peer_legacy_rates[]; * A_UINT8 peer_ht_rates[]; diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index 01ec993d66..29cafa11fb 100644 --- a/target/inc/wmi_version.h +++ b/target/inc/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility */ -#define __WMI_REVISION_ 207 +#define __WMI_REVISION_ 208 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work