qcacld-3.0: Add support for 11ax draft 3.3 changes
Add support for 11ax Draft 3.3 specification. Change-Id: I18eda46c724f8febe5652876175bebfda3f7fc88 CRs-Fixed: 2388130
This commit is contained in:
committed by
nshrivas
parent
4dab49336d
commit
9cab525856
@@ -1002,6 +1002,12 @@ static void mlme_init_he_cap_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
cfg_default(CFG_HE_UL_2X996_RU);
|
||||
he_caps->dot11_he_cap.om_ctrl_ul_mu_data_dis_rx =
|
||||
cfg_default(CFG_HE_OM_CTRL_UL_MU_DIS_RX);
|
||||
he_caps->dot11_he_cap.he_dynamic_smps =
|
||||
cfg_default(CFG_HE_DYNAMIC_SMPS);
|
||||
he_caps->dot11_he_cap.punctured_sounding_supp =
|
||||
cfg_default(CFG_HE_PUNCTURED_SOUNDING);
|
||||
he_caps->dot11_he_cap.ht_vht_trg_frm_rx_supp =
|
||||
cfg_default(CFG_HE_HT_VHT_TRG_FRM_RX);
|
||||
he_caps->dot11_he_cap.rx_pream_puncturing =
|
||||
cfg_default(CFG_HE_RX_PREAM_PUNC);
|
||||
he_caps->dot11_he_cap.device_class =
|
||||
@@ -1013,7 +1019,7 @@ static void mlme_init_he_cap_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
cfg_default(CFG_HE_MIDAMBLE_RX_MAX_NSTS);
|
||||
he_caps->dot11_he_cap.he_4x_ltf_3200_gi_ndp =
|
||||
cfg_default(CFG_HE_LTF_NDP);
|
||||
he_caps->dot11_he_cap.tx_stbc_lt_80mhz =
|
||||
he_caps->dot11_he_cap.tb_ppdu_tx_stbc_lt_80mhz =
|
||||
cfg_default(CFG_HE_TX_STBC_LT80);
|
||||
he_caps->dot11_he_cap.rx_stbc_lt_80mhz =
|
||||
cfg_default(CFG_HE_RX_STBC_LT80);
|
||||
@@ -1049,7 +1055,7 @@ static void mlme_init_he_cap_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
he_caps->dot11_he_cap.power_boost = cfg_default(CFG_HE_POWER_BOOST);
|
||||
he_caps->dot11_he_cap.he_ltf_800_gi_4x = cfg_default(CFG_HE_4x_LTF_GI);
|
||||
he_caps->dot11_he_cap.max_nc = cfg_default(CFG_HE_MAX_NC);
|
||||
he_caps->dot11_he_cap.tx_stbc_gt_80mhz =
|
||||
he_caps->dot11_he_cap.tb_ppdu_tx_stbc_gt_80mhz =
|
||||
cfg_default(CFG_HE_TX_STBC_GT80);
|
||||
he_caps->dot11_he_cap.rx_stbc_gt_80mhz =
|
||||
cfg_default(CFG_HE_RX_STBC_GT80);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -212,6 +212,21 @@
|
||||
0, \
|
||||
"He Om Ctrl Ul My Dis Rx")
|
||||
|
||||
#define CFG_HE_DYNAMIC_SMPS CFG_BOOL( \
|
||||
"he_dynamic_smps", \
|
||||
0, \
|
||||
"He Dyanmic SMPS")
|
||||
|
||||
#define CFG_HE_PUNCTURED_SOUNDING CFG_BOOL( \
|
||||
"he_punctured_sounding", \
|
||||
0, \
|
||||
"He Punctured Sounding")
|
||||
|
||||
#define CFG_HE_HT_VHT_TRG_FRM_RX CFG_BOOL( \
|
||||
"ht_vht_trg_frm_rx", \
|
||||
0, \
|
||||
"HT VHT Trigger frame Rx")
|
||||
|
||||
#define CFG_HE_CHAN_WIDTH CFG_UINT( \
|
||||
"he_chan_width", \
|
||||
0, \
|
||||
|
||||
@@ -584,6 +584,12 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
he_cap->ul_2x996_tone_ru_supp;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.om_ctrl_ul_mu_data_dis_rx =
|
||||
he_cap->om_ctrl_ul_mu_data_dis_rx;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.he_dynamic_smps =
|
||||
he_cap->he_dynamic_smps;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.punctured_sounding_supp =
|
||||
he_cap->punctured_sounding_supp;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.ht_vht_trg_frm_rx_supp =
|
||||
he_cap->ht_vht_trg_frm_rx_supp;
|
||||
|
||||
chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0,
|
||||
he_cap->chan_width_1,
|
||||
@@ -632,13 +638,13 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.rx_stbc_gt_80mhz = 0;
|
||||
}
|
||||
if (mlme_obj->cfg.vht_caps.vht_cap_info.tx_stbc) {
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tx_stbc_lt_80mhz =
|
||||
he_cap->tx_stbc_lt_80mhz;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tx_stbc_gt_80mhz =
|
||||
he_cap->tx_stbc_gt_80mhz;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tb_ppdu_tx_stbc_lt_80mhz =
|
||||
he_cap->tb_ppdu_tx_stbc_lt_80mhz;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tb_ppdu_tx_stbc_gt_80mhz =
|
||||
he_cap->tb_ppdu_tx_stbc_gt_80mhz;
|
||||
} else {
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tx_stbc_lt_80mhz = 0;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tx_stbc_gt_80mhz = 0;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tb_ppdu_tx_stbc_lt_80mhz = 0;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.tb_ppdu_tx_stbc_gt_80mhz = 0;
|
||||
}
|
||||
|
||||
if (cfg_in_range(CFG_HE_DOPPLER, he_cap->doppler))
|
||||
|
||||
@@ -1981,7 +1981,9 @@ struct he_cap_network_endian {
|
||||
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;
|
||||
uint16_t he_dynamic_smps:1;
|
||||
uint16_t punctured_sounding_supp:1;
|
||||
uint16_t ht_vht_trg_frm_rx_supp:1;
|
||||
|
||||
uint32_t reserved2:1;
|
||||
uint32_t chan_width:7;
|
||||
@@ -1991,7 +1993,7 @@ struct he_cap_network_endian {
|
||||
uint32_t he_1x_ltf_800_gi_ppdu:1;
|
||||
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 tb_ppdu_tx_stbc_lt_80mhz:1;
|
||||
uint32_t rx_stbc_lt_80mhz:1;
|
||||
uint32_t doppler:2;
|
||||
uint32_t ul_mu:2;
|
||||
@@ -2018,7 +2020,7 @@ struct he_cap_network_endian {
|
||||
uint32_t power_boost:1;
|
||||
uint32_t he_ltf_800_gi_4x:1;
|
||||
uint32_t max_nc:3;
|
||||
uint32_t tx_stbc_gt_80mhz:1;
|
||||
uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
|
||||
uint32_t rx_stbc_gt_80mhz:1;
|
||||
|
||||
uint16_t er_he_ltf_800_gi_4x:1;
|
||||
@@ -2099,7 +2101,9 @@ struct he_capability_info {
|
||||
uint32_t twt_request:1;
|
||||
uint32_t htc_he:1;
|
||||
|
||||
uint16_t reserved1:3;
|
||||
uint16_t ht_vht_trg_frm_rx_supp:1;
|
||||
uint16_t punctured_sounding_supp:1;
|
||||
uint16_t he_dynamic_smps:1;
|
||||
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;
|
||||
@@ -2119,7 +2123,7 @@ struct he_capability_info {
|
||||
uint32_t ul_mu:2;
|
||||
uint32_t doppler:2;
|
||||
uint32_t rx_stbc_lt_80mhz:1;
|
||||
uint32_t tx_stbc_lt_80mhz:1;
|
||||
uint32_t tb_ppdu_tx_stbc_lt_80mhz:1;
|
||||
uint32_t he_4x_ltf_3200_gi_ndp:1;
|
||||
uint32_t midamble_tx_rx_max_nsts:2;
|
||||
uint32_t he_1x_ltf_800_gi_ppdu:1;
|
||||
@@ -2130,7 +2134,7 @@ struct he_capability_info {
|
||||
uint32_t reserved2:1;
|
||||
|
||||
uint32_t rx_stbc_gt_80mhz:1;
|
||||
uint32_t tx_stbc_gt_80mhz:1;
|
||||
uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
|
||||
uint32_t max_nc:3;
|
||||
uint32_t he_ltf_800_gi_4x:1;
|
||||
uint32_t power_boost:1;
|
||||
@@ -2209,7 +2213,9 @@ struct he_capability_info {
|
||||
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;
|
||||
uint16_t he_dynamic_smps:1;
|
||||
uint16_t punctured_sounding_supp:1;
|
||||
uint16_t ht_vht_trg_frm_rx_supp:1;
|
||||
|
||||
uint32_t reserved2:1;
|
||||
uint32_t chan_width:7;
|
||||
@@ -2219,7 +2225,7 @@ struct he_capability_info {
|
||||
uint32_t he_1x_ltf_800_gi_ppdu:1;
|
||||
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 tb_ppdu_tx_stbc_lt_80mhz:1;
|
||||
uint32_t rx_stbc_lt_80mhz:1;
|
||||
uint32_t doppler:2;
|
||||
uint32_t ul_mu:2;
|
||||
@@ -2246,7 +2252,7 @@ struct he_capability_info {
|
||||
uint32_t power_boost:1;
|
||||
uint32_t he_ltf_800_gi_4x:1;
|
||||
uint32_t max_nc:3;
|
||||
uint32_t tx_stbc_gt_80mhz:1;
|
||||
uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
|
||||
uint32_t rx_stbc_gt_80mhz:1;
|
||||
|
||||
uint16_t er_he_ltf_800_gi_4x:1;
|
||||
|
||||
@@ -2883,7 +2883,9 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23)
|
||||
he_sub_ch_sel_tx_supp:1;
|
||||
ul_2x996_tone_ru_supp:1;
|
||||
om_ctrl_ul_mu_data_dis_rx:1;
|
||||
reserved1:3;
|
||||
he_dynamic_smps:1;
|
||||
punctured_sounding_supp:1;
|
||||
ht_vht_trg_frm_rx_supp:1;
|
||||
}
|
||||
{
|
||||
reserved2:1;
|
||||
@@ -2900,7 +2902,7 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23)
|
||||
he_1x_ltf_800_gi_ppdu:1;
|
||||
midamble_tx_rx_max_nsts:2;
|
||||
he_4x_ltf_3200_gi_ndp:1;
|
||||
tx_stbc_lt_80mhz:1;
|
||||
tb_ppdu_tx_stbc_lt_80mhz:1;
|
||||
rx_stbc_lt_80mhz:1;
|
||||
doppler:2;
|
||||
ul_mu:2;
|
||||
@@ -2928,7 +2930,7 @@ IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23)
|
||||
power_boost:1;
|
||||
he_ltf_800_gi_4x:1;
|
||||
max_nc:3;
|
||||
tx_stbc_gt_80mhz:1;
|
||||
tb_ppdu_tx_stbc_gt_80mhz:1;
|
||||
rx_stbc_gt_80mhz:1;
|
||||
}
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -26,7 +26,7 @@
|
||||
*
|
||||
*
|
||||
* This file was automatically generated by 'framesc'
|
||||
* Tue Dec 11 13:11:53 2018 from the following file(s):
|
||||
* Tue Feb 5 16:01:26 2019 from the following file(s):
|
||||
*
|
||||
* dot11f.frms
|
||||
*
|
||||
@@ -8860,7 +8860,9 @@ typedef struct sDot11fIEhe_cap {
|
||||
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;
|
||||
uint16_t he_dynamic_smps:1;
|
||||
uint16_t punctured_sounding_supp:1;
|
||||
uint16_t ht_vht_trg_frm_rx_supp:1;
|
||||
uint32_t reserved2:1;
|
||||
uint32_t chan_width_0:1;
|
||||
uint32_t chan_width_1:1;
|
||||
@@ -8875,7 +8877,7 @@ typedef struct sDot11fIEhe_cap {
|
||||
uint32_t he_1x_ltf_800_gi_ppdu:1;
|
||||
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 tb_ppdu_tx_stbc_lt_80mhz:1;
|
||||
uint32_t rx_stbc_lt_80mhz:1;
|
||||
uint32_t doppler:2;
|
||||
uint32_t ul_mu:2;
|
||||
@@ -8901,7 +8903,7 @@ typedef struct sDot11fIEhe_cap {
|
||||
uint32_t power_boost:1;
|
||||
uint32_t he_ltf_800_gi_4x:1;
|
||||
uint32_t max_nc:3;
|
||||
uint32_t tx_stbc_gt_80mhz:1;
|
||||
uint32_t tb_ppdu_tx_stbc_gt_80mhz:1;
|
||||
uint32_t rx_stbc_gt_80mhz:1;
|
||||
uint16_t er_he_ltf_800_gi_4x:1;
|
||||
uint16_t he_ppdu_20_in_40Mhz_2G:1;
|
||||
|
||||
@@ -6787,25 +6787,25 @@ static void lim_intersect_he_caps(tDot11fIEhe_cap *rcvd_he,
|
||||
|
||||
peer_he->ldpc_coding &= session_he->ldpc_coding;
|
||||
|
||||
if (session_he->tx_stbc_lt_80mhz && peer_he->rx_stbc_lt_80mhz)
|
||||
if (session_he->tb_ppdu_tx_stbc_lt_80mhz && peer_he->rx_stbc_lt_80mhz)
|
||||
peer_he->rx_stbc_lt_80mhz = 1;
|
||||
else
|
||||
peer_he->rx_stbc_lt_80mhz = 0;
|
||||
|
||||
if (session_he->rx_stbc_lt_80mhz && peer_he->tx_stbc_lt_80mhz)
|
||||
peer_he->tx_stbc_lt_80mhz = 1;
|
||||
if (session_he->rx_stbc_lt_80mhz && peer_he->tb_ppdu_tx_stbc_lt_80mhz)
|
||||
peer_he->tb_ppdu_tx_stbc_lt_80mhz = 1;
|
||||
else
|
||||
peer_he->tx_stbc_lt_80mhz = 0;
|
||||
peer_he->tb_ppdu_tx_stbc_lt_80mhz = 0;
|
||||
|
||||
if (session_he->tx_stbc_gt_80mhz && peer_he->rx_stbc_gt_80mhz)
|
||||
if (session_he->tb_ppdu_tx_stbc_gt_80mhz && peer_he->rx_stbc_gt_80mhz)
|
||||
peer_he->rx_stbc_gt_80mhz = 1;
|
||||
else
|
||||
peer_he->rx_stbc_gt_80mhz = 0;
|
||||
|
||||
if (session_he->rx_stbc_gt_80mhz && peer_he->tx_stbc_gt_80mhz)
|
||||
peer_he->tx_stbc_gt_80mhz = 1;
|
||||
if (session_he->rx_stbc_gt_80mhz && peer_he->tb_ppdu_tx_stbc_gt_80mhz)
|
||||
peer_he->tb_ppdu_tx_stbc_gt_80mhz = 1;
|
||||
else
|
||||
peer_he->tx_stbc_gt_80mhz = 0;
|
||||
peer_he->tb_ppdu_tx_stbc_gt_80mhz = 0;
|
||||
|
||||
/* Tx Doppler is first bit and Rx Doppler is second bit */
|
||||
if (session_he->doppler) {
|
||||
@@ -7089,6 +7089,12 @@ void lim_log_he_cap(struct mac_context *mac, tDot11fIEhe_cap *he_cap)
|
||||
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);
|
||||
pe_debug("\tHE dynamic SMPS supp: 0x%01x",
|
||||
he_cap->he_dynamic_smps);
|
||||
pe_debug("\tPunctured sounding supp: 0x%01x",
|
||||
he_cap->punctured_sounding_supp);
|
||||
pe_debug("\tHT VHT Trigger frame Rx supp: 0x%01x",
|
||||
he_cap->ht_vht_trg_frm_rx_supp);
|
||||
/* HE PHY capabilities */
|
||||
chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0,
|
||||
he_cap->chan_width_1, he_cap->chan_width_2,
|
||||
@@ -7108,7 +7114,7 @@ void lim_log_he_cap(struct mac_context *mac, tDot11fIEhe_cap *he_cap)
|
||||
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",
|
||||
he_cap->tx_stbc_lt_80mhz);
|
||||
he_cap->tb_ppdu_tx_stbc_lt_80mhz);
|
||||
pe_debug("\tSTBC Rx support (<= 80MHz): 0x%01x",
|
||||
he_cap->rx_stbc_lt_80mhz);
|
||||
pe_debug("\tDoppler support: 0x%02x", he_cap->doppler);
|
||||
@@ -7147,7 +7153,7 @@ void lim_log_he_cap(struct mac_context *mac, tDot11fIEhe_cap *he_cap)
|
||||
pe_debug("\tPower boost factor: 0x%01x", he_cap->power_boost);
|
||||
pe_debug("\t4x HE LTF support: 0x%01x", he_cap->he_ltf_800_gi_4x);
|
||||
pe_debug("\tSTBC Tx support (> 80MHz): 0x%01x",
|
||||
he_cap->tx_stbc_gt_80mhz);
|
||||
he_cap->tb_ppdu_tx_stbc_gt_80mhz);
|
||||
pe_debug("\tSTBC Rx support (> 80MHz): 0x%01x",
|
||||
he_cap->rx_stbc_gt_80mhz);
|
||||
pe_debug("\tMax Nc: 0x%03x", he_cap->max_nc);
|
||||
@@ -7311,7 +7317,6 @@ void lim_set_he_caps(struct mac_context *mac, struct pe_session *session, uint8_
|
||||
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->chan_width = HE_CH_WIDTH_COMBINE(dot11_cap.chan_width_0,
|
||||
dot11_cap.chan_width_1, dot11_cap.chan_width_2,
|
||||
@@ -7325,9 +7330,11 @@ void lim_set_he_caps(struct mac_context *mac, struct pe_session *session, uint8_
|
||||
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->tb_ppdu_tx_stbc_lt_80mhz =
|
||||
dot11_cap.tb_ppdu_tx_stbc_lt_80mhz;
|
||||
he_cap->rx_stbc_lt_80mhz = dot11_cap.rx_stbc_lt_80mhz;
|
||||
he_cap->tx_stbc_gt_80mhz = dot11_cap.tx_stbc_gt_80mhz;
|
||||
he_cap->tb_ppdu_tx_stbc_gt_80mhz =
|
||||
dot11_cap.tb_ppdu_tx_stbc_gt_80mhz;
|
||||
he_cap->rx_stbc_gt_80mhz = dot11_cap.rx_stbc_gt_80mhz;
|
||||
he_cap->doppler = dot11_cap.doppler;
|
||||
he_cap->ul_mu = dot11_cap.ul_mu;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -24,7 +24,7 @@
|
||||
*
|
||||
*
|
||||
* This file was automatically generated by 'framesc'
|
||||
* Tue Dec 11 13:11:53 2018 from the following file(s):
|
||||
* Tue Feb 5 16:01:26 2019 from the following file(s):
|
||||
*
|
||||
* dot11f.frms
|
||||
*
|
||||
@@ -8749,7 +8749,9 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx,
|
||||
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;
|
||||
pDst->he_dynamic_smps = tmp78__ >> 13 & 0x1;
|
||||
pDst->punctured_sounding_supp = tmp78__ >> 14 & 0x1;
|
||||
pDst->ht_vht_trg_frm_rx_supp = tmp78__ >> 15 & 0x1;
|
||||
if (unlikely(ielen < 4)) {
|
||||
pDst->present = 0;
|
||||
return DOT11F_INCOMPLETE_IE;
|
||||
@@ -8772,7 +8774,7 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx,
|
||||
pDst->he_1x_ltf_800_gi_ppdu = tmp79__ >> 14 & 0x1;
|
||||
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->tb_ppdu_tx_stbc_lt_80mhz = tmp79__ >> 18 & 0x1;
|
||||
pDst->rx_stbc_lt_80mhz = tmp79__ >> 19 & 0x1;
|
||||
pDst->doppler = tmp79__ >> 20 & 0x3;
|
||||
pDst->ul_mu = tmp79__ >> 22 & 0x3;
|
||||
@@ -8806,7 +8808,7 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx,
|
||||
pDst->power_boost = tmp80__ >> 25 & 0x1;
|
||||
pDst->he_ltf_800_gi_4x = tmp80__ >> 26 & 0x1;
|
||||
pDst->max_nc = tmp80__ >> 27 & 0x7;
|
||||
pDst->tx_stbc_gt_80mhz = tmp80__ >> 30 & 0x1;
|
||||
pDst->tb_ppdu_tx_stbc_gt_80mhz = tmp80__ >> 30 & 0x1;
|
||||
pDst->rx_stbc_gt_80mhz = tmp80__ >> 31 & 0x1;
|
||||
if (unlikely(ielen < 2)) {
|
||||
pDst->present = 0;
|
||||
@@ -26243,7 +26245,9 @@ uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx,
|
||||
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);
|
||||
tmp173__ |= (pSrc->he_dynamic_smps << 13);
|
||||
tmp173__ |= (pSrc->punctured_sounding_supp << 14);
|
||||
tmp173__ |= (pSrc->ht_vht_trg_frm_rx_supp << 15);
|
||||
if (unlikely(nBuf < 2))
|
||||
return DOT11F_INCOMPLETE_IE;
|
||||
|
||||
@@ -26266,7 +26270,7 @@ uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx,
|
||||
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->tb_ppdu_tx_stbc_lt_80mhz << 18);
|
||||
tmp174__ |= (pSrc->rx_stbc_lt_80mhz << 19);
|
||||
tmp174__ |= (pSrc->doppler << 20);
|
||||
tmp174__ |= (pSrc->ul_mu << 22);
|
||||
@@ -26300,7 +26304,7 @@ uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx,
|
||||
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->tb_ppdu_tx_stbc_gt_80mhz << 30);
|
||||
tmp175__ |= (pSrc->rx_stbc_gt_80mhz << 31);
|
||||
if (unlikely(nBuf < 4))
|
||||
return DOT11F_INCOMPLETE_IE;
|
||||
|
||||
@@ -11523,13 +11523,13 @@ int sme_update_he_tx_stbc_cap(mac_handle_t mac_handle, uint8_t session_id,
|
||||
return -EINVAL;
|
||||
}
|
||||
if (he_cap_val <= 1)
|
||||
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.tx_stbc_lt_80mhz =
|
||||
he_cap_val;
|
||||
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.tb_ppdu_tx_stbc_lt_80mhz
|
||||
= he_cap_val;
|
||||
else
|
||||
return -EINVAL;
|
||||
if (he_cap_val <= 1)
|
||||
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.tx_stbc_gt_80mhz =
|
||||
he_cap_val;
|
||||
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.tb_ppdu_tx_stbc_gt_80mhz
|
||||
= he_cap_val;
|
||||
else
|
||||
return -EINVAL;
|
||||
csr_update_session_he_cap(mac_ctx, session);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -221,6 +221,12 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t *mac_cap,
|
||||
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_cap->he_dynamic_smps =
|
||||
WMI_HECAP_MAC_DYNSMPWRSAVE_GET(mac_cap[1]);
|
||||
he_cap->punctured_sounding_supp =
|
||||
WMI_HECAP_MAC_PUNCSOUNDING_GET(mac_cap[1]);
|
||||
he_cap->ht_vht_trg_frm_rx_supp =
|
||||
WMI_HECAP_MAC_HTVHTTRIGRX_GET(mac_cap[1]);
|
||||
/* HE PHY capabilities */
|
||||
chan_width = WMI_HECAP_PHY_CBW_GET(phy_cap);
|
||||
he_cap->chan_width_0 = HE_CH_WIDTH_GET_BIT(chan_width, 0);
|
||||
@@ -238,9 +244,10 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t *mac_cap,
|
||||
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);
|
||||
he_cap->tb_ppdu_tx_stbc_lt_80mhz = WMI_HECAP_PHY_TXSTBC_GET(phy_cap);
|
||||
he_cap->rx_stbc_gt_80mhz = WMI_HECAP_PHY_STBCRXGT80_GET(phy_cap);
|
||||
he_cap->tx_stbc_gt_80mhz = WMI_HECAP_PHY_STBCTXGT80_GET(phy_cap);
|
||||
he_cap->tb_ppdu_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(phy_cap);
|
||||
@@ -273,7 +280,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->tb_ppdu_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);
|
||||
@@ -407,8 +415,6 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap,
|
||||
he_cap->ops_supp = QDF_MIN(he_cap->ops_supp, new_cap->ops_supp);
|
||||
he_cap->amsdu_in_ampdu = QDF_MIN(he_cap->amsdu_in_ampdu,
|
||||
new_cap->amsdu_in_ampdu);
|
||||
he_cap->reserved1 = QDF_MIN(he_cap->reserved1,
|
||||
new_cap->reserved1);
|
||||
|
||||
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;
|
||||
@@ -434,8 +440,9 @@ static void wma_derive_ext_he_cap(tDot11fIEhe_cap *he_cap,
|
||||
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);
|
||||
he_cap->tx_stbc_lt_80mhz = QDF_MIN(he_cap->tx_stbc_lt_80mhz,
|
||||
new_cap->tx_stbc_lt_80mhz);
|
||||
he_cap->tb_ppdu_tx_stbc_lt_80mhz = QDF_MIN(
|
||||
he_cap->tb_ppdu_tx_stbc_lt_80mhz,
|
||||
new_cap->tb_ppdu_tx_stbc_lt_80mhz);
|
||||
he_cap->rx_stbc_lt_80mhz = QDF_MIN(he_cap->rx_stbc_lt_80mhz,
|
||||
new_cap->rx_stbc_lt_80mhz);
|
||||
he_cap->doppler = QDF_MIN(he_cap->doppler,
|
||||
@@ -582,6 +589,12 @@ void wma_print_he_cap(tDot11fIEhe_cap *he_cap)
|
||||
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);
|
||||
WMA_LOGD("\tHE dynamic SMPS supp: 0x%01x",
|
||||
he_cap->he_dynamic_smps);
|
||||
WMA_LOGD("\tPunctured sounding supp: 0x%01x",
|
||||
he_cap->punctured_sounding_supp);
|
||||
WMA_LOGD("\tHT VHT Trigger frame Rx supp: 0x%01x",
|
||||
he_cap->ht_vht_trg_frm_rx_supp);
|
||||
|
||||
/* HE PHY capabilities */
|
||||
chan_width = HE_CH_WIDTH_COMBINE(he_cap->chan_width_0,
|
||||
@@ -599,7 +612,8 @@ void wma_print_he_cap(tDot11fIEhe_cap *he_cap)
|
||||
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("\tTB PPDU STBC Tx support <= 80M: 0x%01x",
|
||||
he_cap->tb_ppdu_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);
|
||||
@@ -634,7 +648,8 @@ void wma_print_he_cap(tDot11fIEhe_cap *he_cap)
|
||||
WMA_LOGD("\t4x HE LTF support: 0x%01x", he_cap->he_ltf_800_gi_4x);
|
||||
|
||||
WMA_LOGD("\tMax NC: 0x%01x", he_cap->max_nc);
|
||||
WMA_LOGD("\tstbc Tx gt 80mhz: 0x%01x", he_cap->tx_stbc_gt_80mhz);
|
||||
WMA_LOGD("\tTB PPDU stbc Tx gt 80mhz: 0x%01x",
|
||||
he_cap->tb_ppdu_tx_stbc_gt_80mhz);
|
||||
WMA_LOGD("\tstbc Rx gt 80mhz: 0x%01x", he_cap->rx_stbc_gt_80mhz);
|
||||
WMA_LOGD("\ter_he_ltf_800_gi_4x: 0x%01x", he_cap->er_he_ltf_800_gi_4x);
|
||||
WMA_LOGD("\the_ppdu_20_in_40Mhz_2G: 0x%01x",
|
||||
@@ -1128,6 +1143,11 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
|
||||
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);
|
||||
WMI_HECAP_MAC_DYNSMPWRSAVE_SET(mac_cap[1], he_cap->he_dynamic_smps);
|
||||
WMI_HECAP_MAC_PUNCSOUNDING_SET(mac_cap[1],
|
||||
he_cap->punctured_sounding_supp);
|
||||
WMI_HECAP_MAC_HTVHTTRIGRX_SET(mac_cap[1],
|
||||
he_cap->ht_vht_trg_frm_rx_supp);
|
||||
qdf_mem_copy(peer->peer_he_cap_macinfo, mac_cap, sizeof(mac_cap));
|
||||
|
||||
/* HE PHY capabilities */
|
||||
@@ -1145,7 +1165,7 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
|
||||
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);
|
||||
WMI_HECAP_PHY_TXSTBC_SET(phy_cap, he_cap->tx_stbc_lt_80mhz);
|
||||
WMI_HECAP_PHY_TXSTBC_SET(phy_cap, he_cap->tb_ppdu_tx_stbc_lt_80mhz);
|
||||
|
||||
temp = he_cap->doppler & 0x1;
|
||||
WMI_HECAP_PHY_RXDOPPLER_SET(phy_cap, temp);
|
||||
@@ -1185,7 +1205,7 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
|
||||
WMI_HECAP_PHY_MAXNC_SET(phy_cap, he_cap->max_nc);
|
||||
|
||||
WMI_HECAP_PHY_STBCRXGT80_SET(phy_cap, he_cap->rx_stbc_gt_80mhz);
|
||||
WMI_HECAP_PHY_STBCTXGT80_SET(phy_cap, he_cap->tx_stbc_gt_80mhz);
|
||||
WMI_HECAP_PHY_STBCTXGT80_SET(phy_cap, he_cap->tb_ppdu_tx_stbc_gt_80mhz);
|
||||
|
||||
WMI_HECAP_PHY_ERSU4X800NSECGI_SET(phy_cap, he_cap->er_he_ltf_800_gi_4x);
|
||||
WMI_HECAP_PHY_HEPPDU20IN40MHZ2G_SET(phy_cap,
|
||||
|
||||
Reference in New Issue
Block a user