wlan: Back out Fix for WLAN driver hang, because of stuck in WDI.
Back out changelist 657132
Change-Id: Ia6b701b6734fca085f77e14185f44898883c3d20
CR-Fixed: 419963
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 54c2c86..5eef0c9 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -7139,8 +7139,6 @@
*join request will be queued*/
pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
wpalMutexRelease(&pWDICtx->wptMutex);
- /* Reload the driver if we hit this error condition */
- wpalWlanReload();
return WDI_STATUS_E_NOT_ALLOWED;
}
@@ -7561,31 +7559,29 @@
WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
"%s: BSS does not yet exist. ucBssIdx %d",
__func__, pwdiDelBSSParams->ucBssIdx);
- /* Allow the DEL_BSS to be processed by the HAL ,
- * This can come if some error condition happens
- * during the join process
- * Hit this condition if WDI cleans up BSS table
- * as part of the set link state with WDI_LINK_IDLE_STATE*/
+
+ wpalMutexRelease(&pWDICtx->wptMutex);
+
+ return WDI_STATUS_E_NOT_ALLOWED;
}
- else
+
+ /*------------------------------------------------------------------------
+ Check if this BSS is being currently processed or queued,
+ if queued - queue the new request as well
+ ------------------------------------------------------------------------*/
+ if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
{
- /*------------------------------------------------------------------------
- Check if this BSS is being currently processed or queued,
- if queued - queue the new request as well
- ------------------------------------------------------------------------*/
- if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
- __func__, pwdiDelBSSParams->ucBssIdx);
-
- wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
-
- wpalMutexRelease(&pWDICtx->wptMutex);
-
- return wdiStatus;
- }
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
+ "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
+ __func__, pwdiDelBSSParams->ucBssIdx);
+
+ wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
+
+ wpalMutexRelease(&pWDICtx->wptMutex);
+
+ return wdiStatus;
}
+
/*-----------------------------------------------------------------------
If we receive a Del BSS request for an association that is already in
progress, it indicates that the assoc has failed => we no longer have
@@ -7623,7 +7619,7 @@
/*Fill in the message request structure*/
/*BSS Index is saved on config BSS response and Post Assoc Response */
- halBssReqMsg.deleteBssParams.bssIdx = pwdiDelBSSParams->ucBssIdx;
+ halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
wpalMemoryCopy( pSendBuffer+usDataOffset,
&halBssReqMsg.deleteBssParams,
@@ -14506,8 +14502,6 @@
wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
halDelBssRspMsg.deleteBssRspParams.status);
- wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
-
wpalMutexAcquire(&pWDICtx->wptMutex);
/*------------------------------------------------------------------------
@@ -14525,29 +14519,35 @@
{
WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
"Association sequence for this BSS does not yet exist or "
- "association no longer in progress ");
+ "association no longer in progress - mysterious HAL response");
+
+ WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
+
+ wpalMutexRelease(&pWDICtx->wptMutex);
+ return WDI_STATUS_E_NOT_ALLOWED;
}
- else
+
+ /*Extract BSSID for the response to UMAC*/
+ wpalMemoryCopy(wdiDelBSSParams.macBSSID,
+ pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
+
+ wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
+
+ /*-----------------------------------------------------------------------
+ The current session will be deleted
+ -----------------------------------------------------------------------*/
+ WDI_DeleteSession(pWDICtx, pBSSSes);
+
+
+ /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
+ if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
{
- /*Extract BSSID for the response to UMAC*/
- wpalMemoryCopy(wdiDelBSSParams.macBSSID,
- pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
-
- /*-----------------------------------------------------------------------
- The current session will be deleted
- -----------------------------------------------------------------------*/
- WDI_DeleteSession(pWDICtx, pBSSSes);
-
-
- /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
- if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
- {
- (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
- }
-
- /* Delete the STA's in this BSS */
- WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
+ (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
}
+
+ /* Delete the STA's in this BSS */
+ WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
+
wpalMutexRelease(&pWDICtx->wptMutex);
/*Notify UMAC*/