summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdhar, Mahesh Kumar <c_medhar@qti.qualcomm.com>2014-09-19 19:05:26 +0530
committerAnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com>2014-09-25 17:32:50 +0530
commitb32382ea48ac7dea3c42173d5042be4f8123a765 (patch)
tree5228257444fbfc9d72083f37ae8fc60540ae2970
parentddb28f2bbe346d894291823120d9190574c9884b (diff)
qcacld: Do gracefull cleanup during CFG download failure.
1)Increase the wlan_start_comp timeout value to accommodate wma completion timeouts. 2)In ath_hif_sdio_remove function, We should check if global sdio context is valid before calling the driver exit functions. Change-Id: If59ecb86b54aa1d98cbe22ae06995fa880303e20 CRs-Fixed: 726613
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c9
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c6
-rw-r--r--CORE/VOSS/inc/vos_api.h2
-rw-r--r--CORE/VOSS/src/vos_api.c6
4 files changed, 11 insertions, 12 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 7ad0766285b5..334b7fb9006a 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -12479,17 +12479,14 @@ static int hdd_driver_init( void)
hdd_set_conparam((v_UINT_t)con_mode);
#endif
-#ifdef HIF_SDIO
-#define WLAN_WAIT_TIME_WLANSTART 10000
-#else
-#define WLAN_WAIT_TIME_WLANSTART 2000
-#endif
+#define HDD_WLAN_START_WAIT_TIME VOS_WDA_TIMEOUT + 5000
+
init_completion(&wlan_start_comp);
ret_status = hif_register_driver();
if (!ret_status) {
rc = wait_for_completion_timeout(
&wlan_start_comp,
- msecs_to_jiffies(WLAN_WAIT_TIME_WLANSTART));
+ msecs_to_jiffies(HDD_WLAN_START_WAIT_TIME));
if (!rc) {
hddLog(VOS_TRACE_LEVEL_FATAL,
"%s: timed-out waiting for hif_register_driver", __func__);
diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
index f6ded3745cdf..f4d7ebe44d36 100644
--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
+++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
@@ -225,6 +225,12 @@ ath_hif_sdio_remove(void *context, void *hif_handle)
{
ENTER();
+ if (!sc) {
+ VOS_TRACE(VOS_MODULE_ID_HIF, VOS_TRACE_LEVEL_ERROR,
+ "Global SDIO context is NULL");
+ return A_ERROR;
+ }
+
athdiag_procfs_remove();
#ifndef TARGET_DUMP_FOR_NON_QC_PLATFORM
diff --git a/CORE/VOSS/inc/vos_api.h b/CORE/VOSS/inc/vos_api.h
index d6b36ffc2e38..692bb071a3c4 100644
--- a/CORE/VOSS/inc/vos_api.h
+++ b/CORE/VOSS/inc/vos_api.h
@@ -73,6 +73,8 @@
#include <vos_timer.h>
#include <vos_pack_align.h>
+#define VOS_WDA_TIMEOUT 15000
+
/*-------------------------------------------------------------------------
Function declarations and documenation
------------------------------------------------------------------------*/
diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c
index 867eca7b1c27..230434b335f5 100644
--- a/CORE/VOSS/src/vos_api.c
+++ b/CORE/VOSS/src/vos_api.c
@@ -98,12 +98,6 @@
/*---------------------------------------------------------------------------
* Preprocessor Definitions and Constants
* ------------------------------------------------------------------------*/
-/* Amount of time to wait for WDA to perform an asynchronous activity.
- This value should be larger than the timeout used by WDI to wait for
- a response from WCNSS since in the event that WCNSS is not responding,
- WDI should handle that timeout */
-#define VOS_WDA_TIMEOUT 15000
-
/* Approximate amount of time to wait for WDA to stop WDI */
#define VOS_WDA_STOP_TIMEOUT WDA_STOP_TIMEOUT