wlan: ccx upload: Support ccx beacon report
This is to provide support for CCX radio measument beacon report.
Summary of changes include:
1. Support for CCXBEACONREQ device private command to receive
measurement request IE information.
2. Driver initiates scan and return the BSSID information using
IWEVCUSTOM event supporting 4 BSSID info per channel.
3. Fix for scan type and duration getting over-written with the
last channel scan type and duration.
4. IWEVCUSTOM has limitation of 256 bytes of event data, hence fill-in
only the mandatory IEs in the beacon report as per the spec.
Change-Id: If0324b1732ea537f64a48c22c5e702c49356504e
CRs-Fixed: 573479
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index 074fdac..04751c4 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -481,6 +481,7 @@
eCSR_ROAM_TSM_IE_IND,
eCSR_ROAM_CCKM_PREAUTH_NOTIFY,
eCSR_ROAM_CCX_ADJ_AP_REPORT_IND,
+ eCSR_ROAM_CCX_BCN_REPORT_IND,
#endif /* FEATURE_WLAN_CCX && FEATURE_WLAN_CCX_UPLOAD */
}eRoamCmdStatus;
@@ -1188,6 +1189,7 @@
tSirTsmIE tsmIe;
tANI_U32 timestamp[2];
tANI_U16 tsmRoamDelay;
+ tSirCcxBcnReportRsp *pCcxBcnReportRsp;
#endif /* FEATURE_WLAN_CCX_UPLOAD */
#endif
void* pRemainCtx;
@@ -1409,6 +1411,21 @@
}tCsrHandoffRequest;
#endif
+#if defined(FEATURE_WLAN_CCX) && defined(FEATURE_WLAN_CCX_UPLOAD)
+typedef struct tagCsrCcxBeaconReqParams
+{
+ tANI_U16 measurementToken;
+ tANI_U8 channel;
+ tANI_U8 scanMode;
+ tANI_U16 measurementDuration;
+} tCsrCcxBeaconReqParams, *tpCsrCcxBeaconReqParams;
+
+typedef struct tagCsrCcxBeaconReq
+{
+ tANI_U8 numBcnReqIe;
+ tCsrCcxBeaconReqParams bcnReq[SIR_CCX_MAX_MEAS_IE_REQS];
+} tCsrCcxBeaconReq, *tpCsrCcxBeaconReq;
+#endif /* FEATURE_WLAN_CCX && FEATURE_WLAN_CCX_UPLOAD */
////////////////////////////////////////////Common SCAN starts
diff --git a/CORE/SME/inc/smeRrmInternal.h b/CORE/SME/inc/smeRrmInternal.h
index 69ae0be..ce27bee 100644
--- a/CORE/SME/inc/smeRrmInternal.h
+++ b/CORE/SME/inc/smeRrmInternal.h
@@ -112,12 +112,16 @@
tAniSSID ssId; //SSID used in the measuring beacon report.
tSirMacAddr bssId; //bssid used for beacon report measurement.
tANI_U16 randnIntvl; //Randomization interval to be used in subsequent measurements.
- tANI_U16 duration;
- tANI_U16 measMode;
+ tANI_U16 duration[SIR_CCX_MAX_MEAS_IE_REQS];
+ tANI_U8 measMode[SIR_CCX_MAX_MEAS_IE_REQS];
tRrmConfigParam rrmConfig;
vos_timer_t IterMeasTimer;
tDblLinkList neighborReportCache;
tRrmNeighborRequestControlInfo neighborReqControlInfo;
+
+#if defined(FEATURE_WLAN_CCX) && defined(FEATURE_WLAN_CCX_UPLOAD)
+ tCsrCcxBeaconReq ccxBcnReqInfo;
+#endif /* FEATURE_WLAN_CCX && FEATURE_WLAN_CCX_UPLOAD */
}tRrmSMEContext, *tpRrmSMEContext;
typedef struct sRrmNeighborReq
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index c8419dc..e5ba060 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -855,6 +855,17 @@
eHalStatus sme_SetCCKMIe(tHalHandle hHal, tANI_U8 sessionId, tANI_U8 *pCckmIe, tANI_U8 cckmIeLen);
+/* ---------------------------------------------------------------------------
+ \fn sme_SetCcxBeaconRequest
+ \brief function to set CCX beacon request parameters
+ \param hHal - HAL handle for device
+ \param pCcxBcnReq - pointer to CCX beacon request
+ \- return Success or failure
+ -------------------------------------------------------------------------*/
+eHalStatus sme_SetCcxBeaconRequest(tHalHandle hHal, const tANI_U8 sessionId,
+ const tCsrCcxBeaconReq* pCcxBcnReq);
+
+
#endif /*FEATURE_WLAN_CCX && FEATURE_WLAN_CCX_UPLOAD */
/* ---------------------------------------------------------------------------
\fn sme_CfgSetInt
diff --git a/CORE/SME/inc/sme_RrmApi.h b/CORE/SME/inc/sme_RrmApi.h
index 4d56e97..e14e85a 100644
--- a/CORE/SME/inc/sme_RrmApi.h
+++ b/CORE/SME/inc/sme_RrmApi.h
@@ -83,6 +83,6 @@
tRrmNeighborReportDesc* smeRrmGetFirstBssEntryFromNeighborCache( tpAniSirGlobal pMac);
tRrmNeighborReportDesc* smeRrmGetNextBssEntryFromNeighborCache( tpAniSirGlobal pMac, tpRrmNeighborReportDesc pBssEntry);
-
+void sme_RrmProcessBeaconReportReqInd(tpAniSirGlobal pMac, void *pMsgBuf);
#endif