qcacld-3.0: Update 11AX - HE IE's based on new draft - 3/4

Update 11AX - HE IE's based on new draft - 4/4

Update driver changes for the frame changes made as part of
I00e568c1889b001286abcbf4c653036b3b86ef3f.

Change-Id: I4b7943f5585e47f364145ffff73cfafb19998aa1
CRs-Fixed: 2092845
This commit is contained in:
Naveen Rawat
2017-09-08 16:17:54 -07:00
zatwierdzone przez snandini
rodzic ea921ce3d3
commit 4051b0240e
9 zmienionych plików z 306 dodań i 186 usunięć

Wyświetl plik

@@ -100,6 +100,13 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx,
he_cap->bsrp_ampdu_aggr);
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);
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_DUAL_BAND, he_cap->dual_band);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_CHAN_WIDTH, he_cap->chan_width);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_RX_PREAM_PUNC,
@@ -108,9 +115,11 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx,
he_cap->device_class);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LDPC, he_cap->ldpc_coding);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LTF_PPDU,
he_cap->he_ltf_gi_ppdu);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LTF_NDP, he_cap->he_ltf_gi_ndp);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_STBC, he_cap->stbc);
he_cap->he_1x_ltf_800_gi_ppdu);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_LTF_NDP,
he_cap->he_4x_ltf_3200_gi_ndp);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_STBC_LT80,
he_cap->stbc_lt_80mhz);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_DOPPLER, he_cap->doppler);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_UL_MUMIMO, he_cap->ul_mu);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_DCM_TX, he_cap->dcm_enc_tx);
@@ -124,12 +133,8 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx,
he_cap->mu_beamformer);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_BFEE_STS_LT80,
he_cap->bfee_sts_lt_80);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NSTS_TOT_LT80,
he_cap->nsts_tol_lt_80);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_BFEE_STS_GT80,
he_cap->bfee_sta_gt_80);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NSTS_TOT_GT80,
he_cap->nsts_tot_gt_80);
he_cap->bfee_sts_gt_80);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NUM_SOUND_LT80,
he_cap->num_sounding_lt_80);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NUM_SOUND_GT80,
@@ -153,7 +158,13 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx,
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_SRP, he_cap->srp);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_POWER_BOOST,
he_cap->power_boost);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_4x_LTF_GI, he_cap->he_ltf_gi_4x);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_4x_LTF_GI,
he_cap->he_ltf_800_gi_4x);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MAX_NC, he_cap->max_nc);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_STBC_GT80,
he_cap->stbc_gt_80mhz);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_ER_4x_LTF_GI,
he_cap->er_he_ltf_800_gi_4x);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_NSS, he_cap->nss_supported);
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_MCS, he_cap->mcs_supported);

Wyświetl plik

@@ -2128,7 +2128,10 @@ struct he_capability_info {
uint32_t twt_request:1;
uint32_t htc_he:1;
uint8_t reserved1:5;
uint8_t reserved1:2;
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;
@@ -2139,15 +2142,19 @@ struct he_capability_info {
uint32_t dcm_enc_tx:3;
uint32_t ul_mu:2;
uint32_t doppler:2;
uint32_t stbc:2;
uint32_t he_ltf_gi_ndp:2;
uint32_t he_ltf_gi_ppdu:2;
uint32_t stbc_lt_80mhz:2;
uint32_t he_4x_ltf_3200_gi_ndp:1;
uint32_t reserved2: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 stbc_gt_80mhz:2;
uint32_t max_nc:3;
uint32_t he_ltf_800_gi_4x:1;
uint32_t power_boost:1;
uint32_t srp:1;
uint32_t ppet_present:1;
@@ -2160,15 +2167,13 @@ struct he_capability_info {
uint32_t su_feedback_tone16:1;
uint32_t num_sounding_gt_80:3;
uint32_t num_sounding_lt_80:3;
uint32_t nsts_tot_gt_80:3;
uint32_t bfee_sta_gt_80:3;
uint32_t nsts_tol_lt_80:3;
uint32_t bfee_sts_gt_80:3;
uint32_t bfee_sts_lt_80:3;
uint32_t mu_beamformer:1;
uint32_t su_beamformee:1;
uint8_t reserved2:7;
uint8_t he_ltf_gi_4x:1;
uint8_t reserved2:3;
uint8_t er_he_ltf_800_gi_4x:1;
uint16_t rx_bw_bitmap:5;
uint16_t tx_bw_bitmap:5;
@@ -2202,16 +2207,20 @@ struct he_capability_info {
uint8_t bsrp_ampdu_aggr:1;
uint8_t qtp:1;
uint8_t a_bqr:1;
uint8_t reserved1:5;
uint8_t sr_responder:1;
uint8_t ndp_feedback_supp:1;
uint8_t ops_supp:1;
uint8_t reserved1:2;
uint32_t dual_band: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_ltf_gi_ppdu:2;
uint32_t he_ltf_gi_ndp:2;
uint32_t stbc:2;
uint32_t he_1x_ltf_800_gi_ppdu:1;
uint32_t reserved2:2;
uint32_t he_4x_ltf_3200_gi_ndp:1;
uint32_t stbc_lt_80mhz:2;
uint32_t doppler:2;
uint32_t ul_mu:2;
uint32_t dcm_enc_tx:3;
@@ -2222,9 +2231,7 @@ struct he_capability_info {
uint32_t su_beamformee:1;
uint32_t mu_beamformer:1;
uint32_t bfee_sts_lt_80:3;
uint32_t nsts_tol_lt_80:3;
uint32_t bfee_sta_gt_80:3;
uint32_t nsts_tot_gt_80:3;
uint32_t bfee_sts_gt_80:3;
uint32_t num_sounding_lt_80:3;
uint32_t num_sounding_gt_80:3;
uint32_t su_feedback_tone16:1;
@@ -2237,9 +2244,12 @@ struct he_capability_info {
uint32_t ppet_present:1;
uint32_t srp:1;
uint32_t power_boost:1;
uint32_t he_ltf_800_gi_4x:1;
uint32_t max_nc:3;
uint32_t stbc_gt_80mhz:2;
uint8_t he_ltf_gi_4x:1;
uint8_t reserved2:7;
uint8_t er_he_ltf_800_gi_4x:1;
uint8_t reserved3:7;
uint16_t nss_supported:3;
uint16_t mcs_supported:3;

Wyświetl plik

@@ -278,6 +278,9 @@ enum {
WNI_CFG_HE_BSRP_AMPDU_AGGR,
WNI_CFG_HE_QTP,
WNI_CFG_HE_A_BQR,
WNI_CFG_HE_SR_RESPONDER,
WNI_CFG_HE_NDP_FEEDBACK_SUPP,
WNI_CFG_HE_OPS_SUPP,
WNI_CFG_HE_DUAL_BAND,
WNI_CFG_HE_CHAN_WIDTH,
WNI_CFG_HE_RX_PREAM_PUNC,
@@ -285,7 +288,7 @@ enum {
WNI_CFG_HE_LDPC,
WNI_CFG_HE_LTF_PPDU,
WNI_CFG_HE_LTF_NDP,
WNI_CFG_HE_STBC,
WNI_CFG_HE_STBC_LT80,
WNI_CFG_HE_DOPPLER,
WNI_CFG_HE_UL_MUMIMO,
WNI_CFG_HE_DCM_TX,
@@ -295,9 +298,7 @@ enum {
WNI_CFG_HE_SU_BEAMFORMEE,
WNI_CFG_HE_MU_BEAMFORMER,
WNI_CFG_HE_BFEE_STS_LT80,
WNI_CFG_HE_NSTS_TOT_LT80,
WNI_CFG_HE_BFEE_STS_GT80,
WNI_CFG_HE_NSTS_TOT_GT80,
WNI_CFG_HE_NUM_SOUND_LT80,
WNI_CFG_HE_NUM_SOUND_GT80,
WNI_CFG_HE_SU_FEED_TONE16,
@@ -311,6 +312,9 @@ enum {
WNI_CFG_HE_SRP,
WNI_CFG_HE_POWER_BOOST,
WNI_CFG_HE_4x_LTF_GI,
WNI_CFG_HE_MAX_NC,
WNI_CFG_HE_STBC_GT80,
WNI_CFG_HE_ER_4x_LTF_GI,
WNI_CFG_HE_NSS,
WNI_CFG_HE_MCS,
WNI_CFG_HE_PPET,
@@ -1465,6 +1469,18 @@ enum {
#define WNI_CFG_HE_A_BQR_STAMAX 1
#define WNI_CFG_HE_A_BQR_STADEF 0
#define WNI_CFG_HE_SR_RESPONDER_STAMIN 0
#define WNI_CFG_HE_SR_RESPONDER_STAMAX 1
#define WNI_CFG_HE_SR_RESPONDER_STADEF 0
#define WNI_CFG_HE_NDP_FEEDBACK_SUPP_STAMIN 0
#define WNI_CFG_HE_NDP_FEEDBACK_SUPP_STAMAX 1
#define WNI_CFG_HE_NDP_FEEDBACK_SUPP_STADEF 0
#define WNI_CFG_HE_OPS_SUPP_STAMIN 0
#define WNI_CFG_HE_OPS_SUPP_STAMAX 1
#define WNI_CFG_HE_OPS_SUPP_STADEF 0
#define WNI_CFG_HE_DUAL_BAND_STAMIN 0
#define WNI_CFG_HE_DUAL_BAND_STAMAX 1
#define WNI_CFG_HE_DUAL_BAND_STADEF 0
@@ -1493,9 +1509,9 @@ enum {
#define WNI_CFG_HE_LTF_NDP_STAMAX 0x3
#define WNI_CFG_HE_LTF_NDP_STADEF 0
#define WNI_CFG_HE_STBC_STAMIN 0
#define WNI_CFG_HE_STBC_STAMAX 0x3
#define WNI_CFG_HE_STBC_STADEF 0
#define WNI_CFG_HE_STBC_LT80_STAMIN 0
#define WNI_CFG_HE_STBC_LT80_STAMAX 0x3
#define WNI_CFG_HE_STBC_LT80_STADEF 0
#define WNI_CFG_HE_DOPPLER_STAMIN 0
#define WNI_CFG_HE_DOPPLER_STAMAX 0x3
@@ -1533,18 +1549,10 @@ enum {
#define WNI_CFG_HE_BFEE_STS_LT80_STAMAX 0x7
#define WNI_CFG_HE_BFEE_STS_LT80_STADEF 0
#define WNI_CFG_HE_NSTS_TOT_LT80_STAMIN 0x3
#define WNI_CFG_HE_NSTS_TOT_LT80_STAMAX 0x7
#define WNI_CFG_HE_NSTS_TOT_LT80_STADEF 0
#define WNI_CFG_HE_BFEE_STS_GT80_STAMIN 0x3
#define WNI_CFG_HE_BFEE_STS_GT80_STAMAX 0x7
#define WNI_CFG_HE_BFEE_STS_GT80_STADEF 0
#define WNI_CFG_HE_NSTS_TOT_GT80_STAMIN 0x3
#define WNI_CFG_HE_NSTS_TOT_GT80_STAMAX 0x7
#define WNI_CFG_HE_NSTS_TOT_GT80_STADEF 0
#define WNI_CFG_HE_NUM_SOUND_LT80_STAMIN 0
#define WNI_CFG_HE_NUM_SOUND_LT80_STAMAX 0x7
#define WNI_CFG_HE_NUM_SOUND_LT80_STADEF 0
@@ -1597,6 +1605,18 @@ enum {
#define WNI_CFG_HE_4x_LTF_GI_STAMAX 1
#define WNI_CFG_HE_4x_LTF_GI_STADEF 0
#define WNI_CFG_HE_MAX_NC_STAMIN 0
#define WNI_CFG_HE_MAX_NC_STAMAX 0x7
#define WNI_CFG_HE_MAX_NC_STADEF 0
#define WNI_CFG_HE_STBC_GT80_STAMIN 0
#define WNI_CFG_HE_STBC_GT80_STAMAX 0x3
#define WNI_CFG_HE_STBC_GT80_STADEF 0
#define WNI_CFG_HE_ER_4x_LTF_GI_STAMIN 0
#define WNI_CFG_HE_ER_4x_LTF_GI_STAMAX 1
#define WNI_CFG_HE_ER_4x_LTF_GI_STADEF 0
#define WNI_CFG_HE_NSS_STAMIN 0
#define WNI_CFG_HE_NSS_STAMAX 0x7
#define WNI_CFG_HE_NSS_STADEF 0

Wyświetl plik

@@ -287,6 +287,9 @@ const char *cfg_get_string(uint16_t cfg_id)
CASE_RETURN_STRING(WNI_CFG_HE_BSRP_AMPDU_AGGR);
CASE_RETURN_STRING(WNI_CFG_HE_QTP);
CASE_RETURN_STRING(WNI_CFG_HE_A_BQR);
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_CHAN_WIDTH);
CASE_RETURN_STRING(WNI_CFG_HE_RX_PREAM_PUNC);
@@ -294,7 +297,7 @@ const char *cfg_get_string(uint16_t cfg_id)
CASE_RETURN_STRING(WNI_CFG_HE_LDPC);
CASE_RETURN_STRING(WNI_CFG_HE_LTF_PPDU);
CASE_RETURN_STRING(WNI_CFG_HE_LTF_NDP);
CASE_RETURN_STRING(WNI_CFG_HE_STBC);
CASE_RETURN_STRING(WNI_CFG_HE_STBC_LT80);
CASE_RETURN_STRING(WNI_CFG_HE_DOPPLER);
CASE_RETURN_STRING(WNI_CFG_HE_UL_MUMIMO);
CASE_RETURN_STRING(WNI_CFG_HE_DCM_TX);
@@ -304,9 +307,7 @@ const char *cfg_get_string(uint16_t cfg_id)
CASE_RETURN_STRING(WNI_CFG_HE_SU_BEAMFORMEE);
CASE_RETURN_STRING(WNI_CFG_HE_MU_BEAMFORMER);
CASE_RETURN_STRING(WNI_CFG_HE_BFEE_STS_LT80);
CASE_RETURN_STRING(WNI_CFG_HE_NSTS_TOT_LT80);
CASE_RETURN_STRING(WNI_CFG_HE_BFEE_STS_GT80);
CASE_RETURN_STRING(WNI_CFG_HE_NSTS_TOT_GT80);
CASE_RETURN_STRING(WNI_CFG_HE_NUM_SOUND_LT80);
CASE_RETURN_STRING(WNI_CFG_HE_NUM_SOUND_GT80);
CASE_RETURN_STRING(WNI_CFG_HE_SU_FEED_TONE16);
@@ -320,6 +321,9 @@ const char *cfg_get_string(uint16_t cfg_id)
CASE_RETURN_STRING(WNI_CFG_HE_SRP);
CASE_RETURN_STRING(WNI_CFG_HE_POWER_BOOST);
CASE_RETURN_STRING(WNI_CFG_HE_4x_LTF_GI);
CASE_RETURN_STRING(WNI_CFG_HE_MAX_NC);
CASE_RETURN_STRING(WNI_CFG_HE_STBC_GT80);
CASE_RETURN_STRING(WNI_CFG_HE_ER_4x_LTF_GI);
CASE_RETURN_STRING(WNI_CFG_HE_NSS);
CASE_RETURN_STRING(WNI_CFG_HE_MCS);
CASE_RETURN_STRING(WNI_CFG_HE_PPET);

Wyświetl plik

@@ -1259,6 +1259,19 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
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_SR_RESPONDER,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_SR_RESPONDER_STAMIN, WNI_CFG_HE_SR_RESPONDER_STAMAX,
WNI_CFG_HE_SR_RESPONDER_STADEF},
{WNI_CFG_HE_NDP_FEEDBACK_SUPP,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_NDP_FEEDBACK_SUPP_STAMIN,
WNI_CFG_HE_NDP_FEEDBACK_SUPP_STAMAX,
WNI_CFG_HE_NDP_FEEDBACK_SUPP_STADEF},
{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,
@@ -1287,10 +1300,10 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_LTF_NDP_STAMIN, WNI_CFG_HE_LTF_NDP_STAMAX,
WNI_CFG_HE_LTF_NDP_STADEF},
{WNI_CFG_HE_STBC,
{WNI_CFG_HE_STBC_LT80,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_STBC_STAMIN, WNI_CFG_HE_STBC_STAMAX,
WNI_CFG_HE_STBC_STADEF},
WNI_CFG_HE_STBC_LT80_STAMIN, WNI_CFG_HE_STBC_LT80_STAMAX,
WNI_CFG_HE_STBC_LT80_STADEF},
{WNI_CFG_HE_DOPPLER,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_DOPPLER_STAMIN, WNI_CFG_HE_DOPPLER_STAMAX,
@@ -1328,18 +1341,10 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_BFEE_STS_LT80_STAMIN, WNI_CFG_HE_BFEE_STS_LT80_STAMAX,
WNI_CFG_HE_BFEE_STS_LT80_STADEF},
{WNI_CFG_HE_NSTS_TOT_LT80,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_NSTS_TOT_LT80_STAMIN, WNI_CFG_HE_NSTS_TOT_LT80_STAMAX,
WNI_CFG_HE_NSTS_TOT_LT80_STADEF},
{WNI_CFG_HE_BFEE_STS_GT80,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_BFEE_STS_GT80_STAMIN, WNI_CFG_HE_BFEE_STS_GT80_STAMAX,
WNI_CFG_HE_BFEE_STS_GT80_STADEF},
{WNI_CFG_HE_NSTS_TOT_GT80,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_NSTS_TOT_GT80_STAMIN, WNI_CFG_HE_NSTS_TOT_GT80_STAMAX,
WNI_CFG_HE_NSTS_TOT_GT80_STADEF},
{WNI_CFG_HE_NUM_SOUND_LT80,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_NUM_SOUND_LT80_STAMIN, WNI_CFG_HE_NUM_SOUND_LT80_STAMAX,
@@ -1392,6 +1397,18 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_4x_LTF_GI_STAMIN, WNI_CFG_HE_4x_LTF_GI_STAMAX,
WNI_CFG_HE_4x_LTF_GI_STADEF},
{WNI_CFG_HE_MAX_NC,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_MAX_NC_STAMIN, WNI_CFG_HE_MAX_NC_STAMAX,
WNI_CFG_HE_MAX_NC_STADEF},
{WNI_CFG_HE_STBC_GT80,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_STBC_GT80_STAMIN, WNI_CFG_HE_STBC_GT80_STAMAX,
WNI_CFG_HE_STBC_GT80_STADEF},
{WNI_CFG_HE_ER_4x_LTF_GI,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_ER_4x_LTF_GI_STAMIN, WNI_CFG_HE_ER_4x_LTF_GI_STAMAX,
WNI_CFG_HE_ER_4x_LTF_GI_STADEF},
{WNI_CFG_HE_NSS,
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_HE_NSS_STAMIN, WNI_CFG_HE_NSS_STAMAX,

Wyświetl plik

@@ -5919,20 +5919,16 @@ bool lim_send_he_ie_update(tpAniSirGlobal mac_ctx, tpPESession pe_session)
WMI_HEOPS_TWT_SET(he_ops, he_op->twt_required);
WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->rts_threshold);
WMI_HEOPS_PARTBSSCOLOR_SET(he_ops, he_op->partial_bss_col);
WMI_HEOPS_MAXBSSID_SET(he_ops, he_op->maxbssid_ind);
WMI_HEOPS_TXBSSID_SET(he_ops, he_op->tx_bssid_ind);
WMI_HEOPS_BSSCOLORDISABLE_SET(he_ops, he_op->bss_col_disabled);
WMI_HEOPS_DUALBEACON_SET(he_ops, he_op->dual_beacon);
status = wma_update_he_ops_ie(cds_get_context(QDF_MODULE_ID_WMA),
pe_session->smeSessionId, he_ops);
if (status != QDF_STATUS_SUCCESS) {
lim_log(mac_ctx, LOGE,
FL("Can't send for vdev_id[%d] he_ops[0x%x]"),
pe_err("Can't send for vdev_id[%d] he_ops[0x%x]",
pe_session->smeSessionId, he_ops);
return false;
} else {
lim_log(mac_ctx, LOGD,
FL("successfully sent for vdev_id[%d] he_ops[0x%x]"),
pe_debug("successfully sent for vdev_id[%d] he_ops[0x%x]",
pe_session->smeSessionId, he_ops);
}
@@ -7232,21 +7228,35 @@ static void lim_intersect_he_caps(tDot11fIEvendor_he_cap *rcvd_he,
peer_he->fragmentation &= session_he->fragmentation;
/* Tx STBC is first bit and Rx STBC is second bit */
if (session_he->stbc) {
if (session_he->stbc_lt_80mhz) {
val = 0;
if ((session_he->stbc & 0x1) && (peer_he->stbc & 0x10))
if ((session_he->stbc_lt_80mhz & 0x1) &&
(peer_he->stbc_lt_80mhz & 0x10))
val |= (1 << 1);
if ((session_he->stbc & 0x10) && (peer_he->stbc & 0x1))
if ((session_he->stbc_lt_80mhz & 0x10) &&
(peer_he->stbc_lt_80mhz & 0x1))
val |= (1 << 0);
peer_he->stbc = val;
peer_he->stbc_lt_80mhz = val;
}
/* Tx STBC is first bit and Rx STBC is second bit */
if (session_he->stbc_gt_80mhz) {
val = 0;
if ((session_he->stbc_gt_80mhz & 0x1) &&
(peer_he->stbc_gt_80mhz & 0x10))
val |= (1 << 1);
if ((session_he->stbc_gt_80mhz & 0x10) &&
(peer_he->stbc_gt_80mhz & 0x1))
val |= (1 << 0);
peer_he->stbc_gt_80mhz = val;
}
/* Tx Doppler is first bit and Rx Doppler is second bit */
if (session_he->doppler) {
val = 0;
if ((session_he->stbc & 0x1) && (peer_he->stbc & 0x10))
if ((session_he->doppler & 0x1) && (peer_he->doppler & 0x10))
val |= (1 << 1);
if ((session_he->stbc & 0x10) && (peer_he->stbc & 0x1))
if ((session_he->doppler & 0x10) && (peer_he->doppler & 0x1))
val |= (1 << 0);
peer_he->doppler = val;
}
@@ -7385,28 +7395,23 @@ void lim_decide_he_op(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss,
he_ops->twt_required = HE_OP_TWT_REQ_GET(he_op);
he_ops->rts_threshold = HE_OP_RTS_THRES_GET(he_op);
he_ops->partial_bss_col = HE_OP_PART_BSS_COLOR_GET(he_op);
he_ops->maxbssid_ind = HE_OP_MAXBSSID_IND_GET(he_op);
he_ops->tx_bssid_ind = HE_OP_TX_BSSIX_IND_GET(he_op);
he_ops->bss_col_disabled = HE_OP_BSS_COLOR_DIS_GET(he_op);
he_ops->dual_beacon = HE_OP_DUAL_BEACON_GET(he_op);
session->he_op.bss_color = he_ops->bss_color;
session->he_op.default_pe = he_ops->default_pe;
session->he_op.twt_required = he_ops->twt_required;
session->he_op.rts_threshold = he_ops->rts_threshold;
session->he_op.partial_bss_col = he_ops->partial_bss_col;
session->he_op.maxbssid_ind = he_ops->maxbssid_ind;
session->he_op.tx_bssid_ind = he_ops->tx_bssid_ind;
session->he_op.bss_col_disabled = he_ops->bss_col_disabled;
session->he_op.dual_beacon = he_ops->dual_beacon;
pe_debug("HE Operation: bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x",
he_ops->bss_color, he_ops->default_pe,
he_ops->twt_required, he_ops->rts_threshold);
pe_debug("partial_bss_color: %0x, MaxBSSID Indicator: %0x, Tx BSSID Indicator: %0x, BSS color disabled: %0x, Dual beacon: %0x",
he_ops->partial_bss_col, he_ops->maxbssid_ind,
he_ops->tx_bssid_ind, he_ops->bss_col_disabled,
he_ops->dual_beacon);
pe_debug("partial_bss_color: %0x, Tx BSSID Indicator: %0x, BSS color disabled: %0x",
he_ops->partial_bss_col, he_ops->tx_bssid_ind,
he_ops->bss_col_disabled);
}
void lim_copy_bss_he_cap(tpPESession session,
@@ -7475,6 +7480,9 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_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("\tNDP Feedback support: 0x%01x", he_cap->ndp_feedback_supp);
pe_debug("\tOPS support: 0x%01x", he_cap->ops_supp);
/* HE PHY capabilities */
pe_debug("\tDual band support: 0x%01x", he_cap->dual_band);
@@ -7486,10 +7494,11 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap)
pe_debug("\tLDPC coding support: 0x%01x",
he_cap->ldpc_coding);
pe_debug("\tLTF and GI for HE PPDUs: 0x%02x",
he_cap->he_ltf_gi_ppdu);
he_cap->he_1x_ltf_800_gi_ppdu);
pe_debug("\tLTF and GI for NDP: 0x%02x",
he_cap->he_ltf_gi_ndp);
pe_debug("\tSTBC Tx & Rx support: 0x%02x", he_cap->stbc);
he_cap->he_4x_ltf_3200_gi_ndp);
pe_debug("\tSTBC Tx & Rx support (<= 80MHz): 0x%02x",
he_cap->stbc_lt_80mhz);
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);
@@ -7501,12 +7510,8 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap)
pe_debug("\tMU Beamformer: 0x%01x", he_cap->mu_beamformer);
pe_debug("\tBeamformee STS for <= 80Mhz: 0x%03x",
he_cap->bfee_sts_lt_80);
pe_debug("\tNSTS total for <= 80Mhz: 0x%03x",
he_cap->nsts_tol_lt_80);
pe_debug("\tBeamformee STS for > 80Mhz: 0x%03x",
he_cap->bfee_sta_gt_80);
pe_debug("\tNSTS total for > 80Mhz: 0x%03x",
he_cap->nsts_tot_gt_80);
he_cap->bfee_sts_gt_80);
pe_debug("\tNo. of sounding dim <= 80Mhz: 0x%03x",
he_cap->num_sounding_lt_80);
pe_debug("\tNo. of sounding dim > 80Mhz: 0x%03x",
@@ -7528,7 +7533,11 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap)
pe_debug("\tPPET present: 0x%01x", he_cap->ppet_present);
pe_debug("\tSRP based SR-support: 0x%01x", he_cap->srp);
pe_debug("\tPower boost factor: 0x%01x", he_cap->power_boost);
pe_debug("\t4x HE LTF support: 0x%01x", he_cap->he_ltf_gi_4x);
pe_debug("\t4x HE LTF support: 0x%01x", he_cap->he_ltf_800_gi_4x);
pe_debug("\tSTBC Tx & Rx support (> 80MHz): 0x%02x",
he_cap->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("\tHighest NSS supported: 0x%03x",
he_cap->nss_supported);
@@ -7550,22 +7559,21 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap)
void lim_log_he_op(tpAniSirGlobal mac, tDot11fIEvendor_he_op *he_ops)
{
tDot11fIEvht_info *vht_info = &he_ops->vht_info;
pe_debug("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x",
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);
pe_debug("\tpartial_bss_color: %0x, MaxBSSID Indicator: %0x, Tx BSSID Indicator: %0x, BSS color disabled: %0x, Dual beacon: %0x",
he_ops->partial_bss_col, he_ops->maxbssid_ind,
he_ops->tx_bssid_ind, he_ops->bss_col_disabled,
he_ops->dual_beacon);
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);
if (!vht_info->present)
if (he_ops->vht_oper_present)
pe_debug("VHT Info not present in HE Operation");
else
pe_debug("VHT Info: chan_width: %d, center_freq0: %d, center_freq1: %d",
vht_info->chan_width, vht_info->center_freq_seg0,
vht_info->center_freq_seg1);
he_ops->vht_oper.info.chan_width,
he_ops->vht_oper.info.center_freq_seg0,
he_ops->vht_oper.info.center_freq_seg1);
}
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
@@ -7655,6 +7663,9 @@ 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->ops_supp = dot11_cap.ops_supp;
he_cap->ndp_feedback_supp = dot11_cap.ndp_feedback_supp;
he_cap->reserved1 = dot11_cap.reserved1;
he_cap->dual_band = dot11_cap.dual_band;
@@ -7662,9 +7673,10 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start,
he_cap->rx_pream_puncturing = dot11_cap.rx_pream_puncturing;
he_cap->device_class = dot11_cap.device_class;
he_cap->ldpc_coding = dot11_cap.ldpc_coding;
he_cap->he_ltf_gi_ppdu = dot11_cap.he_ltf_gi_ppdu;
he_cap->he_ltf_gi_ndp = dot11_cap.he_ltf_gi_ndp;
he_cap->stbc = dot11_cap.stbc;
he_cap->he_1x_ltf_800_gi_ppdu = dot11_cap.he_1x_ltf_800_gi_ppdu;
he_cap->he_4x_ltf_3200_gi_ndp = dot11_cap.he_4x_ltf_3200_gi_ndp;
he_cap->stbc_lt_80mhz = dot11_cap.stbc_lt_80mhz;
he_cap->stbc_gt_80mhz = dot11_cap.stbc_gt_80mhz;
he_cap->doppler = dot11_cap.doppler;
he_cap->ul_mu = dot11_cap.ul_mu;
he_cap->dcm_enc_tx = dot11_cap.dcm_enc_tx;
@@ -7675,9 +7687,7 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start,
he_cap->su_beamformee = dot11_cap.su_beamformee;
he_cap->mu_beamformer = dot11_cap.mu_beamformer;
he_cap->bfee_sts_lt_80 = dot11_cap.bfee_sts_lt_80;
he_cap->nsts_tol_lt_80 = dot11_cap.nsts_tol_lt_80;
he_cap->bfee_sta_gt_80 = dot11_cap.bfee_sta_gt_80;
he_cap->nsts_tot_gt_80 = dot11_cap.nsts_tot_gt_80;
he_cap->bfee_sts_gt_80 = dot11_cap.bfee_sts_gt_80;
he_cap->num_sounding_lt_80 = dot11_cap.num_sounding_lt_80;
he_cap->num_sounding_gt_80 = dot11_cap.num_sounding_gt_80;
he_cap->su_feedback_tone16 = dot11_cap.su_feedback_tone16;
@@ -7691,7 +7701,9 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start,
he_cap->srp = dot11_cap.srp;
he_cap->power_boost = dot11_cap.power_boost;
he_cap->he_ltf_gi_4x = dot11_cap.he_ltf_gi_4x;
he_cap->he_ltf_800_gi_4x = dot11_cap.he_ltf_800_gi_4x;
he_cap->max_nc = dot11_cap.max_nc;
he_cap->er_he_ltf_800_gi_4x = dot11_cap.er_he_ltf_800_gi_4x;
he_cap->reserved2 = dot11_cap.reserved2;
he_cap->nss_supported = dot11_cap.nss_supported;

Wyświetl plik

@@ -6040,6 +6040,13 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
he_cap->qtp = value;
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;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NDP_FEEDBACK_SUPP,
value);
he_cap->ndp_feedback_supp = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_OPS_SUPP, value);
he_cap->ops_supp = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_DUAL_BAND, value);
he_cap->dual_band = value;
@@ -6052,11 +6059,11 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_LDPC, value);
he_cap->ldpc_coding = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_LTF_PPDU, value);
he_cap->he_ltf_gi_ppdu = value;
he_cap->he_1x_ltf_800_gi_ppdu = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_LTF_NDP, value);
he_cap->he_ltf_gi_ndp = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_STBC, value);
he_cap->stbc = value;
he_cap->he_4x_ltf_3200_gi_ndp = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_STBC_LT80, value);
he_cap->stbc_lt_80mhz = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_DOPPLER, value);
he_cap->doppler = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_UL_MUMIMO, value);
@@ -6075,12 +6082,8 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
he_cap->mu_beamformer = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_BFEE_STS_LT80, value);
he_cap->bfee_sts_lt_80 = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NSTS_TOT_LT80, value);
he_cap->nsts_tol_lt_80 = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_BFEE_STS_GT80, value);
he_cap->bfee_sta_gt_80 = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NSTS_TOT_GT80, value);
he_cap->nsts_tot_gt_80 = value;
he_cap->bfee_sts_gt_80 = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NUM_SOUND_LT80, value);
he_cap->num_sounding_lt_80 = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NUM_SOUND_GT80, value);
@@ -6106,7 +6109,13 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_POWER_BOOST, value);
he_cap->power_boost = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_4x_LTF_GI, value);
he_cap->he_ltf_gi_4x = value;
he_cap->he_ltf_800_gi_4x = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MAX_NC, value);
he_cap->max_nc = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_STBC_GT80, value);
he_cap->stbc_gt_80mhz = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_ER_4x_LTF_GI, value);
he_cap->er_he_ltf_800_gi_4x = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_NSS, value);
he_cap->nss_supported = value;
CFG_GET_INT(status, mac_ctx, WNI_CFG_HE_MCS, value);
@@ -6148,8 +6157,6 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
QDF_STATUS populate_dot11f_he_operation(tpAniSirGlobal mac_ctx,
tpPESession session, tDot11fIEvendor_he_op *he_op)
{
tDot11fIEvht_info *vht_info = &he_op->vht_info;
he_op->present = 1;
he_op->bss_color = session->he_op.bss_color;
@@ -6157,28 +6164,26 @@ QDF_STATUS populate_dot11f_he_operation(tpAniSirGlobal mac_ctx,
he_op->twt_required = session->he_op.twt_required;
he_op->rts_threshold = session->he_op.rts_threshold;
he_op->partial_bss_col = session->he_op.partial_bss_col;
he_op->maxbssid_ind = session->he_op.maxbssid_ind;
he_op->mbssid_ap = session->he_op.mbssid_ap;
he_op->tx_bssid_ind = session->he_op.tx_bssid_ind;
he_op->bss_col_disabled = session->he_op.bss_col_disabled;
he_op->dual_beacon = session->he_op.dual_beacon;
vht_info->present = 1;
he_op->vht_oper_present = 1;
if (session->ch_width > CH_WIDTH_40MHZ) {
vht_info->chan_width = 1;
vht_info->center_freq_seg0 =
he_op->vht_oper.info.chan_width = 1;
he_op->vht_oper.info.center_freq_seg0 =
session->ch_center_freq_seg0;
if (session->ch_width == CH_WIDTH_80P80MHZ ||
session->ch_width == CH_WIDTH_160MHZ)
vht_info->center_freq_seg1 =
he_op->vht_oper.info.center_freq_seg1 =
session->ch_center_freq_seg1;
else
vht_info->center_freq_seg1 = 0;
he_op->vht_oper.info.center_freq_seg1 = 0;
} else {
vht_info->chan_width = 0;
vht_info->center_freq_seg0 = 0;
vht_info->center_freq_seg1 = 0;
he_op->vht_oper.info.chan_width = 0;
he_op->vht_oper.info.center_freq_seg0 = 0;
he_op->vht_oper.info.center_freq_seg1 = 0;
}
lim_log_he_op(mac_ctx, he_op);
return QDF_STATUS_SUCCESS;

Wyświetl plik

@@ -2318,6 +2318,12 @@ static void csr_update_session_he_cap(tpAniSirGlobal mac_ctx,
he_cap->qtp = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_A_BQR, &value);
he_cap->a_bqr = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_SR_RESPONDER, &value);
he_cap->sr_responder = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_NDP_FEEDBACK_SUPP, &value);
he_cap->ndp_feedback_supp = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_OPS_SUPP, &value);
he_cap->ops_supp = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_DUAL_BAND, &value);
he_cap->dual_band = value;
@@ -2330,11 +2336,11 @@ static void csr_update_session_he_cap(tpAniSirGlobal mac_ctx,
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_LDPC, &value);
he_cap->ldpc_coding = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_LTF_PPDU, &value);
he_cap->he_ltf_gi_ppdu = value;
he_cap->he_1x_ltf_800_gi_ppdu = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_LTF_NDP, &value);
he_cap->he_ltf_gi_ndp = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_STBC, &value);
he_cap->stbc = value;
he_cap->he_4x_ltf_3200_gi_ndp = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_STBC_LT80, &value);
he_cap->stbc_lt_80mhz = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_DOPPLER, &value);
he_cap->doppler = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_UL_MUMIMO, &value);
@@ -2353,12 +2359,8 @@ static void csr_update_session_he_cap(tpAniSirGlobal mac_ctx,
he_cap->mu_beamformer = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_BFEE_STS_LT80, &value);
he_cap->bfee_sts_lt_80 = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_NSTS_TOT_LT80, &value);
he_cap->nsts_tol_lt_80 = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_BFEE_STS_GT80, &value);
he_cap->bfee_sta_gt_80 = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_NSTS_TOT_GT80, &value);
he_cap->nsts_tot_gt_80 = value;
he_cap->bfee_sts_gt_80 = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_NUM_SOUND_LT80, &value);
he_cap->num_sounding_lt_80 = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_NUM_SOUND_GT80, &value);
@@ -2384,7 +2386,13 @@ static void csr_update_session_he_cap(tpAniSirGlobal mac_ctx,
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_POWER_BOOST, &value);
he_cap->power_boost = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_4x_LTF_GI, &value);
he_cap->he_ltf_gi_4x = value;
he_cap->he_ltf_800_gi_4x = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_MAX_NC, &value);
he_cap->max_nc = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_STBC_GT80, &value);
he_cap->stbc_gt_80mhz = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_ER_4x_LTF_GI, &value);
he_cap->er_he_ltf_800_gi_4x = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_NSS, &value);
he_cap->nss_supported = value;
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_MCS, &value);

Wyświetl plik

@@ -243,6 +243,9 @@ static void wma_convert_he_cap(tDot11fIEvendor_he_cap *he_cap, uint32_t 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 PHY capabilities */
he_cap->dual_band = WMI_HECAP_PHY_DB_GET(phy_cap);
@@ -250,13 +253,17 @@ static void wma_convert_he_cap(tDot11fIEvendor_he_cap *he_cap, uint32_t mac_cap,
he_cap->rx_pream_puncturing = WMI_HECAP_PHY_PREAMBLEPUNCRX_GET(phy_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_ltf_gi_ppdu = WMI_HECAP_PHY_LTFGIFORHE_GET(phy_cap);
he_cap->he_ltf_gi_ndp = WMI_HECAP_PHY_LTFGIFORNDP_GET(phy_cap);
he_cap->stbc = (WMI_HECAP_PHY_RXSTBC_GET(phy_cap) << 1) |
WMI_HECAP_PHY_TXSTBC_GET(phy_cap);
he_cap->he_1x_ltf_800_gi_ppdu = WMI_HECAP_PHY_LTFGIFORHE_GET(phy_cap);
he_cap->he_4x_ltf_3200_gi_ndp = WMI_HECAP_PHY_LTFGIFORNDP_GET(phy_cap);
he_cap->stbc_lt_80mhz = (WMI_HECAP_PHY_RXSTBC_GET(phy_cap) << 1) |
WMI_HECAP_PHY_TXSTBC_GET(phy_cap);
he_cap->stbc_gt_80mhz = (WMI_HECAP_PHY_STBCRXGT80_GET(phy_cap) << 1) |
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);
he_cap->ul_mu = WMI_HECAP_PHY_UL_MU_MIMO_GET(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);
he_cap->dcm_enc_rx = WMI_HECAP_PHY_DCMRX_GET(phy_cap);
he_cap->ul_he_mu = WMI_HECAP_PHY_ULHEMU_GET(phy_cap);
@@ -264,9 +271,7 @@ static void wma_convert_he_cap(tDot11fIEvendor_he_cap *he_cap, uint32_t mac_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->nsts_tol_lt_80 = WMI_HECAP_PHY_NSTSLT80MHZ_GET(phy_cap);
he_cap->bfee_sta_gt_80 = WMI_HECAP_PHY_BFMESTSGT80MHZ_GET(phy_cap);
he_cap->nsts_tot_gt_80 = WMI_HECAP_PHY_NSTSGT80MHZ_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);
he_cap->su_feedback_tone16 =
@@ -283,7 +288,11 @@ static void wma_convert_he_cap(tDot11fIEvendor_he_cap *he_cap, uint32_t mac_cap,
he_cap->ppet_present = WMI_HECAP_PHY_PETHRESPRESENT_GET(phy_cap);
he_cap->srp = WMI_HECAP_PHY_SRPSPRESENT_GET(phy_cap);
he_cap->power_boost = WMI_HECAP_PHY_PWRBOOSTAR_GET(phy_cap);
he_cap->he_ltf_gi_4x = WMI_HECAP_PHY_4XLTFAND800NSECSGI_GET(phy_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->er_he_ltf_800_gi_4x =
WMI_HECAP_PHY_ERSU4X800NSECGI_GET(phy_cap);
he_cap->nss_supported = nss - 1;
he_cap->mcs_supported = mcs;
@@ -382,12 +391,14 @@ static void wma_derive_ext_he_cap(t_wma_handle *wma_handle,
new_cap->device_class);
he_cap->ldpc_coding = QDF_MIN(he_cap->ldpc_coding,
new_cap->ldpc_coding);
he_cap->he_ltf_gi_ppdu = QDF_MIN(he_cap->he_ltf_gi_ppdu,
new_cap->he_ltf_gi_ppdu);
he_cap->he_ltf_gi_ndp = QDF_MIN(he_cap->he_ltf_gi_ndp,
new_cap->he_ltf_gi_ndp);
he_cap->stbc = QDF_MIN(he_cap->stbc,
new_cap->stbc);
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->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->stbc_lt_80mhz = QDF_MIN(he_cap->stbc_lt_80mhz,
new_cap->stbc_lt_80mhz);
he_cap->doppler = QDF_MIN(he_cap->doppler,
new_cap->doppler);
he_cap->ul_mu = QDF_MIN(he_cap->ul_mu, new_cap->ul_mu);
@@ -404,12 +415,8 @@ static void wma_derive_ext_he_cap(t_wma_handle *wma_handle,
new_cap->mu_beamformer);
he_cap->bfee_sts_lt_80 = QDF_MIN(he_cap->bfee_sts_lt_80,
new_cap->bfee_sts_lt_80);
he_cap->nsts_tol_lt_80 = QDF_MIN(he_cap->nsts_tol_lt_80,
new_cap->nsts_tol_lt_80);
he_cap->bfee_sta_gt_80 = QDF_MIN(he_cap->bfee_sta_gt_80,
new_cap->bfee_sta_gt_80);
he_cap->nsts_tot_gt_80 = QDF_MIN(he_cap->nsts_tot_gt_80,
new_cap->nsts_tot_gt_80);
he_cap->bfee_sts_gt_80 = QDF_MIN(he_cap->bfee_sts_gt_80,
new_cap->bfee_sts_gt_80);
he_cap->num_sounding_lt_80 = QDF_MIN(he_cap->num_sounding_lt_80,
new_cap->num_sounding_lt_80);
he_cap->num_sounding_gt_80 = QDF_MIN(he_cap->num_sounding_gt_80,
@@ -434,8 +441,8 @@ static void wma_derive_ext_he_cap(t_wma_handle *wma_handle,
he_cap->srp = QDF_MIN(he_cap->srp, new_cap->srp);
he_cap->power_boost = QDF_MIN(he_cap->power_boost,
new_cap->power_boost);
he_cap->he_ltf_gi_4x = QDF_MIN(he_cap->he_ltf_gi_4x,
new_cap->he_ltf_gi_4x);
he_cap->he_ltf_800_gi_4x = QDF_MIN(he_cap->he_ltf_800_gi_4x,
new_cap->he_ltf_800_gi_4x);
he_cap->reserved2 = QDF_MIN(he_cap->reserved2,
new_cap->reserved2);
he_cap->nss_supported = QDF_MIN(he_cap->nss_supported,
@@ -496,9 +503,10 @@ void wma_print_he_cap(tDot11fIEvendor_he_cap *he_cap)
he_cap->rx_pream_puncturing);
WMA_LOGI("\tClass of device: 0x%01x", he_cap->device_class);
WMA_LOGI("\tLDPC coding support: 0x%01x", he_cap->ldpc_coding);
WMA_LOGI("\tLTF and GI for HE PPDUs: 0x%02x", he_cap->he_ltf_gi_ppdu);
WMA_LOGI("\tLTF and GI for NDP: 0x%02x", he_cap->he_ltf_gi_ndp);
WMA_LOGI("\tSTBC Tx & Rx support: 0x%02x", he_cap->stbc);
WMA_LOGI("\tLTF and GI for HE PPDUs: 0x%02x",
he_cap->he_1x_ltf_800_gi_ppdu);
WMA_LOGI("\tLTF and GI for NDP: 0x%02x", he_cap->he_4x_ltf_3200_gi_ndp);
WMA_LOGI("\tSTBC Tx & Rx support: 0x%02x", he_cap->stbc_lt_80mhz);
WMA_LOGI("\tDoppler support: 0x%02x", he_cap->doppler);
WMA_LOGI("\tUL MU: 0x%02x", he_cap->ul_mu);
WMA_LOGI("\tDCM encoding Tx: 0x%03x", he_cap->dcm_enc_tx);
@@ -509,10 +517,8 @@ void wma_print_he_cap(tDot11fIEvendor_he_cap *he_cap)
WMA_LOGI("\tMU Beamformer: 0x%01x", he_cap->mu_beamformer);
WMA_LOGI("\tBeamformee STS for <= 80Mhz: 0x%03x",
he_cap->bfee_sts_lt_80);
WMA_LOGI("\tNSTS total for <= 80Mhz: 0x%03x", he_cap->nsts_tol_lt_80);
WMA_LOGI("\tBeamformee STS for > 80Mhz: 0x%03x",
he_cap->bfee_sta_gt_80);
WMA_LOGI("\tNSTS total for > 80Mhz: 0x%03x", he_cap->nsts_tot_gt_80);
he_cap->bfee_sts_gt_80);
WMA_LOGI("\tNo. of sounding dim <= 80Mhz: 0x%03x",
he_cap->num_sounding_lt_80);
WMA_LOGI("\tNo. of sounding dim > 80Mhz: 0x%03x",
@@ -531,7 +537,7 @@ void wma_print_he_cap(tDot11fIEvendor_he_cap *he_cap)
WMA_LOGI("\tPPET present: 0x%01x", he_cap->ppet_present);
WMA_LOGI("\tSRP based SR-support: 0x%01x", he_cap->srp);
WMA_LOGI("\tPower boost factor: 0x%01x", he_cap->power_boost);
WMA_LOGI("\t4x HE LTF support: 0x%01x", he_cap->he_ltf_gi_4x);
WMA_LOGI("\t4x HE LTF support: 0x%01x", he_cap->he_ltf_800_gi_4x);
WMA_LOGI("\tHighest NSS supported: 0x%03x", he_cap->nss_supported);
WMA_LOGI("\tHighest MCS supported: 0x%03x", he_cap->mcs_supported);
@@ -607,13 +613,16 @@ void wma_print_he_phy_cap(uint32_t *phy_cap)
WMI_HECAP_PHY_LTFGIFORHE_GET(phy_cap));
WMA_LOGI("\tLTF and GI for NDP: 0x%02x",
WMI_HECAP_PHY_LTFGIFORNDP_GET(phy_cap));
WMA_LOGI("\tSTBC Tx & Rx support: 0x%02x",
WMA_LOGI("\tSTBC Tx & Rx support (BW <= 80Mhz): 0x%02x",
(WMI_HECAP_PHY_RXSTBC_GET(phy_cap) << 1) |
WMI_HECAP_PHY_TXSTBC_GET(phy_cap));
WMA_LOGI("\tDoppler support: 0x%02x",
(WMI_HECAP_PHY_RXDOPPLER_GET(phy_cap) << 1) |
WMI_HECAP_PHY_TXDOPPLER_GET(phy_cap));
WMA_LOGI("\tUL MU: 0x%02x", WMI_HECAP_PHY_UL_MU_MIMO_GET(phy_cap));
WMA_LOGI("\tUL MU (Full BW): 0x%01x",
WMI_HECAP_PHY_UL_MU_MIMO_GET(phy_cap));
WMA_LOGI("\tUL MU (Partial BW): 0x%01x",
WMI_HECAP_PHY_ULMUMIMOOFDMA_GET(phy_cap));
WMA_LOGI("\tDCM encoding Tx: 0x%03x", WMI_HECAP_PHY_DCMTX_GET(phy_cap));
WMA_LOGI("\tDCM encoding Tx: 0x%03x", WMI_HECAP_PHY_DCMRX_GET(phy_cap));
WMA_LOGI("\tHE MU PPDU payload support: 0x%01x",
@@ -654,6 +663,13 @@ void wma_print_he_phy_cap(uint32_t *phy_cap)
WMI_HECAP_PHY_PWRBOOSTAR_GET(phy_cap));
WMA_LOGI("\t4x HE LTF support: 0x%01x",
WMI_HECAP_PHY_4XLTFAND800NSECSGI_GET(phy_cap));
WMA_LOGI("\tMax Nc supported: 0x%03x",
WMI_HECAP_PHY_MAXNC_GET(phy_cap));
WMA_LOGI("\tSTBC Tx & Rx support (BW > 80Mhz): 0x%02x",
(WMI_HECAP_PHY_STBCRXGT80_GET(phy_cap) << 1) |
WMI_HECAP_PHY_STBCTXGT80_GET(phy_cap));
WMA_LOGI("\tER 4x HE LTF support: 0x%01x",
WMI_HECAP_PHY_ERSU4X800NSECGI_GET(phy_cap));
}
void wma_print_he_mac_cap(uint32_t mac_cap)
@@ -710,6 +726,12 @@ void wma_print_he_mac_cap(uint32_t mac_cap)
WMA_LOGI("\tQuite Time Period support: 0x%01x",
WMI_HECAP_MAC_QTP_GET(mac_cap));
WMA_LOGI("\tA-BQR support: 0x%01x", WMI_HECAP_MAC_ABQR_GET(mac_cap));
WMA_LOGI("\tSR Responder support: 0x%01x",
WMI_HECAP_MAC_SRRESP_GET(mac_cap));
WMA_LOGI("\tOPS Support: 0x%01x",
WMI_HECAP_MAC_OPS_GET(mac_cap));
WMA_LOGI("\tNDP Feedback Support: 0x%01x",
WMI_HECAP_MAC_NDPFDBKRPT_GET(mac_cap));
}
void wma_update_target_ext_he_cap(tp_wma_handle wma_handle,
@@ -796,13 +818,13 @@ void wma_he_update_tgt_services(tp_wma_handle wma, struct wma_tgt_services *cfg)
void wma_print_he_op(tDot11fIEvendor_he_op *he_ops)
{
WMA_LOGI(FL("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x"),
WMA_LOGI(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);
WMA_LOGI(("\tpartial_bss_color: %0x, MaxBSSID Indicator: %0x, Tx BSSID Indicator: %0x, BSS color disabled: %0x, Dual beacon: %0x"),
he_ops->partial_bss_col, he_ops->maxbssid_ind,
he_ops->tx_bssid_ind, he_ops->bss_col_disabled,
he_ops->dual_beacon);
he_ops->twt_required, he_ops->rts_threshold,
he_ops->vht_oper_present);
WMA_LOGI(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);
}
/**
@@ -952,6 +974,10 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
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);
peer->peer_he_cap_macinfo = mac_cap;
/* HE PHY capabilities */
@@ -960,12 +986,12 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
WMI_HECAP_PHY_PREAMBLEPUNCRX_SET(phy_cap, he_cap->rx_pream_puncturing);
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_ltf_gi_ppdu);
WMI_HECAP_PHY_LTFGIFORNDP_SET(phy_cap, he_cap->he_ltf_gi_ndp);
WMI_HECAP_PHY_LTFGIFORHE_SET(phy_cap, he_cap->he_1x_ltf_800_gi_ppdu);
WMI_HECAP_PHY_LTFGIFORNDP_SET(phy_cap, he_cap->he_4x_ltf_3200_gi_ndp);
temp = he_cap->stbc & 0x1;
temp = he_cap->stbc_lt_80mhz & 0x1;
WMI_HECAP_PHY_RXSTBC_SET(phy_cap, temp);
temp = he_cap->stbc >> 0x1;
temp = he_cap->stbc_lt_80mhz >> 0x1;
WMI_HECAP_PHY_TXSTBC_SET(phy_cap, temp);
temp = he_cap->doppler & 0x1;
@@ -973,7 +999,11 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
temp = he_cap->doppler >> 0x1;
WMI_HECAP_PHY_TXDOPPLER_SET(phy_cap, temp);
WMI_HECAP_PHY_UL_MU_MIMO_SET(phy_cap, he_cap->ul_mu);
temp = he_cap->ul_mu & 0x1;
WMI_HECAP_PHY_UL_MU_MIMO_SET(phy_cap, temp);
temp = he_cap->ul_mu >> 0x1;
WMI_HECAP_PHY_ULMUMIMOOFDMA_SET(phy_cap, temp);
WMI_HECAP_PHY_DCMTX_SET(phy_cap, he_cap->dcm_enc_tx);
WMI_HECAP_PHY_DCMRX_SET(phy_cap, he_cap->dcm_enc_rx);
WMI_HECAP_PHY_ULHEMU_SET(phy_cap, he_cap->ul_he_mu);
@@ -981,9 +1011,7 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
WMI_HECAP_PHY_SUBFME_SET(phy_cap, he_cap->su_beamformee);
WMI_HECAP_PHY_MUBFMR_SET(phy_cap, he_cap->mu_beamformer);
WMI_HECAP_PHY_BFMESTSLT80MHZ_SET(phy_cap, he_cap->bfee_sts_lt_80);
WMI_HECAP_PHY_NSTSLT80MHZ_SET(phy_cap, he_cap->nsts_tol_lt_80);
WMI_HECAP_PHY_BFMESTSGT80MHZ_SET(phy_cap, he_cap->bfee_sta_gt_80);
WMI_HECAP_PHY_NSTSGT80MHZ_SET(phy_cap, he_cap->nsts_tot_gt_80);
WMI_HECAP_PHY_BFMESTSGT80MHZ_SET(phy_cap, he_cap->bfee_sts_gt_80);
WMI_HECAP_PHY_NUMSOUNDLT80MHZ_SET(phy_cap, he_cap->num_sounding_lt_80);
WMI_HECAP_PHY_NUMSOUNDGT80MHZ_SET(phy_cap, he_cap->num_sounding_gt_80);
WMI_HECAP_PHY_NG16SUFEEDBACKLT80_SET(phy_cap,
@@ -999,7 +1027,16 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
WMI_HECAP_PHY_PETHRESPRESENT_SET(phy_cap, he_cap->ppet_present);
WMI_HECAP_PHY_SRPPRESENT_SET(phy_cap, he_cap->srp);
WMI_HECAP_PHY_PWRBOOSTAR_SET(phy_cap, he_cap->power_boost);
WMI_HECAP_PHY_4XLTFAND800NSECSGI_SET(phy_cap, he_cap->he_ltf_gi_4x);
WMI_HECAP_PHY_4XLTFAND800NSECSGI_SET(phy_cap, he_cap->he_ltf_800_gi_4x);
WMI_HECAP_PHY_MAXNC_SET(phy_cap, he_cap->max_nc);
temp = he_cap->stbc_gt_80mhz & 0x1;
WMI_HECAP_PHY_STBCRXGT80_SET(phy_cap, temp);
temp = he_cap->stbc_gt_80mhz >> 0x1;
WMI_HECAP_PHY_STBCTXGT80_SET(phy_cap, temp);
WMI_HECAP_PHY_ERSU4X800NSECGI_SET(phy_cap, he_cap->er_he_ltf_800_gi_4x);
/* until further update in standard */
peer->peer_he_mcs_count = WMI_HOST_MAX_HE_RATE_SET;
@@ -1017,10 +1054,8 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
WMI_HEOPS_TWT_SET(he_ops, he_op->twt_required);
WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->rts_threshold);
WMI_HEOPS_PARTBSSCOLOR_SET(he_ops, he_op->partial_bss_col);
WMI_HEOPS_MAXBSSID_SET(he_ops, he_op->maxbssid_ind);
WMI_HEOPS_TXBSSID_SET(he_ops, he_op->tx_bssid_ind);
WMI_HEOPS_BSSCOLORDISABLE_SET(he_ops, he_op->bss_col_disabled);
WMI_HEOPS_DUALBEACON_SET(he_ops, he_op->dual_beacon);
peer->peer_he_ops = he_ops;
wma_parse_he_ppet(&he_cap->ppe_threshold, &peer->peer_ppet);
@@ -1047,10 +1082,8 @@ void wma_update_vdev_he_ops(struct wma_vdev_start_req *req,
WMI_HEOPS_TWT_SET(he_ops, he_op->twt_required);
WMI_HEOPS_RTSTHLD_SET(he_ops, he_op->rts_threshold);
WMI_HEOPS_PARTBSSCOLOR_SET(he_ops, he_op->partial_bss_col);
WMI_HEOPS_MAXBSSID_SET(he_ops, he_op->maxbssid_ind);
WMI_HEOPS_TXBSSID_SET(he_ops, he_op->tx_bssid_ind);
WMI_HEOPS_BSSCOLORDISABLE_SET(he_ops, he_op->bss_col_disabled);
WMI_HEOPS_DUALBEACON_SET(he_ops, he_op->dual_beacon);
req->he_ops = he_ops;
}