qcacld-3.0: Set SMPS intolrent vdev param

Set WMI_VDEV_PARAM_SMPS_INTOLERANT when a VDEV cannot be allowed to
send SMPS frame. This is needed as certain AP wont properly handle
SMPS frames.

Change-Id: I1dd30bcb4fcaf312fa376cbfe3c1fb9c0d37750a
CRs-Fixed: 2049789
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index 8456e0a..e1faecc 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -265,6 +265,10 @@
 	tpPESession session_entry, tSirResultCodes result_code,
 	tpSirSmeJoinRsp sme_join_rsp)
 {
+	uint16_t bss_ie_len;
+	void *bss_ies;
+	bool is_vendor_ap_1_present;
+
 #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
 	tSirSmeHTProfile *ht_profile;
 #endif
@@ -361,6 +365,24 @@
 			ht_profile->apChanWidth = session_entry->ch_width;
 		}
 #endif
+		bss_ie_len = lim_get_ielen_from_bss_description(
+				&session_entry->pLimJoinReq->bssDescription);
+		bss_ies = &session_entry->pLimJoinReq->bssDescription.ieFields;
+		is_vendor_ap_1_present = (cfg_get_vendor_ie_ptr_from_oui(mac_ctx,
+			SIR_MAC_VENDOR_AP_1_OUI, SIR_MAC_VENDOR_AP_1_OUI_LEN,
+			bss_ies, bss_ie_len) != NULL);
+
+		if (mac_ctx->roam.configParam.is_force_1x1 &&
+			is_vendor_ap_1_present && (session_entry->nss == 2) &&
+			(mac_ctx->lteCoexAntShare == 0 ||
+				IS_5G_CH(session_entry->currentOperChannel))) {
+			/* SET vdev param */
+			pe_debug("sending SMPS intolrent vdev_param");
+			wma_cli_set_command(session_entry->smeSessionId,
+					   (int)WMI_VDEV_PARAM_SMPS_INTOLERANT,
+					    1, VDEV_CMD);
+
+		}
 	} else {
 		if (session_entry->beacon != NULL) {
 			qdf_mem_free(session_entry->beacon);