From 1f96b4af3432ba21004f8b448beee2ac1dd1ce80 Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Wed, 22 Aug 2018 14:47:11 -0700 Subject: [PATCH] qcacld-3.0: Add support for 11ax draft3.0 spec Add support for 11ax draft3.0 spec. Change-Id: I272d9f4ec6b3a2a23ad708265dd0afaf289c1b95 CRs-Fixed: 2294255 --- Kbuild | 2 +- core/hdd/src/wlan_hdd_he.c | 47 +- core/mac/inc/sir_mac_prot_def.h | 178 +- core/mac/inc/wni_cfg.h | 82 +- core/mac/src/cfg/cfgUtil/dot11f.frms | 57 +- core/mac/src/cfg/cfg_param_name.c | 16 +- core/mac/src/cfg/cfg_proc_msg.c | 81 +- core/mac/src/include/dot11f.h | 83 +- core/mac/src/pe/lim/lim_utils.c | 108 +- .../mac/src/sys/legacy/src/utils/src/dot11f.c | 1940 +++++++++-------- .../src/sys/legacy/src/utils/src/parser_api.c | 52 +- core/sme/src/csr/csr_api_roam.c | 45 +- core/wma/inc/wma_api.h | 4 +- core/wma/inc/wma_he.h | 20 +- core/wma/src/wma_he.c | 360 +-- core/wma/src/wma_main.c | 31 +- 16 files changed, 1765 insertions(+), 1341 deletions(-) mode change 100755 => 100644 Kbuild diff --git a/Kbuild b/Kbuild old mode 100755 new mode 100644 index 085db373489d..28f42de7190a --- a/Kbuild +++ b/Kbuild @@ -14,7 +14,6 @@ ifeq ($(KERNEL_BUILD), y) WLAN_COMMON_ROOT := ../qca-wifi-host-cmn WLAN_COMMON_INC := $(WLAN_ROOT)/$(WLAN_COMMON_ROOT) endif - WLAN_COMMON_ROOT ?= ../qca-wifi-host-cmn WLAN_COMMON_INC ?= $(WLAN_ROOT)/$(WLAN_COMMON_ROOT) @@ -2214,6 +2213,7 @@ endif cppflags-$(CONFIG_WLAN_FEATURE_11AX) += -DWLAN_FEATURE_11AX cppflags-$(CONFIG_WLAN_FEATURE_11AX) += -DWLAN_FEATURE_11AX_BSS_COLOR +cppflags-$(CONFIG_WLAN_FEATURE_11AX) += -DSUPPORT_11AX_D3 cppflags-$(CONFIG_LITHIUM) += -DFEATURE_AST diff --git a/core/hdd/src/wlan_hdd_he.c b/core/hdd/src/wlan_hdd_he.c index 6569bf6a5927..27457b62ff83 100644 --- a/core/hdd/src/wlan_hdd_he.c +++ b/core/hdd/src/wlan_hdd_he.c @@ -67,18 +67,20 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx, QDF_MIN(he_cap->fragmentation, hdd_ctx->config->he_dynamic_frag_support)); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MAX_FRAG_MSDU, - he_cap->max_num_frag_msdu); + he_cap->max_num_frag_msdu_amsdu_exp); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MIN_FRAG_SIZE, he_cap->min_frag_size); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_TRIG_PAD, he_cap->trigger_frm_mac_pad); - hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MTID_AGGR, - he_cap->multi_tid_aggr); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MTID_AGGR_RX, + he_cap->multi_tid_aggr_rx_supp); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MTID_AGGR_TX, + he_cap->multi_tid_aggr_tx_supp); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LINK_ADAPTATION, he_cap->he_link_adaptation); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_ALL_ACK, he_cap->all_ack); - hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_UL_MU_RSP_SCHEDULING, - he_cap->ul_mu_rsp_sched); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_TRIGD_RSP_SCHEDULING, + he_cap->trigd_rsp_sched); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_BUFFER_STATUS_RPT, he_cap->a_bsr); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_BCAST_TWT, @@ -89,11 +91,10 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx, he_cap->mu_cascade); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MULTI_TID, he_cap->ack_enabled_multitid); - hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_DL_MU_BA, he_cap->dl_mu_ba); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_OMI, he_cap->omi_a_ctrl); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_OFDMA_RA, he_cap->ofdma_ra); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MAX_AMPDU_LEN, - he_cap->max_ampdu_len); + he_cap->max_ampdu_len_exp_ext); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_AMSDU_FRAG, he_cap->amsdu_frag); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_FLEX_TWT_SCHED, he_cap->flex_twt_sched); @@ -103,17 +104,19 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx, hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_QTP, he_cap->qtp); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_A_BQR, he_cap->a_bqr); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_SR_RESPONDER, - he_cap->sr_responder); + he_cap->spatial_reuse_param_rspder); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NDP_FEEDBACK_SUPP, he_cap->ndp_feedback_supp); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_OPS_SUPP, he_cap->ops_supp); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_AMSDU_IN_AMPDU, he_cap->amsdu_in_ampdu); - - he_cap->dual_band = ((cfg->band_cap == BAND_ALL) && - (hdd_ctx->config->nBandCapability == BAND_ALL)); - hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_DUAL_BAND, he_cap->dual_band); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_SUB_CH_SEL_TX, + he_cap->he_sub_ch_sel_tx_supp); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_UL_2X996_RU, + he_cap->ul_2x996_tone_ru_supp); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX, + he_cap->om_ctrl_ul_mu_data_dis_rx); chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0, he_cap->chan_width_1, he_cap->chan_width_2, he_cap->chan_width_3, he_cap->chan_width_4, @@ -128,7 +131,7 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx, hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LTF_PPDU, he_cap->he_1x_ltf_800_gi_ppdu); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MIDAMBLE_RX_MAX_NSTS, - he_cap->midamble_rx_max_nsts); + he_cap->midamble_tx_rx_max_nsts); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LTF_NDP, he_cap->he_4x_ltf_3200_gi_ndp); if (config->enableRxSTBC) { @@ -215,8 +218,22 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx, he_cap->he_ppdu_80_in_160_80p80Mhz); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_ER_1X_HE_LTF_GI, he_cap->er_1x_he_ltf_gi); - hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF, - he_cap->midamble_rx_1x_he_ltf); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF, + he_cap->midamble_tx_rx_1x_he_ltf); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_DCM_MAX_BW, + he_cap->dcm_max_bw); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM, + he_cap->longer_than_16_he_sigb_ofdm_sym); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_TX_1024_QAM_LT_242_RU, + he_cap->tx_1024_qam_lt_242_tone_ru); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_RX_1024_QAM_LT_242_RU, + he_cap->rx_1024_qam_lt_242_tone_ru); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK, + he_cap->non_trig_cqi_feedback); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB, + he_cap->rx_full_bw_su_he_mu_compress_sigb); + hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB, + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_RX_MCS_MAP_LT_80, he_cap->rx_he_mcs_map_lt_80); hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_TX_MCS_MAP_LT_80, diff --git a/core/mac/inc/sir_mac_prot_def.h b/core/mac/inc/sir_mac_prot_def.h index 41751824b9fb..32e113f9926d 100644 --- a/core/mac/inc/sir_mac_prot_def.h +++ b/core/mac/inc/sir_mac_prot_def.h @@ -2082,42 +2082,46 @@ struct he_cap_network_endian { uint32_t twt_request:1; uint32_t twt_responder:1; uint32_t fragmentation:2; - uint32_t max_num_frag_msdu:3; + uint32_t max_num_frag_msdu_amsdu_exp:3; uint32_t min_frag_size:2; uint32_t trigger_frm_mac_pad:2; - uint32_t multi_tid_aggr:3; + uint32_t multi_tid_aggr_rx_supp:3; uint32_t he_link_adaptation:2; uint32_t all_ack:1; - uint32_t ul_mu_rsp_sched:1; + uint32_t trigd_rsp_sched:1; uint32_t a_bsr:1; uint32_t broadcast_twt:1; uint32_t ba_32bit_bitmap:1; uint32_t mu_cascade:1; uint32_t ack_enabled_multitid:1; - uint32_t dl_mu_ba:1; + uint32_t reserved:1; uint32_t omi_a_ctrl:1; uint32_t ofdma_ra:1; - uint32_t max_ampdu_len:2; + uint32_t max_ampdu_len_exp_ext:2; uint32_t amsdu_frag:1; uint32_t flex_twt_sched:1; uint32_t rx_ctrl_frame:1; - uint8_t bsrp_ampdu_aggr:1; - uint8_t qtp:1; - uint8_t a_bqr:1; - uint8_t sr_responder:1; - uint8_t ndp_feedback_supp:1; - uint8_t ops_supp:1; - uint8_t amsdu_in_ampdu:1; - uint8_t reserved1:1; + uint16_t bsrp_ampdu_aggr:1; + uint16_t qtp:1; + uint16_t a_bqr:1; + uint16_t spatial_reuse_param_rspder:1; + uint16_t ndp_feedback_supp:1; + uint16_t ops_supp:1; + uint16_t amsdu_in_ampdu:1; + uint16_t multi_tid_aggr_tx_supp:3; + uint16_t he_sub_ch_sel_tx_supp:1; + uint16_t ul_2x996_tone_ru_supp:1; + uint16_t om_ctrl_ul_mu_data_dis_rx:1; + uint16_t reserved1:3; - uint32_t dual_band:1; + uint32_t reserved2:1; uint32_t chan_width:7; uint32_t rx_pream_puncturing:4; uint32_t device_class:1; uint32_t ldpc_coding:1; uint32_t he_1x_ltf_800_gi_ppdu:1; - uint32_t midamble_rx_max_nsts:2; + uint32_t midamble_tx_rx_max_nsts:2; uint32_t he_4x_ltf_3200_gi_ndp:1; uint32_t tx_stbc_lt_80mhz:1; uint32_t rx_stbc_lt_80mhz:1; @@ -2149,13 +2153,22 @@ struct he_cap_network_endian { uint32_t tx_stbc_gt_80mhz:1; uint32_t rx_stbc_gt_80mhz:1; - uint8_t er_he_ltf_800_gi_4x:1; - uint8_t he_ppdu_20_in_40Mhz_2G:1; - uint8_t he_ppdu_20_in_160_80p80Mhz:1; - uint8_t he_ppdu_80_in_160_80p80Mhz:1; - uint8_t er_1x_he_ltf_gi:1; - uint8_t midamble_rx_1x_he_ltf:1; - uint8_t reserved2:2; + uint16_t er_he_ltf_800_gi_4x:1; + uint16_t he_ppdu_20_in_40Mhz_2G:1; + uint16_t he_ppdu_20_in_160_80p80Mhz:1; + uint16_t he_ppdu_80_in_160_80p80Mhz:1; + uint16_t er_1x_he_ltf_gi:1; + uint16_t midamble_tx_rx_1x_he_ltf:1; + uint16_t dcm_max_bw:2; + uint16_t longer_than_16_he_sigb_ofdm_sym:1; + uint16_t non_trig_cqi_feedback:1; + uint16_t tx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_full_bw_su_he_mu_compress_sigb:1; + uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; + uint16_t reserved3:2; + + uint8_t reserved4; uint16_t rx_he_mcs_map_lt_80; uint16_t tx_he_mcs_map_lt_80; @@ -2169,12 +2182,11 @@ struct he_ops_network_endian { uint32_t bss_color:6; uint32_t default_pe:3; uint32_t twt_required:1; - uint32_t rts_threshold:10; + uint32_t txop_rts_threshold:10; uint32_t partial_bss_col:1; uint32_t vht_oper_present:1; uint32_t reserved1:6; - uint32_t mbssid_ap:1; - uint32_t tx_bssid_ind:1; + uint32_t co_located_bss:1; uint32_t bss_col_disabled:1; uint32_t reserved2:1; uint8_t basic_mcs_nss[2]; @@ -2188,7 +2200,7 @@ struct he_ops_network_endian { union { struct { uint8_t data; - } info; /* mbssid_ap = 1 */ + } info; /* co_located_bss = 1 */ } maxbssid_ind; } qdf_packed; @@ -2198,35 +2210,39 @@ struct he_capability_info { uint32_t rx_ctrl_frame:1; uint32_t flex_twt_sched:1; uint32_t amsdu_frag:1; - uint32_t max_ampdu_len:2; + uint32_t max_ampdu_len_exp_ext:2; uint32_t ofdma_ra:1; uint32_t omi_a_ctrl:1; - uint32_t dl_mu_ba:1; + uint32_t reserved:1; uint32_t ack_enabled_multitid:1; uint32_t mu_cascade:1; uint32_t ba_32bit_bitmap:1; uint32_t broadcast_twt:1; uint32_t a_bsr:1; - uint32_t ul_mu_rsp_sched:1; + uint32_t trigd_rsp_sched:1; uint32_t all_ack:1; uint32_t he_link_adaptation:2; - uint32_t multi_tid_aggr:3; + uint32_t multi_tid_aggr_rx_supp:3; uint32_t trigger_frm_mac_pad:2; uint32_t min_frag_size:2; - uint32_t max_num_frag_msdu:3; + uint32_t max_num_frag_msdu_amsdu_exp:3; uint32_t fragmentation:2; uint32_t twt_responder:1; uint32_t twt_request:1; uint32_t htc_he:1; - uint8_t reserved1:1; - uint8_t amsdu_in_ampdu:1; - uint8_t ops_supp:1; - uint8_t ndp_feedback_supp:1; - uint8_t sr_responder:1; - uint8_t a_bqr:1; - uint8_t qtp:1; - uint8_t bsrp_ampdu_aggr:1; + uint16_t reserved1:3; + uint16_t om_ctrl_ul_mu_data_dis_rx:1; + uint16_t ul_2x996_tone_ru_supp:1; + uint16_t he_sub_ch_sel_tx_supp:1; + uint16_t multi_tid_aggr_tx_supp:3; + uint16_t amsdu_in_ampdu:1; + uint16_t ops_supp:1; + uint16_t ndp_feedback_supp:1; + uint16_t spatial_reuse_param_rspder:1; + uint16_t a_bqr:1; + uint16_t qtp:1; + uint16_t bsrp_ampdu_aggr:1; uint32_t su_beamformer:1; uint32_t ul_he_mu:1; @@ -2237,13 +2253,13 @@ struct he_capability_info { uint32_t rx_stbc_lt_80mhz:1; uint32_t tx_stbc_lt_80mhz:1; uint32_t he_4x_ltf_3200_gi_ndp:1; - uint32_t midamble_rx_max_nsts:2; + uint32_t midamble_tx_rx_max_nsts:2; uint32_t he_1x_ltf_800_gi_ppdu:1; uint32_t ldpc_coding:1; uint32_t device_class:1; uint32_t rx_pream_puncturing:4; uint32_t chan_width:7; - uint32_t dual_band:1; + uint32_t reserved2:1; uint32_t rx_stbc_gt_80mhz:1; uint32_t tx_stbc_gt_80mhz:1; @@ -2266,13 +2282,22 @@ struct he_capability_info { uint32_t mu_beamformer:1; uint32_t su_beamformee:1; - uint8_t reserved2:2; - uint8_t midamble_rx_1x_he_ltf:1; - uint8_t er_1x_he_ltf_gi:1; - uint8_t he_ppdu_80_in_160_80p80Mhz:1; - uint8_t he_ppdu_20_in_160_80p80Mhz:1; - uint8_t he_ppdu_20_in_40Mhz_2G:1; - uint8_t er_he_ltf_800_gi_4x:1; + uint16_t reserved3:2; + uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; + uint16_t rx_full_bw_su_he_mu_compress_sigb:1; + uint16_t rx_1024_qam_lt_242_tone_ru:1; + uint16_t tx_1024_qam_lt_242_tone_ru:1; + uint16_t non_trig_cqi_feedback:1; + uint16_t longer_than_16_he_sigb_ofdm_sym:1; + uint16_t dcm_max_bw:2; + uint16_t midamble_tx_rx_1x_he_ltf:1; + uint16_t er_1x_he_ltf_gi:1; + uint16_t he_ppdu_80_in_160_80p80Mhz:1; + uint16_t he_ppdu_20_in_160_80p80Mhz:1; + uint16_t he_ppdu_20_in_40Mhz_2G:1; + uint16_t er_he_ltf_800_gi_4x:1; + + uint8_t reserved4; uint16_t tx_he_mcs_map_80_80; uint16_t rx_he_mcs_map_80_80; @@ -2285,42 +2310,46 @@ struct he_capability_info { uint32_t twt_request:1; uint32_t twt_responder:1; uint32_t fragmentation:2; - uint32_t max_num_frag_msdu:3; + uint32_t max_num_frag_msdu_amsdu_exp:3; uint32_t min_frag_size:2; uint32_t trigger_frm_mac_pad:2; - uint32_t multi_tid_aggr:3; + uint32_t multi_tid_aggr_rx_supp:3; uint32_t he_link_adaptation:2; uint32_t all_ack:1; - uint32_t ul_mu_rsp_sched:1; + uint32_t trigd_rsp_sched:1; uint32_t a_bsr:1; uint32_t broadcast_twt:1; uint32_t ba_32bit_bitmap:1; uint32_t mu_cascade:1; uint32_t ack_enabled_multitid:1; - uint32_t dl_mu_ba:1; + uint32_t reserved:1; uint32_t omi_a_ctrl:1; uint32_t ofdma_ra:1; - uint32_t max_ampdu_len:2; + uint32_t max_ampdu_len_exp_ext:2; uint32_t amsdu_frag:1; uint32_t flex_twt_sched:1; uint32_t rx_ctrl_frame:1; - uint8_t bsrp_ampdu_aggr:1; - uint8_t qtp:1; - uint8_t a_bqr:1; - uint8_t sr_responder:1; - uint8_t ndp_feedback_supp:1; - uint8_t ops_supp:1; - uint8_t amsdu_in_ampdu:1; - uint8_t reserved1:1; + uint16_t bsrp_ampdu_aggr:1; + uint16_t qtp:1; + uint16_t a_bqr:1; + uint16_t spatial_reuse_param_rspder:1; + uint16_t ndp_feedback_supp:1; + uint16_t ops_supp:1; + uint16_t amsdu_in_ampdu:1; + uint16_t multi_tid_aggr_tx_supp:3; + uint16_t he_sub_ch_sel_tx_supp:1; + uint16_t ul_2x996_tone_ru_supp:1; + uint16_t om_ctrl_ul_mu_data_dis_rx:1; + uint16_t reserved1:3; - uint32_t dual_band:1; + uint32_t reserved2:1; uint32_t chan_width:7; uint32_t rx_pream_puncturing:4; uint32_t device_class:1; uint32_t ldpc_coding:1; uint32_t he_1x_ltf_800_gi_ppdu:1; - uint32_t midamble_rx_max_nsts:2; + uint32_t midamble_tx_rx_max_nsts:2; uint32_t he_4x_ltf_3200_gi_ndp:1; uint32_t tx_stbc_lt_80mhz:1; uint32_t rx_stbc_lt_80mhz:1; @@ -2352,13 +2381,22 @@ struct he_capability_info { uint32_t tx_stbc_gt_80mhz:1; uint32_t rx_stbc_gt_80mhz:1; - uint8_t er_he_ltf_800_gi_4x:1; - uint8_t he_ppdu_20_in_40Mhz_2G:1; - uint8_t he_ppdu_20_in_160_80p80Mhz:1; - uint8_t he_ppdu_80_in_160_80p80Mhz:1; - uint8_t er_1x_he_ltf_gi:1; - uint8_t midamble_rx_1x_he_ltf:1; - uint8_t reserved2:2; + uint16_t er_he_ltf_800_gi_4x:1; + uint16_t he_ppdu_20_in_40Mhz_2G:1; + uint16_t he_ppdu_20_in_160_80p80Mhz:1; + uint16_t he_ppdu_80_in_160_80p80Mhz:1; + uint16_t er_1x_he_ltf_gi:1; + uint16_t midamble_tx_rx_1x_he_ltf:1; + uint16_t dcm_max_bw:2; + uint16_t longer_than_16_he_sigb_ofdm_sym:1; + uint16_t non_trig_cqi_feedback:1; + uint16_t tx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_full_bw_su_he_mu_compress_sigb:1; + uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; + uint16_t reserved3:2; + + uint8_t reserved4; uint16_t rx_he_mcs_map_lt_80; uint16_t tx_he_mcs_map_lt_80; diff --git a/core/mac/inc/wni_cfg.h b/core/mac/inc/wni_cfg.h index a16df914a52d..4d0a91089ccd 100644 --- a/core/mac/inc/wni_cfg.h +++ b/core/mac/inc/wni_cfg.h @@ -209,10 +209,10 @@ enum { WNI_CFG_HE_MAX_FRAG_MSDU, WNI_CFG_HE_MIN_FRAG_SIZE, WNI_CFG_HE_TRIG_PAD, - WNI_CFG_HE_MTID_AGGR, + WNI_CFG_HE_MTID_AGGR_RX, WNI_CFG_HE_LINK_ADAPTATION, WNI_CFG_HE_ALL_ACK, - WNI_CFG_HE_UL_MU_RSP_SCHEDULING, + WNI_CFG_HE_TRIGD_RSP_SCHEDULING, WNI_CFG_HE_BUFFER_STATUS_RPT, WNI_CFG_HE_BCAST_TWT, WNI_CFG_HE_BA_32BIT, @@ -232,7 +232,10 @@ enum { WNI_CFG_HE_NDP_FEEDBACK_SUPP, WNI_CFG_HE_OPS_SUPP, WNI_CFG_HE_AMSDU_IN_AMPDU, - WNI_CFG_HE_DUAL_BAND, + WNI_CFG_HE_MTID_AGGR_TX, + WNI_CFG_HE_SUB_CH_SEL_TX, + WNI_CFG_HE_UL_2X996_RU, + WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX, WNI_CFG_HE_CHAN_WIDTH, WNI_CFG_HE_RX_PREAM_PUNC, WNI_CFG_HE_CLASS_OF_DEVICE, @@ -273,7 +276,14 @@ enum { WNI_CFG_HE_PPDU_20_IN_160_80P80MHZ, WNI_CFG_HE_PPDU_80_IN_160_80P80MHZ, WNI_CFG_HE_ER_1X_HE_LTF_GI, - WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF, + WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF, + WNI_CFG_HE_DCM_MAX_BW, + WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM, + WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK, + WNI_CFG_HE_TX_1024_QAM_LT_242_RU, + WNI_CFG_HE_RX_1024_QAM_LT_242_RU, + WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB, + WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB, WNI_CFG_HE_RX_MCS_MAP_LT_80, WNI_CFG_HE_TX_MCS_MAP_LT_80, WNI_CFG_HE_RX_MCS_MAP_160, @@ -1247,9 +1257,9 @@ enum { #define WNI_CFG_HE_TRIG_PAD_STAMAX 2 #define WNI_CFG_HE_TRIG_PAD_STADEF 0 -#define WNI_CFG_HE_MTID_AGGR_STAMIN 0 -#define WNI_CFG_HE_MTID_AGGR_STAMAX 0x7 -#define WNI_CFG_HE_MTID_AGGR_STADEF 0 +#define WNI_CFG_HE_MTID_AGGR_RX_STAMIN 0 +#define WNI_CFG_HE_MTID_AGGR_RX_STAMAX 0x7 +#define WNI_CFG_HE_MTID_AGGR_RX_STADEF 0 #define WNI_CFG_HE_LINK_ADAPTATION_STAMIN 0 #define WNI_CFG_HE_LINK_ADAPTATION_STAMAX 0x3 @@ -1259,9 +1269,9 @@ enum { #define WNI_CFG_HE_ALL_ACK_STAMAX 1 #define WNI_CFG_HE_ALL_ACK_STADEF 0 -#define WNI_CFG_HE_UL_MU_RSP_SCHEDULING_STAMIN 0 -#define WNI_CFG_HE_UL_MU_RSP_SCHEDULING_STAMAX 1 -#define WNI_CFG_HE_UL_MU_RSP_SCHEDULING_STADEF 0 +#define WNI_CFG_HE_TRIGD_RSP_SCHEDULING_STAMIN 0 +#define WNI_CFG_HE_TRIGD_RSP_SCHEDULING_STAMAX 1 +#define WNI_CFG_HE_TRIGD_RSP_SCHEDULING_STADEF 0 #define WNI_CFG_HE_BUFFER_STATUS_RPT_STAMIN 0 #define WNI_CFG_HE_BUFFER_STATUS_RPT_STAMAX 1 @@ -1339,9 +1349,21 @@ enum { #define WNI_CFG_HE_AMSDU_IN_AMPDU_MAX 1 #define WNI_CFG_HE_AMSDU_IN_AMPDU_DEF 0 -#define WNI_CFG_HE_DUAL_BAND_STAMIN 0 -#define WNI_CFG_HE_DUAL_BAND_STAMAX 1 -#define WNI_CFG_HE_DUAL_BAND_STADEF 1 +#define WNI_CFG_HE_MTID_AGGR_TX_MIN 0 +#define WNI_CFG_HE_MTID_AGGR_TX_MAX 0x7 +#define WNI_CFG_HE_MTID_AGGR_TX_DEF 0 + +#define WNI_CFG_HE_SUB_CH_SEL_TX_MIN 0 +#define WNI_CFG_HE_SUB_CH_SEL_TX_MAX 1 +#define WNI_CFG_HE_SUB_CH_SEL_TX_DEF 0 + +#define WNI_CFG_HE_UL_2X996_RU_MIN 0 +#define WNI_CFG_HE_UL_2X996_RU_MAX 1 +#define WNI_CFG_HE_UL_2X996_RU_DEF 0 + +#define WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX_MIN 0 +#define WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX_MAX 1 +#define WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX_DEF 0 #define WNI_CFG_HE_CHAN_WIDTH_STAMIN 0 #define WNI_CFG_HE_CHAN_WIDTH_STAMAX 0x3F @@ -1503,9 +1525,37 @@ enum { #define WNI_CFG_HE_ER_1X_HE_LTF_GI_MAX 1 #define WNI_CFG_HE_ER_1X_HE_LTF_GI_DEF 0 -#define WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF_MIN 0 -#define WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF_MAX 1 -#define WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF_DEF 0 +#define WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF_MIN 0 +#define WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF_MAX 1 +#define WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF_DEF 0 + +#define WNI_CFG_HE_DCM_MAX_BW_MIN 0 +#define WNI_CFG_HE_DCM_MAX_BW_MAX 3 +#define WNI_CFG_HE_DCM_MAX_BW_DEF 0 + +#define WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM_MIN 0 +#define WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM_MAX 1 +#define WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM_DEF 0 + +#define WNI_CFG_HE_TX_1024_QAM_LT_242_RU_MIN 0 +#define WNI_CFG_HE_TX_1024_QAM_LT_242_RU_MAX 1 +#define WNI_CFG_HE_TX_1024_QAM_LT_242_RU_DEF 0 + +#define WNI_CFG_HE_RX_1024_QAM_LT_242_RU_MIN 0 +#define WNI_CFG_HE_RX_1024_QAM_LT_242_RU_MAX 1 +#define WNI_CFG_HE_RX_1024_QAM_LT_242_RU_DEF 0 + +#define WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK_MIN 0 +#define WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK_MAX 1 +#define WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK_DEF 0 + +#define WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB_MIN 0 +#define WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB_MAX 1 +#define WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB_DEF 0 + +#define WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB_MIN 0 +#define WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB_MAX 1 +#define WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB_DEF 0 #define WNI_CFG_HE_RX_MCS_MAP_LT_80_MIN 0x0000 #define WNI_CFG_HE_RX_MCS_MAP_LT_80_MAX 0xFFFF diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index 27f37004b843..affa1296bed4 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -2836,22 +2836,22 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) twt_request:1; twt_responder:1; fragmentation:2; - max_num_frag_msdu:3; + max_num_frag_msdu_amsdu_exp:3; min_frag_size:2; trigger_frm_mac_pad:2; - multi_tid_aggr:3; + multi_tid_aggr_rx_supp:3; he_link_adaptation:2; all_ack:1; - ul_mu_rsp_sched:1; + trigd_rsp_sched:1; a_bsr:1; broadcast_twt:1; ba_32bit_bitmap:1; mu_cascade:1; ack_enabled_multitid:1; - dl_mu_ba:1; + reserved:1; omi_a_ctrl:1; ofdma_ra:1; - max_ampdu_len:2; + max_ampdu_len_exp_ext:2; amsdu_frag:1; flex_twt_sched:1; rx_ctrl_frame:1; @@ -2860,14 +2860,18 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) bsrp_ampdu_aggr:1; qtp:1; a_bqr:1; - sr_responder:1; + spatial_reuse_param_rspder:1; ndp_feedback_supp:1; ops_supp:1; amsdu_in_ampdu:1; - reserved1:1; + multi_tid_aggr_tx_supp:3; + he_sub_ch_sel_tx_supp:1; + ul_2x996_tone_ru_supp:1; + om_ctrl_ul_mu_data_dis_rx:1; + reserved1:3; } { - dual_band:1; + reserved2:1; chan_width_0:1; chan_width_1:1; chan_width_2:1; @@ -2879,7 +2883,7 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) device_class:1; ldpc_coding:1; he_1x_ltf_800_gi_ppdu:1; - midamble_rx_max_nsts:2; + midamble_tx_rx_max_nsts:2; he_4x_ltf_3200_gi_ndp:1; tx_stbc_lt_80mhz:1; rx_stbc_lt_80mhz:1; @@ -2918,9 +2922,17 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) he_ppdu_20_in_160_80p80Mhz:1; he_ppdu_80_in_160_80p80Mhz:1; er_1x_he_ltf_gi:1; - midamble_rx_1x_he_ltf:1; - reserved2:2; + midamble_tx_rx_1x_he_ltf:1; + dcm_max_bw:2; + longer_than_16_he_sigb_ofdm_sym:1; + non_trig_cqi_feedback:1; + tx_1024_qam_lt_242_tone_ru:1; + rx_1024_qam_lt_242_tone_ru:1; + rx_full_bw_su_he_mu_compress_sigb:1; + rx_full_bw_su_he_mu_non_cmpr_sigb:1; + reserved3:2; } + reserved4, 1; rx_he_mcs_map_lt_80, 2; tx_he_mcs_map_lt_80, 2; rx_he_mcs_map_160[2][0..1] COUNTIS chan_width_2; @@ -2939,17 +2951,20 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) IE he_op (EID_EXTN_ID_ELEMENT) OUI (0x24) { { - bss_color: 6; default_pe: 3; twt_required: 1; - rts_threshold: 10; - partial_bss_col: 1; + txop_rts_threshold: 10; vht_oper_present: 1; - reserved1: 6; - mbssid_ap: 1; - tx_bssid_ind: 1; - bss_col_disabled: 1; - reserved2: 1; + co_located_bss: 1; + } + { + er_su_disable: 1; + reserved2: 7; + } + { + bss_color:6; + partial_bss_col:1; + bss_col_disabled:1; } basic_mcs_nss[2]; OPTIONAL UNION vht_oper (DISCRIMINATOR vht_oper_present) @@ -2961,9 +2976,9 @@ IE he_op (EID_EXTN_ID_ELEMENT) OUI (0x24) center_freq_seg1, 1; } }; - OPTIONAL UNION maxbssid_ind (DISCRIMINATOR mbssid_ap) + OPTIONAL UNION maxbssid_ind (DISCRIMINATOR co_located_bss) { - info (mbssid_ap IS 1) + info (co_located_bss IS 1) { data, 1; } diff --git a/core/mac/src/cfg/cfg_param_name.c b/core/mac/src/cfg/cfg_param_name.c index 9e6a9bc4d85b..c435f590cbe9 100644 --- a/core/mac/src/cfg/cfg_param_name.c +++ b/core/mac/src/cfg/cfg_param_name.c @@ -223,10 +223,11 @@ const char *cfg_get_string(uint16_t cfg_id) CASE_RETURN_STRING(WNI_CFG_HE_MAX_FRAG_MSDU); CASE_RETURN_STRING(WNI_CFG_HE_MIN_FRAG_SIZE); CASE_RETURN_STRING(WNI_CFG_HE_TRIG_PAD); - CASE_RETURN_STRING(WNI_CFG_HE_MTID_AGGR); + CASE_RETURN_STRING(WNI_CFG_HE_MTID_AGGR_RX); + CASE_RETURN_STRING(WNI_CFG_HE_MTID_AGGR_TX); CASE_RETURN_STRING(WNI_CFG_HE_LINK_ADAPTATION); CASE_RETURN_STRING(WNI_CFG_HE_ALL_ACK); - CASE_RETURN_STRING(WNI_CFG_HE_UL_MU_RSP_SCHEDULING); + CASE_RETURN_STRING(WNI_CFG_HE_TRIGD_RSP_SCHEDULING); CASE_RETURN_STRING(WNI_CFG_HE_BUFFER_STATUS_RPT); CASE_RETURN_STRING(WNI_CFG_HE_BCAST_TWT); CASE_RETURN_STRING(WNI_CFG_HE_BA_32BIT); @@ -245,7 +246,9 @@ const char *cfg_get_string(uint16_t cfg_id) CASE_RETURN_STRING(WNI_CFG_HE_SR_RESPONDER); CASE_RETURN_STRING(WNI_CFG_HE_NDP_FEEDBACK_SUPP); CASE_RETURN_STRING(WNI_CFG_HE_OPS_SUPP); - CASE_RETURN_STRING(WNI_CFG_HE_DUAL_BAND); + CASE_RETURN_STRING(WNI_CFG_HE_SUB_CH_SEL_TX); + CASE_RETURN_STRING(WNI_CFG_HE_UL_2X996_RU); + CASE_RETURN_STRING(WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX); CASE_RETURN_STRING(WNI_CFG_HE_CHAN_WIDTH); CASE_RETURN_STRING(WNI_CFG_HE_RX_PREAM_PUNC); CASE_RETURN_STRING(WNI_CFG_HE_CLASS_OF_DEVICE); @@ -281,6 +284,13 @@ const char *cfg_get_string(uint16_t cfg_id) CASE_RETURN_STRING(WNI_CFG_HE_TX_STBC_GT80); CASE_RETURN_STRING(WNI_CFG_HE_RX_STBC_GT80); CASE_RETURN_STRING(WNI_CFG_HE_ER_4x_LTF_GI); + CASE_RETURN_STRING(WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF); + CASE_RETURN_STRING(WNI_CFG_HE_DCM_MAX_BW); + CASE_RETURN_STRING(WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM); + CASE_RETURN_STRING(WNI_CFG_HE_TX_1024_QAM_LT_242_RU); + CASE_RETURN_STRING(WNI_CFG_HE_RX_1024_QAM_LT_242_RU); + CASE_RETURN_STRING(WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB); + CASE_RETURN_STRING(WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB); CASE_RETURN_STRING(WNI_CFG_HE_RX_MCS_MAP_LT_80); CASE_RETURN_STRING(WNI_CFG_HE_TX_MCS_MAP_LT_80); CASE_RETURN_STRING(WNI_CFG_HE_RX_MCS_MAP_160); diff --git a/core/mac/src/cfg/cfg_proc_msg.c b/core/mac/src/cfg/cfg_proc_msg.c index e4d234bb8608..8aae68d69b05 100644 --- a/core/mac/src/cfg/cfg_proc_msg.c +++ b/core/mac/src/cfg/cfg_proc_msg.c @@ -958,10 +958,10 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_TRIG_PAD_STAMIN, WNI_CFG_HE_TRIG_PAD_STAMAX, WNI_CFG_HE_TRIG_PAD_STADEF}, - {WNI_CFG_HE_MTID_AGGR, + {WNI_CFG_HE_MTID_AGGR_RX, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, - WNI_CFG_HE_MTID_AGGR_STAMIN, WNI_CFG_HE_MTID_AGGR_STAMAX, - WNI_CFG_HE_MTID_AGGR_STADEF}, + WNI_CFG_HE_MTID_AGGR_RX_STAMIN, WNI_CFG_HE_MTID_AGGR_RX_STAMAX, + WNI_CFG_HE_MTID_AGGR_RX_STADEF}, {WNI_CFG_HE_LINK_ADAPTATION, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_LINK_ADAPTATION_STAMIN, WNI_CFG_HE_LINK_ADAPTATION_STAMAX, @@ -970,11 +970,11 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_ALL_ACK_STAMIN, WNI_CFG_HE_ALL_ACK_STAMAX, WNI_CFG_HE_ALL_ACK_STADEF}, - {WNI_CFG_HE_UL_MU_RSP_SCHEDULING, + {WNI_CFG_HE_TRIGD_RSP_SCHEDULING, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, - WNI_CFG_HE_UL_MU_RSP_SCHEDULING_STAMIN, - WNI_CFG_HE_UL_MU_RSP_SCHEDULING_STAMAX, - WNI_CFG_HE_UL_MU_RSP_SCHEDULING_STADEF}, + WNI_CFG_HE_TRIGD_RSP_SCHEDULING_STAMIN, + WNI_CFG_HE_TRIGD_RSP_SCHEDULING_STAMAX, + WNI_CFG_HE_TRIGD_RSP_SCHEDULING_STADEF}, {WNI_CFG_HE_BUFFER_STATUS_RPT, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_BUFFER_STATUS_RPT_STAMIN, @@ -1050,14 +1050,30 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { WNI_CFG_HE_AMSDU_IN_AMPDU_MIN, WNI_CFG_HE_AMSDU_IN_AMPDU_MAX, WNI_CFG_HE_AMSDU_IN_AMPDU_DEF}, + {WNI_CFG_HE_MTID_AGGR_TX, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_MTID_AGGR_TX_MIN, + WNI_CFG_HE_MTID_AGGR_TX_MAX, + WNI_CFG_HE_MTID_AGGR_TX_DEF}, + {WNI_CFG_HE_SUB_CH_SEL_TX, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_SUB_CH_SEL_TX_MIN, + WNI_CFG_HE_SUB_CH_SEL_TX_MAX, + WNI_CFG_HE_SUB_CH_SEL_TX_DEF}, + {WNI_CFG_HE_UL_2X996_RU, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_UL_2X996_RU_MIN, + WNI_CFG_HE_UL_2X996_RU_MAX, + WNI_CFG_HE_UL_2X996_RU_DEF}, + {WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX_MIN, + WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX_MAX, + WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX_DEF}, {WNI_CFG_HE_A_BQR, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_A_BQR_STAMIN, WNI_CFG_HE_A_BQR_STAMAX, WNI_CFG_HE_A_BQR_STADEF}, - {WNI_CFG_HE_DUAL_BAND, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, - WNI_CFG_HE_DUAL_BAND_STAMIN, WNI_CFG_HE_DUAL_BAND_STAMAX, - WNI_CFG_HE_DUAL_BAND_STADEF}, {WNI_CFG_HE_CHAN_WIDTH, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_CHAN_WIDTH_STAMIN, WNI_CFG_HE_CHAN_WIDTH_STAMAX, @@ -1222,11 +1238,46 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, WNI_CFG_HE_ER_1X_HE_LTF_GI_MIN, WNI_CFG_HE_ER_1X_HE_LTF_GI_MAX, WNI_CFG_HE_ER_1X_HE_LTF_GI_DEF}, - {WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF, + {WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, - WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF_MIN, - WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF_MAX, - WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF_DEF}, + WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF_MIN, + WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF_MAX, + WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF_DEF}, + {WNI_CFG_HE_DCM_MAX_BW, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_DCM_MAX_BW_MIN, + WNI_CFG_HE_DCM_MAX_BW_MAX, + WNI_CFG_HE_DCM_MAX_BW_DEF}, + {WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM_MIN, + WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM_MAX, + WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM_DEF}, + {WNI_CFG_HE_TX_1024_QAM_LT_242_RU, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_TX_1024_QAM_LT_242_RU_MIN, + WNI_CFG_HE_TX_1024_QAM_LT_242_RU_MAX, + WNI_CFG_HE_TX_1024_QAM_LT_242_RU_DEF}, + {WNI_CFG_HE_RX_1024_QAM_LT_242_RU, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_RX_1024_QAM_LT_242_RU_MIN, + WNI_CFG_HE_RX_1024_QAM_LT_242_RU_MAX, + WNI_CFG_HE_RX_1024_QAM_LT_242_RU_DEF}, + {WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK_MIN, + WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK_MAX, + WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK_DEF}, + {WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB_MIN, + WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB_MAX, + WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB_DEF}, + {WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB_MIN, + WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB_MAX, + WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB_DEF}, {WNI_CFG_HE_RX_MCS_MAP_LT_80, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index 0a8bc6c554f8..2b2317d896f6 100644 --- a/core/mac/src/include/dot11f.h +++ b/core/mac/src/include/dot11f.h @@ -8804,34 +8804,38 @@ typedef struct sDot11fIEhe_cap { uint32_t twt_request:1; uint32_t twt_responder:1; uint32_t fragmentation:2; - uint32_t max_num_frag_msdu:3; + uint32_t max_num_frag_msdu_amsdu_exp:3; uint32_t min_frag_size:2; uint32_t trigger_frm_mac_pad:2; - uint32_t multi_tid_aggr:3; + uint32_t multi_tid_aggr_rx_supp:3; uint32_t he_link_adaptation:2; uint32_t all_ack:1; - uint32_t ul_mu_rsp_sched:1; + uint32_t trigd_rsp_sched:1; uint32_t a_bsr:1; uint32_t broadcast_twt:1; uint32_t ba_32bit_bitmap:1; uint32_t mu_cascade:1; uint32_t ack_enabled_multitid:1; - uint32_t dl_mu_ba:1; + uint32_t reserved:1; uint32_t omi_a_ctrl:1; uint32_t ofdma_ra:1; - uint32_t max_ampdu_len:2; + uint32_t max_ampdu_len_exp_ext:2; uint32_t amsdu_frag:1; uint32_t flex_twt_sched:1; uint32_t rx_ctrl_frame:1; - uint8_t bsrp_ampdu_aggr:1; - uint8_t qtp:1; - uint8_t a_bqr:1; - uint8_t sr_responder:1; - uint8_t ndp_feedback_supp:1; - uint8_t ops_supp:1; - uint8_t amsdu_in_ampdu:1; - uint8_t reserved1:1; - uint32_t dual_band:1; + uint16_t bsrp_ampdu_aggr:1; + uint16_t qtp:1; + uint16_t a_bqr:1; + uint16_t spatial_reuse_param_rspder:1; + uint16_t ndp_feedback_supp:1; + uint16_t ops_supp:1; + uint16_t amsdu_in_ampdu:1; + uint16_t multi_tid_aggr_tx_supp:3; + uint16_t he_sub_ch_sel_tx_supp:1; + uint16_t ul_2x996_tone_ru_supp:1; + uint16_t om_ctrl_ul_mu_data_dis_rx:1; + uint16_t reserved1:3; + uint32_t reserved2:1; uint32_t chan_width_0:1; uint32_t chan_width_1:1; uint32_t chan_width_2:1; @@ -8843,7 +8847,7 @@ typedef struct sDot11fIEhe_cap { uint32_t device_class:1; uint32_t ldpc_coding:1; uint32_t he_1x_ltf_800_gi_ppdu:1; - uint32_t midamble_rx_max_nsts:2; + uint32_t midamble_tx_rx_max_nsts:2; uint32_t he_4x_ltf_3200_gi_ndp:1; uint32_t tx_stbc_lt_80mhz:1; uint32_t rx_stbc_lt_80mhz:1; @@ -8873,13 +8877,21 @@ typedef struct sDot11fIEhe_cap { uint32_t max_nc:3; uint32_t tx_stbc_gt_80mhz:1; uint32_t rx_stbc_gt_80mhz:1; - uint8_t er_he_ltf_800_gi_4x:1; - uint8_t he_ppdu_20_in_40Mhz_2G:1; - uint8_t he_ppdu_20_in_160_80p80Mhz:1; - uint8_t he_ppdu_80_in_160_80p80Mhz:1; - uint8_t er_1x_he_ltf_gi:1; - uint8_t midamble_rx_1x_he_ltf:1; - uint8_t reserved2:2; + uint16_t er_he_ltf_800_gi_4x:1; + uint16_t he_ppdu_20_in_40Mhz_2G:1; + uint16_t he_ppdu_20_in_160_80p80Mhz:1; + uint16_t he_ppdu_80_in_160_80p80Mhz:1; + uint16_t er_1x_he_ltf_gi:1; + uint16_t midamble_tx_rx_1x_he_ltf:1; + uint16_t dcm_max_bw:2; + uint16_t longer_than_16_he_sigb_ofdm_sym:1; + uint16_t non_trig_cqi_feedback:1; + uint16_t tx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_full_bw_su_he_mu_compress_sigb:1; + uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; + uint16_t reserved3:2; + uint8_t reserved4; uint16_t rx_he_mcs_map_lt_80; uint16_t tx_he_mcs_map_lt_80; uint8_t rx_he_mcs_map_160[1][2]; @@ -8897,9 +8909,9 @@ typedef struct sDot11fIEhe_cap { #define DOT11F_EID_HE_CAP (255) /* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_HE_CAP_MIN_LEN (18) +#define DOT11F_IE_HE_CAP_MIN_LEN (21) -#define DOT11F_IE_HE_CAP_MAX_LEN (51) +#define DOT11F_IE_HE_CAP_MAX_LEN (54) #ifdef __cplusplus extern "C" { @@ -8930,17 +8942,16 @@ uint32_t dot11f_get_packed_ie_he_cap( /* EID 255 (0xff) Extended EID 36 (0x24) */ typedef struct sDot11fIEhe_op { uint8_t present; - uint32_t bss_color:6; - uint32_t default_pe:3; - uint32_t twt_required:1; - uint32_t rts_threshold:10; - uint32_t partial_bss_col:1; - uint32_t vht_oper_present:1; - uint32_t reserved1:6; - uint32_t mbssid_ap:1; - uint32_t tx_bssid_ind:1; - uint32_t bss_col_disabled:1; - uint32_t reserved2:1; + uint16_t default_pe:3; + uint16_t twt_required:1; + uint16_t txop_rts_threshold:10; + uint16_t vht_oper_present:1; + uint16_t co_located_bss:1; + uint8_t er_su_disable:1; + uint8_t reserved2:7; + uint8_t bss_color:6; + uint8_t partial_bss_col:1; + uint8_t bss_col_disabled:1; uint8_t basic_mcs_nss[2]; union { struct { @@ -8952,7 +8963,7 @@ typedef struct sDot11fIEhe_op { union { struct { uint8_t data; - } info; /* mbssid_ap = 1 */ + } info; /* co_located_bss = 1 */ } maxbssid_ind; } tDot11fIEhe_op; diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index 1d912810febe..94cd0751f582 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -7424,9 +7424,8 @@ void lim_decide_he_op(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss, } he_ops->default_pe = he_ops_from_ie->default_pe; he_ops->twt_required = he_ops_from_ie->twt_required; - he_ops->rts_threshold = he_ops_from_ie->rts_threshold; + he_ops->txop_rts_threshold = he_ops_from_ie->txop_rts_threshold; he_ops->partial_bss_col = he_ops_from_ie->partial_bss_col; - he_ops->tx_bssid_ind = he_ops_from_ie->tx_bssid_ind; he_ops->bss_col_disabled = he_ops_from_ie->bss_col_disabled; if (QDF_STATUS_SUCCESS != wlan_cfg_get_int(mac_ctx, @@ -7438,10 +7437,10 @@ void lim_decide_he_op(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss, pe_debug("HE Op: bss_color: 0x%0x, default_pe_duration: 0x%0x", he_ops->bss_color, he_ops->default_pe); - pe_debug("He Op: twt_required: 0x%0x, rts_threshold: 0x%0x", - he_ops->twt_required, he_ops->rts_threshold); - pe_debug("HE Op: partial_bss_color: 0x%0x, Tx BSSID Indicator: 0x%0x", - he_ops->partial_bss_col, he_ops->tx_bssid_ind); + pe_debug("He Op: twt_required: 0x%0x, txop_rts_threshold: 0x%0x", + he_ops->twt_required, he_ops->txop_rts_threshold); + pe_debug("HE Op: partial_bss_color: 0x%0x", + he_ops->partial_bss_col); pe_debug("HE Op: BSS color disabled: 0x%0x", he_ops->bss_col_disabled); pe_debug("HE Op: Basic MCS NSS: 0x%04x", @@ -7492,17 +7491,17 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) pe_debug("\tFragmentation support: 0x%02x", he_cap->fragmentation); pe_debug("\tMax no.of frag MSDUs: 0x%03x", - he_cap->max_num_frag_msdu); + he_cap->max_num_frag_msdu_amsdu_exp); pe_debug("\tMin. frag size: 0x%02x", he_cap->min_frag_size); pe_debug("\tTrigger MAC pad duration: 0x%02x", he_cap->trigger_frm_mac_pad); - pe_debug("\tMulti-TID aggr support: 0x%03x", - he_cap->multi_tid_aggr); + pe_debug("\tMulti-TID aggr Rx support: 0x%03x", + he_cap->multi_tid_aggr_rx_supp); pe_debug("\tLink adaptation: 0x%02x", he_cap->he_link_adaptation); pe_debug("\tAll ACK support: 0x%01x", he_cap->all_ack); - pe_debug("\tUL MU resp. scheduling: 0x%01x", - he_cap->ul_mu_rsp_sched); + pe_debug("\tTriggered resp. scheduling: 0x%01x", + he_cap->trigd_rsp_sched); pe_debug("\tA-Buff status report: 0x%01x", he_cap->a_bsr); pe_debug("\tBroadcast TWT support: 0x%01x", he_cap->broadcast_twt); @@ -7512,12 +7511,11 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) he_cap->mu_cascade); pe_debug("\tACK enabled Multi-TID: 0x%01x", he_cap->ack_enabled_multitid); - pe_debug("\tMulti-STA BA in DL MU: 0x%01x", he_cap->dl_mu_ba); pe_debug("\tOMI A-Control support: 0x%01x", he_cap->omi_a_ctrl); pe_debug("\tOFDMA RA support: 0x%01x", he_cap->ofdma_ra); pe_debug("\tMax A-MPDU Length: 0x%02x", - he_cap->max_ampdu_len); + he_cap->max_ampdu_len_exp_ext); pe_debug("\tA-MSDU Fragmentation: 0x%01x", he_cap->amsdu_frag); pe_debug("\tFlex. TWT sched support: 0x%01x", @@ -7528,13 +7526,20 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) he_cap->bsrp_ampdu_aggr); pe_debug("\tQuite Time Period support: 0x%01x", he_cap->qtp); pe_debug("\tA-BQR support: 0x%01x", he_cap->a_bqr); - pe_debug("\tSR Reponder support: 0x%01x", he_cap->sr_responder); + pe_debug("\tSR Reponder support: 0x%01x", + he_cap->spatial_reuse_param_rspder); pe_debug("\tNDP Feedback support: 0x%01x", he_cap->ndp_feedback_supp); pe_debug("\tOPS support: 0x%01x", he_cap->ops_supp); - pe_debug("\tOPS support: 0x%01x", he_cap->amsdu_in_ampdu); - + pe_debug("\tAMSDU in AMPDU: 0x%01x", he_cap->amsdu_in_ampdu); + pe_debug("\tMulti-TID aggr Tx support: 0x%03x", + he_cap->multi_tid_aggr_tx_supp); + pe_debug("\tHE sub ch sel tx supp: 0x%01x", + he_cap->he_sub_ch_sel_tx_supp); + pe_debug("\tUL 2x996 tone RU supp: 0x%01x", + he_cap->ul_2x996_tone_ru_supp); + pe_debug("\tOM ctrl UL MU data dis rx supp: 0x%01x", + he_cap->om_ctrl_ul_mu_data_dis_rx); /* HE PHY capabilities */ - pe_debug("\tDual band support: 0x%01x", he_cap->dual_band); chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0, he_cap->chan_width_1, he_cap->chan_width_2, he_cap->chan_width_3, he_cap->chan_width_4, @@ -7548,8 +7553,8 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) he_cap->ldpc_coding); pe_debug("\tLTF and GI for HE PPDUs: 0x%02x", he_cap->he_1x_ltf_800_gi_ppdu); - pe_debug("\tMidamble Rx MAX NSTS: 0x%02x", - he_cap->midamble_rx_max_nsts); + pe_debug("\tMidamble TX Rx MAX NSTS: 0x%02x", + he_cap->midamble_tx_rx_max_nsts); pe_debug("\tLTF and GI for NDP: 0x%02x", he_cap->he_4x_ltf_3200_gi_ndp); pe_debug("\tSTBC Tx support (<= 80MHz): 0x%01x", @@ -7559,7 +7564,7 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) pe_debug("\tDoppler support: 0x%02x", he_cap->doppler); pe_debug("\tUL MU: 0x%02x", he_cap->ul_mu); pe_debug("\tDCM encoding Tx: 0x%03x", he_cap->dcm_enc_tx); - pe_debug("\tDCM encoding Tx: 0x%03x", he_cap->dcm_enc_rx); + pe_debug("\tDCM encoding Rx: 0x%03x", he_cap->dcm_enc_rx); pe_debug("\tHE MU PPDU payload support: 0x%01x", he_cap->ul_he_mu); pe_debug("\tSU Beamformer: 0x%01x", he_cap->su_beamformer); @@ -7597,16 +7602,30 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) he_cap->rx_stbc_gt_80mhz); pe_debug("\tMax Nc: 0x%03x", he_cap->max_nc); pe_debug("\tER 4x HE LTF support: 0x%01x", he_cap->er_he_ltf_800_gi_4x); - pe_debug("\tER 4x HE LTF support: 0x%01x", + pe_debug("\tHE ppdu 20 in 40M in 2.4G: 0x%01x", he_cap->he_ppdu_20_in_40Mhz_2G); - pe_debug("\tER 4x HE LTF support: 0x%01x", + pe_debug("\tHE ppdu 20 in 160 and 80p80: 0x%01x", he_cap->he_ppdu_20_in_160_80p80Mhz); - pe_debug("\tER 4x HE LTF support: 0x%01x", + pe_debug("\tHE ppdu 80 in 160 and 80p80: 0x%01x", he_cap->he_ppdu_80_in_160_80p80Mhz); - pe_debug("\tER 4x HE LTF support: 0x%01x", + pe_debug("\tER 1x HE LTF GI support: 0x%01x", he_cap->er_1x_he_ltf_gi); - pe_debug("\tER 4x HE LTF support: 0x%01x", - he_cap->midamble_rx_1x_he_ltf); + pe_debug("\tmidamble txrx 1x he LTF: 0x%01x", + he_cap->midamble_tx_rx_1x_he_ltf); + pe_debug("\tDCM max BW: 0x%02x", + he_cap->dcm_max_bw); + pe_debug("\tlonger_than_16_he_sigb_ofdm_sym: 0x%01x", + he_cap->longer_than_16_he_sigb_ofdm_sym); + pe_debug("\tnon_trig_cqi_feedback: 0x%01x", + he_cap->non_trig_cqi_feedback); + pe_debug("\ttx_1024_qam_lt_242_tone_ru: 0x%01x", + he_cap->tx_1024_qam_lt_242_tone_ru); + pe_debug("\trx_1024_qam_lt_242_tone_ru: 0x%01x", + he_cap->rx_1024_qam_lt_242_tone_ru); + pe_debug("\trx_full_bw_su_he_mu_compress_sigb: 0x%01x", + he_cap->rx_full_bw_su_he_mu_compress_sigb); + pe_debug("\trx_full_bw_su_he_mu_non_cmpr_sigb: 0x%01x", + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb); pe_debug("\tRx MCS map for <= 80 Mhz: 0x%04x", he_cap->rx_he_mcs_map_lt_80); pe_debug("\tTx MCS map for <= 80 Mhz: 0x%04x", @@ -7630,13 +7649,13 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap) void lim_log_he_op(tpAniSirGlobal mac, tDot11fIEhe_op *he_ops) { - pe_debug("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x, vht_oper_present: %0x", - he_ops->bss_color, he_ops->default_pe, - he_ops->twt_required, he_ops->rts_threshold, - he_ops->vht_oper_present); - pe_debug("\tpartial_bss_color: %0x, MBSSID AP: %0x, Tx BSSID Indicator: %0x, BSS color disabled: %0x", - he_ops->partial_bss_col, he_ops->mbssid_ap, - he_ops->tx_bssid_ind, he_ops->bss_col_disabled); + pe_debug("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, txop_rts_threshold: %0x, vht_oper_present: %0x", + he_ops->bss_color, he_ops->default_pe, + he_ops->twt_required, he_ops->txop_rts_threshold, + he_ops->vht_oper_present); + pe_debug("\tpart_bss_color %0x, Co-located BSS %0x, BSS color dis %0x", + he_ops->partial_bss_col, he_ops->co_located_bss, + he_ops->bss_col_disabled); pe_debug("he basic mcs nss: 0x%04x", *((uint16_t *)he_ops->basic_mcs_nss)); @@ -7713,22 +7732,23 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start, he_cap->twt_request = dot11_cap.twt_request; he_cap->twt_responder = dot11_cap.twt_responder; he_cap->fragmentation = dot11_cap.fragmentation; - he_cap->max_num_frag_msdu = dot11_cap.max_num_frag_msdu; + he_cap->max_num_frag_msdu_amsdu_exp = + dot11_cap.max_num_frag_msdu_amsdu_exp; he_cap->min_frag_size = dot11_cap.min_frag_size; he_cap->trigger_frm_mac_pad = dot11_cap.trigger_frm_mac_pad; - he_cap->multi_tid_aggr = dot11_cap.multi_tid_aggr; + he_cap->multi_tid_aggr_rx_supp = + dot11_cap.multi_tid_aggr_rx_supp; he_cap->he_link_adaptation = dot11_cap.he_link_adaptation; he_cap->all_ack = dot11_cap.all_ack; - he_cap->ul_mu_rsp_sched = dot11_cap.ul_mu_rsp_sched; + he_cap->trigd_rsp_sched = dot11_cap.trigd_rsp_sched; he_cap->a_bsr = dot11_cap.a_bsr; he_cap->broadcast_twt = dot11_cap.broadcast_twt; he_cap->ba_32bit_bitmap = dot11_cap.ba_32bit_bitmap; he_cap->mu_cascade = dot11_cap.mu_cascade; he_cap->ack_enabled_multitid = dot11_cap.ack_enabled_multitid; - he_cap->dl_mu_ba = dot11_cap.dl_mu_ba; he_cap->omi_a_ctrl = dot11_cap.omi_a_ctrl; he_cap->ofdma_ra = dot11_cap.ofdma_ra; - he_cap->max_ampdu_len = dot11_cap.max_ampdu_len; + he_cap->max_ampdu_len_exp_ext = dot11_cap.max_ampdu_len_exp_ext; he_cap->amsdu_frag = dot11_cap.amsdu_frag; he_cap->flex_twt_sched = dot11_cap.flex_twt_sched; he_cap->rx_ctrl_frame = dot11_cap.rx_ctrl_frame; @@ -7736,14 +7756,13 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start, he_cap->bsrp_ampdu_aggr = dot11_cap.bsrp_ampdu_aggr; he_cap->qtp = dot11_cap.qtp; he_cap->a_bqr = dot11_cap.a_bqr; - he_cap->sr_responder = dot11_cap.sr_responder; + he_cap->spatial_reuse_param_rspder = + dot11_cap.spatial_reuse_param_rspder; he_cap->ops_supp = dot11_cap.ops_supp; he_cap->ndp_feedback_supp = dot11_cap.ndp_feedback_supp; he_cap->amsdu_in_ampdu = dot11_cap.amsdu_in_ampdu; he_cap->reserved1 = dot11_cap.reserved1; - he_cap->dual_band = dot11_cap.dual_band; - he_cap->chan_width = HE_CH_WIDTH_COMBINE(dot11_cap.chan_width_0, dot11_cap.chan_width_1, dot11_cap.chan_width_2, dot11_cap.chan_width_3, dot11_cap.chan_width_4, @@ -7753,7 +7772,8 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start, he_cap->device_class = dot11_cap.device_class; he_cap->ldpc_coding = dot11_cap.ldpc_coding; he_cap->he_1x_ltf_800_gi_ppdu = dot11_cap.he_1x_ltf_800_gi_ppdu; - he_cap->midamble_rx_max_nsts = dot11_cap.midamble_rx_max_nsts; + he_cap->midamble_tx_rx_max_nsts = + dot11_cap.midamble_tx_rx_max_nsts; he_cap->he_4x_ltf_3200_gi_ndp = dot11_cap.he_4x_ltf_3200_gi_ndp; he_cap->tx_stbc_lt_80mhz = dot11_cap.tx_stbc_lt_80mhz; he_cap->rx_stbc_lt_80mhz = dot11_cap.rx_stbc_lt_80mhz; @@ -7794,8 +7814,8 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start, dot11_cap.he_ppdu_80_in_160_80p80Mhz; he_cap->er_1x_he_ltf_gi = dot11_cap.er_1x_he_ltf_gi; - he_cap->midamble_rx_1x_he_ltf = - dot11_cap.midamble_rx_1x_he_ltf; + he_cap->midamble_tx_rx_1x_he_ltf = + dot11_cap.midamble_tx_rx_1x_he_ltf; he_cap->reserved2 = dot11_cap.reserved2; he_cap->rx_he_mcs_map_lt_80 = dot11_cap.rx_he_mcs_map_lt_80; diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c index c312aaf8e68d..0336105b067f 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c @@ -8671,10 +8671,10 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, { uint32_t status = DOT11F_PARSE_SUCCESS; uint32_t tmp77__; - uint8_t tmp78__; + uint16_t tmp78__; uint32_t tmp79__; uint32_t tmp80__; - uint8_t tmp81__; + uint16_t tmp81__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; @@ -8691,41 +8691,45 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, pDst->twt_request = tmp77__ >> 1 & 0x1; pDst->twt_responder = tmp77__ >> 2 & 0x1; pDst->fragmentation = tmp77__ >> 3 & 0x3; - pDst->max_num_frag_msdu = tmp77__ >> 5 & 0x7; + pDst->max_num_frag_msdu_amsdu_exp = tmp77__ >> 5 & 0x7; pDst->min_frag_size = tmp77__ >> 8 & 0x3; pDst->trigger_frm_mac_pad = tmp77__ >> 10 & 0x3; - pDst->multi_tid_aggr = tmp77__ >> 12 & 0x7; + pDst->multi_tid_aggr_rx_supp = tmp77__ >> 12 & 0x7; pDst->he_link_adaptation = tmp77__ >> 15 & 0x3; pDst->all_ack = tmp77__ >> 17 & 0x1; - pDst->ul_mu_rsp_sched = tmp77__ >> 18 & 0x1; + pDst->trigd_rsp_sched = tmp77__ >> 18 & 0x1; pDst->a_bsr = tmp77__ >> 19 & 0x1; pDst->broadcast_twt = tmp77__ >> 20 & 0x1; pDst->ba_32bit_bitmap = tmp77__ >> 21 & 0x1; pDst->mu_cascade = tmp77__ >> 22 & 0x1; pDst->ack_enabled_multitid = tmp77__ >> 23 & 0x1; - pDst->dl_mu_ba = tmp77__ >> 24 & 0x1; + pDst->reserved = tmp77__ >> 24 & 0x1; pDst->omi_a_ctrl = tmp77__ >> 25 & 0x1; pDst->ofdma_ra = tmp77__ >> 26 & 0x1; - pDst->max_ampdu_len = tmp77__ >> 27 & 0x3; + pDst->max_ampdu_len_exp_ext = tmp77__ >> 27 & 0x3; pDst->amsdu_frag = tmp77__ >> 29 & 0x1; pDst->flex_twt_sched = tmp77__ >> 30 & 0x1; pDst->rx_ctrl_frame = tmp77__ >> 31 & 0x1; - if (unlikely(ielen < 1)) { + if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp78__ = *pBuf; - pBuf += 1; - ielen -= 1; + framesntohs(pCtx, &tmp78__, pBuf, 0); + pBuf += 2; + ielen -= 2; pDst->bsrp_ampdu_aggr = tmp78__ >> 0 & 0x1; pDst->qtp = tmp78__ >> 1 & 0x1; pDst->a_bqr = tmp78__ >> 2 & 0x1; - pDst->sr_responder = tmp78__ >> 3 & 0x1; + pDst->spatial_reuse_param_rspder = tmp78__ >> 3 & 0x1; pDst->ndp_feedback_supp = tmp78__ >> 4 & 0x1; pDst->ops_supp = tmp78__ >> 5 & 0x1; pDst->amsdu_in_ampdu = tmp78__ >> 6 & 0x1; - pDst->reserved1 = tmp78__ >> 7 & 0x1; + pDst->multi_tid_aggr_tx_supp = tmp78__ >> 7 & 0x7; + pDst->he_sub_ch_sel_tx_supp = tmp78__ >> 10 & 0x1; + pDst->ul_2x996_tone_ru_supp = tmp78__ >> 11 & 0x1; + pDst->om_ctrl_ul_mu_data_dis_rx = tmp78__ >> 12 & 0x1; + pDst->reserved1 = tmp78__ >> 13 & 0x7; if (unlikely(ielen < 4)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -8734,7 +8738,7 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, framesntohl(pCtx, &tmp79__, pBuf, 0); pBuf += 4; ielen -= 4; - pDst->dual_band = tmp79__ >> 0 & 0x1; + pDst->reserved2 = tmp79__ >> 0 & 0x1; pDst->chan_width_0 = tmp79__ >> 1 & 0x1; pDst->chan_width_1 = tmp79__ >> 2 & 0x1; pDst->chan_width_2 = tmp79__ >> 3 & 0x1; @@ -8746,7 +8750,7 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, pDst->device_class = tmp79__ >> 12 & 0x1; pDst->ldpc_coding = tmp79__ >> 13 & 0x1; pDst->he_1x_ltf_800_gi_ppdu = tmp79__ >> 14 & 0x1; - pDst->midamble_rx_max_nsts = tmp79__ >> 15 & 0x3; + pDst->midamble_tx_rx_max_nsts = tmp79__ >> 15 & 0x3; pDst->he_4x_ltf_3200_gi_ndp = tmp79__ >> 17 & 0x1; pDst->tx_stbc_lt_80mhz = tmp79__ >> 18 & 0x1; pDst->rx_stbc_lt_80mhz = tmp79__ >> 19 & 0x1; @@ -8784,21 +8788,36 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, pDst->max_nc = tmp80__ >> 27 & 0x7; pDst->tx_stbc_gt_80mhz = tmp80__ >> 30 & 0x1; pDst->rx_stbc_gt_80mhz = tmp80__ >> 31 & 0x1; - if (unlikely(ielen < 1)) { + if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp81__ = *pBuf; - pBuf += 1; - ielen -= 1; + framesntohs(pCtx, &tmp81__, pBuf, 0); + pBuf += 2; + ielen -= 2; pDst->er_he_ltf_800_gi_4x = tmp81__ >> 0 & 0x1; pDst->he_ppdu_20_in_40Mhz_2G = tmp81__ >> 1 & 0x1; pDst->he_ppdu_20_in_160_80p80Mhz = tmp81__ >> 2 & 0x1; pDst->he_ppdu_80_in_160_80p80Mhz = tmp81__ >> 3 & 0x1; pDst->er_1x_he_ltf_gi = tmp81__ >> 4 & 0x1; - pDst->midamble_rx_1x_he_ltf = tmp81__ >> 5 & 0x1; - pDst->reserved2 = tmp81__ >> 6 & 0x3; + pDst->midamble_tx_rx_1x_he_ltf = tmp81__ >> 5 & 0x1; + pDst->dcm_max_bw = tmp81__ >> 6 & 0x3; + pDst->longer_than_16_he_sigb_ofdm_sym = tmp81__ >> 8 & 0x1; + pDst->non_trig_cqi_feedback = tmp81__ >> 9 & 0x1; + pDst->tx_1024_qam_lt_242_tone_ru = tmp81__ >> 10 & 0x1; + pDst->rx_1024_qam_lt_242_tone_ru = tmp81__ >> 11 & 0x1; + pDst->rx_full_bw_su_he_mu_compress_sigb = tmp81__ >> 12 & 0x1; + pDst->rx_full_bw_su_he_mu_non_cmpr_sigb = tmp81__ >> 13 & 0x1; + pDst->reserved3 = tmp81__ >> 14 & 0x3; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->reserved4 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -8894,30 +8913,47 @@ uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint32_t tmp82__; + uint16_t tmp82__; + uint8_t tmp83__; + uint8_t tmp84__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; pDst->present = 1; - if (unlikely(ielen < 4)) { + if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - framesntohl(pCtx, &tmp82__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->bss_color = tmp82__ >> 0 & 0x3f; - pDst->default_pe = tmp82__ >> 6 & 0x7; - pDst->twt_required = tmp82__ >> 9 & 0x1; - pDst->rts_threshold = tmp82__ >> 10 & 0x3ff; - pDst->partial_bss_col = tmp82__ >> 20 & 0x1; - pDst->vht_oper_present = tmp82__ >> 21 & 0x1; - pDst->reserved1 = tmp82__ >> 22 & 0x3f; - pDst->mbssid_ap = tmp82__ >> 28 & 0x1; - pDst->tx_bssid_ind = tmp82__ >> 29 & 0x1; - pDst->bss_col_disabled = tmp82__ >> 30 & 0x1; - pDst->reserved2 = tmp82__ >> 31 & 0x1; + framesntohs(pCtx, &tmp82__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->default_pe = tmp82__ >> 0 & 0x7; + pDst->twt_required = tmp82__ >> 3 & 0x1; + pDst->txop_rts_threshold = tmp82__ >> 4 & 0x3ff; + pDst->vht_oper_present = tmp82__ >> 14 & 0x1; + pDst->co_located_bss = tmp82__ >> 15 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp83__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->er_su_disable = tmp83__ >> 0 & 0x1; + pDst->reserved2 = tmp83__ >> 1 & 0x7f; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp84__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->bss_color = tmp84__ >> 0 & 0x3f; + pDst->partial_bss_col = tmp84__ >> 6 & 0x1; + pDst->bss_col_disabled = tmp84__ >> 7 & 0x1; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -8954,7 +8990,7 @@ uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, ielen -= (uint8_t)1; break; } - switch (pDst->mbssid_ap) { + switch (pDst->co_located_bss) { case 1: if (unlikely(ielen < 1)) { pDst->present = 0; @@ -8980,7 +9016,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp83__; + uint8_t tmp85__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; @@ -8990,13 +9026,13 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp83__ = *pBuf; + tmp85__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->dgaf_dis = tmp83__ >> 0 & 0x1; - pDst->hs_id_present = tmp83__ >> 1 & 0x3; - pDst->reserved = tmp83__ >> 3 & 0x1; - pDst->release_num = tmp83__ >> 4 & 0xf; + pDst->dgaf_dis = tmp85__ >> 0 & 0x1; + pDst->hs_id_present = tmp85__ >> 1 & 0x3; + pDst->reserved = tmp85__ >> 3 & 0x1; + pDst->release_num = tmp85__ >> 4 & 0xf; if (!ielen) { return 0U; } else { @@ -9037,7 +9073,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp84__; + uint8_t tmp86__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; @@ -9047,13 +9083,13 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp84__ = *pBuf; - pDst->info_request = tmp84__ >> 0 & 0x1; - pDst->forty_mhz_intolerant = tmp84__ >> 1 & 0x1; - pDst->twenty_mhz_bsswidth_req = tmp84__ >> 2 & 0x1; - pDst->obss_scan_exemption_req = tmp84__ >> 3 & 0x1; - pDst->obss_scan_exemption_grant = tmp84__ >> 4 & 0x1; - pDst->unused = tmp84__ >> 5 & 0x7; + tmp86__ = *pBuf; + pDst->info_request = tmp86__ >> 0 & 0x1; + pDst->forty_mhz_intolerant = tmp86__ >> 1 & 0x1; + pDst->twenty_mhz_bsswidth_req = tmp86__ >> 2 & 0x1; + pDst->obss_scan_exemption_req = tmp86__ >> 3 & 0x1; + pDst->obss_scan_exemption_grant = tmp86__ >> 4 & 0x1; + pDst->unused = tmp86__ >> 5 & 0x7; (void)pCtx; return status; } /* End dot11f_unpack_ie_ht2040_bss_coexistence. */ @@ -9101,14 +9137,14 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp85__; - uint8_t tmp86__; uint8_t tmp87__; uint8_t tmp88__; uint8_t tmp89__; uint8_t tmp90__; uint8_t tmp91__; uint8_t tmp92__; + uint8_t tmp93__; + uint8_t tmp94__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; @@ -9126,23 +9162,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp85__ = *pBuf; + tmp87__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbe_aifsn = tmp85__ >> 0 & 0xf; - pDst->acbe_acm = tmp85__ >> 4 & 0x1; - pDst->acbe_aci = tmp85__ >> 5 & 0x3; - pDst->unused1 = tmp85__ >> 7 & 0x1; + pDst->acbe_aifsn = tmp87__ >> 0 & 0xf; + pDst->acbe_acm = tmp87__ >> 4 & 0x1; + pDst->acbe_aci = tmp87__ >> 5 & 0x3; + pDst->unused1 = tmp87__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp86__ = *pBuf; + tmp88__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbe_acwmin = tmp86__ >> 0 & 0xf; - pDst->acbe_acwmax = tmp86__ >> 4 & 0xf; + pDst->acbe_acwmin = tmp88__ >> 0 & 0xf; + pDst->acbe_acwmax = tmp88__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -9156,23 +9192,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp87__ = *pBuf; + tmp89__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbk_aifsn = tmp87__ >> 0 & 0xf; - pDst->acbk_acm = tmp87__ >> 4 & 0x1; - pDst->acbk_aci = tmp87__ >> 5 & 0x3; - pDst->unused2 = tmp87__ >> 7 & 0x1; + pDst->acbk_aifsn = tmp89__ >> 0 & 0xf; + pDst->acbk_acm = tmp89__ >> 4 & 0x1; + pDst->acbk_aci = tmp89__ >> 5 & 0x3; + pDst->unused2 = tmp89__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp88__ = *pBuf; + tmp90__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbk_acwmin = tmp88__ >> 0 & 0xf; - pDst->acbk_acwmax = tmp88__ >> 4 & 0xf; + pDst->acbk_acwmin = tmp90__ >> 0 & 0xf; + pDst->acbk_acwmax = tmp90__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -9186,23 +9222,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp89__ = *pBuf; + tmp91__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvi_aifsn = tmp89__ >> 0 & 0xf; - pDst->acvi_acm = tmp89__ >> 4 & 0x1; - pDst->acvi_aci = tmp89__ >> 5 & 0x3; - pDst->unused3 = tmp89__ >> 7 & 0x1; + pDst->acvi_aifsn = tmp91__ >> 0 & 0xf; + pDst->acvi_acm = tmp91__ >> 4 & 0x1; + pDst->acvi_aci = tmp91__ >> 5 & 0x3; + pDst->unused3 = tmp91__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp90__ = *pBuf; + tmp92__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvi_acwmin = tmp90__ >> 0 & 0xf; - pDst->acvi_acwmax = tmp90__ >> 4 & 0xf; + pDst->acvi_acwmin = tmp92__ >> 0 & 0xf; + pDst->acvi_acwmax = tmp92__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -9216,23 +9252,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp91__ = *pBuf; + tmp93__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvo_aifsn = tmp91__ >> 0 & 0xf; - pDst->acvo_acm = tmp91__ >> 4 & 0x1; - pDst->acvo_aci = tmp91__ >> 5 & 0x3; - pDst->unused4 = tmp91__ >> 7 & 0x1; + pDst->acvo_aifsn = tmp93__ >> 0 & 0xf; + pDst->acvo_acm = tmp93__ >> 4 & 0x1; + pDst->acvo_aci = tmp93__ >> 5 & 0x3; + pDst->unused4 = tmp93__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp92__ = *pBuf; + tmp94__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvo_acwmin = tmp92__ >> 0 & 0xf; - pDst->acvo_acwmax = tmp92__ >> 4 & 0xf; + pDst->acvo_acwmin = tmp94__ >> 0 & 0xf; + pDst->acvo_acwmax = tmp94__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -9594,7 +9630,7 @@ static const tIEDefn IES_AssocRequest[] = { present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fAssocRequest, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fAssocRequest, MBO_IE), offsetof(tDot11fIEMBO_IE, present), 0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0}, @@ -9753,7 +9789,7 @@ static const tIEDefn IES_AssocResponse[] = { present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fAssocResponse, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fAssocResponse, he_op), offsetof(tDot11fIEhe_op, present), 0, "he_op", 0, 8, 12, SigIehe_op, {0, 0, 0, 0, 0}, @@ -10046,7 +10082,7 @@ static const tIEDefn IES_Beacon[] = { "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fBeacon, he_cap), offsetof(tDot11fIEhe_cap, present), 0, - "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fBeacon, he_op), offsetof(tDot11fIEhe_op, present), 0, "he_op", 0, 8, 12, SigIehe_op, {0, 0, 0, 0, 0}, @@ -10272,7 +10308,7 @@ static const tIEDefn IES_Beacon2[] = { "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fBeacon2, he_cap), offsetof(tDot11fIEhe_cap, present), 0, - "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fBeacon2, he_op), offsetof(tDot11fIEhe_op, present), 0, "he_op", 0, 8, 12, SigIehe_op, {0, 0, 0, 0, 0}, @@ -10498,7 +10534,7 @@ static const tIEDefn IES_BeaconIEs[] = { 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fBeaconIEs, he_cap), offsetof(tDot11fIEhe_cap, present), - 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fBeaconIEs, he_op), offsetof(tDot11fIEhe_op, present), 0, "he_op", 0, 8, 12, SigIehe_op, {0, 0, 0, 0, 0}, @@ -10933,7 +10969,7 @@ static const tIEDefn IES_ProbeRequest[] = { present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fProbeRequest, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; @@ -11143,7 +11179,7 @@ static const tIEDefn IES_ProbeResponse[] = { present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fProbeResponse, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fProbeResponse, he_op), offsetof(tDot11fIEhe_op, present), 0, "he_op", 0, 8, 12, SigIehe_op, {0, 0, 0, 0, 0}, @@ -11406,7 +11442,7 @@ static const tIEDefn IES_ReAssocRequest[] = { 0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 16, 0}, 4, DOT11F_EID_HS20VENDOR_IE, 0, 0, }, { offsetof(tDot11fReAssocRequest, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; @@ -11542,7 +11578,7 @@ static const tIEDefn IES_ReAssocResponse[] = { 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 4, 0}, 4, DOT11F_EID_VENDOR_VHT_IE, 0, 0, }, { offsetof(tDot11fReAssocResponse, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 20, 53, SigIehe_cap, {0, 0, 0, 0, 0}, + present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fReAssocResponse, he_op), offsetof(tDot11fIEhe_op, present), 0, "he_op", 0, 8, 12, SigIehe_op, {0, 0, 0, 0, 0}, @@ -15668,9 +15704,10 @@ uint32_t dot11f_get_packed_ie_he_cap(tpAniSirGlobal pCtx, (void)pCtx; while (pIe->present) { *pnNeeded += 4; - *pnNeeded += 1; + *pnNeeded += 2; *pnNeeded += 4; *pnNeeded += 4; + *pnNeeded += 2; *pnNeeded += 1; *pnNeeded += 2; *pnNeeded += 2; @@ -15698,7 +15735,9 @@ uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, uint32_t status = DOT11F_PARSE_SUCCESS; (void)pCtx; while (pIe->present) { - *pnNeeded += 4; + *pnNeeded += 2; + *pnNeeded += 1; + *pnNeeded += 1; *pnNeeded += 2; if (pIe->vht_oper_present) { switch (pIe->vht_oper_present) { @@ -15711,8 +15750,8 @@ uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, } else { break; } - if (pIe->mbssid_ap) { - switch (pIe->mbssid_ap) { + if (pIe->co_located_bss) { + switch (pIe->co_located_bss) { case 1: *pnNeeded += 1; break; @@ -17801,25 +17840,25 @@ void dot11f_pack_ff_capabilities(tpAniSirGlobal pCtx, tDot11fFfCapabilities *pSrc, uint8_t *pBuf) { - uint16_t tmp93__; - tmp93__ = 0U; - tmp93__ |= (pSrc->ess << 0); - tmp93__ |= (pSrc->ibss << 1); - tmp93__ |= (pSrc->cfPollable << 2); - tmp93__ |= (pSrc->cfPollReq << 3); - tmp93__ |= (pSrc->privacy << 4); - tmp93__ |= (pSrc->shortPreamble << 5); - tmp93__ |= (pSrc->pbcc << 6); - tmp93__ |= (pSrc->channelAgility << 7); - tmp93__ |= (pSrc->spectrumMgt << 8); - tmp93__ |= (pSrc->qos << 9); - tmp93__ |= (pSrc->shortSlotTime << 10); - tmp93__ |= (pSrc->apsd << 11); - tmp93__ |= (pSrc->rrm << 12); - tmp93__ |= (pSrc->dsssOfdm << 13); - tmp93__ |= (pSrc->delayedBA << 14); - tmp93__ |= (pSrc->immediateBA << 15); - frameshtons(pCtx, pBuf, tmp93__, 0); + uint16_t tmp95__; + tmp95__ = 0U; + tmp95__ |= (pSrc->ess << 0); + tmp95__ |= (pSrc->ibss << 1); + tmp95__ |= (pSrc->cfPollable << 2); + tmp95__ |= (pSrc->cfPollReq << 3); + tmp95__ |= (pSrc->privacy << 4); + tmp95__ |= (pSrc->shortPreamble << 5); + tmp95__ |= (pSrc->pbcc << 6); + tmp95__ |= (pSrc->channelAgility << 7); + tmp95__ |= (pSrc->spectrumMgt << 8); + tmp95__ |= (pSrc->qos << 9); + tmp95__ |= (pSrc->shortSlotTime << 10); + tmp95__ |= (pSrc->apsd << 11); + tmp95__ |= (pSrc->rrm << 12); + tmp95__ |= (pSrc->dsssOfdm << 13); + tmp95__ |= (pSrc->delayedBA << 14); + tmp95__ |= (pSrc->immediateBA << 15); + frameshtons(pCtx, pBuf, tmp95__, 0); (void)pCtx; } /* End dot11f_pack_ff_capabilities. */ @@ -17883,13 +17922,13 @@ void dot11f_pack_ff_operating_mode(tpAniSirGlobal pCtx, tDot11fFfOperatingMode *pSrc, uint8_t *pBuf) { - uint8_t tmp94__; - tmp94__ = 0U; - tmp94__ |= (pSrc->chanWidth << 0); - tmp94__ |= (pSrc->reserved << 2); - tmp94__ |= (pSrc->rxNSS << 4); - tmp94__ |= (pSrc->rxNSSType << 7); - *pBuf = tmp94__; + uint8_t tmp96__; + tmp96__ = 0U; + tmp96__ |= (pSrc->chanWidth << 0); + tmp96__ |= (pSrc->reserved << 2); + tmp96__ |= (pSrc->rxNSS << 4); + tmp96__ |= (pSrc->rxNSSType << 7); + *pBuf = tmp96__; (void)pCtx; } /* End dot11f_pack_ff_operating_mode. */ @@ -17929,12 +17968,12 @@ void dot11f_pack_ff_sm_power_mode_set(tpAniSirGlobal pCtx, tDot11fFfSMPowerModeSet *pSrc, uint8_t *pBuf) { - uint8_t tmp95__; - tmp95__ = 0U; - tmp95__ |= (pSrc->PowerSave_En << 0); - tmp95__ |= (pSrc->Mode << 1); - tmp95__ |= (pSrc->reserved << 2); - *pBuf = tmp95__; + uint8_t tmp97__; + tmp97__ = 0U; + tmp97__ |= (pSrc->PowerSave_En << 0); + tmp97__ |= (pSrc->Mode << 1); + tmp97__ |= (pSrc->reserved << 2); + *pBuf = tmp97__; (void)pCtx; } /* End dot11f_pack_ff_sm_power_mode_set. */ @@ -17974,19 +18013,19 @@ void dot11f_pack_ff_ts_info(tpAniSirGlobal pCtx, tDot11fFfTSInfo *pSrc, uint8_t *pBuf) { - uint32_t tmp96__; - tmp96__ = 0U; - tmp96__ |= (pSrc->traffic_type << 0); - tmp96__ |= (pSrc->tsid << 1); - tmp96__ |= (pSrc->direction << 5); - tmp96__ |= (pSrc->access_policy << 7); - tmp96__ |= (pSrc->aggregation << 9); - tmp96__ |= (pSrc->psb << 10); - tmp96__ |= (pSrc->user_priority << 11); - tmp96__ |= (pSrc->tsinfo_ack_pol << 14); - tmp96__ |= (pSrc->schedule << 16); - tmp96__ |= (pSrc->unused << 17); - frameshtonl(pCtx, pBuf, tmp96__, 0); + uint32_t tmp98__; + tmp98__ = 0U; + tmp98__ |= (pSrc->traffic_type << 0); + tmp98__ |= (pSrc->tsid << 1); + tmp98__ |= (pSrc->direction << 5); + tmp98__ |= (pSrc->access_policy << 7); + tmp98__ |= (pSrc->aggregation << 9); + tmp98__ |= (pSrc->psb << 10); + tmp98__ |= (pSrc->user_priority << 11); + tmp98__ |= (pSrc->tsinfo_ack_pol << 14); + tmp98__ |= (pSrc->schedule << 16); + tmp98__ |= (pSrc->unused << 17); + frameshtonl(pCtx, pBuf, tmp98__, 0); (void)pCtx; } /* End dot11f_pack_ff_ts_info. */ @@ -18042,13 +18081,13 @@ void dot11f_pack_ff_addba_param_set(tpAniSirGlobal pCtx, tDot11fFfaddba_param_set *pSrc, uint8_t *pBuf) { - uint16_t tmp97__; - tmp97__ = 0U; - tmp97__ |= (pSrc->amsdu_supp << 0); - tmp97__ |= (pSrc->policy << 1); - tmp97__ |= (pSrc->tid << 2); - tmp97__ |= (pSrc->buff_size << 6); - frameshtons(pCtx, pBuf, tmp97__, 0); + uint16_t tmp99__; + tmp99__ = 0U; + tmp99__ |= (pSrc->amsdu_supp << 0); + tmp99__ |= (pSrc->policy << 1); + tmp99__ |= (pSrc->tid << 2); + tmp99__ |= (pSrc->buff_size << 6); + frameshtons(pCtx, pBuf, tmp99__, 0); (void)pCtx; } /* End dot11f_pack_ff_addba_param_set. */ @@ -18056,11 +18095,11 @@ void dot11f_pack_ff_ba_start_seq_ctrl(tpAniSirGlobal pCtx, tDot11fFfba_start_seq_ctrl *pSrc, uint8_t *pBuf) { - uint16_t tmp98__; - tmp98__ = 0U; - tmp98__ |= (pSrc->frag_number << 0); - tmp98__ |= (pSrc->ssn << 4); - frameshtons(pCtx, pBuf, tmp98__, 0); + uint16_t tmp100__; + tmp100__ = 0U; + tmp100__ |= (pSrc->frag_number << 0); + tmp100__ |= (pSrc->ssn << 4); + frameshtons(pCtx, pBuf, tmp100__, 0); (void)pCtx; } /* End dot11f_pack_ff_ba_start_seq_ctrl. */ @@ -18076,12 +18115,12 @@ void dot11f_pack_ff_delba_param_set(tpAniSirGlobal pCtx, tDot11fFfdelba_param_set *pSrc, uint8_t *pBuf) { - uint16_t tmp99__; - tmp99__ = 0U; - tmp99__ |= (pSrc->reserved << 0); - tmp99__ |= (pSrc->initiator << 11); - tmp99__ |= (pSrc->tid << 12); - frameshtons(pCtx, pBuf, tmp99__, 0); + uint16_t tmp101__; + tmp101__ = 0U; + tmp101__ |= (pSrc->reserved << 0); + tmp101__ |= (pSrc->initiator << 11); + tmp101__ |= (pSrc->tid << 12); + frameshtons(pCtx, pBuf, tmp101__, 0); (void)pCtx; } /* End dot11f_pack_ff_delba_param_set. */ @@ -18089,13 +18128,13 @@ void dot11f_pack_ff_ext_chan_switch_ann_action(tpAniSirGlobal pCtx, tDot11fFfext_chan_switch_ann_action *pSrc, uint8_t *pBuf) { - uint32_t tmp100__; - tmp100__ = 0U; - tmp100__ |= (pSrc->switch_mode << 0); - tmp100__ |= (pSrc->op_class << 8); - tmp100__ |= (pSrc->new_channel << 16); - tmp100__ |= (pSrc->switch_count << 24); - frameshtonl(pCtx, pBuf, tmp100__, 0); + uint32_t tmp102__; + tmp102__ = 0U; + tmp102__ |= (pSrc->switch_mode << 0); + tmp102__ |= (pSrc->op_class << 8); + tmp102__ |= (pSrc->new_channel << 16); + tmp102__ |= (pSrc->switch_count << 24); + frameshtonl(pCtx, pBuf, tmp102__, 0); (void)pCtx; } /* End dot11f_pack_ff_ext_chan_switch_ann_action. */ @@ -18182,7 +18221,7 @@ uint32_t dot11f_pack_tlv_version2(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp101__; + uint8_t tmp103__; nNeeded += 3; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -18191,13 +18230,13 @@ uint32_t dot11f_pack_tlv_version2(tpAniSirGlobal pCtx, pBuf += 1; *pnConsumed += 1; pTlvLen = pBuf; pBuf += 1; *pnConsumed += 1; - tmp101__ = 0U; - tmp101__ |= (pSrc->minor << 0); - tmp101__ |= (pSrc->major << 4); + tmp103__ = 0U; + tmp103__ |= (pSrc->minor << 0); + tmp103__ |= (pSrc->major << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp101__; + *pBuf = tmp103__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -19154,7 +19193,7 @@ uint32_t dot11f_pack_tlv_version(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp102__; + uint8_t tmp104__; nNeeded += 5; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -19163,13 +19202,13 @@ uint32_t dot11f_pack_tlv_version(tpAniSirGlobal pCtx, pBuf += 2; *pnConsumed += 2; pTlvLen = pBuf; pBuf += 2; *pnConsumed += 2; - tmp102__ = 0U; - tmp102__ |= (pSrc->minor << 0); - tmp102__ |= (pSrc->major << 4); + tmp104__ = 0U; + tmp104__ |= (pSrc->minor << 0); + tmp104__ |= (pSrc->major << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp102__; + *pBuf = tmp104__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -19398,7 +19437,7 @@ uint32_t dot11f_pack_tlv_oce_cap(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp103__; + uint8_t tmp105__; nNeeded += 3; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -19407,15 +19446,15 @@ uint32_t dot11f_pack_tlv_oce_cap(tpAniSirGlobal pCtx, pBuf += 1; *pnConsumed += 1; pTlvLen = pBuf; pBuf += 1; *pnConsumed += 1; - tmp103__ = 0U; - tmp103__ |= (pSrc->oce_release << 0); - tmp103__ |= (pSrc->is_sta_cfon << 3); - tmp103__ |= (pSrc->non_oce_ap_present << 4); - tmp103__ |= (pSrc->reserved << 5); + tmp105__ = 0U; + tmp105__ |= (pSrc->oce_release << 0); + tmp105__ |= (pSrc->is_sta_cfon << 3); + tmp105__ |= (pSrc->non_oce_ap_present << 4); + tmp105__ |= (pSrc->reserved << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp103__; + *pBuf = tmp105__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -19437,7 +19476,7 @@ uint32_t dot11f_pack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp104__; + uint8_t tmp106__; nNeeded += 3; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -19446,13 +19485,13 @@ uint32_t dot11f_pack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, pBuf += 1; *pnConsumed += 1; pTlvLen = pBuf; pBuf += 1; *pnConsumed += 1; - tmp104__ = 0U; - tmp104__ |= (pSrc->downlink_av_cap << 0); - tmp104__ |= (pSrc->uplink_av_cap << 4); + tmp106__ = 0U; + tmp106__ |= (pSrc->downlink_av_cap << 0); + tmp106__ |= (pSrc->uplink_av_cap << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp104__; + *pBuf = tmp106__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -19622,7 +19661,7 @@ uint32_t dot11f_pack_ie_gtk(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp105__; + uint16_t tmp107__; nNeeded += (pSrc->num_key + 11); while (pSrc->present) { if (nNeeded > nBuf) @@ -19631,13 +19670,13 @@ uint32_t dot11f_pack_ie_gtk(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp105__ = 0U; - tmp105__ |= (pSrc->keyId << 0); - tmp105__ |= (pSrc->reserved << 2); + tmp107__ = 0U; + tmp107__ |= (pSrc->keyId << 0); + tmp107__ |= (pSrc->reserved << 2); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp105__, 0); + frameshtons(pCtx, pBuf, tmp107__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -20046,11 +20085,11 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp106__; - uint8_t tmp107__; uint8_t tmp108__; uint8_t tmp109__; uint8_t tmp110__; + uint8_t tmp111__; + uint8_t tmp112__; nNeeded += 5; while (pSrc->present) { if (nNeeded > nBuf) @@ -20059,43 +20098,15 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp106__ = 0U; - tmp106__ |= (pSrc->LinkMeasurement << 0); - tmp106__ |= (pSrc->NeighborRpt << 1); - tmp106__ |= (pSrc->parallel << 2); - tmp106__ |= (pSrc->repeated << 3); - tmp106__ |= (pSrc->BeaconPassive << 4); - tmp106__ |= (pSrc->BeaconActive << 5); - tmp106__ |= (pSrc->BeaconTable << 6); - tmp106__ |= (pSrc->BeaconRepCond << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp106__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp107__ = 0U; - tmp107__ |= (pSrc->FrameMeasurement << 0); - tmp107__ |= (pSrc->ChannelLoad << 1); - tmp107__ |= (pSrc->NoiseHistogram << 2); - tmp107__ |= (pSrc->statistics << 3); - tmp107__ |= (pSrc->LCIMeasurement << 4); - tmp107__ |= (pSrc->LCIAzimuth << 5); - tmp107__ |= (pSrc->TCMCapability << 6); - tmp107__ |= (pSrc->triggeredTCM << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp107__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; tmp108__ = 0U; - tmp108__ |= (pSrc->APChanReport << 0); - tmp108__ |= (pSrc->RRMMIBEnabled << 1); - tmp108__ |= (pSrc->operatingChanMax << 2); - tmp108__ |= (pSrc->nonOperatinChanMax << 5); + tmp108__ |= (pSrc->LinkMeasurement << 0); + tmp108__ |= (pSrc->NeighborRpt << 1); + tmp108__ |= (pSrc->parallel << 2); + tmp108__ |= (pSrc->repeated << 3); + tmp108__ |= (pSrc->BeaconPassive << 4); + tmp108__ |= (pSrc->BeaconActive << 5); + tmp108__ |= (pSrc->BeaconTable << 6); + tmp108__ |= (pSrc->BeaconRepCond << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -20104,12 +20115,14 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp109__ = 0U; - tmp109__ |= (pSrc->MeasurementPilot << 0); - tmp109__ |= (pSrc->MeasurementPilotEnabled << 3); - tmp109__ |= (pSrc->NeighborTSFOffset << 4); - tmp109__ |= (pSrc->RCPIMeasurement << 5); - tmp109__ |= (pSrc->RSNIMeasurement << 6); - tmp109__ |= (pSrc->BssAvgAccessDelay << 7); + tmp109__ |= (pSrc->FrameMeasurement << 0); + tmp109__ |= (pSrc->ChannelLoad << 1); + tmp109__ |= (pSrc->NoiseHistogram << 2); + tmp109__ |= (pSrc->statistics << 3); + tmp109__ |= (pSrc->LCIMeasurement << 4); + tmp109__ |= (pSrc->LCIAzimuth << 5); + tmp109__ |= (pSrc->TCMCapability << 6); + tmp109__ |= (pSrc->triggeredTCM << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -20118,16 +20131,42 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp110__ = 0U; - tmp110__ |= (pSrc->BSSAvailAdmission << 0); - tmp110__ |= (pSrc->AntennaInformation << 1); - tmp110__ |= (pSrc->fine_time_meas_rpt << 2); - tmp110__ |= (pSrc->lci_capability << 3); - tmp110__ |= (pSrc->reserved << 4); + tmp110__ |= (pSrc->APChanReport << 0); + tmp110__ |= (pSrc->RRMMIBEnabled << 1); + tmp110__ |= (pSrc->operatingChanMax << 2); + tmp110__ |= (pSrc->nonOperatinChanMax << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; *pBuf = tmp110__; *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp111__ = 0U; + tmp111__ |= (pSrc->MeasurementPilot << 0); + tmp111__ |= (pSrc->MeasurementPilotEnabled << 3); + tmp111__ |= (pSrc->NeighborTSFOffset << 4); + tmp111__ |= (pSrc->RCPIMeasurement << 5); + tmp111__ |= (pSrc->RSNIMeasurement << 6); + tmp111__ |= (pSrc->BssAvgAccessDelay << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp111__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp112__ = 0U; + tmp112__ |= (pSrc->BSSAvailAdmission << 0); + tmp112__ |= (pSrc->AntennaInformation << 1); + tmp112__ |= (pSrc->fine_time_meas_rpt << 2); + tmp112__ |= (pSrc->lci_capability << 3); + tmp112__ |= (pSrc->reserved << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp112__; + *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; break; @@ -20206,7 +20245,7 @@ uint32_t dot11f_pack_ie_schedule(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp111__; + uint16_t tmp113__; nNeeded += 14; while (pSrc->present) { if (nNeeded > nBuf) @@ -20215,15 +20254,15 @@ uint32_t dot11f_pack_ie_schedule(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp111__ = 0U; - tmp111__ |= (pSrc->aggregation << 0); - tmp111__ |= (pSrc->tsid << 1); - tmp111__ |= (pSrc->direction << 5); - tmp111__ |= (pSrc->reserved << 7); + tmp113__ = 0U; + tmp113__ |= (pSrc->aggregation << 0); + tmp113__ |= (pSrc->tsid << 1); + tmp113__ |= (pSrc->direction << 5); + tmp113__ |= (pSrc->reserved << 7); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp111__, 0); + frameshtons(pCtx, pBuf, tmp113__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -20450,9 +20489,9 @@ uint32_t dot11f_pack_ie_tspec(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp112__; - uint8_t tmp113__; uint16_t tmp114__; + uint8_t tmp115__; + uint16_t tmp116__; nNeeded += 55; while (pSrc->present) { if (nNeeded > nBuf) @@ -20461,35 +20500,15 @@ uint32_t dot11f_pack_ie_tspec(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp112__ = 0U; - tmp112__ |= (pSrc->traffic_type << 0); - tmp112__ |= (pSrc->tsid << 1); - tmp112__ |= (pSrc->direction << 5); - tmp112__ |= (pSrc->access_policy << 7); - tmp112__ |= (pSrc->aggregation << 9); - tmp112__ |= (pSrc->psb << 10); - tmp112__ |= (pSrc->user_priority << 11); - tmp112__ |= (pSrc->tsinfo_ack_pol << 14); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp112__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp113__ = 0U; - tmp113__ |= (pSrc->schedule << 0); - tmp113__ |= (pSrc->unused << 1); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp113__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; tmp114__ = 0U; - tmp114__ |= (pSrc->size << 0); - tmp114__ |= (pSrc->fixed << 15); + tmp114__ |= (pSrc->traffic_type << 0); + tmp114__ |= (pSrc->tsid << 1); + tmp114__ |= (pSrc->direction << 5); + tmp114__ |= (pSrc->access_policy << 7); + tmp114__ |= (pSrc->aggregation << 9); + tmp114__ |= (pSrc->psb << 10); + tmp114__ |= (pSrc->user_priority << 11); + tmp114__ |= (pSrc->tsinfo_ack_pol << 14); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; @@ -20497,6 +20516,26 @@ uint32_t dot11f_pack_ie_tspec(tpAniSirGlobal pCtx, *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; + tmp115__ = 0U; + tmp115__ |= (pSrc->schedule << 0); + tmp115__ |= (pSrc->unused << 1); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp115__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp116__ = 0U; + tmp116__ |= (pSrc->size << 0); + tmp116__ |= (pSrc->fixed << 15); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp116__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; frameshtons(pCtx, pBuf, pSrc->max_msdu_size, 0); *pnConsumed += 2; pBuf += 2; @@ -20557,9 +20596,9 @@ uint32_t dot11f_pack_ie_vht_caps(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint32_t tmp115__; - uint16_t tmp116__; - uint16_t tmp117__; + uint32_t tmp117__; + uint16_t tmp118__; + uint16_t tmp119__; nNeeded += 12; while (pSrc->present) { if (nNeeded > nBuf) @@ -20568,57 +20607,57 @@ uint32_t dot11f_pack_ie_vht_caps(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp115__ = 0U; - tmp115__ |= (pSrc->maxMPDULen << 0); - tmp115__ |= (pSrc->supportedChannelWidthSet << 2); - tmp115__ |= (pSrc->ldpcCodingCap << 4); - tmp115__ |= (pSrc->shortGI80MHz << 5); - tmp115__ |= (pSrc->shortGI160and80plus80MHz << 6); - tmp115__ |= (pSrc->txSTBC << 7); - tmp115__ |= (pSrc->rxSTBC << 8); - tmp115__ |= (pSrc->suBeamFormerCap << 11); - tmp115__ |= (pSrc->suBeamformeeCap << 12); - tmp115__ |= (pSrc->csnofBeamformerAntSup << 13); - tmp115__ |= (pSrc->numSoundingDim << 16); - tmp115__ |= (pSrc->muBeamformerCap << 19); - tmp115__ |= (pSrc->muBeamformeeCap << 20); - tmp115__ |= (pSrc->vhtTXOPPS << 21); - tmp115__ |= (pSrc->htcVHTCap << 22); - tmp115__ |= (pSrc->maxAMPDULenExp << 23); - tmp115__ |= (pSrc->vhtLinkAdaptCap << 26); - tmp115__ |= (pSrc->rxAntPattern << 28); - tmp115__ |= (pSrc->txAntPattern << 29); - tmp115__ |= (pSrc->reserved1 << 30); + tmp117__ = 0U; + tmp117__ |= (pSrc->maxMPDULen << 0); + tmp117__ |= (pSrc->supportedChannelWidthSet << 2); + tmp117__ |= (pSrc->ldpcCodingCap << 4); + tmp117__ |= (pSrc->shortGI80MHz << 5); + tmp117__ |= (pSrc->shortGI160and80plus80MHz << 6); + tmp117__ |= (pSrc->txSTBC << 7); + tmp117__ |= (pSrc->rxSTBC << 8); + tmp117__ |= (pSrc->suBeamFormerCap << 11); + tmp117__ |= (pSrc->suBeamformeeCap << 12); + tmp117__ |= (pSrc->csnofBeamformerAntSup << 13); + tmp117__ |= (pSrc->numSoundingDim << 16); + tmp117__ |= (pSrc->muBeamformerCap << 19); + tmp117__ |= (pSrc->muBeamformeeCap << 20); + tmp117__ |= (pSrc->vhtTXOPPS << 21); + tmp117__ |= (pSrc->htcVHTCap << 22); + tmp117__ |= (pSrc->maxAMPDULenExp << 23); + tmp117__ |= (pSrc->vhtLinkAdaptCap << 26); + tmp117__ |= (pSrc->rxAntPattern << 28); + tmp117__ |= (pSrc->txAntPattern << 29); + tmp117__ |= (pSrc->reserved1 << 30); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp115__, 0); + frameshtonl(pCtx, pBuf, tmp117__, 0); *pnConsumed += 4; pBuf += 4; nBuf -= 4 ; frameshtons(pCtx, pBuf, pSrc->rxMCSMap, 0); *pnConsumed += 2; pBuf += 2; - tmp116__ = 0U; - tmp116__ |= (pSrc->rxHighSupDataRate << 0); - tmp116__ |= (pSrc->reserved2 << 13); + tmp118__ = 0U; + tmp118__ |= (pSrc->rxHighSupDataRate << 0); + tmp118__ |= (pSrc->reserved2 << 13); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp116__, 0); + frameshtons(pCtx, pBuf, tmp118__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; frameshtons(pCtx, pBuf, pSrc->txMCSMap, 0); *pnConsumed += 2; pBuf += 2; - tmp117__ = 0U; - tmp117__ |= (pSrc->txSupDataRate << 0); - tmp117__ |= (pSrc->reserved3 << 13); + tmp119__ = 0U; + tmp119__ |= (pSrc->txSupDataRate << 0); + tmp119__ |= (pSrc->reserved3 << 13); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp117__, 0); + frameshtons(pCtx, pBuf, tmp119__, 0); *pnConsumed += 2; /* fieldsEndFlag = 1 */ nBuf -= 2 ; @@ -20678,7 +20717,7 @@ uint32_t dot11f_pack_ie_wmm_schedule(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp118__; + uint16_t tmp120__; nNeeded += 15; while (pSrc->present) { if (nNeeded > nBuf) @@ -20700,15 +20739,15 @@ uint32_t dot11f_pack_ie_wmm_schedule(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp118__ = 0U; - tmp118__ |= (pSrc->aggregation << 0); - tmp118__ |= (pSrc->tsid << 1); - tmp118__ |= (pSrc->direction << 5); - tmp118__ |= (pSrc->reserved << 7); + tmp120__ = 0U; + tmp120__ |= (pSrc->aggregation << 0); + tmp120__ |= (pSrc->tsid << 1); + tmp120__ |= (pSrc->direction << 5); + tmp120__ |= (pSrc->reserved << 7); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp118__, 0); + frameshtons(pCtx, pBuf, tmp120__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -20942,9 +20981,9 @@ uint32_t dot11f_pack_ie_wmmtspec(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp119__; - uint8_t tmp120__; uint16_t tmp121__; + uint8_t tmp122__; + uint16_t tmp123__; nNeeded += 38; while (pSrc->present) { if (nNeeded > nBuf) @@ -20966,35 +21005,15 @@ uint32_t dot11f_pack_ie_wmmtspec(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp119__ = 0U; - tmp119__ |= (pSrc->traffic_type << 0); - tmp119__ |= (pSrc->tsid << 1); - tmp119__ |= (pSrc->direction << 5); - tmp119__ |= (pSrc->access_policy << 7); - tmp119__ |= (pSrc->aggregation << 9); - tmp119__ |= (pSrc->psb << 10); - tmp119__ |= (pSrc->user_priority << 11); - tmp119__ |= (pSrc->tsinfo_ack_pol << 14); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp119__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp120__ = 0U; - tmp120__ |= (pSrc->tsinfo_rsvd << 0); - tmp120__ |= (pSrc->burst_size_defn << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp120__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; tmp121__ = 0U; - tmp121__ |= (pSrc->size << 0); - tmp121__ |= (pSrc->fixed << 15); + tmp121__ |= (pSrc->traffic_type << 0); + tmp121__ |= (pSrc->tsid << 1); + tmp121__ |= (pSrc->direction << 5); + tmp121__ |= (pSrc->access_policy << 7); + tmp121__ |= (pSrc->aggregation << 9); + tmp121__ |= (pSrc->psb << 10); + tmp121__ |= (pSrc->user_priority << 11); + tmp121__ |= (pSrc->tsinfo_ack_pol << 14); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; @@ -21002,6 +21021,26 @@ uint32_t dot11f_pack_ie_wmmtspec(tpAniSirGlobal pCtx, *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; + tmp122__ = 0U; + tmp122__ |= (pSrc->tsinfo_rsvd << 0); + tmp122__ |= (pSrc->burst_size_defn << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp122__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp123__ = 0U; + tmp123__ |= (pSrc->size << 0); + tmp123__ |= (pSrc->fixed << 15); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp123__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; frameshtons(pCtx, pBuf, pSrc->max_msdu_size, 0); *pnConsumed += 2; pBuf += 2; @@ -21126,7 +21165,7 @@ uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp122__; + uint16_t tmp124__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -21135,14 +21174,14 @@ uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp122__ = 0U; - tmp122__ |= (pSrc->beacon_report_id << 0); - tmp122__ |= (pSrc->fragment_id_number << 8); - tmp122__ |= (pSrc->more_fragments << 15); + tmp124__ = 0U; + tmp124__ |= (pSrc->beacon_report_id << 0); + tmp124__ |= (pSrc->fragment_id_number << 8); + tmp124__ |= (pSrc->more_fragments << 15); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp122__, 0); + frameshtons(pCtx, pBuf, tmp124__, 0); *pnConsumed += 2; /* fieldsEndFlag = 1 */ nBuf -= 2 ; @@ -21222,8 +21261,8 @@ uint32_t dot11f_pack_ie_neighbor_rpt(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp123__; - uint8_t tmp124__; + uint8_t tmp125__; + uint8_t tmp126__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_neighbor_rpt(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -21238,30 +21277,30 @@ uint32_t dot11f_pack_ie_neighbor_rpt(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6); *pnConsumed += 6; pBuf += 6; - tmp123__ = 0U; - tmp123__ |= (pSrc->APReachability << 0); - tmp123__ |= (pSrc->Security << 2); - tmp123__ |= (pSrc->KeyScope << 3); - tmp123__ |= (pSrc->SpecMgmtCap << 4); - tmp123__ |= (pSrc->QosCap << 5); - tmp123__ |= (pSrc->apsd << 6); - tmp123__ |= (pSrc->rrm << 7); + tmp125__ = 0U; + tmp125__ |= (pSrc->APReachability << 0); + tmp125__ |= (pSrc->Security << 2); + tmp125__ |= (pSrc->KeyScope << 3); + tmp125__ |= (pSrc->SpecMgmtCap << 4); + tmp125__ |= (pSrc->QosCap << 5); + tmp125__ |= (pSrc->apsd << 6); + tmp125__ |= (pSrc->rrm << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp123__; + *pBuf = tmp125__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp124__ = 0U; - tmp124__ |= (pSrc->DelayedBA << 0); - tmp124__ |= (pSrc->ImmBA << 1); - tmp124__ |= (pSrc->MobilityDomain << 2); - tmp124__ |= (pSrc->reserved << 3); + tmp126__ = 0U; + tmp126__ |= (pSrc->DelayedBA << 0); + tmp126__ |= (pSrc->ImmBA << 1); + tmp126__ |= (pSrc->MobilityDomain << 2); + tmp126__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp124__; + *pBuf = tmp126__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -21624,14 +21663,14 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp125__; - uint8_t tmp126__; uint8_t tmp127__; uint8_t tmp128__; uint8_t tmp129__; uint8_t tmp130__; uint8_t tmp131__; uint8_t tmp132__; + uint8_t tmp133__; + uint8_t tmp134__; nNeeded += 18; while (pSrc->present) { if (nNeeded > nBuf) @@ -21646,36 +21685,11 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, *pBuf = pSrc->reserved; *pnConsumed += 1; pBuf += 1; - tmp125__ = 0U; - tmp125__ |= (pSrc->acbe_aifsn << 0); - tmp125__ |= (pSrc->acbe_acm << 4); - tmp125__ |= (pSrc->acbe_aci << 5); - tmp125__ |= (pSrc->unused1 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp125__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp126__ = 0U; - tmp126__ |= (pSrc->acbe_acwmin << 0); - tmp126__ |= (pSrc->acbe_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp126__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; tmp127__ = 0U; - tmp127__ |= (pSrc->acbk_aifsn << 0); - tmp127__ |= (pSrc->acbk_acm << 4); - tmp127__ |= (pSrc->acbk_aci << 5); - tmp127__ |= (pSrc->unused2 << 7); + tmp127__ |= (pSrc->acbe_aifsn << 0); + tmp127__ |= (pSrc->acbe_acm << 4); + tmp127__ |= (pSrc->acbe_aci << 5); + tmp127__ |= (pSrc->unused1 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -21684,8 +21698,8 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp128__ = 0U; - tmp128__ |= (pSrc->acbk_acwmin << 0); - tmp128__ |= (pSrc->acbk_acwmax << 4); + tmp128__ |= (pSrc->acbe_acwmin << 0); + tmp128__ |= (pSrc->acbe_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -21693,14 +21707,14 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); + frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); *pnConsumed += 2; pBuf += 2; tmp129__ = 0U; - tmp129__ |= (pSrc->acvi_aifsn << 0); - tmp129__ |= (pSrc->acvi_acm << 4); - tmp129__ |= (pSrc->acvi_aci << 5); - tmp129__ |= (pSrc->unused3 << 7); + tmp129__ |= (pSrc->acbk_aifsn << 0); + tmp129__ |= (pSrc->acbk_acm << 4); + tmp129__ |= (pSrc->acbk_aci << 5); + tmp129__ |= (pSrc->unused2 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -21709,8 +21723,8 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp130__ = 0U; - tmp130__ |= (pSrc->acvi_acwmin << 0); - tmp130__ |= (pSrc->acvi_acwmax << 4); + tmp130__ |= (pSrc->acbk_acwmin << 0); + tmp130__ |= (pSrc->acbk_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -21718,14 +21732,14 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); + frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); *pnConsumed += 2; pBuf += 2; tmp131__ = 0U; - tmp131__ |= (pSrc->acvo_aifsn << 0); - tmp131__ |= (pSrc->acvo_acm << 4); - tmp131__ |= (pSrc->acvo_aci << 5); - tmp131__ |= (pSrc->unused4 << 7); + tmp131__ |= (pSrc->acvi_aifsn << 0); + tmp131__ |= (pSrc->acvi_acm << 4); + tmp131__ |= (pSrc->acvi_aci << 5); + tmp131__ |= (pSrc->unused3 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -21734,8 +21748,8 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp132__ = 0U; - tmp132__ |= (pSrc->acvo_acwmin << 0); - tmp132__ |= (pSrc->acvo_acwmax << 4); + tmp132__ |= (pSrc->acvi_acwmin << 0); + tmp132__ |= (pSrc->acvi_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -21743,6 +21757,31 @@ uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp133__ = 0U; + tmp133__ |= (pSrc->acvo_aifsn << 0); + tmp133__ |= (pSrc->acvo_acm << 4); + tmp133__ |= (pSrc->acvo_aci << 5); + tmp133__ |= (pSrc->unused4 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp133__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp134__ = 0U; + tmp134__ |= (pSrc->acvo_acwmin << 0); + tmp134__ |= (pSrc->acvo_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp134__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0); *pnConsumed += 2; /* fieldsEndFlag = 1 */ @@ -21764,7 +21803,7 @@ uint32_t dot11f_pack_ie_erp_info(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp133__; + uint8_t tmp135__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -21773,15 +21812,15 @@ uint32_t dot11f_pack_ie_erp_info(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp133__ = 0U; - tmp133__ |= (pSrc->non_erp_present << 0); - tmp133__ |= (pSrc->use_prot << 1); - tmp133__ |= (pSrc->barker_preamble << 2); - tmp133__ |= (pSrc->unused << 3); + tmp135__ = 0U; + tmp135__ |= (pSrc->non_erp_present << 0); + tmp135__ |= (pSrc->use_prot << 1); + tmp135__ |= (pSrc->barker_preamble << 2); + tmp135__ |= (pSrc->unused << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp133__; + *pBuf = tmp135__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -21840,7 +21879,7 @@ uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp134__; + uint8_t tmp136__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -21860,13 +21899,13 @@ uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, *pBuf = pSrc->mgmt_state; *pnConsumed += 1; pBuf += 1; - tmp134__ = 0U; - tmp134__ |= (pSrc->mbssid_mask << 0); - tmp134__ |= (pSrc->reserved << 3); + tmp136__ = 0U; + tmp136__ |= (pSrc->mbssid_mask << 0); + tmp136__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp134__; + *pBuf = tmp136__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -22217,7 +22256,7 @@ uint32_t dot11f_pack_ie_ft_info(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp135__; + uint16_t tmp137__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ieft_info(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -22229,13 +22268,13 @@ uint32_t dot11f_pack_ie_ft_info(tpAniSirGlobal pCtx, ++pBuf; --nBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; --nBuf; ++(*pnConsumed); - tmp135__ = 0U; - tmp135__ |= (pSrc->reserved << 0); - tmp135__ |= (pSrc->IECount << 8); + tmp137__ = 0U; + tmp137__ |= (pSrc->reserved << 0); + tmp137__ |= (pSrc->IECount << 8); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp135__, 0); + frameshtons(pCtx, pBuf, tmp137__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -22273,11 +22312,11 @@ uint32_t dot11f_pack_ie_ht_caps(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp136__; - uint8_t tmp137__; uint16_t tmp138__; - uint32_t tmp139__; - uint8_t tmp140__; + uint8_t tmp139__; + uint16_t tmp140__; + uint32_t tmp141__; + uint8_t tmp142__; nNeeded += (pSrc->num_rsvd + 26); while (pSrc->present) { if (nNeeded > nBuf) @@ -22286,48 +22325,21 @@ uint32_t dot11f_pack_ie_ht_caps(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp136__ = 0U; - tmp136__ |= (pSrc->advCodingCap << 0); - tmp136__ |= (pSrc->supportedChannelWidthSet << 1); - tmp136__ |= (pSrc->mimoPowerSave << 2); - tmp136__ |= (pSrc->greenField << 4); - tmp136__ |= (pSrc->shortGI20MHz << 5); - tmp136__ |= (pSrc->shortGI40MHz << 6); - tmp136__ |= (pSrc->txSTBC << 7); - tmp136__ |= (pSrc->rxSTBC << 8); - tmp136__ |= (pSrc->delayedBA << 10); - tmp136__ |= (pSrc->maximalAMSDUsize << 11); - tmp136__ |= (pSrc->dsssCckMode40MHz << 12); - tmp136__ |= (pSrc->psmp << 13); - tmp136__ |= (pSrc->stbcControlFrame << 14); - tmp136__ |= (pSrc->lsigTXOPProtection << 15); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp136__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp137__ = 0U; - tmp137__ |= (pSrc->maxRxAMPDUFactor << 0); - tmp137__ |= (pSrc->mpduDensity << 2); - tmp137__ |= (pSrc->reserved1 << 5); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp137__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - DOT11F_MEMCPY(pCtx, pBuf, pSrc->supportedMCSSet, 16); - *pnConsumed += 16; - pBuf += 16; tmp138__ = 0U; - tmp138__ |= (pSrc->pco << 0); - tmp138__ |= (pSrc->transitionTime << 1); - tmp138__ |= (pSrc->reserved2 << 3); - tmp138__ |= (pSrc->mcsFeedback << 8); - tmp138__ |= (pSrc->reserved3 << 10); + tmp138__ |= (pSrc->advCodingCap << 0); + tmp138__ |= (pSrc->supportedChannelWidthSet << 1); + tmp138__ |= (pSrc->mimoPowerSave << 2); + tmp138__ |= (pSrc->greenField << 4); + tmp138__ |= (pSrc->shortGI20MHz << 5); + tmp138__ |= (pSrc->shortGI40MHz << 6); + tmp138__ |= (pSrc->txSTBC << 7); + tmp138__ |= (pSrc->rxSTBC << 8); + tmp138__ |= (pSrc->delayedBA << 10); + tmp138__ |= (pSrc->maximalAMSDUsize << 11); + tmp138__ |= (pSrc->dsssCckMode40MHz << 12); + tmp138__ |= (pSrc->psmp << 13); + tmp138__ |= (pSrc->stbcControlFrame << 14); + tmp138__ |= (pSrc->lsigTXOPProtection << 15); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; @@ -22336,42 +22348,69 @@ uint32_t dot11f_pack_ie_ht_caps(tpAniSirGlobal pCtx, pBuf += 2; nBuf -= 2 ; tmp139__ = 0U; - tmp139__ |= (pSrc->txBF << 0); - tmp139__ |= (pSrc->rxStaggeredSounding << 1); - tmp139__ |= (pSrc->txStaggeredSounding << 2); - tmp139__ |= (pSrc->rxZLF << 3); - tmp139__ |= (pSrc->txZLF << 4); - tmp139__ |= (pSrc->implicitTxBF << 5); - tmp139__ |= (pSrc->calibration << 6); - tmp139__ |= (pSrc->explicitCSITxBF << 8); - tmp139__ |= (pSrc->explicitUncompressedSteeringMatrix << 9); - tmp139__ |= (pSrc->explicitBFCSIFeedback << 10); - tmp139__ |= (pSrc->explicitUncompressedSteeringMatrixFeedback << 13); - tmp139__ |= (pSrc->explicitCompressedSteeringMatrixFeedback << 16); - tmp139__ |= (pSrc->csiNumBFAntennae << 19); - tmp139__ |= (pSrc->uncompressedSteeringMatrixBFAntennae << 21); - tmp139__ |= (pSrc->compressedSteeringMatrixBFAntennae << 23); - tmp139__ |= (pSrc->reserved4 << 25); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp139__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp140__ = 0U; - tmp140__ |= (pSrc->antennaSelection << 0); - tmp140__ |= (pSrc->explicitCSIFeedbackTx << 1); - tmp140__ |= (pSrc->antennaIndicesFeedbackTx << 2); - tmp140__ |= (pSrc->explicitCSIFeedback << 3); - tmp140__ |= (pSrc->antennaIndicesFeedback << 4); - tmp140__ |= (pSrc->rxAS << 5); - tmp140__ |= (pSrc->txSoundingPPDUs << 6); - tmp140__ |= (pSrc->reserved5 << 7); + tmp139__ |= (pSrc->maxRxAMPDUFactor << 0); + tmp139__ |= (pSrc->mpduDensity << 2); + tmp139__ |= (pSrc->reserved1 << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp140__; + *pBuf = tmp139__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->supportedMCSSet, 16); + *pnConsumed += 16; + pBuf += 16; + tmp140__ = 0U; + tmp140__ |= (pSrc->pco << 0); + tmp140__ |= (pSrc->transitionTime << 1); + tmp140__ |= (pSrc->reserved2 << 3); + tmp140__ |= (pSrc->mcsFeedback << 8); + tmp140__ |= (pSrc->reserved3 << 10); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp140__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp141__ = 0U; + tmp141__ |= (pSrc->txBF << 0); + tmp141__ |= (pSrc->rxStaggeredSounding << 1); + tmp141__ |= (pSrc->txStaggeredSounding << 2); + tmp141__ |= (pSrc->rxZLF << 3); + tmp141__ |= (pSrc->txZLF << 4); + tmp141__ |= (pSrc->implicitTxBF << 5); + tmp141__ |= (pSrc->calibration << 6); + tmp141__ |= (pSrc->explicitCSITxBF << 8); + tmp141__ |= (pSrc->explicitUncompressedSteeringMatrix << 9); + tmp141__ |= (pSrc->explicitBFCSIFeedback << 10); + tmp141__ |= (pSrc->explicitUncompressedSteeringMatrixFeedback << 13); + tmp141__ |= (pSrc->explicitCompressedSteeringMatrixFeedback << 16); + tmp141__ |= (pSrc->csiNumBFAntennae << 19); + tmp141__ |= (pSrc->uncompressedSteeringMatrixBFAntennae << 21); + tmp141__ |= (pSrc->compressedSteeringMatrixBFAntennae << 23); + tmp141__ |= (pSrc->reserved4 << 25); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp141__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp142__ = 0U; + tmp142__ |= (pSrc->antennaSelection << 0); + tmp142__ |= (pSrc->explicitCSIFeedbackTx << 1); + tmp142__ |= (pSrc->antennaIndicesFeedbackTx << 2); + tmp142__ |= (pSrc->explicitCSIFeedback << 3); + tmp142__ |= (pSrc->antennaIndicesFeedback << 4); + tmp142__ |= (pSrc->rxAS << 5); + tmp142__ |= (pSrc->txSoundingPPDUs << 6); + tmp142__ |= (pSrc->reserved5 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp142__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22396,9 +22435,9 @@ uint32_t dot11f_pack_ie_ht_info(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp141__; - uint16_t tmp142__; - uint16_t tmp143__; + uint8_t tmp143__; + uint16_t tmp144__; + uint16_t tmp145__; nNeeded += (pSrc->num_rsvd + 22); while (pSrc->present) { if (nNeeded > nBuf) @@ -22410,44 +22449,44 @@ uint32_t dot11f_pack_ie_ht_info(tpAniSirGlobal pCtx, *pBuf = pSrc->primaryChannel; *pnConsumed += 1; pBuf += 1; - tmp141__ = 0U; - tmp141__ |= (pSrc->secondaryChannelOffset << 0); - tmp141__ |= (pSrc->recommendedTxWidthSet << 2); - tmp141__ |= (pSrc->rifsMode << 3); - tmp141__ |= (pSrc->controlledAccessOnly << 4); - tmp141__ |= (pSrc->serviceIntervalGranularity << 5); + tmp143__ = 0U; + tmp143__ |= (pSrc->secondaryChannelOffset << 0); + tmp143__ |= (pSrc->recommendedTxWidthSet << 2); + tmp143__ |= (pSrc->rifsMode << 3); + tmp143__ |= (pSrc->controlledAccessOnly << 4); + tmp143__ |= (pSrc->serviceIntervalGranularity << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp141__; + *pBuf = tmp143__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp142__ = 0U; - tmp142__ |= (pSrc->opMode << 0); - tmp142__ |= (pSrc->nonGFDevicesPresent << 2); - tmp142__ |= (pSrc->transmitBurstLimit << 3); - tmp142__ |= (pSrc->obssNonHTStaPresent << 4); - tmp142__ |= (pSrc->reserved << 5); + tmp144__ = 0U; + tmp144__ |= (pSrc->opMode << 0); + tmp144__ |= (pSrc->nonGFDevicesPresent << 2); + tmp144__ |= (pSrc->transmitBurstLimit << 3); + tmp144__ |= (pSrc->obssNonHTStaPresent << 4); + tmp144__ |= (pSrc->reserved << 5); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp142__, 0); + frameshtons(pCtx, pBuf, tmp144__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; - tmp143__ = 0U; - tmp143__ |= (pSrc->basicSTBCMCS << 0); - tmp143__ |= (pSrc->dualCTSProtection << 7); - tmp143__ |= (pSrc->secondaryBeacon << 8); - tmp143__ |= (pSrc->lsigTXOPProtectionFullSupport << 9); - tmp143__ |= (pSrc->pcoActive << 10); - tmp143__ |= (pSrc->pcoPhase << 11); - tmp143__ |= (pSrc->reserved2 << 12); + tmp145__ = 0U; + tmp145__ |= (pSrc->basicSTBCMCS << 0); + tmp145__ |= (pSrc->dualCTSProtection << 7); + tmp145__ |= (pSrc->secondaryBeacon << 8); + tmp145__ |= (pSrc->lsigTXOPProtectionFullSupport << 9); + tmp145__ |= (pSrc->pcoActive << 10); + tmp145__ |= (pSrc->pcoPhase << 11); + tmp145__ |= (pSrc->reserved2 << 12); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp143__, 0); + frameshtons(pCtx, pBuf, tmp145__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -22587,9 +22626,9 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp144__; - uint8_t tmp145__; uint8_t tmp146__; + uint8_t tmp147__; + uint8_t tmp148__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_measurement_report(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -22604,15 +22643,15 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, *pBuf = pSrc->token; *pnConsumed += 1; pBuf += 1; - tmp144__ = 0U; - tmp144__ |= (pSrc->late << 0); - tmp144__ |= (pSrc->incapable << 1); - tmp144__ |= (pSrc->refused << 2); - tmp144__ |= (pSrc->unused << 3); + tmp146__ = 0U; + tmp146__ |= (pSrc->late << 0); + tmp146__ |= (pSrc->incapable << 1); + tmp146__ |= (pSrc->refused << 2); + tmp146__ |= (pSrc->unused << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp144__; + *pBuf = tmp146__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22631,17 +22670,17 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->report.Basic.meas_duration, 0); *pnConsumed += 2; pBuf += 2; - tmp145__ = 0U; - tmp145__ |= (pSrc->report.Basic.bss << 0); - tmp145__ |= (pSrc->report.Basic.ofdm_preamble << 1); - tmp145__ |= (pSrc->report.Basic.unid_signal << 2); - tmp145__ |= (pSrc->report.Basic.rader << 3); - tmp145__ |= (pSrc->report.Basic.unmeasured << 4); - tmp145__ |= (pSrc->report.Basic.unused << 5); + tmp147__ = 0U; + tmp147__ |= (pSrc->report.Basic.bss << 0); + tmp147__ |= (pSrc->report.Basic.ofdm_preamble << 1); + tmp147__ |= (pSrc->report.Basic.unid_signal << 2); + tmp147__ |= (pSrc->report.Basic.rader << 3); + tmp147__ |= (pSrc->report.Basic.unmeasured << 4); + tmp147__ |= (pSrc->report.Basic.unused << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp145__; + *pBuf = tmp147__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -22708,13 +22747,13 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->report.Beacon.meas_duration, 0); *pnConsumed += 2; pBuf += 2; - tmp146__ = 0U; - tmp146__ |= (pSrc->report.Beacon.condensed_PHY << 0); - tmp146__ |= (pSrc->report.Beacon.reported_frame_type << 7); + tmp148__ = 0U; + tmp148__ |= (pSrc->report.Beacon.condensed_PHY << 0); + tmp148__ |= (pSrc->report.Beacon.reported_frame_type << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp146__; + *pBuf = tmp148__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22763,7 +22802,7 @@ uint32_t dot11f_pack_ie_measurement_request(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp147__; + uint8_t tmp149__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_measurement_request(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -22778,17 +22817,17 @@ uint32_t dot11f_pack_ie_measurement_request(tpAniSirGlobal pCtx, *pBuf = pSrc->measurement_token; *pnConsumed += 1; pBuf += 1; - tmp147__ = 0U; - tmp147__ |= (pSrc->parallel << 0); - tmp147__ |= (pSrc->enable << 1); - tmp147__ |= (pSrc->request << 2); - tmp147__ |= (pSrc->report << 3); - tmp147__ |= (pSrc->durationMandatory << 4); - tmp147__ |= (pSrc->unused << 5); + tmp149__ = 0U; + tmp149__ |= (pSrc->parallel << 0); + tmp149__ |= (pSrc->enable << 1); + tmp149__ |= (pSrc->request << 2); + tmp149__ |= (pSrc->report << 3); + tmp149__ |= (pSrc->durationMandatory << 4); + tmp149__ |= (pSrc->unused << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp147__; + *pBuf = tmp149__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22902,7 +22941,7 @@ uint32_t dot11f_pack_ie_mobility_domain(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp148__; + uint8_t tmp150__; nNeeded += 3; while (pSrc->present) { if (nNeeded > nBuf) @@ -22914,14 +22953,14 @@ uint32_t dot11f_pack_ie_mobility_domain(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->MDID, 0); *pnConsumed += 2; pBuf += 2; - tmp148__ = 0U; - tmp148__ |= (pSrc->overDSCap << 0); - tmp148__ |= (pSrc->resourceReqCap << 1); - tmp148__ |= (pSrc->reserved << 2); + tmp150__ = 0U; + tmp150__ |= (pSrc->overDSCap << 0); + tmp150__ |= (pSrc->resourceReqCap << 1); + tmp150__ |= (pSrc->reserved << 2); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp148__; + *pBuf = tmp150__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -22943,8 +22982,8 @@ uint32_t dot11f_pack_ie_neighbor_report(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp149__; - uint8_t tmp150__; + uint8_t tmp151__; + uint8_t tmp152__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_neighbor_report(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -22959,30 +22998,30 @@ uint32_t dot11f_pack_ie_neighbor_report(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6); *pnConsumed += 6; pBuf += 6; - tmp149__ = 0U; - tmp149__ |= (pSrc->APReachability << 0); - tmp149__ |= (pSrc->Security << 2); - tmp149__ |= (pSrc->KeyScope << 3); - tmp149__ |= (pSrc->SpecMgmtCap << 4); - tmp149__ |= (pSrc->QosCap << 5); - tmp149__ |= (pSrc->apsd << 6); - tmp149__ |= (pSrc->rrm << 7); + tmp151__ = 0U; + tmp151__ |= (pSrc->APReachability << 0); + tmp151__ |= (pSrc->Security << 2); + tmp151__ |= (pSrc->KeyScope << 3); + tmp151__ |= (pSrc->SpecMgmtCap << 4); + tmp151__ |= (pSrc->QosCap << 5); + tmp151__ |= (pSrc->apsd << 6); + tmp151__ |= (pSrc->rrm << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp149__; + *pBuf = tmp151__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp150__ = 0U; - tmp150__ |= (pSrc->DelayedBA << 0); - tmp150__ |= (pSrc->ImmBA << 1); - tmp150__ |= (pSrc->MobilityDomain << 2); - tmp150__ |= (pSrc->reserved << 3); + tmp152__ = 0U; + tmp152__ |= (pSrc->DelayedBA << 0); + tmp152__ |= (pSrc->ImmBA << 1); + tmp152__ |= (pSrc->MobilityDomain << 2); + tmp152__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp150__; + *pBuf = tmp152__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -23070,7 +23109,7 @@ uint32_t dot11f_pack_ie_operating_mode(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp151__; + uint8_t tmp153__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -23079,15 +23118,15 @@ uint32_t dot11f_pack_ie_operating_mode(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp151__ = 0U; - tmp151__ |= (pSrc->chanWidth << 0); - tmp151__ |= (pSrc->reserved << 2); - tmp151__ |= (pSrc->rxNSS << 4); - tmp151__ |= (pSrc->rxNSSType << 7); + tmp153__ = 0U; + tmp153__ |= (pSrc->chanWidth << 0); + tmp153__ |= (pSrc->reserved << 2); + tmp153__ |= (pSrc->rxNSS << 4); + tmp153__ |= (pSrc->rxNSSType << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp151__; + *pBuf = tmp153__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -23562,7 +23601,7 @@ uint32_t dot11f_pack_ie_pu_buffer_status(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp152__; + uint8_t tmp154__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -23571,16 +23610,16 @@ uint32_t dot11f_pack_ie_pu_buffer_status(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp152__ = 0U; - tmp152__ |= (pSrc->ac_bk_traffic_aval << 0); - tmp152__ |= (pSrc->ac_be_traffic_aval << 1); - tmp152__ |= (pSrc->ac_vi_traffic_aval << 2); - tmp152__ |= (pSrc->ac_vo_traffic_aval << 3); - tmp152__ |= (pSrc->reserved << 4); + tmp154__ = 0U; + tmp154__ |= (pSrc->ac_bk_traffic_aval << 0); + tmp154__ |= (pSrc->ac_be_traffic_aval << 1); + tmp154__ |= (pSrc->ac_vi_traffic_aval << 2); + tmp154__ |= (pSrc->ac_vo_traffic_aval << 3); + tmp154__ |= (pSrc->reserved << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp152__; + *pBuf = tmp154__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -23773,7 +23812,7 @@ uint32_t dot11f_pack_ie_qos_caps_ap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp153__; + uint8_t tmp155__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -23782,16 +23821,16 @@ uint32_t dot11f_pack_ie_qos_caps_ap(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp153__ = 0U; - tmp153__ |= (pSrc->count << 0); - tmp153__ |= (pSrc->qack << 4); - tmp153__ |= (pSrc->qreq << 5); - tmp153__ |= (pSrc->txopreq << 6); - tmp153__ |= (pSrc->reserved << 7); + tmp155__ = 0U; + tmp155__ |= (pSrc->count << 0); + tmp155__ |= (pSrc->qack << 4); + tmp155__ |= (pSrc->qreq << 5); + tmp155__ |= (pSrc->txopreq << 6); + tmp155__ |= (pSrc->reserved << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp153__; + *pBuf = tmp155__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -23813,7 +23852,7 @@ uint32_t dot11f_pack_ie_qos_caps_station(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp154__; + uint8_t tmp156__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -23822,18 +23861,18 @@ uint32_t dot11f_pack_ie_qos_caps_station(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp154__ = 0U; - tmp154__ |= (pSrc->acvo_uapsd << 0); - tmp154__ |= (pSrc->acvi_uapsd << 1); - tmp154__ |= (pSrc->acbk_uapsd << 2); - tmp154__ |= (pSrc->acbe_uapsd << 3); - tmp154__ |= (pSrc->qack << 4); - tmp154__ |= (pSrc->max_sp_length << 5); - tmp154__ |= (pSrc->more_data_ack << 7); + tmp156__ = 0U; + tmp156__ |= (pSrc->acvo_uapsd << 0); + tmp156__ |= (pSrc->acvi_uapsd << 1); + tmp156__ |= (pSrc->acbk_uapsd << 2); + tmp156__ |= (pSrc->acbe_uapsd << 3); + tmp156__ |= (pSrc->qack << 4); + tmp156__ |= (pSrc->max_sp_length << 5); + tmp156__ |= (pSrc->more_data_ack << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp154__; + *pBuf = tmp156__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -24474,7 +24513,7 @@ uint32_t dot11f_pack_ie_wapi(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp155__; + uint16_t tmp157__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_iewapi(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -24504,13 +24543,13 @@ uint32_t dot11f_pack_ie_wapi(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->multicast_cipher_suite, 4); *pnConsumed += 4; pBuf += 4; - tmp155__ = 0U; - tmp155__ |= (pSrc->preauth << 0); - tmp155__ |= (pSrc->reserved << 1); + tmp157__ = 0U; + tmp157__ |= (pSrc->preauth << 0); + tmp157__ |= (pSrc->reserved << 1); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp155__, 0); + frameshtons(pCtx, pBuf, tmp157__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -24650,7 +24689,7 @@ uint32_t dot11f_pack_ie_wmm_caps(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp156__; + uint8_t tmp158__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -24672,16 +24711,16 @@ uint32_t dot11f_pack_ie_wmm_caps(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp156__ = 0U; - tmp156__ |= (pSrc->reserved << 0); - tmp156__ |= (pSrc->qack << 4); - tmp156__ |= (pSrc->queue_request << 5); - tmp156__ |= (pSrc->txop_request << 6); - tmp156__ |= (pSrc->more_ack << 7); + tmp158__ = 0U; + tmp158__ |= (pSrc->reserved << 0); + tmp158__ |= (pSrc->qack << 4); + tmp158__ |= (pSrc->queue_request << 5); + tmp158__ |= (pSrc->txop_request << 6); + tmp158__ |= (pSrc->more_ack << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp156__; + *pBuf = tmp158__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -24703,7 +24742,7 @@ uint32_t dot11f_pack_ie_wmm_info_ap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp157__; + uint8_t tmp159__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -24725,14 +24764,14 @@ uint32_t dot11f_pack_ie_wmm_info_ap(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp157__ = 0U; - tmp157__ |= (pSrc->param_set_count << 0); - tmp157__ |= (pSrc->reserved << 4); - tmp157__ |= (pSrc->uapsd << 7); + tmp159__ = 0U; + tmp159__ |= (pSrc->param_set_count << 0); + tmp159__ |= (pSrc->reserved << 4); + tmp159__ |= (pSrc->uapsd << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp157__; + *pBuf = tmp159__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -24754,7 +24793,7 @@ uint32_t dot11f_pack_ie_wmm_info_station(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp158__; + uint8_t tmp160__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -24776,18 +24815,18 @@ uint32_t dot11f_pack_ie_wmm_info_station(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp158__ = 0U; - tmp158__ |= (pSrc->acvo_uapsd << 0); - tmp158__ |= (pSrc->acvi_uapsd << 1); - tmp158__ |= (pSrc->acbk_uapsd << 2); - tmp158__ |= (pSrc->acbe_uapsd << 3); - tmp158__ |= (pSrc->reserved1 << 4); - tmp158__ |= (pSrc->max_sp_length << 5); - tmp158__ |= (pSrc->reserved2 << 7); + tmp160__ = 0U; + tmp160__ |= (pSrc->acvo_uapsd << 0); + tmp160__ |= (pSrc->acvi_uapsd << 1); + tmp160__ |= (pSrc->acbk_uapsd << 2); + tmp160__ |= (pSrc->acbe_uapsd << 3); + tmp160__ |= (pSrc->reserved1 << 4); + tmp160__ |= (pSrc->max_sp_length << 5); + tmp160__ |= (pSrc->reserved2 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp158__; + *pBuf = tmp160__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -24809,14 +24848,14 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp159__; - uint8_t tmp160__; uint8_t tmp161__; uint8_t tmp162__; uint8_t tmp163__; uint8_t tmp164__; uint8_t tmp165__; uint8_t tmp166__; + uint8_t tmp167__; + uint8_t tmp168__; nNeeded += 19; while (pSrc->present) { if (nNeeded > nBuf) @@ -24844,36 +24883,11 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, *pBuf = pSrc->reserved2; *pnConsumed += 1; pBuf += 1; - tmp159__ = 0U; - tmp159__ |= (pSrc->acbe_aifsn << 0); - tmp159__ |= (pSrc->acbe_acm << 4); - tmp159__ |= (pSrc->acbe_aci << 5); - tmp159__ |= (pSrc->unused1 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp159__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp160__ = 0U; - tmp160__ |= (pSrc->acbe_acwmin << 0); - tmp160__ |= (pSrc->acbe_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp160__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; tmp161__ = 0U; - tmp161__ |= (pSrc->acbk_aifsn << 0); - tmp161__ |= (pSrc->acbk_acm << 4); - tmp161__ |= (pSrc->acbk_aci << 5); - tmp161__ |= (pSrc->unused2 << 7); + tmp161__ |= (pSrc->acbe_aifsn << 0); + tmp161__ |= (pSrc->acbe_acm << 4); + tmp161__ |= (pSrc->acbe_aci << 5); + tmp161__ |= (pSrc->unused1 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -24882,8 +24896,8 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp162__ = 0U; - tmp162__ |= (pSrc->acbk_acwmin << 0); - tmp162__ |= (pSrc->acbk_acwmax << 4); + tmp162__ |= (pSrc->acbe_acwmin << 0); + tmp162__ |= (pSrc->acbe_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -24891,14 +24905,14 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); + frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); *pnConsumed += 2; pBuf += 2; tmp163__ = 0U; - tmp163__ |= (pSrc->acvi_aifsn << 0); - tmp163__ |= (pSrc->acvi_acm << 4); - tmp163__ |= (pSrc->acvi_aci << 5); - tmp163__ |= (pSrc->unused3 << 7); + tmp163__ |= (pSrc->acbk_aifsn << 0); + tmp163__ |= (pSrc->acbk_acm << 4); + tmp163__ |= (pSrc->acbk_aci << 5); + tmp163__ |= (pSrc->unused2 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -24907,8 +24921,8 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp164__ = 0U; - tmp164__ |= (pSrc->acvi_acwmin << 0); - tmp164__ |= (pSrc->acvi_acwmax << 4); + tmp164__ |= (pSrc->acbk_acwmin << 0); + tmp164__ |= (pSrc->acbk_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -24916,14 +24930,14 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); + frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); *pnConsumed += 2; pBuf += 2; tmp165__ = 0U; - tmp165__ |= (pSrc->acvo_aifsn << 0); - tmp165__ |= (pSrc->acvo_acm << 4); - tmp165__ |= (pSrc->acvo_aci << 5); - tmp165__ |= (pSrc->unused4 << 7); + tmp165__ |= (pSrc->acvi_aifsn << 0); + tmp165__ |= (pSrc->acvi_acm << 4); + tmp165__ |= (pSrc->acvi_aci << 5); + tmp165__ |= (pSrc->unused3 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -24932,8 +24946,8 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp166__ = 0U; - tmp166__ |= (pSrc->acvo_acwmin << 0); - tmp166__ |= (pSrc->acvo_acwmax << 4); + tmp166__ |= (pSrc->acvi_acwmin << 0); + tmp166__ |= (pSrc->acvi_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -24941,6 +24955,31 @@ uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp167__ = 0U; + tmp167__ |= (pSrc->acvo_aifsn << 0); + tmp167__ |= (pSrc->acvo_acm << 4); + tmp167__ |= (pSrc->acvo_aci << 5); + tmp167__ |= (pSrc->unused4 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp167__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp168__ = 0U; + tmp168__ |= (pSrc->acvo_acwmin << 0); + tmp168__ |= (pSrc->acvo_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp168__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0); *pnConsumed += 2; /* fieldsEndFlag = 1 */ @@ -25494,7 +25533,7 @@ uint32_t dot11f_pack_ie_addba_extn_element(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp167__; + uint8_t tmp169__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -25503,14 +25542,14 @@ uint32_t dot11f_pack_ie_addba_extn_element(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp167__ = 0U; - tmp167__ |= (pSrc->no_fragmentation << 0); - tmp167__ |= (pSrc->he_frag_operation << 1); - tmp167__ |= (pSrc->reserved << 3); + tmp169__ = 0U; + tmp169__ |= (pSrc->no_fragmentation << 0); + tmp169__ |= (pSrc->he_frag_operation << 1); + tmp169__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp167__; + *pBuf = tmp169__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -25532,7 +25571,7 @@ uint32_t dot11f_pack_ie_bss_color_change(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp168__; + uint8_t tmp170__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -25546,13 +25585,13 @@ uint32_t dot11f_pack_ie_bss_color_change(tpAniSirGlobal pCtx, *pBuf = pSrc->countdown; *pnConsumed += 1; pBuf += 1; - tmp168__ = 0U; - tmp168__ |= (pSrc->new_color << 0); - tmp168__ |= (pSrc->reserved << 6); + tmp170__ = 0U; + tmp170__ |= (pSrc->new_color << 0); + tmp170__ |= (pSrc->reserved << 6); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp168__; + *pBuf = tmp170__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -25745,7 +25784,7 @@ uint32_t dot11f_pack_ie_fils_indication(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp169__; + uint16_t tmp171__; nNeeded += (pSrc->num_variable_data + 2); while (pSrc->present) { if (nNeeded > nBuf) @@ -25754,20 +25793,20 @@ uint32_t dot11f_pack_ie_fils_indication(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp169__ = 0U; - tmp169__ |= (pSrc->public_key_identifiers_cnt << 0); - tmp169__ |= (pSrc->realm_identifiers_cnt << 3); - tmp169__ |= (pSrc->is_ip_config_supported << 6); - tmp169__ |= (pSrc->is_cache_id_present << 7); - tmp169__ |= (pSrc->is_hessid_present << 8); - tmp169__ |= (pSrc->is_fils_sk_auth_supported << 9); - tmp169__ |= (pSrc->is_fils_sk_auth_pfs_supported << 10); - tmp169__ |= (pSrc->is_pk_auth_supported << 11); - tmp169__ |= (pSrc->reserved << 12); + tmp171__ = 0U; + tmp171__ |= (pSrc->public_key_identifiers_cnt << 0); + tmp171__ |= (pSrc->realm_identifiers_cnt << 3); + tmp171__ |= (pSrc->is_ip_config_supported << 6); + tmp171__ |= (pSrc->is_cache_id_present << 7); + tmp171__ |= (pSrc->is_hessid_present << 8); + tmp171__ |= (pSrc->is_fils_sk_auth_supported << 9); + tmp171__ |= (pSrc->is_fils_sk_auth_pfs_supported << 10); + tmp171__ |= (pSrc->is_pk_auth_supported << 11); + tmp171__ |= (pSrc->reserved << 12); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp169__, 0); + frameshtons(pCtx, pBuf, tmp171__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -26013,11 +26052,11 @@ uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint32_t tmp170__; - uint8_t tmp171__; uint32_t tmp172__; - uint32_t tmp173__; - uint8_t tmp174__; + uint16_t tmp173__; + uint32_t tmp174__; + uint32_t tmp175__; + uint16_t tmp176__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_he_cap(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -26031,76 +26070,30 @@ uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); *pBuf = 35; ++pBuf; ++(*pnConsumed); - tmp170__ = 0U; - tmp170__ |= (pSrc->htc_he << 0); - tmp170__ |= (pSrc->twt_request << 1); - tmp170__ |= (pSrc->twt_responder << 2); - tmp170__ |= (pSrc->fragmentation << 3); - tmp170__ |= (pSrc->max_num_frag_msdu << 5); - tmp170__ |= (pSrc->min_frag_size << 8); - tmp170__ |= (pSrc->trigger_frm_mac_pad << 10); - tmp170__ |= (pSrc->multi_tid_aggr << 12); - tmp170__ |= (pSrc->he_link_adaptation << 15); - tmp170__ |= (pSrc->all_ack << 17); - tmp170__ |= (pSrc->ul_mu_rsp_sched << 18); - tmp170__ |= (pSrc->a_bsr << 19); - tmp170__ |= (pSrc->broadcast_twt << 20); - tmp170__ |= (pSrc->ba_32bit_bitmap << 21); - tmp170__ |= (pSrc->mu_cascade << 22); - tmp170__ |= (pSrc->ack_enabled_multitid << 23); - tmp170__ |= (pSrc->dl_mu_ba << 24); - tmp170__ |= (pSrc->omi_a_ctrl << 25); - tmp170__ |= (pSrc->ofdma_ra << 26); - tmp170__ |= (pSrc->max_ampdu_len << 27); - tmp170__ |= (pSrc->amsdu_frag << 29); - tmp170__ |= (pSrc->flex_twt_sched << 30); - tmp170__ |= (pSrc->rx_ctrl_frame << 31); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp170__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp171__ = 0U; - tmp171__ |= (pSrc->bsrp_ampdu_aggr << 0); - tmp171__ |= (pSrc->qtp << 1); - tmp171__ |= (pSrc->a_bqr << 2); - tmp171__ |= (pSrc->sr_responder << 3); - tmp171__ |= (pSrc->ndp_feedback_supp << 4); - tmp171__ |= (pSrc->ops_supp << 5); - tmp171__ |= (pSrc->amsdu_in_ampdu << 6); - tmp171__ |= (pSrc->reserved1 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp171__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; tmp172__ = 0U; - tmp172__ |= (pSrc->dual_band << 0); - tmp172__ |= (pSrc->chan_width_0 << 1); - tmp172__ |= (pSrc->chan_width_1 << 2); - tmp172__ |= (pSrc->chan_width_2 << 3); - tmp172__ |= (pSrc->chan_width_3 << 4); - tmp172__ |= (pSrc->chan_width_4 << 5); - tmp172__ |= (pSrc->chan_width_5 << 6); - tmp172__ |= (pSrc->chan_width_6 << 7); - tmp172__ |= (pSrc->rx_pream_puncturing << 8); - tmp172__ |= (pSrc->device_class << 12); - tmp172__ |= (pSrc->ldpc_coding << 13); - tmp172__ |= (pSrc->he_1x_ltf_800_gi_ppdu << 14); - tmp172__ |= (pSrc->midamble_rx_max_nsts << 15); - tmp172__ |= (pSrc->he_4x_ltf_3200_gi_ndp << 17); - tmp172__ |= (pSrc->tx_stbc_lt_80mhz << 18); - tmp172__ |= (pSrc->rx_stbc_lt_80mhz << 19); - tmp172__ |= (pSrc->doppler << 20); - tmp172__ |= (pSrc->ul_mu << 22); - tmp172__ |= (pSrc->dcm_enc_tx << 24); - tmp172__ |= (pSrc->dcm_enc_rx << 27); - tmp172__ |= (pSrc->ul_he_mu << 30); - tmp172__ |= (pSrc->su_beamformer << 31); + tmp172__ |= (pSrc->htc_he << 0); + tmp172__ |= (pSrc->twt_request << 1); + tmp172__ |= (pSrc->twt_responder << 2); + tmp172__ |= (pSrc->fragmentation << 3); + tmp172__ |= (pSrc->max_num_frag_msdu_amsdu_exp << 5); + tmp172__ |= (pSrc->min_frag_size << 8); + tmp172__ |= (pSrc->trigger_frm_mac_pad << 10); + tmp172__ |= (pSrc->multi_tid_aggr_rx_supp << 12); + tmp172__ |= (pSrc->he_link_adaptation << 15); + tmp172__ |= (pSrc->all_ack << 17); + tmp172__ |= (pSrc->trigd_rsp_sched << 18); + tmp172__ |= (pSrc->a_bsr << 19); + tmp172__ |= (pSrc->broadcast_twt << 20); + tmp172__ |= (pSrc->ba_32bit_bitmap << 21); + tmp172__ |= (pSrc->mu_cascade << 22); + tmp172__ |= (pSrc->ack_enabled_multitid << 23); + tmp172__ |= (pSrc->reserved << 24); + tmp172__ |= (pSrc->omi_a_ctrl << 25); + tmp172__ |= (pSrc->ofdma_ra << 26); + tmp172__ |= (pSrc->max_ampdu_len_exp_ext << 27); + tmp172__ |= (pSrc->amsdu_frag << 29); + tmp172__ |= (pSrc->flex_twt_sched << 30); + tmp172__ |= (pSrc->rx_ctrl_frame << 31); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; @@ -26109,48 +26102,108 @@ uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx, pBuf += 4; nBuf -= 4 ; tmp173__ = 0U; - tmp173__ |= (pSrc->su_beamformee << 0); - tmp173__ |= (pSrc->mu_beamformer << 1); - tmp173__ |= (pSrc->bfee_sts_lt_80 << 2); - tmp173__ |= (pSrc->bfee_sts_gt_80 << 5); - tmp173__ |= (pSrc->num_sounding_lt_80 << 8); - tmp173__ |= (pSrc->num_sounding_gt_80 << 11); - tmp173__ |= (pSrc->su_feedback_tone16 << 14); - tmp173__ |= (pSrc->mu_feedback_tone16 << 15); - tmp173__ |= (pSrc->codebook_su << 16); - tmp173__ |= (pSrc->codebook_mu << 17); - tmp173__ |= (pSrc->beamforming_feedback << 18); - tmp173__ |= (pSrc->he_er_su_ppdu << 21); - tmp173__ |= (pSrc->dl_mu_mimo_part_bw << 22); - tmp173__ |= (pSrc->ppet_present << 23); - tmp173__ |= (pSrc->srp << 24); - tmp173__ |= (pSrc->power_boost << 25); - tmp173__ |= (pSrc->he_ltf_800_gi_4x << 26); - tmp173__ |= (pSrc->max_nc << 27); - tmp173__ |= (pSrc->tx_stbc_gt_80mhz << 30); - tmp173__ |= (pSrc->rx_stbc_gt_80mhz << 31); + tmp173__ |= (pSrc->bsrp_ampdu_aggr << 0); + tmp173__ |= (pSrc->qtp << 1); + tmp173__ |= (pSrc->a_bqr << 2); + tmp173__ |= (pSrc->spatial_reuse_param_rspder << 3); + tmp173__ |= (pSrc->ndp_feedback_supp << 4); + tmp173__ |= (pSrc->ops_supp << 5); + tmp173__ |= (pSrc->amsdu_in_ampdu << 6); + tmp173__ |= (pSrc->multi_tid_aggr_tx_supp << 7); + tmp173__ |= (pSrc->he_sub_ch_sel_tx_supp << 10); + tmp173__ |= (pSrc->ul_2x996_tone_ru_supp << 11); + tmp173__ |= (pSrc->om_ctrl_ul_mu_data_dis_rx << 12); + tmp173__ |= (pSrc->reserved1 << 13); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp173__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp174__ = 0U; + tmp174__ |= (pSrc->reserved2 << 0); + tmp174__ |= (pSrc->chan_width_0 << 1); + tmp174__ |= (pSrc->chan_width_1 << 2); + tmp174__ |= (pSrc->chan_width_2 << 3); + tmp174__ |= (pSrc->chan_width_3 << 4); + tmp174__ |= (pSrc->chan_width_4 << 5); + tmp174__ |= (pSrc->chan_width_5 << 6); + tmp174__ |= (pSrc->chan_width_6 << 7); + tmp174__ |= (pSrc->rx_pream_puncturing << 8); + tmp174__ |= (pSrc->device_class << 12); + tmp174__ |= (pSrc->ldpc_coding << 13); + tmp174__ |= (pSrc->he_1x_ltf_800_gi_ppdu << 14); + tmp174__ |= (pSrc->midamble_tx_rx_max_nsts << 15); + tmp174__ |= (pSrc->he_4x_ltf_3200_gi_ndp << 17); + tmp174__ |= (pSrc->tx_stbc_lt_80mhz << 18); + tmp174__ |= (pSrc->rx_stbc_lt_80mhz << 19); + tmp174__ |= (pSrc->doppler << 20); + tmp174__ |= (pSrc->ul_mu << 22); + tmp174__ |= (pSrc->dcm_enc_tx << 24); + tmp174__ |= (pSrc->dcm_enc_rx << 27); + tmp174__ |= (pSrc->ul_he_mu << 30); + tmp174__ |= (pSrc->su_beamformer << 31); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp173__, 0); + frameshtonl(pCtx, pBuf, tmp174__, 0); *pnConsumed += 4; pBuf += 4; nBuf -= 4 ; - tmp174__ = 0U; - tmp174__ |= (pSrc->er_he_ltf_800_gi_4x << 0); - tmp174__ |= (pSrc->he_ppdu_20_in_40Mhz_2G << 1); - tmp174__ |= (pSrc->he_ppdu_20_in_160_80p80Mhz << 2); - tmp174__ |= (pSrc->he_ppdu_80_in_160_80p80Mhz << 3); - tmp174__ |= (pSrc->er_1x_he_ltf_gi << 4); - tmp174__ |= (pSrc->midamble_rx_1x_he_ltf << 5); - tmp174__ |= (pSrc->reserved2 << 6); - if (unlikely(nBuf < 1)) + tmp175__ = 0U; + tmp175__ |= (pSrc->su_beamformee << 0); + tmp175__ |= (pSrc->mu_beamformer << 1); + tmp175__ |= (pSrc->bfee_sts_lt_80 << 2); + tmp175__ |= (pSrc->bfee_sts_gt_80 << 5); + tmp175__ |= (pSrc->num_sounding_lt_80 << 8); + tmp175__ |= (pSrc->num_sounding_gt_80 << 11); + tmp175__ |= (pSrc->su_feedback_tone16 << 14); + tmp175__ |= (pSrc->mu_feedback_tone16 << 15); + tmp175__ |= (pSrc->codebook_su << 16); + tmp175__ |= (pSrc->codebook_mu << 17); + tmp175__ |= (pSrc->beamforming_feedback << 18); + tmp175__ |= (pSrc->he_er_su_ppdu << 21); + tmp175__ |= (pSrc->dl_mu_mimo_part_bw << 22); + tmp175__ |= (pSrc->ppet_present << 23); + tmp175__ |= (pSrc->srp << 24); + tmp175__ |= (pSrc->power_boost << 25); + tmp175__ |= (pSrc->he_ltf_800_gi_4x << 26); + tmp175__ |= (pSrc->max_nc << 27); + tmp175__ |= (pSrc->tx_stbc_gt_80mhz << 30); + tmp175__ |= (pSrc->rx_stbc_gt_80mhz << 31); + if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp174__; + frameshtonl(pCtx, pBuf, tmp175__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp176__ = 0U; + tmp176__ |= (pSrc->er_he_ltf_800_gi_4x << 0); + tmp176__ |= (pSrc->he_ppdu_20_in_40Mhz_2G << 1); + tmp176__ |= (pSrc->he_ppdu_20_in_160_80p80Mhz << 2); + tmp176__ |= (pSrc->he_ppdu_80_in_160_80p80Mhz << 3); + tmp176__ |= (pSrc->er_1x_he_ltf_gi << 4); + tmp176__ |= (pSrc->midamble_tx_rx_1x_he_ltf << 5); + tmp176__ |= (pSrc->dcm_max_bw << 6); + tmp176__ |= (pSrc->longer_than_16_he_sigb_ofdm_sym << 8); + tmp176__ |= (pSrc->non_trig_cqi_feedback << 9); + tmp176__ |= (pSrc->tx_1024_qam_lt_242_tone_ru << 10); + tmp176__ |= (pSrc->rx_1024_qam_lt_242_tone_ru << 11); + tmp176__ |= (pSrc->rx_full_bw_su_he_mu_compress_sigb << 12); + tmp176__ |= (pSrc->rx_full_bw_su_he_mu_non_cmpr_sigb << 13); + tmp176__ |= (pSrc->reserved3 << 14); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp176__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + *pBuf = pSrc->reserved4; *pnConsumed += 1; pBuf += 1; - nBuf -= 1 ; frameshtons(pCtx, pBuf, pSrc->rx_he_mcs_map_lt_80, 0); *pnConsumed += 2; pBuf += 2; @@ -26198,7 +26251,9 @@ uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint32_t tmp175__; + uint16_t tmp177__; + uint8_t tmp178__; + uint8_t tmp179__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_he_op(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -26212,25 +26267,40 @@ uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); *pBuf = 36; ++pBuf; ++(*pnConsumed); - tmp175__ = 0U; - tmp175__ |= (pSrc->bss_color << 0); - tmp175__ |= (pSrc->default_pe << 6); - tmp175__ |= (pSrc->twt_required << 9); - tmp175__ |= (pSrc->rts_threshold << 10); - tmp175__ |= (pSrc->partial_bss_col << 20); - tmp175__ |= (pSrc->vht_oper_present << 21); - tmp175__ |= (pSrc->reserved1 << 22); - tmp175__ |= (pSrc->mbssid_ap << 28); - tmp175__ |= (pSrc->tx_bssid_ind << 29); - tmp175__ |= (pSrc->bss_col_disabled << 30); - tmp175__ |= (pSrc->reserved2 << 31); - if (unlikely(nBuf < 4)) + tmp177__ = 0U; + tmp177__ |= (pSrc->default_pe << 0); + tmp177__ |= (pSrc->twt_required << 3); + tmp177__ |= (pSrc->txop_rts_threshold << 4); + tmp177__ |= (pSrc->vht_oper_present << 14); + tmp177__ |= (pSrc->co_located_bss << 15); + if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp175__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; + frameshtons(pCtx, pBuf, tmp177__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp178__ = 0U; + tmp178__ |= (pSrc->er_su_disable << 0); + tmp178__ |= (pSrc->reserved2 << 1); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp178__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp179__ = 0U; + tmp179__ |= (pSrc->bss_color << 0); + tmp179__ |= (pSrc->partial_bss_col << 6); + tmp179__ |= (pSrc->bss_col_disabled << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp179__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss, 2); *pnConsumed += 2; pBuf += 2; @@ -26251,8 +26321,8 @@ uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, } else { break; } - if (pSrc->mbssid_ap) { - switch (pSrc->mbssid_ap) { + if (pSrc->co_located_bss) { + switch (pSrc->co_located_bss) { case 1: *pBuf = pSrc->maxbssid_ind.info.data; *pnConsumed += 1; @@ -26280,7 +26350,7 @@ uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp176__; + uint8_t tmp180__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_hs20vendor_ie(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -26300,15 +26370,15 @@ uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); *pBuf = 0x10; ++pBuf; ++(*pnConsumed); - tmp176__ = 0U; - tmp176__ |= (pSrc->dgaf_dis << 0); - tmp176__ |= (pSrc->hs_id_present << 1); - tmp176__ |= (pSrc->reserved << 3); - tmp176__ |= (pSrc->release_num << 4); + tmp180__ = 0U; + tmp180__ |= (pSrc->dgaf_dis << 0); + tmp180__ |= (pSrc->hs_id_present << 1); + tmp180__ |= (pSrc->reserved << 3); + tmp180__ |= (pSrc->release_num << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp176__; + *pBuf = tmp180__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -26346,7 +26416,7 @@ uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp177__; + uint8_t tmp181__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -26355,17 +26425,17 @@ uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp177__ = 0U; - tmp177__ |= (pSrc->info_request << 0); - tmp177__ |= (pSrc->forty_mhz_intolerant << 1); - tmp177__ |= (pSrc->twenty_mhz_bsswidth_req << 2); - tmp177__ |= (pSrc->obss_scan_exemption_req << 3); - tmp177__ |= (pSrc->obss_scan_exemption_grant << 4); - tmp177__ |= (pSrc->unused << 5); + tmp181__ = 0U; + tmp181__ |= (pSrc->info_request << 0); + tmp181__ |= (pSrc->forty_mhz_intolerant << 1); + tmp181__ |= (pSrc->twenty_mhz_bsswidth_req << 2); + tmp181__ |= (pSrc->obss_scan_exemption_req << 3); + tmp181__ |= (pSrc->obss_scan_exemption_grant << 4); + tmp181__ |= (pSrc->unused << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp177__; + *pBuf = tmp181__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -26419,14 +26489,14 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp178__; - uint8_t tmp179__; - uint8_t tmp180__; - uint8_t tmp181__; uint8_t tmp182__; uint8_t tmp183__; uint8_t tmp184__; uint8_t tmp185__; + uint8_t tmp186__; + uint8_t tmp187__; + uint8_t tmp188__; + uint8_t tmp189__; nNeeded += 13; while (pSrc->present) { if (nNeeded > nBuf) @@ -26440,61 +26510,11 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pBuf = pSrc->qos; *pnConsumed += 1; pBuf += 1; - tmp178__ = 0U; - tmp178__ |= (pSrc->acbe_aifsn << 0); - tmp178__ |= (pSrc->acbe_acm << 4); - tmp178__ |= (pSrc->acbe_aci << 5); - tmp178__ |= (pSrc->unused1 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp178__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp179__ = 0U; - tmp179__ |= (pSrc->acbe_acwmin << 0); - tmp179__ |= (pSrc->acbe_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp179__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - *pBuf = pSrc->acbe_muedca_timer; - *pnConsumed += 1; - pBuf += 1; - tmp180__ = 0U; - tmp180__ |= (pSrc->acbk_aifsn << 0); - tmp180__ |= (pSrc->acbk_acm << 4); - tmp180__ |= (pSrc->acbk_aci << 5); - tmp180__ |= (pSrc->unused2 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp180__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp181__ = 0U; - tmp181__ |= (pSrc->acbk_acwmin << 0); - tmp181__ |= (pSrc->acbk_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp181__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - *pBuf = pSrc->acbk_muedca_timer; - *pnConsumed += 1; - pBuf += 1; tmp182__ = 0U; - tmp182__ |= (pSrc->acvi_aifsn << 0); - tmp182__ |= (pSrc->acvi_acm << 4); - tmp182__ |= (pSrc->acvi_aci << 5); - tmp182__ |= (pSrc->unused3 << 7); + tmp182__ |= (pSrc->acbe_aifsn << 0); + tmp182__ |= (pSrc->acbe_acm << 4); + tmp182__ |= (pSrc->acbe_aci << 5); + tmp182__ |= (pSrc->unused1 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -26503,8 +26523,8 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp183__ = 0U; - tmp183__ |= (pSrc->acvi_acwmin << 0); - tmp183__ |= (pSrc->acvi_acwmax << 4); + tmp183__ |= (pSrc->acbe_acwmin << 0); + tmp183__ |= (pSrc->acbe_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -26512,14 +26532,14 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - *pBuf = pSrc->acvi_muedca_timer; + *pBuf = pSrc->acbe_muedca_timer; *pnConsumed += 1; pBuf += 1; tmp184__ = 0U; - tmp184__ |= (pSrc->acvo_aifsn << 0); - tmp184__ |= (pSrc->acvo_acm << 4); - tmp184__ |= (pSrc->acvo_aci << 5); - tmp184__ |= (pSrc->unused4 << 7); + tmp184__ |= (pSrc->acbk_aifsn << 0); + tmp184__ |= (pSrc->acbk_acm << 4); + tmp184__ |= (pSrc->acbk_aci << 5); + tmp184__ |= (pSrc->unused2 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -26528,8 +26548,8 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp185__ = 0U; - tmp185__ |= (pSrc->acvo_acwmin << 0); - tmp185__ |= (pSrc->acvo_acwmax << 4); + tmp185__ |= (pSrc->acbk_acwmin << 0); + tmp185__ |= (pSrc->acbk_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -26537,6 +26557,56 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; + *pBuf = pSrc->acbk_muedca_timer; + *pnConsumed += 1; + pBuf += 1; + tmp186__ = 0U; + tmp186__ |= (pSrc->acvi_aifsn << 0); + tmp186__ |= (pSrc->acvi_acm << 4); + tmp186__ |= (pSrc->acvi_aci << 5); + tmp186__ |= (pSrc->unused3 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp186__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp187__ = 0U; + tmp187__ |= (pSrc->acvi_acwmin << 0); + tmp187__ |= (pSrc->acvi_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp187__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + *pBuf = pSrc->acvi_muedca_timer; + *pnConsumed += 1; + pBuf += 1; + tmp188__ = 0U; + tmp188__ |= (pSrc->acvo_aifsn << 0); + tmp188__ |= (pSrc->acvo_acm << 4); + tmp188__ |= (pSrc->acvo_aci << 5); + tmp188__ |= (pSrc->unused4 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp188__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp189__ = 0U; + tmp189__ |= (pSrc->acvo_acwmin << 0); + tmp189__ |= (pSrc->acvo_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp189__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; *pBuf = pSrc->acvo_muedca_timer; *pnConsumed += 1; /* fieldsEndFlag = 1 */ diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c index 9d64f9c96c2a..afaeab47a18b 100644 --- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c +++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c @@ -6126,20 +6126,20 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session, CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_FRAGMENTATION, value); he_cap->fragmentation = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MAX_FRAG_MSDU, value); - he_cap->max_num_frag_msdu = value; + he_cap->max_num_frag_msdu_amsdu_exp = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MIN_FRAG_SIZE, value); he_cap->min_frag_size = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_TRIG_PAD, value); he_cap->trigger_frm_mac_pad = value; - CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MTID_AGGR, value); - he_cap->multi_tid_aggr = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MTID_AGGR_RX, value); + he_cap->multi_tid_aggr_rx_supp = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_LINK_ADAPTATION, value); he_cap->he_link_adaptation = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_ALL_ACK, value); he_cap->all_ack = value; - CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_UL_MU_RSP_SCHEDULING, + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_TRIGD_RSP_SCHEDULING, value); - he_cap->ul_mu_rsp_sched = value; + he_cap->trigd_rsp_sched = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_BUFFER_STATUS_RPT, value); he_cap->a_bsr = value; @@ -6151,14 +6151,12 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session, he_cap->mu_cascade = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MULTI_TID, value); he_cap->ack_enabled_multitid = value; - CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_DL_MU_BA, value); - he_cap->dl_mu_ba = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_OMI, value); he_cap->omi_a_ctrl = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_OFDMA_RA, value); he_cap->ofdma_ra = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MAX_AMPDU_LEN, value); - he_cap->max_ampdu_len = value; + he_cap->max_ampdu_len_exp_ext = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_AMSDU_FRAG, value); he_cap->amsdu_frag = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_FLEX_TWT_SCHED, value); @@ -6172,7 +6170,7 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session, CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_A_BQR, value); he_cap->a_bqr = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_SR_RESPONDER, value); - he_cap->sr_responder = value; + he_cap->spatial_reuse_param_rspder = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NDP_FEEDBACK_SUPP, value); he_cap->ndp_feedback_supp = value; @@ -6180,9 +6178,14 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session, he_cap->ops_supp = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_AMSDU_IN_AMPDU, value); he_cap->amsdu_in_ampdu = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_SUB_CH_SEL_TX, value); + he_cap->he_sub_ch_sel_tx_supp = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_UL_2X996_RU, value); + he_cap->ul_2x996_tone_ru_supp = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX, + value); + he_cap->om_ctrl_ul_mu_data_dis_rx = value; - CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_DUAL_BAND, value); - he_cap->dual_band = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_CHAN_WIDTH, value); he_cap->chan_width_0 = HE_CH_WIDTH_GET_BIT(value, 0); he_cap->chan_width_1 = HE_CH_WIDTH_GET_BIT(value, 1); @@ -6202,7 +6205,7 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session, he_cap->he_1x_ltf_800_gi_ppdu = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MIDAMBLE_RX_MAX_NSTS, value); - he_cap->midamble_rx_max_nsts = value; + he_cap->midamble_tx_rx_max_nsts = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_LTF_NDP, value); he_cap->he_4x_ltf_3200_gi_ndp = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_TX_STBC_LT80, value); @@ -6275,8 +6278,29 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session, CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_ER_1X_HE_LTF_GI, value); he_cap->er_1x_he_ltf_gi = value; CFG_GET_INT(status, mac_ctx, - WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF, value); - he_cap->midamble_rx_1x_he_ltf = value; + WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF, value); + he_cap->midamble_tx_rx_1x_he_ltf = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_DCM_MAX_BW, value); + he_cap->dcm_max_bw = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM, + value); + he_cap->longer_than_16_he_sigb_ofdm_sym = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_TX_1024_QAM_LT_242_RU, + value); + he_cap->tx_1024_qam_lt_242_tone_ru = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_RX_1024_QAM_LT_242_RU, + value); + he_cap->rx_1024_qam_lt_242_tone_ru = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK, + value); + he_cap->non_trig_cqi_feedback = value; + CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB, + value); + he_cap->rx_full_bw_su_he_mu_compress_sigb = value; + CFG_GET_INT(status, mac_ctx, + WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB, + value); + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb = value; CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_RX_MCS_MAP_LT_80, value); he_cap->rx_he_mcs_map_lt_80 = value; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 483215c025d3..a67e386641ba 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -2508,19 +2508,19 @@ void csr_update_session_he_cap(tpAniSirGlobal mac_ctx, sme_cfg_get_int(mac_hdl, WNI_CFG_HE_FRAGMENTATION, &value); he_cap->fragmentation = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MAX_FRAG_MSDU, &value); - he_cap->max_num_frag_msdu = value; + he_cap->max_num_frag_msdu_amsdu_exp = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MIN_FRAG_SIZE, &value); he_cap->min_frag_size = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_TRIG_PAD, &value); he_cap->trigger_frm_mac_pad = value; - sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MTID_AGGR, &value); - he_cap->multi_tid_aggr = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MTID_AGGR_RX, &value); + he_cap->multi_tid_aggr_rx_supp = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_LINK_ADAPTATION, &value); he_cap->he_link_adaptation = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_ALL_ACK, &value); he_cap->all_ack = value; - sme_cfg_get_int(mac_hdl, WNI_CFG_HE_UL_MU_RSP_SCHEDULING, &value); - he_cap->ul_mu_rsp_sched = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_TRIGD_RSP_SCHEDULING, &value); + he_cap->trigd_rsp_sched = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_BUFFER_STATUS_RPT, &value); he_cap->a_bsr = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_BCAST_TWT, &value); @@ -2531,14 +2531,12 @@ void csr_update_session_he_cap(tpAniSirGlobal mac_ctx, he_cap->mu_cascade = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MULTI_TID, &value); he_cap->ack_enabled_multitid = value; - sme_cfg_get_int(mac_hdl, WNI_CFG_HE_DL_MU_BA, &value); - he_cap->dl_mu_ba = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_OMI, &value); he_cap->omi_a_ctrl = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_OFDMA_RA, &value); he_cap->ofdma_ra = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MAX_AMPDU_LEN, &value); - he_cap->max_ampdu_len = value; + he_cap->max_ampdu_len_exp_ext = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_AMSDU_FRAG, &value); he_cap->amsdu_frag = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_FLEX_TWT_SCHED, &value); @@ -2552,16 +2550,20 @@ void csr_update_session_he_cap(tpAniSirGlobal mac_ctx, sme_cfg_get_int(mac_hdl, WNI_CFG_HE_A_BQR, &value); he_cap->a_bqr = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_SR_RESPONDER, &value); - he_cap->sr_responder = value; + he_cap->spatial_reuse_param_rspder = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_NDP_FEEDBACK_SUPP, &value); he_cap->ndp_feedback_supp = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_OPS_SUPP, &value); he_cap->ops_supp = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_AMSDU_IN_AMPDU, &value); he_cap->amsdu_in_ampdu = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_SUB_CH_SEL_TX, &value); + he_cap->he_sub_ch_sel_tx_supp = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_UL_2X996_RU, &value); + he_cap->ul_2x996_tone_ru_supp = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_OM_CTRL_UL_MU_DIS_RX, &value); + he_cap->om_ctrl_ul_mu_data_dis_rx = value; - sme_cfg_get_int(mac_hdl, WNI_CFG_HE_DUAL_BAND, &value); - he_cap->dual_band = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_CHAN_WIDTH, &value); he_cap->chan_width_0 = HE_CH_WIDTH_GET_BIT(value, 0); he_cap->chan_width_1 = HE_CH_WIDTH_GET_BIT(value, 1); @@ -2580,7 +2582,7 @@ void csr_update_session_he_cap(tpAniSirGlobal mac_ctx, sme_cfg_get_int(mac_hdl, WNI_CFG_HE_LTF_PPDU, &value); he_cap->he_1x_ltf_800_gi_ppdu = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MIDAMBLE_RX_MAX_NSTS, &value); - he_cap->midamble_rx_max_nsts = value; + he_cap->midamble_tx_rx_max_nsts = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_LTF_NDP, &value); he_cap->he_4x_ltf_3200_gi_ndp = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_TX_STBC_LT80, &value); @@ -2660,8 +2662,23 @@ void csr_update_session_he_cap(tpAniSirGlobal mac_ctx, he_cap->he_ppdu_80_in_160_80p80Mhz = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_ER_1X_HE_LTF_GI, &value); he_cap->er_1x_he_ltf_gi = value; - sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MIDAMBLE_RX_1X_HE_LTF, &value); - he_cap->midamble_rx_1x_he_ltf = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_MIDAMBLE_TXRX_1X_HE_LTF, &value); + he_cap->midamble_tx_rx_1x_he_ltf = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_DCM_MAX_BW, &value); + he_cap->dcm_max_bw = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_LONGER_16_SIGB_OFDM_SYM, &value); + he_cap->longer_than_16_he_sigb_ofdm_sym = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_TX_1024_QAM_LT_242_RU, &value); + he_cap->tx_1024_qam_lt_242_tone_ru = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_RX_1024_QAM_LT_242_RU, &value); + he_cap->rx_1024_qam_lt_242_tone_ru = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_NON_TRIG_CQI_FEEDBACK, &value); + he_cap->non_trig_cqi_feedback = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_RX_FULL_BW_MU_CMPR_SIGB, &value); + he_cap->rx_full_bw_su_he_mu_compress_sigb = value; + sme_cfg_get_int(mac_hdl, WNI_CFG_HE_RX_FULL_BW_MU_NON_CMPR_SIGB, + &value); + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_RX_MCS_MAP_LT_80, &value); he_cap->rx_he_mcs_map_lt_80 = value; sme_cfg_get_int(mac_hdl, WNI_CFG_HE_TX_MCS_MAP_LT_80, &value); diff --git a/core/wma/inc/wma_api.h b/core/wma/inc/wma_api.h index 5e9e1be3c19b..86a27d79f697 100644 --- a/core/wma/inc/wma_api.h +++ b/core/wma/inc/wma_api.h @@ -76,8 +76,8 @@ struct wma_caps_per_phy { uint32_t ht_5g; uint32_t vht_2g; uint32_t vht_5g; - uint32_t he_2g; - uint32_t he_5g; + uint32_t he_2g[PSOC_HOST_MAX_MAC_SIZE]; + uint32_t he_5g[PSOC_HOST_MAX_MAC_SIZE]; uint32_t tx_chain_mask_2G; uint32_t rx_chain_mask_2G; uint32_t tx_chain_mask_5G; diff --git a/core/wma/inc/wma_he.h b/core/wma/inc/wma_he.h index a33683493a39..9f3d036ccc81 100644 --- a/core/wma/inc/wma_he.h +++ b/core/wma/inc/wma_he.h @@ -59,14 +59,24 @@ void wma_print_he_ppet(void *ppet); void wma_print_he_phy_cap(uint32_t *phy_cap); /** - * wma_print_he_mac_cap() - Print HE MAC Capability + * wma_print_he_mac_cap_w1() - Print HE MAC Capability * @mac_cap: MAC Capability * * This function prints HE MAC Capability received from FW. * * Return: none */ -void wma_print_he_mac_cap(uint32_t mac_cap); +void wma_print_he_mac_cap_w1(uint32_t mac_cap); + +/** + * wma_print_he_mac_cap_w2() - Print HE MAC Capability + * @mac_cap: MAC Capability + * + * This function prints HE MAC Capability received from FW. + * + * Return: none + */ +void wma_print_he_mac_cap_w2(uint32_t mac_cap); /** * wma_print_he_op() - Print HE Operation @@ -243,7 +253,11 @@ static inline void wma_print_he_phy_cap(uint32_t *phy_cap) { } -static inline void wma_print_he_mac_cap(uint32_t mac_cap) +static inline void wma_print_he_mac_cap_w1(uint32_t mac_cap) +{ +} + +static inline void wma_print_he_mac_cap_w2(uint32_t mac_cap) { } diff --git a/core/wma/src/wma_he.c b/core/wma/src/wma_he.c index 7fbf8c805a1a..294fdfbcfd62 100644 --- a/core/wma/src/wma_he.c +++ b/core/wma/src/wma_he.c @@ -169,7 +169,7 @@ static void wma_convert_he_ppet(uint8_t *he_ppet, * * Return: None */ -static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, +static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t *mac_cap, uint32_t *phy_cap, uint32_t supp_mcs, uint32_t tx_chain_mask, uint32_t rx_chain_mask) { @@ -181,38 +181,47 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, he_cap->present = true; /* HE MAC capabilities */ - he_cap->htc_he = WMI_HECAP_MAC_HECTRL_GET(mac_cap); - he_cap->twt_request = WMI_HECAP_MAC_TWTREQ_GET(mac_cap); - he_cap->twt_responder = WMI_HECAP_MAC_TWTRSP_GET(mac_cap); - he_cap->fragmentation = WMI_HECAP_MAC_HEFRAG_GET(mac_cap); - he_cap->max_num_frag_msdu = WMI_HECAP_MAC_MAXFRAGMSDU_GET(mac_cap); - he_cap->min_frag_size = WMI_HECAP_MAC_MINFRAGSZ_GET(mac_cap); - he_cap->trigger_frm_mac_pad = WMI_HECAP_MAC_TRIGPADDUR_GET(mac_cap); - he_cap->multi_tid_aggr = WMI_HECAP_MAC_ACKMTIDAMPDU_GET(mac_cap); - he_cap->he_link_adaptation = WMI_HECAP_MAC_HELKAD_GET(mac_cap); - he_cap->all_ack = WMI_HECAP_MAC_AACK_GET(mac_cap); - he_cap->ul_mu_rsp_sched = WMI_HECAP_MAC_ULMURSP_GET(mac_cap); - he_cap->a_bsr = WMI_HECAP_MAC_BSR_GET(mac_cap); - he_cap->broadcast_twt = WMI_HECAP_MAC_BCSTTWT_GET(mac_cap); - he_cap->ba_32bit_bitmap = WMI_HECAP_MAC_32BITBA_GET(mac_cap); - he_cap->mu_cascade = WMI_HECAP_MAC_MUCASCADE_GET(mac_cap); - he_cap->ack_enabled_multitid = WMI_HECAP_MAC_ACKMTIDAMPDU_GET(mac_cap); - he_cap->dl_mu_ba = WMI_HECAP_MAC_GROUPMSTABA_GET(mac_cap); - he_cap->omi_a_ctrl = WMI_HECAP_MAC_OMI_GET(mac_cap); - he_cap->ofdma_ra = WMI_HECAP_MAC_OFDMARA_GET(mac_cap); - he_cap->max_ampdu_len = WMI_HECAP_MAC_MAXAMPDULEN_EXP_GET(mac_cap); - he_cap->amsdu_frag = WMI_HECAP_MAC_AMSDUFRAG_GET(mac_cap); - he_cap->flex_twt_sched = WMI_HECAP_MAC_FLEXTWT_GET(mac_cap); - he_cap->rx_ctrl_frame = WMI_HECAP_MAC_MBSS_GET(mac_cap); - he_cap->bsrp_ampdu_aggr = WMI_HECAP_MAC_BSRPAMPDU_GET(mac_cap); - he_cap->qtp = WMI_HECAP_MAC_QTP_GET(mac_cap); - he_cap->a_bqr = WMI_HECAP_MAC_ABQR_GET(mac_cap); - he_cap->sr_responder = WMI_HECAP_MAC_SRRESP_GET(mac_cap); - he_cap->ndp_feedback_supp = WMI_HECAP_MAC_NDPFDBKRPT_GET(mac_cap); - he_cap->ops_supp = WMI_HECAP_MAC_OPS_GET(mac_cap); - he_cap->amsdu_in_ampdu = WMI_HECAP_MAC_AMSDUINAMPDU_GET(mac_cap); + he_cap->htc_he = WMI_HECAP_MAC_HECTRL_GET(mac_cap[0]); + he_cap->twt_request = WMI_HECAP_MAC_TWTREQ_GET(mac_cap[0]); + he_cap->twt_responder = WMI_HECAP_MAC_TWTRSP_GET(mac_cap[0]); + he_cap->fragmentation = WMI_HECAP_MAC_HEFRAG_GET(mac_cap[0]); + he_cap->max_num_frag_msdu_amsdu_exp = + WMI_HECAP_MAC_MAXFRAGMSDU_GET(mac_cap[0]); + he_cap->min_frag_size = WMI_HECAP_MAC_MINFRAGSZ_GET(mac_cap[0]); + he_cap->trigger_frm_mac_pad = WMI_HECAP_MAC_TRIGPADDUR_GET(mac_cap[0]); + he_cap->multi_tid_aggr_rx_supp = + WMI_HECAP_MAC_ACKMTIDAMPDU_GET(mac_cap[0]); + he_cap->he_link_adaptation = WMI_HECAP_MAC_HELINK_ADPT_GET(mac_cap[0]); + he_cap->all_ack = WMI_HECAP_MAC_AACK_GET(mac_cap[0]); + he_cap->trigd_rsp_sched = WMI_HECAP_MAC_TRS_GET(mac_cap[0]); + he_cap->a_bsr = WMI_HECAP_MAC_BSR_GET(mac_cap[0]); + he_cap->broadcast_twt = WMI_HECAP_MAC_BCSTTWT_GET(mac_cap[0]); + he_cap->ba_32bit_bitmap = WMI_HECAP_MAC_32BITBA_GET(mac_cap[0]); + he_cap->mu_cascade = WMI_HECAP_MAC_MUCASCADE_GET(mac_cap[0]); + he_cap->ack_enabled_multitid = + WMI_HECAP_MAC_ACKMTIDAMPDU_GET(mac_cap[0]); + he_cap->omi_a_ctrl = WMI_HECAP_MAC_OMI_GET(mac_cap[0]); + he_cap->ofdma_ra = WMI_HECAP_MAC_OFDMARA_GET(mac_cap[0]); + he_cap->max_ampdu_len_exp_ext = + WMI_HECAP_MAC_MAXAMPDULEN_EXP_GET(mac_cap[0]); + he_cap->amsdu_frag = WMI_HECAP_MAC_AMSDUFRAG_GET(mac_cap[0]); + he_cap->flex_twt_sched = WMI_HECAP_MAC_FLEXTWT_GET(mac_cap[0]); + he_cap->rx_ctrl_frame = WMI_HECAP_MAC_MBSS_GET(mac_cap[0]); + he_cap->bsrp_ampdu_aggr = WMI_HECAP_MAC_BSRPAMPDU_GET(mac_cap[1]); + he_cap->qtp = WMI_HECAP_MAC_QTP_GET(mac_cap[1]); + he_cap->a_bqr = WMI_HECAP_MAC_ABQR_GET(mac_cap[1]); + he_cap->spatial_reuse_param_rspder = + WMI_HECAP_MAC_SRPRESP_GET(mac_cap[1]); + he_cap->ndp_feedback_supp = WMI_HECAP_MAC_NDPFDBKRPT_GET(mac_cap[1]); + he_cap->ops_supp = WMI_HECAP_MAC_OPS_GET(mac_cap[1]); + he_cap->amsdu_in_ampdu = WMI_HECAP_MAC_AMSDUINAMPDU_GET(mac_cap[1]); + he_cap->multi_tid_aggr_tx_supp = WMI_HECAP_MAC_MTID_TX_GET(mac_cap[1]); + he_cap->he_sub_ch_sel_tx_supp = + WMI_HECAP_MAC_SUBCHANSELTX_GET(mac_cap[1]); + he_cap->ul_2x996_tone_ru_supp = WMI_HECAP_MAC_UL2X996RU_GET(mac_cap[1]); + he_cap->om_ctrl_ul_mu_data_dis_rx = + WMI_HECAP_MAC_OMCULMUDDIS_GET(mac_cap[1]); /* HE PHY capabilities */ - he_cap->dual_band = WMI_HECAP_PHY_DB_GET(phy_cap); chan_width = WMI_HECAP_PHY_CBW_GET(phy_cap); he_cap->chan_width_0 = HE_CH_WIDTH_GET_BIT(chan_width, 0); he_cap->chan_width_1 = HE_CH_WIDTH_GET_BIT(chan_width, 1); @@ -225,8 +234,8 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, he_cap->device_class = WMI_HECAP_PHY_COD_GET(phy_cap); he_cap->ldpc_coding = WMI_HECAP_PHY_LDPC_GET(phy_cap); he_cap->he_1x_ltf_800_gi_ppdu = WMI_HECAP_PHY_LTFGIFORHE_GET(phy_cap); - he_cap->midamble_rx_max_nsts = - WMI_HECAP_PHY_MIDAMBLERXMAXNSTS_GET(phy_cap); + he_cap->midamble_tx_rx_max_nsts = + WMI_HECAP_PHY_MIDAMBLETXRXMAXNSTS_GET(phy_cap); he_cap->he_4x_ltf_3200_gi_ndp = WMI_HECAP_PHY_LTFGIFORNDP_GET(phy_cap); he_cap->rx_stbc_lt_80mhz = WMI_HECAP_PHY_RXSTBC_GET(phy_cap); he_cap->tx_stbc_lt_80mhz = WMI_HECAP_PHY_TXSTBC_GET(phy_cap); @@ -234,7 +243,7 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, he_cap->tx_stbc_gt_80mhz = WMI_HECAP_PHY_STBCTXGT80_GET(phy_cap); he_cap->doppler = (WMI_HECAP_PHY_RXDOPPLER_GET(phy_cap) << 1) | - WMI_HECAP_PHY_TXDOPPLER_GET(phy_cap); + WMI_HECAP_PHY_TXDOPPLER(phy_cap); he_cap->ul_mu = (WMI_HECAP_PHY_ULMUMIMOOFDMA_GET(phy_cap) << 1) | WMI_HECAP_PHY_UL_MU_MIMO_GET(phy_cap); he_cap->dcm_enc_tx = WMI_HECAP_PHY_DCMTX_GET(phy_cap); @@ -243,7 +252,7 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, he_cap->su_beamformer = WMI_HECAP_PHY_SUBFMR_GET(phy_cap); he_cap->su_beamformee = WMI_HECAP_PHY_SUBFME_GET(phy_cap); he_cap->mu_beamformer = WMI_HECAP_PHY_MUBFMR_GET(phy_cap); - he_cap->bfee_sts_lt_80 = WMI_HECAP_PHY_SUBFMESTS_GET(phy_cap); + he_cap->bfee_sts_lt_80 = WMI_HECAP_PHY_BFMESTSLT80MHZ_GET(phy_cap); he_cap->bfee_sts_gt_80 = WMI_HECAP_PHY_BFMESTSGT80MHZ_GET(phy_cap); he_cap->num_sounding_lt_80 = WMI_HECAP_PHY_NUMSOUNDLT80MHZ_GET(phy_cap); he_cap->num_sounding_gt_80 = WMI_HECAP_PHY_NUMSOUNDGT80MHZ_GET(phy_cap); @@ -264,6 +273,8 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, he_cap->he_ltf_800_gi_4x = WMI_HECAP_PHY_4XLTFAND800NSECSGI_GET(phy_cap); he_cap->max_nc = WMI_HECAP_PHY_MAXNC_GET(phy_cap); + he_cap->tx_stbc_gt_80mhz = WMI_HECAP_PHY_STBCTXGT80_GET(phy_cap); + he_cap->rx_stbc_gt_80mhz = WMI_HECAP_PHY_STBCRXGT80_GET(phy_cap); he_cap->er_he_ltf_800_gi_4x = WMI_HECAP_PHY_ERSU4X800NSECGI_GET(phy_cap); he_cap->he_ppdu_20_in_40Mhz_2G = @@ -273,8 +284,22 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap, he_cap->he_ppdu_80_in_160_80p80Mhz = WMI_HECAP_PHY_HEPPDU80IN160OR80P80MHZ_GET(phy_cap); he_cap->er_1x_he_ltf_gi = WMI_HECAP_PHY_ERSU1X800NSECGI_GET(phy_cap); - he_cap->midamble_rx_1x_he_ltf = - WMI_HECAP_PHY_MIDAMBLERX2XAND1XHELTF_GET(phy_cap); + he_cap->midamble_tx_rx_1x_he_ltf = + WMI_HECAP_PHY_MIDAMBLETXRX2XAND1XHELTF_GET(phy_cap); + + he_cap->dcm_max_bw = WMI_HECAP_PHY_DCMMAXBW_GET(phy_cap); + he_cap->longer_than_16_he_sigb_ofdm_sym = + WMI_HECAP_PHY_LNG16SIGBSYMBSUPRT_GET(phy_cap); + he_cap->non_trig_cqi_feedback = + WMI_HECAP_PHY_NONTRIGCQIFEEDBK_GET(phy_cap); + he_cap->tx_1024_qam_lt_242_tone_ru = + WMI_HECAP_PHY_TX1024QAM242RUSUPRT_GET(phy_cap); + he_cap->rx_1024_qam_lt_242_tone_ru = + WMI_HECAP_PHY_RX1024QAM242RUSUPRT_GET(phy_cap); + he_cap->rx_full_bw_su_he_mu_compress_sigb = + WMI_HECAP_PHY_RXFULBWSUWCMPRSSIGB_GET(phy_cap); + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb = + WMI_HECAP_PHY_RXFULBWSUWNONCMPRSSIGB_GET(phy_cap); /* * supp_mcs is split into 16 bits with lower indicating le_80 and @@ -331,21 +356,22 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap, new_cap->twt_responder); he_cap->fragmentation = QDF_MIN(he_cap->fragmentation, new_cap->fragmentation); - he_cap->max_num_frag_msdu = QDF_MIN(he_cap->max_num_frag_msdu, - new_cap->max_num_frag_msdu); + he_cap->max_num_frag_msdu_amsdu_exp = QDF_MIN( + he_cap->max_num_frag_msdu_amsdu_exp, + new_cap->max_num_frag_msdu_amsdu_exp); he_cap->min_frag_size = QDF_MIN(he_cap->min_frag_size, new_cap->min_frag_size); he_cap->trigger_frm_mac_pad = QDF_MIN(he_cap->trigger_frm_mac_pad, new_cap->trigger_frm_mac_pad); - he_cap->multi_tid_aggr = QDF_MIN(he_cap->multi_tid_aggr, - new_cap->multi_tid_aggr); + he_cap->multi_tid_aggr_rx_supp = QDF_MIN(he_cap->multi_tid_aggr_rx_supp, + new_cap->multi_tid_aggr_rx_supp); he_cap->he_link_adaptation = QDF_MIN(he_cap->he_link_adaptation, new_cap->he_link_adaptation); he_cap->all_ack = QDF_MIN(he_cap->all_ack, new_cap->all_ack); - he_cap->ul_mu_rsp_sched = QDF_MIN(he_cap->ul_mu_rsp_sched, - new_cap->ul_mu_rsp_sched); + he_cap->trigd_rsp_sched = QDF_MIN(he_cap->trigd_rsp_sched, + new_cap->trigd_rsp_sched); he_cap->a_bsr = QDF_MIN(he_cap->a_bsr, new_cap->a_bsr); he_cap->broadcast_twt = QDF_MIN(he_cap->broadcast_twt, @@ -357,14 +383,12 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap, he_cap->ack_enabled_multitid = QDF_MIN(he_cap->ack_enabled_multitid, new_cap->ack_enabled_multitid); - he_cap->dl_mu_ba = QDF_MIN(he_cap->dl_mu_ba, - new_cap->dl_mu_ba); he_cap->omi_a_ctrl = QDF_MIN(he_cap->omi_a_ctrl, new_cap->omi_a_ctrl); he_cap->ofdma_ra = QDF_MIN(he_cap->ofdma_ra, new_cap->ofdma_ra); - he_cap->max_ampdu_len = QDF_MIN(he_cap->max_ampdu_len, - new_cap->max_ampdu_len); + he_cap->max_ampdu_len_exp_ext = QDF_MIN(he_cap->max_ampdu_len_exp_ext, + new_cap->max_ampdu_len_exp_ext); he_cap->amsdu_frag = QDF_MIN(he_cap->amsdu_frag, new_cap->amsdu_frag); he_cap->flex_twt_sched = QDF_MIN(he_cap->flex_twt_sched, @@ -375,8 +399,9 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap, new_cap->bsrp_ampdu_aggr); he_cap->qtp = QDF_MIN(he_cap->qtp, new_cap->qtp); he_cap->a_bqr = QDF_MIN(he_cap->a_bqr, new_cap->a_bqr); - he_cap->sr_responder = QDF_MIN(he_cap->sr_responder, - new_cap->sr_responder); + he_cap->spatial_reuse_param_rspder = QDF_MIN( + he_cap->spatial_reuse_param_rspder, + new_cap->spatial_reuse_param_rspder); he_cap->ndp_feedback_supp = QDF_MIN(he_cap->ndp_feedback_supp, new_cap->ndp_feedback_supp); he_cap->ops_supp = QDF_MIN(he_cap->ops_supp, new_cap->ops_supp); @@ -385,9 +410,6 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap, he_cap->reserved1 = QDF_MIN(he_cap->reserved1, new_cap->reserved1); - he_cap->dual_band = QDF_MIN(he_cap->dual_band, - new_cap->dual_band); - he_cap->chan_width_0 = he_cap->chan_width_0 | new_cap->chan_width_0; he_cap->chan_width_1 = he_cap->chan_width_1 | new_cap->chan_width_1; he_cap->chan_width_2 = he_cap->chan_width_2 | new_cap->chan_width_2; @@ -406,9 +428,9 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap, he_cap->he_1x_ltf_800_gi_ppdu = QDF_MIN(he_cap->he_1x_ltf_800_gi_ppdu, new_cap->he_1x_ltf_800_gi_ppdu); - he_cap->midamble_rx_max_nsts = - QDF_MIN(he_cap->midamble_rx_max_nsts, - new_cap->midamble_rx_max_nsts); + he_cap->midamble_tx_rx_max_nsts = + QDF_MIN(he_cap->midamble_tx_rx_max_nsts, + new_cap->midamble_tx_rx_max_nsts); he_cap->he_4x_ltf_3200_gi_ndp = QDF_MIN(he_cap->he_4x_ltf_3200_gi_ndp, new_cap->he_4x_ltf_3200_gi_ndp); @@ -474,9 +496,9 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap, new_cap->he_ppdu_80_in_160_80p80Mhz); he_cap->er_1x_he_ltf_gi = QDF_MIN(he_cap->er_1x_he_ltf_gi, new_cap->er_1x_he_ltf_gi); - he_cap->midamble_rx_1x_he_ltf = - QDF_MIN(he_cap->midamble_rx_1x_he_ltf, - new_cap->midamble_rx_1x_he_ltf); + he_cap->midamble_tx_rx_1x_he_ltf = + QDF_MIN(he_cap->midamble_tx_rx_1x_he_ltf, + new_cap->midamble_tx_rx_1x_he_ltf); he_cap->reserved2 = QDF_MIN(he_cap->reserved2, new_cap->reserved2); @@ -522,37 +544,46 @@ void wma_print_he_cap(tDot11fIEhe_cap *he_cap) WMA_LOGD("\tTWT Requestor support: 0x%01x", he_cap->twt_request); WMA_LOGD("\tTWT Responder support: 0x%01x", he_cap->twt_responder); WMA_LOGD("\tFragmentation support: 0x%02x", he_cap->fragmentation); - WMA_LOGD("\tMax no.of frag MSDUs: 0x%03x", he_cap->max_num_frag_msdu); + WMA_LOGD("\tMax no.of frag MSDUs: 0x%03x", + he_cap->max_num_frag_msdu_amsdu_exp); WMA_LOGD("\tMin. frag size: 0x%02x", he_cap->min_frag_size); WMA_LOGD("\tTrigger MAC pad duration: 0x%02x", he_cap->trigger_frm_mac_pad); - WMA_LOGD("\tMulti-TID aggr support: 0x%03x", he_cap->multi_tid_aggr); + WMA_LOGD("\tMulti-TID aggr RX support: 0x%03x", + he_cap->multi_tid_aggr_rx_supp); WMA_LOGD("\tLink adaptation: 0x%02x", he_cap->he_link_adaptation); WMA_LOGD("\tAll ACK support: 0x%01x", he_cap->all_ack); - WMA_LOGD("\tUL MU resp. scheduling: 0x%01x", he_cap->ul_mu_rsp_sched); + WMA_LOGD("\tTriggered resp. scheduling: 0x%01x", + he_cap->trigd_rsp_sched); WMA_LOGD("\tA-Buff status report: 0x%01x", he_cap->a_bsr); WMA_LOGD("\tBroadcast TWT support: 0x%01x", he_cap->broadcast_twt); WMA_LOGD("\t32bit BA bitmap support: 0x%01x", he_cap->ba_32bit_bitmap); WMA_LOGD("\tMU Cascading support: 0x%01x", he_cap->mu_cascade); WMA_LOGD("\tACK enabled Multi-TID: 0x%01x", he_cap->ack_enabled_multitid); - WMA_LOGD("\tMulti-STA BA in DL MU: 0x%01x", he_cap->dl_mu_ba); WMA_LOGD("\tOMI A-Control support: 0x%01x", he_cap->omi_a_ctrl); WMA_LOGD("\tOFDMA RA support: 0x%01x", he_cap->ofdma_ra); - WMA_LOGD("\tMax A-MPDU Length: 0x%02x", he_cap->max_ampdu_len); + WMA_LOGD("\tMax A-MPDU Length: 0x%02x", he_cap->max_ampdu_len_exp_ext); WMA_LOGD("\tA-MSDU Fragmentation: 0x%01x", he_cap->amsdu_frag); WMA_LOGD("\tFlex. TWT sched support: 0x%01x", he_cap->flex_twt_sched); WMA_LOGD("\tRx Ctrl frame to MBSS: 0x%01x", he_cap->rx_ctrl_frame); WMA_LOGD("\tBSRP A-MPDU Aggregation: 0x%01x", he_cap->bsrp_ampdu_aggr); WMA_LOGD("\tQuite Time Period support: 0x%01x", he_cap->qtp); WMA_LOGD("\tA-BQR support: 0x%01x", he_cap->a_bqr); - WMA_LOGD("\t SR Responder: 0x%01x", he_cap->sr_responder); - WMA_LOGD("\t ndp feedback supp: 0x%01x", he_cap->ndp_feedback_supp); - WMA_LOGD("\t ops supp: 0x%01x", he_cap->ops_supp); - WMA_LOGD("\t amsdu in ampdu: 0x%01x", he_cap->amsdu_in_ampdu); + WMA_LOGD("\tSR Responder: 0x%01x", he_cap->spatial_reuse_param_rspder); + WMA_LOGD("\tndp feedback supp: 0x%01x", he_cap->ndp_feedback_supp); + WMA_LOGD("\tops supp: 0x%01x", he_cap->ops_supp); + WMA_LOGD("\tamsdu in ampdu: 0x%01x", he_cap->amsdu_in_ampdu); + WMA_LOGD("\tMulti-TID aggr Tx support: 0x%03x", + he_cap->multi_tid_aggr_tx_supp); + WMA_LOGD("\tHE sub ch sel tx supp: 0x%01x", + he_cap->he_sub_ch_sel_tx_supp); + WMA_LOGD("\tUL 2x996 tone RU supp: 0x%01x", + he_cap->ul_2x996_tone_ru_supp); + WMA_LOGD("\tOM ctrl UL MU data dis rx supp: 0x%01x", + he_cap->om_ctrl_ul_mu_data_dis_rx); /* HE PHY capabilities */ - WMA_LOGD("\tDual band support: 0x%01x", he_cap->dual_band); chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0, he_cap->chan_width_1, he_cap->chan_width_2, he_cap->chan_width_3, he_cap->chan_width_4, @@ -565,15 +596,15 @@ void wma_print_he_cap(tDot11fIEhe_cap *he_cap) WMA_LOGD("\tLDPC coding support: 0x%01x", he_cap->ldpc_coding); WMA_LOGD("\tLTF and GI for HE PPDUs: 0x%02x", he_cap->he_1x_ltf_800_gi_ppdu); - WMA_LOGD("\tMidamble Rx MAX NSTS: 0x%02x", - he_cap->midamble_rx_max_nsts); + WMA_LOGD("\tMidamble Tx Rx MAX NSTS: 0x%02x", + he_cap->midamble_tx_rx_max_nsts); WMA_LOGD("\tLTF and GI for NDP: 0x%02x", he_cap->he_4x_ltf_3200_gi_ndp); WMA_LOGD("\tSTBC Tx support <= 80M: 0x%01x", he_cap->tx_stbc_lt_80mhz); WMA_LOGD("\tSTBC Rx support <= 80M: 0x%01x", he_cap->rx_stbc_lt_80mhz); WMA_LOGD("\tDoppler support: 0x%02x", he_cap->doppler); WMA_LOGD("\tUL MU: 0x%02x", he_cap->ul_mu); WMA_LOGD("\tDCM encoding Tx: 0x%03x", he_cap->dcm_enc_tx); - WMA_LOGD("\tDCM encoding Tx: 0x%03x", he_cap->dcm_enc_rx); + WMA_LOGD("\tDCM encoding Rx: 0x%03x", he_cap->dcm_enc_rx); WMA_LOGD("\tHE MU PPDU payload support: 0x%01x", he_cap->ul_he_mu); WMA_LOGD("\tSU Beamformer: 0x%01x", he_cap->su_beamformer); WMA_LOGD("\tSU Beamformee: 0x%01x", he_cap->su_beamformee); @@ -614,8 +645,22 @@ void wma_print_he_cap(tDot11fIEhe_cap *he_cap) he_cap->he_ppdu_80_in_160_80p80Mhz); WMA_LOGD("\ter_1x_he_ltf_gi: 0x%01x", he_cap->er_1x_he_ltf_gi); - WMA_LOGD("\tmidamble_rx_1x_he_ltf: 0x%01x", - he_cap->midamble_rx_1x_he_ltf); + WMA_LOGD("\tmidamble_tx_rx_1x_he_ltf: 0x%01x", + he_cap->midamble_tx_rx_1x_he_ltf); + WMA_LOGD("\tDCM max BW: 0x%02x", + he_cap->dcm_max_bw); + WMA_LOGD("\tlonger_than_16_he_sigb_ofdm_sym: 0x%01x", + he_cap->longer_than_16_he_sigb_ofdm_sym); + WMA_LOGD("\tnon_trig_cqi_feedback: 0x%01x", + he_cap->non_trig_cqi_feedback); + WMA_LOGD("\ttx_1024_qam_lt_242_tone_ru: 0x%01x", + he_cap->tx_1024_qam_lt_242_tone_ru); + WMA_LOGD("\trx_1024_qam_lt_242_tone_ru: 0x%01x", + he_cap->rx_1024_qam_lt_242_tone_ru); + WMA_LOGD("\trx_full_bw_su_he_mu_compress_sigb: 0x%01x", + he_cap->rx_full_bw_su_he_mu_compress_sigb); + WMA_LOGD("\trx_full_bw_su_he_mu_non_cmpr_sigb: 0x%01x", + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb); WMA_LOGD("\tRx MCS MAP for BW <= 80 MHz: 0x%x", he_cap->rx_he_mcs_map_lt_80); WMA_LOGD("\tTx MCS MAP for BW <= 80 MHz: 0x%x", @@ -687,8 +732,6 @@ void wma_print_he_phy_cap(uint32_t *phy_cap) { WMA_LOGD(FL("HE PHY Capabilities:")); - WMA_LOGD("\tDual band support: 0x%01x", - WMI_HECAP_PHY_DB_GET(phy_cap)); WMA_LOGD("\tChannel width support: 0x%07x", WMI_HECAP_PHY_CBW_GET(phy_cap)); WMA_LOGD("\tPreamble puncturing Rx: 0x%04x", @@ -705,20 +748,20 @@ void wma_print_he_phy_cap(uint32_t *phy_cap) WMI_HECAP_PHY_TXSTBC_GET(phy_cap)); WMA_LOGD("\tDoppler support: 0x%02x", (WMI_HECAP_PHY_RXDOPPLER_GET(phy_cap) << 1) | - WMI_HECAP_PHY_TXDOPPLER_GET(phy_cap)); + WMI_HECAP_PHY_TXDOPPLER(phy_cap)); WMA_LOGD("\tUL MU (Full BW): 0x%01x", WMI_HECAP_PHY_UL_MU_MIMO_GET(phy_cap)); WMA_LOGD("\tUL MU (Partial BW): 0x%01x", WMI_HECAP_PHY_ULMUMIMOOFDMA_GET(phy_cap)); WMA_LOGD("\tDCM encoding Tx: 0x%03x", WMI_HECAP_PHY_DCMTX_GET(phy_cap)); - WMA_LOGD("\tDCM encoding Tx: 0x%03x", WMI_HECAP_PHY_DCMRX_GET(phy_cap)); + WMA_LOGD("\tDCM encoding Rx: 0x%03x", WMI_HECAP_PHY_DCMRX_GET(phy_cap)); WMA_LOGD("\tHE MU PPDU payload support: 0x%01x", WMI_HECAP_PHY_ULHEMU_GET(phy_cap)); WMA_LOGD("\tSU Beamformer: 0x%01x", WMI_HECAP_PHY_SUBFMR_GET(phy_cap)); WMA_LOGD("\tSU Beamformee: 0x%01x", WMI_HECAP_PHY_SUBFME_GET(phy_cap)); WMA_LOGD("\tMU Beamformer: 0x%01x", WMI_HECAP_PHY_MUBFMR_GET(phy_cap)); WMA_LOGD("\tBeamformee STS for <= 80Mhz: 0x%03x", - WMI_HECAP_PHY_SUBFMESTS_GET(phy_cap)); + WMI_HECAP_PHY_BFMESTSLT80MHZ_GET(phy_cap)); WMA_LOGD("\tNSTS total for <= 80Mhz: 0x%03x", WMI_HECAP_PHY_NSTSLT80MHZ_GET(phy_cap)); WMA_LOGD("\tBeamformee STS for > 80Mhz: 0x%03x", @@ -743,7 +786,8 @@ void wma_print_he_phy_cap(uint32_t *phy_cap) WMI_HECAP_PHY_HEERSU_GET(phy_cap)); WMA_LOGD("\tDL MUMIMO on partial BW: 0x%01x", WMI_HECAP_PHY_DLMUMIMOPARTIALBW_GET(phy_cap)); - WMA_LOGD("\tPPET present: 0x%01x", WMI_HECAP_PHY_PADDING_GET(phy_cap)); + WMA_LOGD("\tPPET present: 0x%01x", + WMI_HECAP_PHY_PETHRESPRESENT_GET(phy_cap)); WMA_LOGD("\tSRP based SR-support: 0x%01x", WMI_HECAP_PHY_SRPSPRESENT_GET(phy_cap)); WMA_LOGD("\tPower boost factor: 0x%01x", @@ -759,7 +803,7 @@ void wma_print_he_phy_cap(uint32_t *phy_cap) WMI_HECAP_PHY_ERSU4X800NSECGI_GET(phy_cap)); } -void wma_print_he_mac_cap(uint32_t mac_cap) +void wma_print_he_mac_cap_w1(uint32_t mac_cap) { WMA_LOGD(FL("HE MAC Capabilities:")); @@ -776,14 +820,14 @@ void wma_print_he_mac_cap(uint32_t mac_cap) WMI_HECAP_MAC_MINFRAGSZ_GET(mac_cap)); WMA_LOGD("\tTrigger MAC pad duration: 0x%02x", WMI_HECAP_MAC_TRIGPADDUR_GET(mac_cap)); - WMA_LOGD("\tMulti-TID aggr support: 0x%03x", - WMI_HECAP_MAC_ACKMTIDAMPDU_GET(mac_cap)); + WMA_LOGD("\tMulti-TID aggr Rx support: 0x%03x", + WMI_HECAP_MAC_MTID_RX_GET(mac_cap)); WMA_LOGD("\tLink adaptation: 0x%02x", - WMI_HECAP_MAC_HELKAD_GET(mac_cap)); + WMI_HECAP_MAC_HELINK_ADPT_GET(mac_cap)); WMA_LOGD("\tAll ACK support: 0x%01x", WMI_HECAP_MAC_AACK_GET(mac_cap)); WMA_LOGD("\tUL MU resp. scheduling: 0x%01x", - WMI_HECAP_MAC_ULMURSP_GET(mac_cap)); + WMI_HECAP_MAC_TRS_GET(mac_cap)); WMA_LOGD("\tA-Buff status report: 0x%01x", WMI_HECAP_MAC_BSR_GET(mac_cap)); WMA_LOGD("\tBroadcast TWT support: 0x%01x", @@ -794,8 +838,6 @@ void wma_print_he_mac_cap(uint32_t mac_cap) WMI_HECAP_MAC_MUCASCADE_GET(mac_cap)); WMA_LOGD("\tACK enabled Multi-TID: 0x%01x", WMI_HECAP_MAC_ACKMTIDAMPDU_GET(mac_cap)); - WMA_LOGD("\tMulti-STA BA in DL MU: 0x%01x", - WMI_HECAP_MAC_GROUPMSTABA_GET(mac_cap)); WMA_LOGD("\tOMI A-Control support: 0x%01x", WMI_HECAP_MAC_OMI_GET(mac_cap)); WMA_LOGD("\tOFDMA RA support: 0x%01x", @@ -808,17 +850,29 @@ void wma_print_he_mac_cap(uint32_t mac_cap) WMI_HECAP_MAC_FLEXTWT_GET(mac_cap)); WMA_LOGD("\tRx Ctrl frame to MBSS: 0x%01x", WMI_HECAP_MAC_MBSS_GET(mac_cap)); +} + +void wma_print_he_mac_cap_w2(uint32_t mac_cap) +{ WMA_LOGD("\tBSRP A-MPDU Aggregation: 0x%01x", WMI_HECAP_MAC_BSRPAMPDU_GET(mac_cap)); WMA_LOGD("\tQuite Time Period support: 0x%01x", WMI_HECAP_MAC_QTP_GET(mac_cap)); WMA_LOGD("\tA-BQR support: 0x%01x", WMI_HECAP_MAC_ABQR_GET(mac_cap)); WMA_LOGD("\tSR Responder support: 0x%01x", - WMI_HECAP_MAC_SRRESP_GET(mac_cap)); - WMA_LOGD("\tOPS Support: 0x%01x", - WMI_HECAP_MAC_OPS_GET(mac_cap)); + WMI_HECAP_MAC_SRPRESP_GET(mac_cap)); WMA_LOGD("\tNDP Feedback Support: 0x%01x", WMI_HECAP_MAC_NDPFDBKRPT_GET(mac_cap)); + WMA_LOGD("\tOPS Support: 0x%01x", + WMI_HECAP_MAC_OPS_GET(mac_cap)); + WMA_LOGD("\tMulti-TID aggr Tx support: 0x%03x", + WMI_HECAP_MAC_MTID_TX_GET(mac_cap)); + WMA_LOGD("\tSub Ch selective Tx support: 0x%01x", + WMI_HECAP_MAC_SUBCHANSELTX_GET(mac_cap)); + WMA_LOGD("\tUL 2×996 tone RU: 0x%01x", + WMI_HECAP_MAC_UL2X996RU_GET(mac_cap)); + WMA_LOGD("\tOM ctrl UL MU data disable Rx: 0x%01x", + WMI_HECAP_MAC_OMCULMUDDIS_GET(mac_cap)); } void wma_update_target_ext_he_cap(struct target_psoc_info *tgt_hdl, @@ -916,13 +970,13 @@ void wma_he_update_tgt_services(struct wmi_unified *wmi_handle, void wma_print_he_op(tDot11fIEhe_op *he_ops) { - WMA_LOGD(FL("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x, vht_oper_present: %0x"), - he_ops->bss_color, he_ops->default_pe, - he_ops->twt_required, he_ops->rts_threshold, - he_ops->vht_oper_present); - WMA_LOGD(FL("\tpartial_bss_color: %0x, MBSSID AP: %0x, Tx BSSID Indicator: %0x, BSS color disabled: %0x"), - he_ops->partial_bss_col, he_ops->mbssid_ap, - he_ops->tx_bssid_ind, he_ops->bss_col_disabled); + WMA_LOGD(FL("bss_color %0x def_pe_dur %0x twt_req %0x txop_rts_thre %0x vht_oper %0x"), + he_ops->bss_color, he_ops->default_pe, + he_ops->twt_required, he_ops->txop_rts_threshold, + he_ops->vht_oper_present); + WMA_LOGD(FL("\tpart_bss_color: %0x, MBSSID AP: %0x, BSS color dis %0x"), + he_ops->partial_bss_col, he_ops->co_located_bss, + he_ops->bss_col_disabled); } /** @@ -1025,7 +1079,7 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, tDot11fIEhe_cap *he_cap = ¶ms->he_config; tDot11fIEhe_op *he_op = ¶ms->he_op; uint32_t *phy_cap = peer->peer_he_cap_phyinfo; - uint32_t mac_cap = 0, he_ops = 0; + uint32_t mac_cap[PSOC_HOST_MAX_MAC_SIZE] = {0}, he_ops = 0; uint8_t temp, i, chan_width; if (params->he_capable) @@ -1034,40 +1088,49 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, return; /* HE MAC capabilities */ - WMI_HECAP_MAC_HECTRL_SET(mac_cap, he_cap->htc_he); - WMI_HECAP_MAC_TWTREQ_SET(mac_cap, he_cap->twt_request); - WMI_HECAP_MAC_TWTRSP_SET(mac_cap, he_cap->twt_responder); - WMI_HECAP_MAC_HEFRAG_SET(mac_cap, he_cap->fragmentation); - WMI_HECAP_MAC_MAXFRAGMSDU_SET(mac_cap, he_cap->max_num_frag_msdu); - WMI_HECAP_MAC_MINFRAGSZ_SET(mac_cap, he_cap->min_frag_size); - WMI_HECAP_MAC_TRIGPADDUR_SET(mac_cap, he_cap->trigger_frm_mac_pad); - WMI_HECAP_MAC_ACKMTIDAMPDU_SET(mac_cap, he_cap->multi_tid_aggr); - WMI_HECAP_MAC_HELKAD_SET(mac_cap, he_cap->he_link_adaptation); - WMI_HECAP_MAC_AACK_SET(mac_cap, he_cap->all_ack); - WMI_HECAP_MAC_ULMURSP_SET(mac_cap, he_cap->ul_mu_rsp_sched); - WMI_HECAP_MAC_BSR_SET(mac_cap, he_cap->a_bsr); - WMI_HECAP_MAC_BCSTTWT_SET(mac_cap, he_cap->broadcast_twt); - WMI_HECAP_MAC_32BITBA_SET(mac_cap, he_cap->ba_32bit_bitmap); - WMI_HECAP_MAC_MUCASCADE_SET(mac_cap, he_cap->mu_cascade); - WMI_HECAP_MAC_ACKMTIDAMPDU_SET(mac_cap, he_cap->ack_enabled_multitid); - WMI_HECAP_MAC_GROUPMSTABA_SET(mac_cap, he_cap->dl_mu_ba); - WMI_HECAP_MAC_OMI_SET(mac_cap, he_cap->omi_a_ctrl); - WMI_HECAP_MAC_OFDMARA_SET(mac_cap, he_cap->ofdma_ra); - WMI_HECAP_MAC_MAXAMPDULEN_EXP_SET(mac_cap, he_cap->max_ampdu_len); - WMI_HECAP_MAC_AMSDUFRAG_SET(mac_cap, he_cap->amsdu_frag); - WMI_HECAP_MAC_FLEXTWT_SET(mac_cap, he_cap->flex_twt_sched); - WMI_HECAP_MAC_MBSS_SET(mac_cap, he_cap->rx_ctrl_frame); - WMI_HECAP_MAC_BSRPAMPDU_SET(mac_cap, he_cap->bsrp_ampdu_aggr); - WMI_HECAP_MAC_QTP_SET(mac_cap, he_cap->qtp); - WMI_HECAP_MAC_ABQR_SET(mac_cap, he_cap->a_bqr); - WMI_HECAP_MAC_SRRESP_SET(mac_cap, he_cap->sr_responder); - WMI_HECAP_MAC_OPS_SET(mac_cap, he_cap->ops_supp); - WMI_HECAP_MAC_NDPFDBKRPT_SET(mac_cap, he_cap->ndp_feedback_supp); - WMI_HECAP_MAC_AMSDUINAMPDU_SET(mac_cap, he_cap->amsdu_in_ampdu); - peer->peer_he_cap_macinfo = mac_cap; + WMI_HECAP_MAC_HECTRL_SET(mac_cap[0], he_cap->htc_he); + WMI_HECAP_MAC_TWTREQ_SET(mac_cap[0], he_cap->twt_request); + WMI_HECAP_MAC_TWTRSP_SET(mac_cap[0], he_cap->twt_responder); + WMI_HECAP_MAC_HEFRAG_SET(mac_cap[0], he_cap->fragmentation); + WMI_HECAP_MAC_MAXFRAGMSDU_SET(mac_cap[0], + he_cap->max_num_frag_msdu_amsdu_exp); + WMI_HECAP_MAC_MINFRAGSZ_SET(mac_cap[0], he_cap->min_frag_size); + WMI_HECAP_MAC_TRIGPADDUR_SET(mac_cap[0], he_cap->trigger_frm_mac_pad); + WMI_HECAP_MAC_ACKMTIDAMPDU_SET(mac_cap[0], + he_cap->multi_tid_aggr_rx_supp); + WMI_HECAP_MAC_HELKAD_SET(mac_cap[0], he_cap->he_link_adaptation); + WMI_HECAP_MAC_AACK_SET(mac_cap[0], he_cap->all_ack); + WMI_HECAP_MAC_TRS_SET(mac_cap[0], he_cap->trigd_rsp_sched); + WMI_HECAP_MAC_BSR_SET(mac_cap[0], he_cap->a_bsr); + WMI_HECAP_MAC_BCSTTWT_SET(mac_cap[0], he_cap->broadcast_twt); + WMI_HECAP_MAC_32BITBA_SET(mac_cap[0], he_cap->ba_32bit_bitmap); + WMI_HECAP_MAC_MUCASCADE_SET(mac_cap[0], he_cap->mu_cascade); + WMI_HECAP_MAC_ACKMTIDAMPDU_SET(mac_cap[0], + he_cap->ack_enabled_multitid); + WMI_HECAP_MAC_OMI_SET(mac_cap[0], he_cap->omi_a_ctrl); + WMI_HECAP_MAC_OFDMARA_SET(mac_cap[0], he_cap->ofdma_ra); + WMI_HECAP_MAC_MAXAMPDULEN_EXP_SET(mac_cap[0], + he_cap->max_ampdu_len_exp_ext); + WMI_HECAP_MAC_AMSDUFRAG_SET(mac_cap[0], he_cap->amsdu_frag); + WMI_HECAP_MAC_FLEXTWT_SET(mac_cap[0], he_cap->flex_twt_sched); + WMI_HECAP_MAC_MBSS_SET(mac_cap[0], he_cap->rx_ctrl_frame); + WMI_HECAP_MAC_BSRPAMPDU_SET(mac_cap[1], he_cap->bsrp_ampdu_aggr); + WMI_HECAP_MAC_QTP_SET(mac_cap[1], he_cap->qtp); + WMI_HECAP_MAC_ABQR_SET(mac_cap[1], he_cap->a_bqr); + WMI_HECAP_MAC_SRPRESP_SET(mac_cap[1], + he_cap->spatial_reuse_param_rspder); + WMI_HECAP_MAC_OPS_SET(mac_cap[1], he_cap->ops_supp); + WMI_HECAP_MAC_NDPFDBKRPT_SET(mac_cap[1], he_cap->ndp_feedback_supp); + WMI_HECAP_MAC_AMSDUINAMPDU_SET(mac_cap[1], he_cap->amsdu_in_ampdu); + WMI_HECAP_MAC_MTID_TX_SET(mac_cap[1], he_cap->multi_tid_aggr_tx_supp); + WMI_HECAP_MAC_SUBCHANSELTX_SET(mac_cap[1], + he_cap->he_sub_ch_sel_tx_supp); + WMI_HECAP_MAC_UL2X996RU_SET(mac_cap[1], he_cap->ul_2x996_tone_ru_supp); + WMI_HECAP_MAC_OMCULMUDDIS_SET(mac_cap[1], + he_cap->om_ctrl_ul_mu_data_dis_rx); + qdf_mem_copy(peer->peer_he_cap_macinfo, mac_cap, sizeof(mac_cap)); /* HE PHY capabilities */ - WMI_HECAP_PHY_DB_SET(phy_cap, he_cap->dual_band); chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0, he_cap->chan_width_1, he_cap->chan_width_2, he_cap->chan_width_3, he_cap->chan_width_4, @@ -1077,8 +1140,8 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, WMI_HECAP_PHY_COD_SET(phy_cap, he_cap->device_class); WMI_HECAP_PHY_LDPC_SET(phy_cap, he_cap->ldpc_coding); WMI_HECAP_PHY_LTFGIFORHE_SET(phy_cap, he_cap->he_1x_ltf_800_gi_ppdu); - WMI_HECAP_PHY_MIDAMBLERXMAXNSTS_SET(phy_cap, - he_cap->midamble_rx_max_nsts); + WMI_HECAP_PHY_MIDAMBLETXRXMAXNSTS_SET(phy_cap, + he_cap->midamble_tx_rx_max_nsts); WMI_HECAP_PHY_LTFGIFORNDP_SET(phy_cap, he_cap->he_4x_ltf_3200_gi_ndp); WMI_HECAP_PHY_RXSTBC_SET(phy_cap, he_cap->rx_stbc_lt_80mhz); @@ -1132,8 +1195,25 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, WMI_HECAP_PHY_HEPPDU80IN160OR80P80MHZ_SET(phy_cap, he_cap->he_ppdu_80_in_160_80p80Mhz); WMI_HECAP_PHY_ERSU1X800NSECGI_SET(phy_cap, he_cap->er_1x_he_ltf_gi); - WMI_HECAP_PHY_MIDAMBLERX2XAND1XHELTF_SET(phy_cap, - he_cap->midamble_rx_1x_he_ltf); + WMI_HECAP_PHY_MIDAMBLETXRX2XAND1XHELTF_SET(phy_cap, + he_cap-> + midamble_tx_rx_1x_he_ltf); + WMI_HECAP_PHY_DCMMAXBW_SET(phy_cap, he_cap->dcm_max_bw); + WMI_HECAP_PHY_LNG16SIGBSYMBSUPRT_SET(phy_cap, + he_cap-> + longer_than_16_he_sigb_ofdm_sym); + WMI_HECAP_PHY_NONTRIGCQIFEEDBK_SET(phy_cap, + he_cap->non_trig_cqi_feedback); + WMI_HECAP_PHY_TX1024QAM242RUSUPRT_SET(phy_cap, + he_cap-> + tx_1024_qam_lt_242_tone_ru); + WMI_HECAP_PHY_RX1024QAM242RUSUPRT_SET(phy_cap, + he_cap-> + rx_1024_qam_lt_242_tone_ru); + WMI_HECAP_PHY_RXFULBWSUWCMPRSSIGB_SET(phy_cap, + he_cap->rx_full_bw_su_he_mu_compress_sigb); + WMI_HECAP_PHY_RXFULBWSUWNONCMPRSSIGB_SET(phy_cap, + he_cap->rx_full_bw_su_he_mu_non_cmpr_sigb); /* as per 11ax draft 1.4 */ peer->peer_he_mcs_count = 1; @@ -1162,9 +1242,8 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, WMI_HEOPS_COLOR_SET(he_ops, he_op->bss_color); WMI_HEOPS_DEFPE_SET(he_ops, he_op->default_pe); WMI_HEOPS_TWT_SET(he_ops, he_op->twt_required); - WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->rts_threshold); + WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->txop_rts_threshold); WMI_HEOPS_PARTBSSCOLOR_SET(he_ops, he_op->partial_bss_col); - WMI_HEOPS_TXBSSID_SET(he_ops, he_op->tx_bssid_ind); WMI_HEOPS_BSSCOLORDISABLE_SET(he_ops, he_op->bss_col_disabled); peer->peer_he_ops = he_ops; @@ -1173,7 +1252,8 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, wma_print_he_cap(he_cap); WMA_LOGD(FL("Peer HE Capabilities:")); wma_print_he_phy_cap(phy_cap); - wma_print_he_mac_cap(mac_cap); + wma_print_he_mac_cap_w1(mac_cap[0]); + wma_print_he_mac_cap_w2(mac_cap[1]); wma_print_he_ppet(&peer->peer_ppet); return; @@ -1190,9 +1270,8 @@ void wma_update_vdev_he_ops(struct wma_vdev_start_req *req, WMI_HEOPS_COLOR_SET(he_ops, he_op->bss_color); WMI_HEOPS_DEFPE_SET(he_ops, he_op->default_pe); WMI_HEOPS_TWT_SET(he_ops, he_op->twt_required); - WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->rts_threshold); + WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->txop_rts_threshold); WMI_HEOPS_PARTBSSCOLOR_SET(he_ops, he_op->partial_bss_col); - WMI_HEOPS_TXBSSID_SET(he_ops, he_op->tx_bssid_ind); WMI_HEOPS_BSSCOLORDISABLE_SET(he_ops, he_op->bss_col_disabled); req->he_ops = he_ops; @@ -1267,9 +1346,8 @@ QDF_STATUS wma_update_he_ops_ie(tp_wma_handle wma, uint8_t vdev_id, WMI_HEOPS_COLOR_SET(dword_he_op, he_op->bss_color); WMI_HEOPS_DEFPE_SET(dword_he_op, he_op->default_pe); WMI_HEOPS_TWT_SET(dword_he_op, he_op->twt_required); - WMI_HEOPS_RTSTHLD_SET(dword_he_op, he_op->rts_threshold); + WMI_HEOPS_RTSTHLD_SET(dword_he_op, he_op->txop_rts_threshold); WMI_HEOPS_PARTBSSCOLOR_SET(dword_he_op, he_op->partial_bss_col); - WMI_HEOPS_TXBSSID_SET(dword_he_op, he_op->tx_bssid_ind); WMI_HEOPS_BSSCOLORDISABLE_SET(dword_he_op, he_op->bss_col_disabled); WMA_LOGD("vdev_id: %d HE_OPs: 0x%x", vdev_id, dword_he_op); diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 4daad6f0a240..d92ee0bd3bec 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -6097,8 +6097,10 @@ QDF_STATUS wma_get_caps_for_phyidx_hwmode(struct wma_caps_per_phy *caps_per_phy, caps_per_phy->vht_2g = vht_cap_info; caps_per_phy->vht_5g = vht_cap_info; /* legacy platform doesn't support HE IE */ - caps_per_phy->he_2g = 0; - caps_per_phy->he_5g = 0; + caps_per_phy->he_2g[0] = 0; + caps_per_phy->he_2g[1] = 0; + caps_per_phy->he_5g[0] = 0; + caps_per_phy->he_5g[1] = 0; return QDF_STATUS_SUCCESS; } @@ -6121,8 +6123,10 @@ QDF_STATUS wma_get_caps_for_phyidx_hwmode(struct wma_caps_per_phy *caps_per_phy, caps_per_phy->ht_5g = mac_phy_cap[phyid].ht_cap_info_5G; caps_per_phy->vht_2g = mac_phy_cap[phyid].vht_cap_info_2G; caps_per_phy->vht_5g = mac_phy_cap[phyid].vht_cap_info_5G; - caps_per_phy->he_2g = mac_phy_cap[phyid].he_cap_info_2G; - caps_per_phy->he_5g = mac_phy_cap[phyid].he_cap_info_5G; + qdf_mem_copy(caps_per_phy->he_2g, mac_phy_cap[phyid].he_cap_info_2G, + sizeof(caps_per_phy->he_2g)); + qdf_mem_copy(caps_per_phy->he_5g, mac_phy_cap[phyid].he_cap_info_5G, + sizeof(caps_per_phy->he_5g)); caps_per_phy->tx_chain_mask_2G = mac_phy_cap->tx_chain_mask_2G; caps_per_phy->rx_chain_mask_2G = mac_phy_cap->rx_chain_mask_2G; @@ -6200,7 +6204,8 @@ bool wma_is_rx_ldpc_supported_for_channel(uint32_t channel) static void wma_print_mac_phy_capabilities(struct wlan_psoc_host_mac_phy_caps *cap, int index) { - uint32_t mac_2G, mac_5G; + uint32_t mac_2G[PSOC_HOST_MAX_MAC_SIZE]; + uint32_t mac_5G[PSOC_HOST_MAX_MAC_SIZE]; uint32_t phy_2G[WMI_MAX_HECAP_PHY_SIZE]; uint32_t phy_5G[WMI_MAX_HECAP_PHY_SIZE]; struct wlan_psoc_host_ppe_threshold ppet_2G, ppet_5G; @@ -6229,12 +6234,14 @@ static void wma_print_mac_phy_capabilities(struct wlan_psoc_host_mac_phy_caps WMA_LOGD("\t: vht_supp_mcs_5G[%d]", cap->vht_supp_mcs_5G); WMA_LOGD("\t: tx_chain_mask_5G[%d]", cap->tx_chain_mask_5G); WMA_LOGD("\t: rx_chain_mask_5G[%d]", cap->rx_chain_mask_5G); - WMA_LOGD("\t: he_cap_info_2G[%08x]", cap->he_cap_info_2G); + WMA_LOGD("\t: he_cap_info_2G[0][%08x]", cap->he_cap_info_2G[0]); + WMA_LOGD("\t: he_cap_info_2G[1][%08x]", cap->he_cap_info_2G[1]); WMA_LOGD("\t: he_supp_mcs_2G[%08x]", cap->he_supp_mcs_2G); - WMA_LOGD("\t: he_cap_info_5G[%08x]", cap->he_cap_info_5G); + WMA_LOGD("\t: he_cap_info_5G[0][%08x]", cap->he_cap_info_5G[0]); + WMA_LOGD("\t: he_cap_info_5G[1][%08x]", cap->he_cap_info_5G[1]); WMA_LOGD("\t: he_supp_mcs_5G[%08x]", cap->he_supp_mcs_5G); - mac_2G = cap->he_cap_info_2G; - mac_5G = cap->he_cap_info_5G; + qdf_mem_copy(mac_2G, cap->he_cap_info_2G, sizeof(mac_2G)); + qdf_mem_copy(mac_5G, cap->he_cap_info_5G, sizeof(mac_5G)); qdf_mem_copy(phy_2G, cap->he_cap_phy_info_2G, WMI_MAX_HECAP_PHY_SIZE * 4); qdf_mem_copy(phy_5G, cap->he_cap_phy_info_5G, @@ -6242,10 +6249,12 @@ static void wma_print_mac_phy_capabilities(struct wlan_psoc_host_mac_phy_caps ppet_2G = cap->he_ppet2G; ppet_5G = cap->he_ppet5G; - wma_print_he_mac_cap(mac_2G); + wma_print_he_mac_cap_w1(mac_2G[0]); + wma_print_he_mac_cap_w2(mac_2G[1]); wma_print_he_phy_cap(phy_2G); wma_print_he_ppet(&ppet_2G); - wma_print_he_mac_cap(mac_5G); + wma_print_he_mac_cap_w1(mac_5G[0]); + wma_print_he_mac_cap_w1(mac_5G[1]); wma_print_he_phy_cap(phy_5G); wma_print_he_ppet(&ppet_5G); }