From b52cfc8309ebd9b0c77ca77778a6e29618247125 Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Mon, 8 Oct 2018 21:54:38 -0700 Subject: [PATCH] qcacld-3.0: Send MU EDCA params after vdev up is sent to FW FW expects the MU EDCA params after vdev up as it checks for active vdev to save the MU EDCA params. Send the MU EDCA params to FW after vdev up is sent to FW. Change-Id: Ia7689f1bad884e73098020e5508f669d9b8881d7 CRs-Fixed: 2337827 --- core/mac/src/pe/include/lim_session.h | 2 ++ .../src/pe/lim/lim_process_assoc_rsp_frame.c | 33 +++++++------------ .../src/pe/lim/lim_process_mlm_rsp_messages.c | 13 ++++++++ 3 files changed, 26 insertions(+), 22 deletions(-) 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)