فهرست منبع

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
Kiran Kumar Lokere 6 سال پیش
والد
کامیت
b52cfc8309

+ 2 - 0
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

+ 11 - 22
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;
 		}
 
 	}

+ 13 - 0
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)