qcacld-3.0: Send edca params to firmware

Send all user requests to update edca parms to firmware.

Change-Id: I2b7e884d004c94f71bb5c29583b188ce3681ab0b
CRs-Fixed: 2202046
diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c
index 2426462..3ba58e6 100644
--- a/core/mac/src/pe/lim/lim_process_message_queue.c
+++ b/core/mac/src/pe/lim/lim_process_message_queue.c
@@ -1484,6 +1484,7 @@
 	case eWNI_SME_EXT_CHANGE_CHANNEL:
 	case eWNI_SME_ROAM_SCAN_OFFLOAD_REQ:
 	case eWNI_SME_SET_ADDBA_ACCEPT:
+	case eWNI_SME_UPDATE_EDCA_PROFILE:
 		/* These messages are from HDD.No need to respond to HDD */
 		lim_process_normal_hdd_msg(mac_ctx, msg, false);
 		break;
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index c43ba84..3c5fb19 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -3528,6 +3528,35 @@
 		mac_ctx->reject_addba_req = 0;
 }
 
+static void lim_process_sme_update_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;
+	}
+	pe_session->gLimEdcaParamsActive[EDCA_AC_BE].no_ack =
+		mac_ctx->no_ack_policy_cfg[EDCA_AC_BE];
+	pe_session->gLimEdcaParamsActive[EDCA_AC_BK].no_ack =
+		mac_ctx->no_ack_policy_cfg[EDCA_AC_BK];
+	pe_session->gLimEdcaParamsActive[EDCA_AC_VI].no_ack =
+		mac_ctx->no_ack_policy_cfg[EDCA_AC_VI];
+	pe_session->gLimEdcaParamsActive[EDCA_AC_VO].no_ack =
+		mac_ctx->no_ack_policy_cfg[EDCA_AC_VO];
+	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,
+				     pe_session->gLimEdcaParamsActive,
+				     sta_ds_ptr->bssId);
+	else
+		pe_err("Self entry missing in Hash Table");
+}
+
 static void lim_process_sme_update_config(tpAniSirGlobal mac_ctx,
 					  struct update_config *msg)
 {
@@ -4716,6 +4745,9 @@
 		lim_process_sme_set_addba_accept(pMac,
 					(struct sme_addba_accept *)pMsgBuf);
 		break;
+	case eWNI_SME_UPDATE_EDCA_PROFILE:
+		lim_process_sme_update_edca_params(pMac, pMsg->bodyval);
+		break;
 	default:
 		qdf_mem_free((void *)pMsg->bodyptr);
 		pMsg->bodyptr = NULL;