qcacld-3.0: Add support to configure HE MU EDCA params
Add support to configure the HE MU EDCA params with default values and update the params to FW. Change-Id: Ia7485949c040cb8f83ccfe1f8336267051dbfd13 CRs-Fixed: 2262874
This commit is contained in:

gecommit door
nshrivas

bovenliggende
a3933edd98
commit
fba2063db1
@@ -924,6 +924,7 @@ typedef struct sAniSirGlobal {
|
||||
uint32_t he_sgi_ltf_cfg_bit_mask;
|
||||
uint8_t usr_cfg_tx_bfee_nsts;
|
||||
struct mgmt_beacon_probe_filter bcn_filter;
|
||||
tSirMacEdcaParamRecord usr_mu_edca_params[MAX_NUM_AC];
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEhe_cap he_cap_2g;
|
||||
tDot11fIEhe_cap he_cap_5g;
|
||||
|
@@ -1128,6 +1128,10 @@ typedef struct sSirMacRRMEnabledCap {
|
||||
#define SIR_MAC_EDCAACI_VIDEO (EDCA_AC_VI)
|
||||
#define SIR_MAC_EDCAACI_VOICE (EDCA_AC_VO)
|
||||
|
||||
#define MU_EDCA_DEF_AIFSN 0
|
||||
#define MU_EDCA_DEF_CW_MAX 15
|
||||
#define MU_EDCA_DEF_CW_MIN 15
|
||||
#define MU_EDCA_DEF_TIMER 255
|
||||
/* access category record */
|
||||
typedef struct sSirMacAciAifsn {
|
||||
#ifndef ANI_LITTLE_BIT_ENDIAN
|
||||
|
@@ -228,6 +228,7 @@ enum eWniMsgTypes {
|
||||
eWNI_SME_SEND_SAE_MSG,
|
||||
eWNI_SME_SET_ADDBA_ACCEPT,
|
||||
eWNI_SME_UPDATE_EDCA_PROFILE,
|
||||
WNI_SME_UPDATE_MU_EDCA_PARAMS,
|
||||
eWNI_SME_MSG_TYPES_END
|
||||
};
|
||||
|
||||
|
@@ -3636,6 +3636,26 @@ static void lim_process_sme_update_edca_params(tpAniSirGlobal mac_ctx,
|
||||
pe_err("Self entry missing in Hash Table");
|
||||
}
|
||||
|
||||
static void lim_process_sme_update_mu_edca_params(tpAniSirGlobal mac_ctx,
|
||||
uint32_t sme_session_id)
|
||||
{
|
||||
tpPESession pe_session;
|
||||
tpDphHashNode sta_ds_ptr;
|
||||
|
||||
pe_session = pe_find_session_by_sme_session_id(mac_ctx, sme_session_id);
|
||||
if (!pe_session) {
|
||||
pe_err("Session does not exist: sme_id %d", sme_session_id);
|
||||
return;
|
||||
}
|
||||
sta_ds_ptr = dph_get_hash_entry(mac_ctx, DPH_STA_HASH_INDEX_PEER,
|
||||
&pe_session->dph.dphHashTable);
|
||||
if (sta_ds_ptr)
|
||||
lim_send_edca_params(mac_ctx, mac_ctx->usr_mu_edca_params,
|
||||
sta_ds_ptr->bssId, true);
|
||||
else
|
||||
pe_err("Self entry missing in Hash Table");
|
||||
}
|
||||
|
||||
static void lim_process_sme_update_config(tpAniSirGlobal mac_ctx,
|
||||
struct update_config *msg)
|
||||
{
|
||||
@@ -4782,6 +4802,9 @@ bool lim_process_sme_req_messages(tpAniSirGlobal pMac,
|
||||
case eWNI_SME_UPDATE_EDCA_PROFILE:
|
||||
lim_process_sme_update_edca_params(pMac, pMsg->bodyval);
|
||||
break;
|
||||
case WNI_SME_UPDATE_MU_EDCA_PARAMS:
|
||||
lim_process_sme_update_mu_edca_params(pMac, pMsg->bodyval);
|
||||
break;
|
||||
default:
|
||||
qdf_mem_free((void *)pMsg->bodyptr);
|
||||
pMsg->bodyptr = NULL;
|
||||
|
@@ -2391,6 +2391,24 @@ int sme_update_he_tx_bfee_nsts(mac_handle_t hal, uint8_t session_id,
|
||||
* Return: 0 on success else err code
|
||||
*/
|
||||
int sme_update_he_mcs(tHalHandle hal, uint8_t session_id, uint16_t he_mcs);
|
||||
|
||||
/**
|
||||
* sme_set_he_mu_edca_def_cfg() - sets the default MU EDCA params values
|
||||
* @hal: Pointer to HAL
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void sme_set_he_mu_edca_def_cfg(mac_handle_t hal);
|
||||
|
||||
/**
|
||||
* sme_update_mu_edca_params() - updates MU EDCA params values
|
||||
* @hal: Pointer to HAL
|
||||
* @session_id: SME session id
|
||||
*
|
||||
* Return: 0 on success else err code
|
||||
*/
|
||||
int sme_update_mu_edca_params(mac_handle_t hal, uint8_t session_id);
|
||||
|
||||
/**
|
||||
* sme_update_he_tx_stbc_cap() - Sets the HE Tx STBC capability
|
||||
* @hal: Pointer to HAL
|
||||
@@ -2444,6 +2462,16 @@ static inline int sme_update_he_mcs(tHalHandle hal, uint8_t session_id,
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sme_set_he_mu_edca_def_cfg(mac_handle_t hal)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int sme_update_mu_edca_params(mac_handle_t hal,
|
||||
uint8_t session_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int sme_update_he_tx_stbc_cap(tHalHandle hal, uint8_t session_id,
|
||||
int value)
|
||||
{
|
||||
|
@@ -12864,6 +12864,38 @@ static int sme_update_he_cap(tHalHandle hal, uint8_t session_id,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sme_update_mu_edca_params(mac_handle_t hal, uint8_t session_id)
|
||||
{
|
||||
struct scheduler_msg msg = {0};
|
||||
QDF_STATUS status;
|
||||
|
||||
qdf_mem_zero(&msg, sizeof(msg));
|
||||
msg.type = WNI_SME_UPDATE_MU_EDCA_PARAMS;
|
||||
msg.reserved = 0;
|
||||
msg.bodyval = session_id;
|
||||
status = scheduler_post_msg(QDF_MODULE_ID_PE, &msg);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
sme_err("Not able to post update edca profile");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
void sme_set_he_mu_edca_def_cfg(mac_handle_t hal)
|
||||
{
|
||||
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < MAX_NUM_AC; i++) {
|
||||
mac_ctx->usr_mu_edca_params[i].aci.aifsn = MU_EDCA_DEF_AIFSN;
|
||||
mac_ctx->usr_mu_edca_params[i].aci.aci = i;
|
||||
mac_ctx->usr_mu_edca_params[i].cw.max = MU_EDCA_DEF_CW_MAX;
|
||||
mac_ctx->usr_mu_edca_params[i].cw.min = MU_EDCA_DEF_CW_MIN;
|
||||
mac_ctx->usr_mu_edca_params[i].mu_edca_timer =
|
||||
MU_EDCA_DEF_TIMER;
|
||||
}
|
||||
}
|
||||
|
||||
int sme_update_he_tx_bfee_supp(tHalHandle hal, uint8_t session_id,
|
||||
uint8_t cfg_val)
|
||||
{
|
||||
|
Verwijs in nieuw issue
Block a user