wlan:WDA:Support of OBSS Scan on 2.4GHz
- To support HT40 on 2.4GHz,STA should perform the
OBSS scan and send the TE-A and TE-B events at end of the scan.
- OBSS scan is currently handled at the firmware.
- After successful connection on 2.4GHz channel in HT40 mode
OBSS scan will be initated by OBSS SCAN indication to firmware.
- OBSS scan will be stopped by firmware during the disconnection.
- Added OBSS scan stop indication for debugging purpose.
- This gerit takes care of WDI/WDA implementation.
CRs-Fixed: 608188
Change-Id: I2671d9b8088ec3376c01ad1518967d9cf934af4a
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index f6f7a96..c5f75c5 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -1124,6 +1124,8 @@
#define WDA_RATE_UPDATE_IND SIR_HAL_RATE_UPDATE_IND
+#define WDA_HT40_OBSS_SCAN_IND SIR_HAL_HT40_OBSS_SCAN_IND
+#define WDA_HT40_OBSS_STOP_SCAN_IND SIR_HAL_HT40_OBSS_STOP_SCAN_IND
tSirRetStatus wdaPostCtrlMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg);
eHalStatus WDA_SetRegDomain(void * clientCtxt, v_REGDOMAIN_t regId,
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 8df2504..ebc595a 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -11053,7 +11053,102 @@
}
#endif
+/*
+ * FUNCTION: WDA_ProcessHT40OBSSScanInd
+ *
+ * DESCRIPTION: This function sends start/update OBSS scan
+ * inidcation message to WDI
+ *
+ * PARAM:
+ * pWDA: pointer to WDA context
+ * pReq: pointer to start OBSS scan request
+ */
+VOS_STATUS WDA_ProcessHT40OBSSScanInd(tWDA_CbContext *pWDA,
+ tSirHT40OBSSScanInd *pReq)
+{
+ WDI_Status status;
+ WDI_HT40ObssScanParamsType wdiOBSSScanParams;
+ WDI_HT40ObssScanIndType *pWdiOBSSScanInd;
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
+ "------> %s " ,__func__);
+ wdiOBSSScanParams.wdiReqStatusCB = WDA_WdiIndicationCallback;
+ wdiOBSSScanParams.pUserData = pWDA;
+
+ pWdiOBSSScanInd = &(wdiOBSSScanParams.wdiHT40ObssScanParam);
+ pWdiOBSSScanInd->cmdType = pReq->cmdType;
+ pWdiOBSSScanInd->scanType = pReq->scanType;
+ pWdiOBSSScanInd->OBSSScanActiveDwellTime =
+ pReq->OBSSScanActiveDwellTime;
+ pWdiOBSSScanInd->OBSSScanPassiveDwellTime =
+ pReq->OBSSScanPassiveDwellTime;
+ pWdiOBSSScanInd->BSSChannelWidthTriggerScanInterval =
+ pReq->BSSChannelWidthTriggerScanInterval;
+ pWdiOBSSScanInd->BSSWidthChannelTransitionDelayFactor =
+ pReq->BSSWidthChannelTransitionDelayFactor;
+ pWdiOBSSScanInd->OBSSScanActiveTotalPerChannel =
+ pReq->OBSSScanActiveTotalPerChannel;
+ pWdiOBSSScanInd->OBSSScanPassiveTotalPerChannel =
+ pReq->OBSSScanPassiveTotalPerChannel;
+ pWdiOBSSScanInd->OBSSScanActivityThreshold =
+ pReq->OBSSScanActivityThreshold;
+ pWdiOBSSScanInd->channelCount = pReq->channelCount;
+ vos_mem_copy(pWdiOBSSScanInd->channels,
+ pReq->channels,
+ pReq->channelCount);
+ pWdiOBSSScanInd->selfStaIdx = pReq->selfStaIdx;
+ pWdiOBSSScanInd->fortyMHZIntolerent = pReq->fortyMHZIntolerent;
+ pWdiOBSSScanInd->bssIdx = pReq->bssIdx;
+ pWdiOBSSScanInd->currentOperatingClass = pReq->currentOperatingClass;
+ pWdiOBSSScanInd->ieFieldLen = pReq->ieFieldLen;
+
+ vos_mem_copy(pWdiOBSSScanInd->ieField,
+ pReq->ieField,
+ pReq->ieFieldLen);
+
+ status = WDI_HT40OBSSScanInd(&wdiOBSSScanParams);
+ if (WDI_STATUS_PENDING == status)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
+ "Pending received for %s:%d ",__func__,__LINE__ );
+ }
+ else if (WDI_STATUS_SUCCESS_SYNC != status)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failure in %s:%d ",__func__,__LINE__ );
+ }
+ return CONVERT_WDI2VOS_STATUS(status) ;
+}
+/*
+ * FUNCTION: WDA_ProcessHT40OBSSStopScanInd
+ *
+ * DESCRIPTION: This function sends stop OBSS scan inidcation message to WDI
+ *
+ * PARAM:
+ * pWDA: pointer to WDA context
+ * pReq: pointer to stop batch scan request
+ */
+VOS_STATUS WDA_ProcessHT40OBSSStopScanInd(tWDA_CbContext *pWDA,
+ tANI_U8 *bssIdx)
+{
+ WDI_Status status;
+
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
+ "------> %s " ,__func__);
+
+ status = WDI_HT40OBSSStopScanInd(*bssIdx);
+ if (WDI_STATUS_PENDING == status)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
+ "Pending received for %s:%d ",__func__,__LINE__ );
+ }
+ else if (WDI_STATUS_SUCCESS_SYNC != status)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failure in %s:%d ",__func__,__LINE__ );
+ }
+ return CONVERT_WDI2VOS_STATUS(status) ;
+}
/*
* FUNCTION: WDA_ProcessRateUpdateInd
*
@@ -12175,6 +12270,18 @@
}
#endif
+ case WDA_HT40_OBSS_SCAN_IND:
+ {
+ WDA_ProcessHT40OBSSScanInd(pWDA,
+ (tSirHT40OBSSScanInd *)pMsg->bodyptr);
+ break;
+ }
+ case WDA_HT40_OBSS_STOP_SCAN_IND:
+ {
+ WDA_ProcessHT40OBSSStopScanInd(pWDA,
+ (tANI_U8*)pMsg->bodyptr);
+ break;
+ }
default:
{
VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index 6fe448a..7c3aa6a 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -5014,6 +5014,49 @@
#endif //WLAN_FEATURE_ROAM_SCAN_OFFLOAD
/*---------------------------------------------------------------------------
+ WDI_HT40ObssScanIndType
+---------------------------------------------------------------------------*/
+typedef struct
+{
+ wpt_uint8 cmdType;
+ wpt_uint8 scanType;
+ wpt_uint16 OBSSScanPassiveDwellTime; // In TUs
+ wpt_uint16 OBSSScanActiveDwellTime; // In TUs
+ wpt_uint16 BSSChannelWidthTriggerScanInterval; // In seconds
+ wpt_uint16 OBSSScanPassiveTotalPerChannel; // In TUs
+ wpt_uint16 OBSSScanActiveTotalPerChannel; // In TUs
+ wpt_uint16 BSSWidthChannelTransitionDelayFactor;
+ wpt_uint16 OBSSScanActivityThreshold;
+ wpt_uint8 selfStaIdx;
+ wpt_uint8 bssIdx;
+ wpt_uint8 fortyMHZIntolerent;
+ wpt_uint8 channelCount;
+ wpt_uint8 channels[WDI_ROAM_SCAN_MAX_CHANNELS];
+ wpt_uint8 currentOperatingClass;
+ wpt_uint16 ieFieldLen;
+ wpt_uint8 ieField[WDI_ROAM_SCAN_MAX_PROBE_SIZE];
+} WDI_HT40ObssScanIndType;
+
+
+/*---------------------------------------------------------------------------
+ WDI_OBSSScanIndParamsType
+---------------------------------------------------------------------------*/
+typedef struct
+{
+ WDI_HT40ObssScanIndType wdiHT40ObssScanParam;
+
+ /*Request status callback offered by UMAC - it is called if the current
+ req has returned PENDING as status; it delivers the status of sending
+ the message over the BUS */
+ WDI_ReqStatusCb wdiReqStatusCB;
+
+ /*The user data passed in by UMAC, it will be sent back when the above
+ function pointer will be called */
+ void* pUserData;
+
+}WDI_HT40ObssScanParamsType;
+
+/*---------------------------------------------------------------------------
WDI_UpdateScanParamsInfo
---------------------------------------------------------------------------*/
typedef struct
@@ -10334,9 +10377,30 @@
#endif /*FEATURE_WLAN_BATCH_SCAN*/
+/**
+ @brief wdi_HT40OBSSScanInd
+ This API is called to start OBSS scan
+
+ @param pWdiReq : pointer to get ind param
+ @see
+ @return SUCCESS or FAIL
+*/
+
+WDI_Status WDI_HT40OBSSScanInd(WDI_HT40ObssScanParamsType *pWdiReq);
+
+/**
+ @brief wdi_HT40OBSSStopScanInd
+ This API is called to stop OBSS scan
+
+ @param bssIdx : bssIdx to stop
+ @see
+ @return SUCCESS or FAIL
+*/
+
+WDI_Status WDI_HT40OBSSStopScanInd(wpt_uint8 bssIdx);
+
#ifdef __cplusplus
}
#endif
-
#endif /* #ifndef WLAN_QCT_WDI_H */
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi_i.h b/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
index c2c6085..7bf5c6c 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
@@ -489,12 +489,14 @@
/*Send stop batch scan indication to FW*/
WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
+ WDI_START_HT40_OBSS_SCAN_IND,
+ WDI_STOP_HT40_OBSS_SCAN_IND,
/*Keep adding the indications to the max request
such that we keep them sepparate */
WDI_MAX_UMAC_IND
-}WDI_RequestEnumType;
+}WDI_RequestEnumType;
/*---------------------------------------------------------------------------
WLAN DAL Supported Response Types
@@ -3006,6 +3008,32 @@
);
#endif
+/**
+ @brief Process start OBSS scan request from Host
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_ProcessHT40OBSSScanInd(
+ WDI_ControlBlockType* pWDICtx, WDI_EventInfoType* pEventData );
+
+
+/**
+ @brief Process stop OBSS scan request from Host
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_ProcessHT40OBSSStopScanInd(
+ WDI_ControlBlockType* pWDICtx, WDI_EventInfoType* pEventData );
/*========================================================================
Main DAL Control Path Response Processing API
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 527b7e1..eaf63c1 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -427,6 +427,9 @@
NULL,
#endif /* FEATURE_WLAN_BATCH_SCAN */
WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
+ WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
+ WDI_ProcessHT40OBSSStopScanInd /*WDI_STOP_HT40_OBSS_SCAN_IND */
+
};
@@ -992,6 +995,8 @@
CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
#endif
+ CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
+ CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
default:
return "Unknown WDI MessageId";
}
@@ -29329,3 +29334,258 @@
}
#endif /* FEATURE_WLAN_CH_AVOID */
+/**
+ @brief Process OBSS Start scan result indication
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_ProcessHT40OBSSScanInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ wpt_uint16 usLen = 0;
+ WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
+ WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
+ tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
+ WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
+
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "%s", __func__);
+
+ /*-------------------------------------------------------------------------
+ Sanity check
+ -------------------------------------------------------------------------*/
+ if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "%s: Invalid parameters", __func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
+
+ pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+
+ if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+ WDI_START_HT40_OBSS_SCAN_IND,
+ sizeof(tHT40ObssScanIndType),
+ &pSendBuffer, &usDataOffset, &usSendSize))||
+ ( usSendSize < (usDataOffset + usLen )))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "Unable to get send buffer in HT40 OBSS Start req %p ",
+ pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
+ pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
+ pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
+ pHT40ObssScanInd->OBSSScanPassiveDwellTime =
+ pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
+ pHT40ObssScanInd->OBSSScanActiveDwellTime =
+ pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
+ pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
+ pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
+ pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
+ pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
+ pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
+ pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
+ pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
+ pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
+ pHT40ObssScanInd->OBSSScanActivityThreshold =
+ pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
+ pHT40ObssScanInd->selfStaIdx =
+ pwdiHT40OBSSScanInd->selfStaIdx;
+ pHT40ObssScanInd->bssIdx =
+ pwdiHT40OBSSScanInd->bssIdx;
+ pHT40ObssScanInd->fortyMHZIntolerent =
+ pwdiHT40OBSSScanInd->fortyMHZIntolerent;
+ pHT40ObssScanInd->channelCount =
+ pwdiHT40OBSSScanInd->channelCount;
+
+ wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
+ WDI_ROAM_SCAN_MAX_CHANNELS);
+ pHT40ObssScanInd->ieFieldLen =
+ pwdiHT40OBSSScanInd->ieFieldLen;
+
+ wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
+ WDI_ROAM_SCAN_MAX_PROBE_SIZE);
+ pWDICtx->pReqStatusUserData = NULL;
+ pWDICtx->pfncRspCB = NULL;
+
+ pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
+ pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
+
+ /*-------------------------------------------------------------------------
+ Send OBSS Start Indication to HAL
+ -------------------------------------------------------------------------*/
+ wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
+ return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
+
+} /*End of WDI_ProcessHT40OBSSStartScanInd*/
+
+
+/**
+ @brief wdi_HT40OBSSScanInd
+ This API is called to start OBSS scan
+
+ @param pWdiReq : pointer to get ind param
+ @see
+ @return SUCCESS or FAIL
+*/
+WDI_Status WDI_HT40OBSSScanInd
+(
+ WDI_HT40ObssScanParamsType *pWdiReq
+)
+{
+ WDI_EventInfoType wdiEventData;
+
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
+ "%s", __func__);
+ /*-------------------------------------------------------------------------
+ Sanity Check
+ ------------------------------------------------------------------------*/
+ if (eWLAN_PAL_FALSE == gWDIInitialized)
+ {
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "WDI API call before module is initialized - Fail request!");
+
+ return WDI_STATUS_E_NOT_ALLOWED;
+ }
+
+ /*-------------------------------------------------------------------------
+ Fill in Event data and post to the Main FSM
+ ------------------------------------------------------------------------*/
+ wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
+ wdiEventData.pEventData = pWdiReq;
+ wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
+ wdiEventData.pCBfnc = NULL;
+ wdiEventData.pUserData = NULL;
+
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+}
+
+/**
+ @brief Process OBSS Stop scan result
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_ProcessHT40OBSSStopScanInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ wpt_uint16 usLen = 0;
+ wpt_uint8 *wdiBssIdx = 0;
+ tANI_U8 *bssIdx = 0;
+ WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
+
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
+ "%s", __func__);
+
+ /*-------------------------------------------------------------------------
+ Sanity check
+ -------------------------------------------------------------------------*/
+ if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "%s: Invalid parameters", __func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ bssIdx = (wpt_uint8*)pEventData->pEventData;
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+
+ if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+ WDI_STOP_HT40_OBSS_SCAN_IND,
+ sizeof(tANI_U8),
+ &pSendBuffer, &usDataOffset, &usSendSize))||
+ ( usSendSize < (usDataOffset + usLen )))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "Unable to get send buffer in HT40 OBSS Start req %p ",
+ pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
+ bssIdx = wdiBssIdx;
+
+ pWDICtx->pReqStatusUserData = NULL;
+ pWDICtx->pfncRspCB = NULL;
+
+ /*-------------------------------------------------------------------------
+ Send DHCP Start Indication to HAL
+ -------------------------------------------------------------------------*/
+ wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
+ return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
+} /*End of WDI_ProcessHT40OBSSStopScanInd*/
+
+/**
+ @brief WDI_HT40OBSSStopScanInd
+ This API is called to start OBSS scan
+ @param pWdiReq : pointer to get ind param
+ @see
+ @return SUCCESS or FAIL
+*/
+WDI_Status WDI_HT40OBSSStopScanInd
+(
+ wpt_uint8 bssIdx
+)
+{
+ WDI_EventInfoType wdiEventData;
+
+ /*-------------------------------------------------------------------------
+ Sanity Check
+ ------------------------------------------------------------------------*/
+ if (eWLAN_PAL_FALSE == gWDIInitialized)
+ {
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "WDI API call before module is initialized - Fail request!");
+
+ return WDI_STATUS_E_NOT_ALLOWED;
+ }
+
+ /*-------------------------------------------------------------------------
+ Fill in Event data and post to the Main FSM
+ ------------------------------------------------------------------------*/
+ wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
+ wdiEventData.pEventData = &bssIdx;
+ wdiEventData.uEventDataSize = sizeof(wpt_uint8);
+ wdiEventData.pCBfnc = NULL;
+ wdiEventData.pUserData = NULL;
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+}
+