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: