qcacld-3.0: Add configuration support to enable/disable Tx BF
Add support to dynamically enable/disable the tx beamformee support. Change-Id: I205fd352d731e9b26654b8bbbbc459d2798b03be CRs-Fixed: 2241816
This commit is contained in:

committed by
nshrivas

parent
0cbe1791e7
commit
6c7f3fae12
@@ -6206,6 +6206,8 @@ wlan_hdd_wifi_test_config_policy[
|
||||
.type = NLA_U8},
|
||||
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_LTF] = {
|
||||
.type = NLA_U8},
|
||||
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ENABLE_TX_BEAMFORMEE] = {
|
||||
.type = NLA_U8},
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -7400,6 +7402,18 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
|
||||
goto send_err;
|
||||
}
|
||||
|
||||
if (tb[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ENABLE_TX_BEAMFORMEE]) {
|
||||
cfg_val = nla_get_u8(tb[
|
||||
QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ENABLE_TX_BEAMFORMEE]);
|
||||
hdd_debug("Set Tx beamformee to %d", cfg_val);
|
||||
ret_val = sme_update_tx_bfee_supp(hdd_ctx->hHal,
|
||||
adapter->session_id,
|
||||
cfg_val);
|
||||
if (ret_val)
|
||||
sme_err("Failed to set Tx beamformee cap");
|
||||
|
||||
}
|
||||
|
||||
if (update_sme_cfg)
|
||||
sme_update_config(hdd_ctx->hHal, sme_config);
|
||||
|
||||
|
@@ -1058,6 +1058,17 @@ QDF_STATUS sme_update_roam_scan_hi_rssi_scan_params(tHalHandle hal_handle,
|
||||
uint32_t notify_id,
|
||||
int32_t val);
|
||||
|
||||
/**
|
||||
* sme_update_tx_bfee_supp() - sets the Tx Bfee support
|
||||
* @hal: Pointer to HAL
|
||||
* @session_id: SME session id
|
||||
* @cfg_val: Tx Bfee config value
|
||||
*
|
||||
* Return: 0 on success else err code
|
||||
*/
|
||||
int sme_update_tx_bfee_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t cfg_val);
|
||||
|
||||
void wlan_sap_enable_phy_error_logs(tHalHandle hal, uint32_t enable_log);
|
||||
#ifdef WLAN_FEATURE_DSRC
|
||||
void sme_set_dot11p_config(tHalHandle hal, bool enable_dot11p);
|
||||
@@ -2118,6 +2129,16 @@ int sme_set_auto_rate_he_ltf(tHalHandle hal, uint8_t session_id,
|
||||
void sme_update_he_cap_nss(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t nss);
|
||||
|
||||
/**
|
||||
* sme_update_he_tx_bfee_supp() - sets the HE Tx Bfee support
|
||||
* @hal: Pointer to HAL
|
||||
* @session_id: SME session id
|
||||
* @cfg_val: Tx Bfee config value
|
||||
*
|
||||
* Return: 0 on success else err code
|
||||
*/
|
||||
int sme_update_he_tx_bfee_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t cfg_val);
|
||||
/**
|
||||
* sme_update_he_mcs() - sets the HE MCS based on user request
|
||||
* @hal: Pointer to HAL
|
||||
@@ -2194,11 +2215,18 @@ static inline int sme_update_he_frag_supp(tHalHandle hal, uint8_t session_id,
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sme_update_he_ldpc_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint16_t he_ldpc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sme_update_he_tx_bfee_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t cfg_val)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -12934,6 +12934,20 @@ void sme_update_user_configured_nss(tHalHandle hal, uint8_t nss)
|
||||
mac_ctx->user_configured_nss = nss;
|
||||
}
|
||||
|
||||
int sme_update_tx_bfee_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t cfg_val)
|
||||
{
|
||||
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
status = sme_cfg_set_int(mac_ctx, WNI_CFG_VHT_SU_BEAMFORMEE_CAP,
|
||||
cfg_val);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
sme_err("Failed to set SU BFEE CFG");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
return sme_update_he_tx_bfee_supp(hal, session_id, cfg_val);
|
||||
}
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
void sme_update_he_cap_nss(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t nss)
|
||||
@@ -13043,6 +13057,13 @@ static int sme_update_he_cap(tHalHandle hal, uint8_t session_id,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sme_update_he_tx_bfee_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t cfg_val)
|
||||
{
|
||||
return sme_update_he_cap(hal, session_id, WNI_CFG_HE_SU_BEAMFORMEE,
|
||||
cfg_val);
|
||||
}
|
||||
|
||||
int sme_update_he_tx_stbc_cap(tHalHandle hal, uint8_t session_id, int value)
|
||||
{
|
||||
int ret;
|
||||
|
@@ -2502,20 +2502,31 @@ void csr_update_session_he_cap(tpAniSirGlobal mac_ctx,
|
||||
he_cap->dcm_enc_rx = value;
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_MU_PPDU, &value);
|
||||
he_cap->ul_he_mu = value;
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_SU_BEAMFORMER, &value);
|
||||
he_cap->su_beamformer = value;
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_SU_BEAMFORMEE, &value);
|
||||
he_cap->su_beamformee = value;
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_MU_BEAMFORMER, &value);
|
||||
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_BFEE_STS_GT80, &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);
|
||||
he_cap->num_sounding_gt_80 = value;
|
||||
if (he_cap->su_beamformee) {
|
||||
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_BFEE_STS_GT80, &value);
|
||||
he_cap->bfee_sts_gt_80 = value;
|
||||
} else {
|
||||
he_cap->bfee_sts_lt_80 = 0;
|
||||
he_cap->bfee_sts_gt_80 = 0;
|
||||
}
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_SU_BEAMFORMER, &value);
|
||||
he_cap->su_beamformer = value;
|
||||
if (he_cap->su_beamformer) {
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_MU_BEAMFORMER, &value);
|
||||
he_cap->mu_beamformer = 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);
|
||||
he_cap->num_sounding_gt_80 = value;
|
||||
} else {
|
||||
he_cap->mu_beamformer = 0;
|
||||
he_cap->num_sounding_lt_80 = 0;
|
||||
he_cap->num_sounding_gt_80 = 0;
|
||||
}
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_SU_FEED_TONE16, &value);
|
||||
he_cap->su_feedback_tone16 = value;
|
||||
sme_cfg_get_int(mac_ctx, WNI_CFG_HE_MU_FEED_TONE16, &value);
|
||||
|
Reference in New Issue
Block a user