FTM: Won't process WDI_CLOSE_REQ when unloading

Wait for wdaCompleteEvent failed in wlan_hdd_ftm_start for some
special case, and then it won't process WDI_CLOSE_REQ when
unloading driver, because WLAN DAL state machine in
WDI_STARTED_ST status.

CRs-Fixed: 913906
Change-Id: I6a8e0cefd1670b9f169bbbb91f42d24e72832a3a
diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c
index e7b2c1d..88125f4 100644
--- a/CORE/HDD/src/wlan_hdd_ftm.c
+++ b/CORE/HDD/src/wlan_hdd_ftm.c
@@ -835,12 +835,26 @@
      VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) );
   }
 
-  vosStatus = WDA_close( vosContext );
-  if (!VOS_IS_STATUS_SUCCESS(vosStatus))
+  if ( TRUE == WDA_needShutdown(vosContext))
   {
-     VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
-         "%s: Failed to close WDA %d", __func__, vosStatus);
-     VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) );
+     vosStatus = WDA_shutdown(vosContext, VOS_TRUE);
+     if (!VOS_IS_STATUS_SUCCESS(vosStatus))
+     {
+        VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
+                            "%s: Failed to shutdown WDA %d", __func__, vosStatus);
+        VOS_ASSERT(VOS_IS_STATUS_SUCCESS(vosStatus));
+     }
+
+  }
+  else
+  {
+     vosStatus = WDA_close(vosContext);
+     if (!VOS_IS_STATUS_SUCCESS(vosStatus))
+     {
+        VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+            "%s: Failed to close WDA %d", __func__, vosStatus);
+        VOS_ASSERT(VOS_IS_STATUS_SUCCESS(vosStatus));
+     }
   }
 
   vos_mq_deinit(&((pVosContextType)vosContext)->freeVosMq);
@@ -1773,6 +1787,7 @@
                     "%s: WDA_NVDownload_Start reporting  other error",__func__);
        }
        VOS_ASSERT(0);
+       WDA_setNeedShutdown(pHddCtx->pvosContext);
        goto err_status_failure;
     }