diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index 55acf09a62..e6515ca624 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -1435,6 +1435,7 @@ typedef enum { #define WMI_CHAN_FLAG_QUARTER_RATE 15 /* Indicates quarter rate channel */ /* Enable radar event reporting for sec80 in VHT80p80 */ #define WMI_CHAN_FLAG_DFS_CFREQ2 16 +#define WMI_CHAN_FLAG_ALLOW_HE 17 /* HE (11ax) is allowed on this channel */ #define WMI_SET_CHANNEL_FLAG(pwmi_channel, flag) do { \ (pwmi_channel)->info |= (1 << flag); \ @@ -1614,12 +1615,12 @@ enum { * 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 | + * | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | *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 | + * | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | PPET8 | PPET16 | *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 | * @@ -1630,22 +1631,22 @@ enum { * 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) \ +#define WMI_SET_PPET16(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) \ +#define WMI_GET_PPET16(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) \ +#define WMI_SET_PPET8(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) \ +#define WMI_GET_PPET8(ppet16_ppet8_ru3_ru0, ru, nssm1) \ ((ppet16_ppet8_ru3_ru0[nssm1] >> (((ru-1)%4)*6+3))&7) typedef struct _wmi_ppe_threshold { @@ -5563,6 +5564,46 @@ typedef enum { WMI_VDEV_PARAM_RX_FILTER, /* vdev-specific mgmt tx power in dBm units (signed integer value) */ WMI_VDEV_PARAM_MGMT_TX_POWER, + + /* + * === ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === + * The below vdev param types are used for prototyping, and are + * prone to change. + */ + WMI_VDEV_PARAM_PROTOTYPE = 0x8000, + /* 11AX SPECIFIC defines */ + WMI_VDEV_PARAM_BSS_COLOR, + /* In case of AP this will enable / disable MU-MIMO mode */ + WMI_VDEV_PARAM_SET_UL_MU_MIMO, + /* + * set fragmentation level of the vdev's peers. + * Values can be WMI_HE_FRAG_SUPPORT_LEVEL0..WMI_HE_FRAG_SUPPORT_LEVEL3 + */ + WMI_VDEV_PARAM_SET_FRAG_LEVEL, + /* + * control different features of HEControl: + * Bit 0:- 1/0-> Enable/Disable transmssion of UL scheduling. + * Bit 1:- 1/0-> Enable / disable honoring of ROMI from a peer. + * Applicable in AP mode only. + */ + WMI_VDEV_PARAM_SET_HECONTROL, + /* + * enable / disable trigger access for a AP vdev's peers. + * For a STA mode vdev this will enable/disable triggered access + * and enable/disable Multi User mode of operation. + */ + WMI_VDEV_PARAM_SET_HEMU_MODE, + /* + * For Tx OFDMA this will set values of CP length or guard interval + * to be + * 0: Auto + * 1: 0.8 us + * 2: 1.6 us + * 3: 3.2 us + * Similar to Guard Interval + */ + WMI_VDEV_PARAM_TX_OFDMA_CPLEN, + /*=== END VDEV_PARAM_PROTOTYPE SECTION ===*/ } WMI_VDEV_PARAM; /* vdev capabilities bit mask */ @@ -8526,11 +8567,16 @@ typedef struct { A_UINT32 pattern_type; } WMI_WOW_DEL_PATTERN_CMD_fixed_param; +#define WMI_WOW_MAX_EVENT_BM_LEN 4 + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_WOW_ADD_DEL_EVT_CMD_fixed_param */ A_UINT32 vdev_id; A_UINT32 is_add; - A_UINT32 event_bitmap; + union { + A_UINT32 event_bitmap; + A_UINT32 event_bitmaps[WMI_WOW_MAX_EVENT_BM_LEN]; + }; } WMI_WOW_ADD_DEL_EVT_CMD_fixed_param; /* @@ -9802,6 +9848,11 @@ enum wmm_ac_downgrade_policy { WMM_AC_DOWNGRADE_INVALID, }; +/* WMM EDCA Params type */ +#define WMM_PARAM_TYPE_LEGACY 0 +/* Relaxed EDCA parameters for 11ax to be used in case of triggered access */ +#define WMM_PARAM_TYPE_11AX_EDCA 1 + typedef struct { A_UINT32 tlv_header; A_UINT32 cwmin; @@ -9816,6 +9867,7 @@ typedef struct { A_UINT32 tlv_header; A_UINT32 vdev_id; wmi_wmm_vparams wmm_params[4]; /* 0 be, 1 bk, 2 vi, 3 vo */ + A_UINT32 wmm_param_type; /* see WMM_PARAM_TYPE_xxx defs */ } wmi_vdev_set_wmm_params_cmd_fixed_param; typedef struct { @@ -14501,7 +14553,7 @@ typedef struct { } wmi_roam_configure_mawc_cmd_fixed_param; #define WMI_PACKET_FILTER_COMPARE_DATA_LEN_DWORD 2 -#define WMI_PACKET_FILTER_MAX_CMP_PER_PACKET_FILTER 10 +#define WMI_PACKET_FILTER_MAX_CMP_PER_PACKET_FILTER 5 typedef enum { PACKET_FILTER_TYPE_INVALID = 0, @@ -14573,6 +14625,13 @@ typedef struct { A_UINT32 num_params; /* how many entries in paramsData are valid */ A_UINT32 coalesce_time; /* not currently used - fill with 0x0 */ WMI_PACKET_FILTER_PARAMS_TYPE paramsData[WMI_PACKET_FILTER_MAX_CMP_PER_PACKET_FILTER]; + /* + * deprecated0: + * This field simply provides filler space to retain the + * original message format while reducing + * WMI_PACKET_FILTER_MAX_CMP_PER_PACKET_FILTER from 10 to 5. + */ + WMI_PACKET_FILTER_PARAMS_TYPE deprecated0[5]; } WMI_PACKET_FILTER_CONFIG_CMD_fixed_param; /* enable / disable all filters within the specified vdev */ diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index 5d0b62b398..69544f6760 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_ 256 +#define __WMI_REVISION_ 258 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work