diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h index edc3fc898984..4bee3d9b2143 100644 --- a/core/mac/src/pe/include/lim_session.h +++ b/core/mac/src/pe/include/lim_session.h @@ -554,6 +554,8 @@ typedef struct sPESession /* Added to Support BT-AMP */ bool deauth_disassoc_rc; enum wmi_obss_color_collision_evt_type obss_color_collision_dec_evt; bool is_session_obss_color_collision_det_enabled; + tSirMacEdcaParamRecord ap_mu_edca_params[MAX_NUM_AC]; + bool mu_edca_present; int8_t def_max_tx_pwr; bool active_ba_64_session; #ifdef WLAN_SUPPORT_TWT diff --git a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c index 13e0949a2675..efa9f31f86c9 100644 --- a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c +++ b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c @@ -505,8 +505,6 @@ lim_process_assoc_rsp_frame(tpAniSirGlobal mac_ctx, uint8_t sme_sessionid = 0; struct csr_roam_session *roam_session; #endif - tSirMacEdcaParamRecord mu_edca_set[MAX_NUM_AC]; - /* Initialize status code to success. */ if (lim_is_roam_synch_in_progress(session_entry)) hdr = (tpSirMacMgmtHdr) mac_ctx->roam.pReassocResp; @@ -987,26 +985,17 @@ lim_process_assoc_rsp_frame(tpAniSirGlobal mac_ctx, beacon); if (lim_is_session_he_capable(session_entry)) { - if (mac_ctx->usr_cfg_mu_edca_params) { - pe_debug("Send user cfg MU EDCA params to FW"); - mu_edca_set[EDCA_AC_BE] = - mac_ctx->usr_mu_edca_params[EDCA_AC_BE]; - mu_edca_set[EDCA_AC_BK] = - mac_ctx->usr_mu_edca_params[EDCA_AC_BK]; - mu_edca_set[EDCA_AC_VI] = - mac_ctx->usr_mu_edca_params[EDCA_AC_VI]; - mu_edca_set[EDCA_AC_VO] = - mac_ctx->usr_mu_edca_params[EDCA_AC_VO]; - lim_send_edca_params(mac_ctx, mu_edca_set, - sta_ds->bssId, true); - } else if (assoc_rsp->mu_edca_present) { - pe_debug("Send MU EDCA params to FW"); - mu_edca_set[EDCA_AC_BE] = assoc_rsp->mu_edca.acbe; - mu_edca_set[EDCA_AC_BK] = assoc_rsp->mu_edca.acbk; - mu_edca_set[EDCA_AC_VI] = assoc_rsp->mu_edca.acvi; - mu_edca_set[EDCA_AC_VO] = assoc_rsp->mu_edca.acvo; - lim_send_edca_params(mac_ctx, mu_edca_set, - sta_ds->bssId, true); + session_entry->mu_edca_present = assoc_rsp->mu_edca_present; + if (session_entry->mu_edca_present) { + pe_debug("Save MU EDCA params to session"); + session_entry->ap_mu_edca_params[EDCA_AC_BE] = + assoc_rsp->mu_edca.acbe; + session_entry->ap_mu_edca_params[EDCA_AC_BK] = + assoc_rsp->mu_edca.acbk; + session_entry->ap_mu_edca_params[EDCA_AC_VI] = + assoc_rsp->mu_edca.acvi; + session_entry->ap_mu_edca_params[EDCA_AC_VO] = + assoc_rsp->mu_edca.acvo; } } diff --git a/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c b/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c index 3625f3faf137..74cd2dee1bc4 100644 --- a/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c +++ b/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c @@ -1649,6 +1649,19 @@ void lim_process_sta_mlm_add_sta_rsp(tpAniSirGlobal mac_ctx, mlm_assoc_cnf.resultCode = (tSirResultCodes) eSIR_SME_SUCCESS; lim_send_obss_color_collision_cfg(mac_ctx, session_entry, OBSS_COLOR_COLLISION_DETECTION); + if (lim_is_session_he_capable(session_entry)) { + if (mac_ctx->usr_cfg_mu_edca_params) { + pe_debug("Send user cfg MU EDCA params to FW"); + lim_send_edca_params(mac_ctx, + mac_ctx->usr_mu_edca_params, + sta_ds->bssId, true); + } else if (session_entry->mu_edca_present) { + pe_debug("Send MU EDCA params to FW"); + lim_send_edca_params(mac_ctx, + session_entry->ap_mu_edca_params, + sta_ds->bssId, true); + } + } } else { pe_err("ADD_STA failed!"); if (session_entry->limSmeState == eLIM_SME_WT_REASSOC_STATE)