From 8f5b3fc8582583ae49d2dd9acf2984d1a80c6d8b Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 3 Aug 2022 06:02:31 -0700 Subject: [PATCH] fw-api: CL 19061926 - update fw common interface files Change-Id: I8c822fece3ac141e04f495ecf26c63256e2e66c4 WMI: add PDEV_FEATURESET_CMD msg def CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 13 ++- fw/wmi_unified.h | 276 ++++++++++++++++++++++++---------------------- fw/wmi_version.h | 2 +- 3 files changed, 157 insertions(+), 134 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index a35dd207a4e1..f1559276cb86 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1292,6 +1292,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ipa_link_stats_event_fixed_param, WMITLV_TAG_STRUC_wmi_ipa_link_stats, WMITLV_TAG_STRUC_wmi_ipa_per_mac_stats, + WMITLV_TAG_STRUC_wmi_pdev_featureset_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1796,6 +1797,7 @@ typedef enum { OP(WMI_WOW_COAP_DEL_KEEPALIVE_PATTERN_CMDID) \ OP(WMI_WOW_COAP_GET_BUF_INFO_CMDID) \ OP(WMI_COEX_DBAM_CMDID) \ + OP(WMI_PDEV_FEATURESET_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2100,8 +2102,7 @@ typedef enum { WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wlan_host_memory_chunk, host_mem_chunks, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_hw_mode_cmd_fixed_param, wmi_pdev_set_hw_mode_cmd_fixed_param, hw_mode, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_band_to_mac, band_to_mac, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_htt_msdu_idx_to_htt_msdu_qtype, htt_msdu_idx_to_qtype_map, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, feature_set_bitmap, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_htt_msdu_idx_to_htt_msdu_qtype, htt_msdu_idx_to_qtype_map, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_INIT_CMDID); @@ -4230,9 +4231,15 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FIPS_EXTEND_CMDID); /* FIPS mode set cmd */ #define WMITLV_TABLE_WMI_PDEV_FIPS_MODE_SET_CMDID(id,op,buf,len) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_fips_mode_set_cmd_fixed_param, wmi_pdev_fips_mode_set_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_fips_mode_set_cmd_fixed_param, wmi_pdev_fips_mode_set_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FIPS_MODE_SET_CMDID); +/* Featureset cmd */ +#define WMITLV_TABLE_WMI_PDEV_FEATURESET_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_featureset_cmd_fixed_param, wmi_pdev_featureset_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, feature_set_bitmap, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FEATURESET_CMDID); + /* get CCK ANI level */ #define WMITLV_TABLE_WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_ani_cck_config_cmd_fixed_param, wmi_pdev_get_ani_cck_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b5bdfb092206..32bac9fb24b8 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -136,32 +136,24 @@ extern "C" { } while(0) /* - * Below GET/SET BITS_FROM_ARRAY_LEN32_BYTES macros can be used when + * Below GET/SET BITS_ARRAY_LEN32_BYTES macros can be used when * reading/writting bits which are spread across array_len32 entries. * These can be used to GET/SET maximum of 32 bits only, * also array_len32 length should be limited to maximum of 32. */ -#define WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, _arrayp, _index, _num_bits) \ +#define WMI_GET_BITS_ARRAY_LEN32_BYTES(var, _arrayp, _index, _num_bits) \ do { \ - if ((((_index % 32) + _num_bits) / 32) != 0) { \ - A_UINT8 i; \ - for (i = 0; i < _num_bits; i++) { \ - (var) |= (WMI_GET_BITS(_arrayp[(_index+i) / 32], ((_index+i) % 32), 1) << i); \ - } \ - } else { \ - (var) = WMI_GET_BITS(_arrayp[_index / 32], (_index % 32), _num_bits); \ + A_UINT8 i; \ + for (i = 0; i < _num_bits; i++) { \ + (var) |= (WMI_GET_BITS(_arrayp[(_index+i) / 32], ((_index+i) % 32), 1) << i); \ } \ } while(0) -#define WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(_arrayp, _index, _num_bits, val) \ +#define WMI_SET_BITS_ARRAY_LEN32_BYTES(_arrayp, _index, _num_bits, val) \ do { \ - if ((((_index % 32) + _num_bits) / 32) != 0) { \ - A_UINT8 i; \ - for (i = 0; i < _num_bits; i++) { \ - WMI_SET_BITS(_arrayp[(_index+i) / 32], ((_index+i) % 32), 1, (val >> i)); \ - } \ - } else { \ - WMI_SET_BITS(_arrayp[_index / 32], (_index % 32), _num_bits, val); \ + A_UINT8 i; \ + for (i = 0; i < _num_bits; i++) { \ + WMI_SET_BITS(_arrayp[(_index+i) / 32], ((_index+i) % 32), 1, (val >> i)); \ } \ } while(0) @@ -517,6 +509,7 @@ typedef enum { WMI_PDEV_SET_BIOS_INTERFACE_CMDID, WMI_PDEV_FIPS_EXTEND_CMDID, WMI_PDEV_FIPS_MODE_SET_CMDID, + WMI_PDEV_FEATURESET_CMDID, /* VDEV (virtual device) specific commands */ /** vdev create */ @@ -4820,9 +4813,6 @@ typedef struct { * fill hw_mode_config's fields with 0x0. * wmi_pdev_band_to_mac band_to_mac[]; * wmi_htt_msdu_idx_to_htt_msdu_qtype htt_msdu_idx_to_qtype_map[]; - * A_UINT32 feature_set_bitmap[]; <-- Host supported feature info, - * array length is equal to - * WMI_FEATURE_SET_BITMAP_ARRAY_LEN32. */ } wmi_init_cmd_fixed_param; @@ -4839,6 +4829,11 @@ typedef enum { WMI_HOST_DBS_SBS = 2, /* When 2.4G + 5G, 2.4G + 6G, 5G + 6G & 5G + 5G is supported */ } WMI_BAND_CONCURRENCY; +typedef enum { + WMI_SISO = 1, /* When 1x1 is supported */ + WMI_MIMO_2X2 = 2, /* When 2x2 MIMO is supported */ +} WMI_NUM_ANTENNAS; + typedef enum { WMI_VENDOR1_REQ1_VERSION_3_00 = 0, WMI_VENDOR1_REQ1_VERSION_3_01 = 1, @@ -4854,256 +4849,265 @@ typedef enum { /* HW features supported info */ /* enum WMI_WIFI_STANDARD are possible values for WiFi standard bitfield */ #define WMI_GET_WIFI_STANDARD(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 0, 4) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 0, 4) #define WMI_SET_WIFI_STANDARD(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 0, 4, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 0, 4, val) /* enum WMI_BAND_CONCURRENCY are possible values for band concurrency support bitfield */ #define WMI_GET_BAND_CONCURRENCY_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 4, 3) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 4, 3) #define WMI_SET_BAND_CONCURRENCY_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 4, 3, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 4, 3, val) /* PNO feature supported info */ #define WMI_GET_PNO_SCAN_IN_UNASSOC_STATE(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 7, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 7, 1) #define WMI_SET_PNO_SCAN_IN_UNASSOC_STATE(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 7, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 7, 1, val) #define WMI_GET_PNO_SCAN_IN_ASSOC_STATE(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 8, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 8, 1) #define WMI_SET_PNO_SCAN_IN_ASSOC_STATE(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 8, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 8, 1, val) /* TWT feature supported info */ #define WMI_GET_TWT_FEATURE_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 9, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 9, 1) #define WMI_SET_TWT_FEATURE_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 9, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 9, 1, val) #define WMI_GET_TWT_REQUESTOR(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 10, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 10, 1) #define WMI_SET_TWT_REQUESTER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 10, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 10, 1, val) #define WMI_GET_TWT_BROADCAST(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 11, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 11, 1) #define WMI_SET_TWT_BROADCAST(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 11, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 11, 1, val) #define WMI_GET_TWT_FLEXIBLE(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 12, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 12, 1) #define WMI_SET_TWT_FLEXIBLE(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 12, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 12, 1, val) /* WIFI optimizer feature supported info */ #define WMI_GET_WIFI_OPT_FEATURE_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 13, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 13, 1) #define WMI_SET_WIFI_OPT_FEATURE_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 13, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 13, 1, val) /* RFC8325 feature supported info */ #define WMI_GET_RFC8325_FEATURE_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 14, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 14, 1) #define WMI_SET_RFC8325_FEATURE_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 14, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 14, 1, val) /* MHS feature supported info */ #define WMI_GET_MHS_5G_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 15, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 15, 1) #define WMI_SET_MHS_5G_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 15, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 15, 1, val) #define WMI_GET_MHS_6G_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 16, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 16, 1) #define WMI_SET_MHS_6G_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 16, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 16, 1, val) #define WMI_GET_MHS_MAX_CLIENTS_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 17, 8) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 17, 8) #define WMI_SET_MHS_MAX_CLIENTS_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 17, 8, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 17, 8, val) #define WMI_GET_MHS_SET_COUNTRY_CODE_HAL_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 25, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 25, 1) #define WMI_SET_MHS_SET_COUNTRY_CODE_HAL_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 25, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 25, 1, val) #define WMI_GET_MHS_GETVALID_CHANNELS_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 26, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 26, 1) #define WMI_SET_MHS_GETVALID_CHANNELS_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 26, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 26, 1, val) /* enum WMI_WIFI_STANDARD are possible values for MHS DOT11 mode support bitfield */ #define WMI_GET_MHS_DOT11_MODE_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 27, 4) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 27, 4) #define WMI_SET_MHS_DOT11_MODE_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 27, 4, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 27, 4, val) #define WMI_GET_MHS_WPA3_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 31, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 31, 1) #define WMI_SET_MHS_WPA3_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 31, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 31, 1, val) /* Vendor requirement1 supported verison info */ /* enum's WMI_VENDORxx_REQxx_VERSION are the possible vaues for below bitfield*/ #define WMI_GET_VENDOR_REQ_1_VERSION(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 32, 8) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 32, 8) #define WMI_SET_VENDOR_REQ_1_VERSION(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 32, 8, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 32, 8, val) /* Roaming feature supported info */ #define WMI_GET_ROAMING_HIGH_CU_ROAM_TRIGGER(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 40, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 40, 1) #define WMI_SET_ROAMING_HIGH_CU_ROAM_TRIGGER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 40, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 40, 1, val) #define WMI_GET_ROAMING_EMERGENCY_TRIGGER(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 41, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 41, 1) #define WMI_SET_ROAMING_EMERGENCY_TRIGGER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 41, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 41, 1, val) #define WMI_GET_ROAMING_BTM_TRIGGER(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 42, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 42, 1) #define WMI_SET_ROAMING_BTM_TRIGGER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 42, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 42, 1, val) #define WMI_GET_ROAMING_IDLE_TRIGGER(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 43, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 43, 1) #define WMI_SET_ROAMING_IDLE_TRIGGER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 43, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 43, 1, val) #define WMI_GET_ROAMING_WTC_TRIGGER(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 44, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 44, 1) #define WMI_SET_ROAMING_WTC_TRIGGER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 44, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 44, 1, val) #define WMI_GET_ROAMING_BTCOEX_TRIGGER(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 45, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 45, 1) #define WMI_SET_ROAMING_BTCOEX_TRIGGER(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 45, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 45, 1, val) #define WMI_GET_ROAMING_BTW_WPA_WPA2(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 46, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 46, 1) #define WMI_SET_ROAMING_BTW_WPA_WPA2(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 46, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 46, 1, val) #define WMI_GET_ROAMING_MANAGE_CHAN_LIST_API(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 47, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 47, 1) #define WMI_SET_ROAMING_MANAGE_CHAN_LIST_API(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 47, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 47, 1, val) #define WMI_GET_ROAMING_ADAPTIVE_11R(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 48, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 48, 1) #define WMI_SET_ROAMING_ADAPTIVE_11R(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 48, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 48, 1, val) #define WMI_GET_ROAMING_CTRL_API_GET_SET(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 49, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 49, 1) #define WMI_SET_ROAMING_CTRL_API_GET_SET(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 49, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 49, 1, val) #define WMI_GET_ROAMING_CTRL_API_REASSOC(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 50, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 50, 1) #define WMI_SET_ROAMING_CTRL_API_REASSOC(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 50, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 50, 1, val) #define WMI_GET_ROAMING_CTRL_GET_CU(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 51, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 51, 1) #define WMI_SET_ROAMING_CTRL_GET_CU(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 51, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 51, 1, val) /* Vendor requirement2 supported verison info */ /* enum's WMI_VENDORxx_REQxx_VERSION are the possible vaues for below bitfield*/ #define WMI_GET_VENDOR_REQ_2_VERSION(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 52, 8) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 52, 8) #define WMI_SET_VENDOR_REQ_2_VERSION(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 52, 8, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 52, 8, val) #define WMI_GET_ASSURANCE_DISCONNECT_REASON_API(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 60, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 60, 1) #define WMI_SET_ASSURANCE_DISCONNECT_REASON_API(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 60, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 60, 1, val) /* Frame pcap logging */ #define WMI_GET_FRAME_PCAP_LOG_MGMT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 61, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 61, 1) #define WMI_SET_FRAME_PCAP_LOG_MGMT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 61, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 61, 1, val) #define WMI_GET_FRAME_PCAP_LOG_CTRL(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 62, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 62, 1) #define WMI_SET_FRAME_PCAP_LOG_CTRL(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 62, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 62, 1, val) #define WMI_GET_FRAME_PCAP_LOG_DATA(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 63, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 63, 1) #define WMI_SET_FRAME_PCAP_LOG_DATA(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 63, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 63, 1, val) /* Security features supported info */ #define WMI_GET_SECURITY_WPA3_SAE_H2E(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 64, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 64, 1) #define WMI_SET_SECURITY_WPA3_SAE_H2E(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 64, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 64, 1, val) #define WMI_GET_SECURITY_WPA3_SAE_FT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 65, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 65, 1) #define WMI_SET_SECURITY_WPA3_SAE_FT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 65, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 65, 1, val) #define WMI_GET_SECURITY_WPA3_ENTERP_SUITEB(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 66, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 66, 1) #define WMI_SET_SECURITY_WPA3_ENTERP_SUITEB(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 66, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 66, 1, val) #define WMI_GET_SECURITY_WPA3_ENTERP_SUITEB_192bit(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 67, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 67, 1) #define WMI_SET_SECURITY_WPA3_ENTERP_SUITEB_192bit(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 67, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 67, 1, val) #define WMI_GET_SECURITY_FILS_SHA256(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 68, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 68, 1) #define WMI_SET_SECURITY_FILS_SHA256(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 68, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 68, 1, val) #define WMI_GET_SECURITY_FILS_SHA384(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 69, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 69, 1) #define WMI_SET_SECURITY_FILS_SHA384(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 69, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 69, 1, val) #define WMI_GET_SECURITY_FILS_SHA256_FT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 70, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 70, 1) #define WMI_SET_SECURITY_FILS_SHA256_FT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 70, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 70, 1, val) #define WMI_GET_SECURITY_FILS_SHA384_FT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 71, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 71, 1) #define WMI_SET_SECURITY_FILS_SHA384_FT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 71, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 71, 1, val) #define WMI_GET_SECURITY_ENCHANCED_OPEN(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 72, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 72, 1) #define WMI_SET_SECURITY_ENCHANCED_OPEN(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 72, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 72, 1, val) /* Peer protocol features supported info */ #define WMI_GET_NAN_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 73, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 73, 1) #define WMI_SET_NAN_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 73, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 73, 1, val) #define WMI_GET_TDLS_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 74, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 74, 1) #define WMI_SET_TDLS_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 74, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 74, 1, val) #define WMI_GET_P2P6E_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 75, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 75, 1) #define WMI_SET_P2P6E_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 75, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 75, 1, val) #define WMI_GET_TDLS_OFFCHAN_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 76, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 76, 1) #define WMI_SET_TDLS_OFFCHAN_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 76, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 76, 1, val) #define WMI_GET_TDLS_CAP_ENHANCE(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 77, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 77, 1) #define WMI_SET_TDLS_CAP_ENHANCE(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 77, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 77, 1, val) #define WMI_GET_MAX_TDLS_PEERS_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 78, 4) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 78, 4) #define WMI_SET_MAX_TDLS_PEERS_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 78, 4, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 78, 4, val) #define WMI_GET_STA_DUAL_P2P_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 82, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 82, 1) #define WMI_SET_STA_DUAL_P2P_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 82, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 82, 1, val) /* Big data feature supported info */ #define WMI_GET_PEER_BIGDATA_GETBSSINFO_API_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 83, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 83, 1) #define WMI_SET_PEER_BIGDATA_GETBSSINFO_API_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 83, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 83, 1, val) #define WMI_GET_PEER_BIGDATA_GETASSOCREJECTINFO_API_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 84, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 84, 1) #define WMI_SET_PEER_BIGDATA_GETASSOCREJECTINFO_API_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 84, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 84, 1, val) #define WMI_GET_PEER_BIGDATA_GETSTAINFO_API_SUPPORT(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 85, 1) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 85, 1) #define WMI_SET_PEER_BIGDATA_GETSTAINFO_API_SUPPORT(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 85, 1, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 85, 1, val) /* Feature set requirement supported version info */ #define WMI_GET_FEATURE_SET_VERSION(var, feature_bitmap) \ - WMI_GET_BITS_FROM_ARRAY_LEN32_BYTES(var, feature_bitmap, 86, 16) + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 86, 16) #define WMI_SET_FEATURE_SET_VERSION(feature_bitmap, val) \ - WMI_SET_BITS_FROM_ARRAY_LEN32_BYTES(feature_bitmap, 86, 16, val) + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 86, 16, val) + +/* + * enum WMI_NUM_ANTENNAS are possible values for number of antennas supported bitfield. + * Bitfield value 0 means invalid, 1 means SISO, 2 means MIMO, and values 3+ are reserved. + */ +#define WMI_GET_NUM_ANTENNAS(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 102, 4) +#define WMI_SET_NUM_ANTENNAS(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 102, 4, val) /* * Specify how many A_UINT32 words are needed to hold the feature bitmap flags. @@ -28342,6 +28346,17 @@ typedef struct { A_UINT32 fips_mode_set; /*FIPS_MODE_ENABLE -Enable, FIPS_MODE_DISABLE -disable */ } wmi_pdev_fips_mode_set_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_featureset_cmd_fixed_param */ + +/* + * Following this structure are the TLVs: + * A_UINT32 feature_set_bitmap[]; <-- Host supported feature info, + * array length is equal to + * WMI_FEATURE_SET_BITMAP_ARRAY_LEN32. + */ +} wmi_pdev_featureset_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_smart_ant_enable_cmd_fixed_param */ union { @@ -32292,6 +32307,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_WOW_COAP_DEL_KEEPALIVE_PATTERN_CMDID); WMI_RETURN_STRING(WMI_WOW_COAP_GET_BUF_INFO_CMDID); WMI_RETURN_STRING(WMI_COEX_DBAM_CMDID); + WMI_RETURN_STRING(WMI_PDEV_FEATURESET_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index adea481d07f3..4333a3b0a27b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1187 +#define __WMI_REVISION_ 1188 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work