wlan: During WLAN driver unload wait for FTM_START to complete.
When FTM_START is in progress, if WLAN unload is triggered then
wait for FTM_START to complete so that WLAN uninitialization
happens cleanly.
Change-Id: Ie1841264315aa826fabc5c07ac78f0688fa2929e
CRs-Fixed: 794956
diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c
index 2f730f0..6af3937 100644
--- a/CORE/HDD/src/wlan_hdd_ftm.c
+++ b/CORE/HDD/src/wlan_hdd_ftm.c
@@ -1536,6 +1536,7 @@
}
pHddCtx->ftm.ftm_state = WLAN_FTM_INITIALIZED;
+ init_completion(&pHddCtx->ftm.startCmpVar);
return VOS_STATUS_SUCCESS;
@@ -1684,6 +1685,8 @@
return VOS_STATUS_SUCCESS;
}
+ pHddCtx->ftm.ftm_state = WLAN_FTM_STARTING;
+
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"%s: Starting Libra SW", __func__);
@@ -1799,6 +1802,7 @@
err_status_failure:
+ pHddCtx->ftm.ftm_state = WLAN_FTM_INITIALIZED;
return VOS_STATUS_E_FAILURE;
}
@@ -3248,6 +3252,7 @@
,__func__);
pHddCtx->ftm.pResponseBuf->ftm_err_code = WLAN_FTM_FAILURE;
wlan_ftm_send_response(pHddCtx);
+ complete(&pHddCtx->ftm.startCmpVar);
return;
}
/* Ptt application running on the host PC expects the length to be one byte less that what we have received*/
@@ -3256,7 +3261,7 @@
pHddCtx->ftm.pResponseBuf->ftmpkt.ftm_cmd_type = 0;
wlan_ftm_send_response(pHddCtx);
-
+ complete(&pHddCtx->ftm.startCmpVar);
break;
case WLAN_FTM_STOP: