qcacld-3.0: Configuration support for HE testbed defaults

Add support to configure HE testbed defaults configuration
settings.

Change-Id: I13a2158ac2e1fd05465bd74103a96fb427592de0
CRs-Fixed: 2414928
This commit is contained in:
Kiran Kumar Lokere 2019-02-24 21:53:20 -08:00 committed by nshrivas
parent 49e3aff542
commit 921b5a5213
5 changed files with 74 additions and 0 deletions

View File

@ -823,6 +823,7 @@ struct wlan_mlme_qos {
*/
struct wlan_mlme_he_caps {
tDot11fIEhe_cap dot11_he_cap;
tDot11fIEhe_cap he_cap_orig;
uint8_t he_ppet_2g[MLME_HE_PPET_LEN];
uint8_t he_ppet_5g[MLME_HE_PPET_LEN];
uint32_t he_ops_basic_mcs_nss;

View File

@ -776,6 +776,7 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
qdf_mem_copy(mlme_obj->cfg.he_caps.he_ppet_5g, wma_cfg->ppet_5g,
HE_MAX_PPET_SIZE);
mlme_obj->cfg.he_caps.he_cap_orig = mlme_obj->cfg.he_caps.dot11_he_cap;
return status;
}
#endif

View File

@ -5359,6 +5359,8 @@ wlan_hdd_wifi_test_config_policy[
.type = NLA_NESTED},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_ACTION_TX_TB_PPDU] = {
.type = NLA_U8},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_SET_HE_TESTBED_DEFAULTS]
= {.type = NLA_U8},
};
/**
@ -7142,6 +7144,18 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
(cfg_val ? true : false));
}
cmd_id = QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_SET_HE_TESTBED_DEFAULTS;
if (tb[cmd_id]) {
cfg_val = nla_get_u8(tb[cmd_id]);
hdd_debug("Configure HE testbed defaults %d", cfg_val);
if (!cfg_val)
sme_reset_he_caps(hdd_ctx->mac_handle,
adapter->vdev_id);
else
sme_set_he_testbed_def(hdd_ctx->mac_handle,
adapter->vdev_id);
}
cmd_id = QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_ACTION_TX_TB_PPDU;
if (tb[cmd_id]) {
cfg_val = nla_get_u8(tb[cmd_id]);

View File

@ -2988,6 +2988,19 @@ bool sme_validate_channel_list(mac_handle_t mac_handle,
*/
void sme_set_amsdu(mac_handle_t mac_handle, bool enable);
#ifdef WLAN_FEATURE_11AX
void sme_set_he_testbed_def(mac_handle_t mac_handle, uint8_t vdev_id);
void sme_reset_he_caps(mac_handle_t mac_handle, uint8_t vdev_id);
#else
static inline void sme_set_he_testbed_def(mac_handle_t mac_handle,
uint8_t vdev_id)
{
}
static inline void sme_reset_he_caps(mac_handle_t mac_handle, uint8_t vdev_id)
{
}
#endif
/**
* sme_get_mcs_idx() - gets mcs index
* @max_rate: max rate

View File

@ -14625,6 +14625,51 @@ void sme_set_amsdu(mac_handle_t mac_handle, bool enable)
mac_ctx->is_usr_cfg_amsdu_enabled = enable;
}
#ifdef WLAN_FEATURE_11AX
void sme_set_he_testbed_def(mac_handle_t mac_handle, uint8_t vdev_id)
{
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
struct csr_roam_session *session;
session = CSR_GET_SESSION(mac_ctx, vdev_id);
if (!session) {
sme_debug("No session for id %d", vdev_id);
return;
}
sme_debug("set HE testbed defaults");
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.amsdu_in_ampdu = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.twt_request = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.omi_a_ctrl = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.he_ppdu_20_in_160_80p80Mhz = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.he_ppdu_20_in_40Mhz_2G = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.he_ppdu_80_in_160_80p80Mhz = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.dcm_enc_tx = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.dcm_enc_rx = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.max_nc = 0;
mac_ctx->mlme_cfg->he_caps.dot11_he_cap.trigger_frm_mac_pad =
QCA_WLAN_HE_16US_OF_PROCESS_TIME;
csr_update_session_he_cap(mac_ctx, session);
}
void sme_reset_he_caps(mac_handle_t mac_handle, uint8_t vdev_id)
{
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
struct csr_roam_session *session;
session = CSR_GET_SESSION(mac_ctx, vdev_id);
if (!session) {
sme_err("No session for id %d", vdev_id);
return;
}
sme_debug("reset HE caps");
mac_ctx->mlme_cfg->he_caps.dot11_he_cap =
mac_ctx->mlme_cfg->he_caps.he_cap_orig;
csr_update_session_he_cap(mac_ctx, session);
}
#endif
uint8_t sme_get_mcs_idx(uint16_t max_rate, uint8_t rate_flags,
uint8_t *nss, uint8_t *mcs_rate_flags)
{