wlan: SAPHT40 2.4GHz:Add support for HT20/40 Coex Action frame
Parse receive HT20/40 Coex Action frame and send 20/40 coex
info to upper layer for processing.
Move SAP from HT40 to HT20 in below condition if SAP is
Operating into HT40
40MHz Intolerant bit set in 20/40 BSS Coexistence IEs
20 MHz BSS WidthRequest bit set in 20/40 BSS Coexistence IEs
20/40 BSS Intolerant Channel Report found withing OBSS
Affected Channel Range
Change-Id: I11002c59e05b4d22f0ca568216e7f83277f18f4b
CRs-Fixed: 757729
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 99f3a88..d105801 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -1746,6 +1746,42 @@
}
#endif
+#ifdef WLAN_FEATURE_AP_HT40_24G
+/* ---------------------------------------------------------------------------
+ \fn sme_HT2040CoexInfoInd
+ \brief a Send 20/40 Coex info to SAP layer
+
+ \param tpSirHT2040CoexInfoInd - 20/40 Coex info param
+ \return eHalStatus
+ ---------------------------------------------------------------------------*/
+
+eHalStatus sme_HT2040CoexInfoInd( tHalHandle hHal,
+ tpSirHT2040CoexInfoInd pSmeHT2040CoexInfoInd)
+{
+ tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
+ eHalStatus status = eHAL_STATUS_SUCCESS;
+ tANI_U32 SessionId = pSmeHT2040CoexInfoInd->sessionId;
+ tCsrRoamInfo roamInfo = {0};
+
+ roamInfo.pSmeHT2040CoexInfoInd = pSmeHT2040CoexInfoInd;
+
+ smsLog(pMac, LOGW, FL("HT40MHzIntolerant: %d HT20MHzBssWidthReq: %d"),
+ roamInfo.pSmeHT2040CoexInfoInd->HT40MHzIntolerant,
+ roamInfo.pSmeHT2040CoexInfoInd->HT20MHzBssWidthReq);
+
+ smsLog(pMac, LOGW, FL("Total Intolerant Channel: %d"),
+ roamInfo.pSmeHT2040CoexInfoInd->channel_num);
+
+ /* forward the 20/40 BSS Coex information to HDD */
+ smsLog(pMac, LOGW, FL("Sending eCSR_ROAM_2040_COEX_INFO_IND"
+ " to WLANSAP_RoamCallback "));
+
+ csrRoamCallCallback(pMac, SessionId, &roamInfo,
+ 0, eCSR_ROAM_2040_COEX_INFO_IND, 0);
+ return status;
+}
+#endif
+
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
/*------------------------------------------------------------------
*
@@ -2085,6 +2121,19 @@
smsLog( pMac, LOGE, "Empty rsp message for meas (eWNI_SME_MGMT_FRM_IND), nothing to process");
}
break;
+#ifdef WLAN_FEATURE_AP_HT40_24G
+ case eWNI_SME_2040_COEX_IND:
+ if(pMsg->bodyptr)
+ {
+ sme_HT2040CoexInfoInd(pMac, pMsg->bodyptr);
+ vos_mem_free(pMsg->bodyptr);
+ }
+ else
+ {
+ smsLog( pMac, LOGE, "Empty rsp message for meas (eWNI_SME_2040_COEX_IND), nothing to process");
+ }
+ break;
+#endif
case eWNI_SME_ACTION_FRAME_SEND_CNF:
if(pMsg->bodyptr)
{
@@ -4852,7 +4901,6 @@
}
#endif
-
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
/* ---------------------------------------------------------------------------
\fn sme_GetTsmStats