diff options
| author | Edhar, Mahesh Kumar <c_medhar@qti.qualcomm.com> | 2014-09-19 19:05:26 +0530 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2014-09-25 17:32:50 +0530 |
| commit | b32382ea48ac7dea3c42173d5042be4f8123a765 (patch) | |
| tree | 5228257444fbfc9d72083f37ae8fc60540ae2970 | |
| parent | ddb28f2bbe346d894291823120d9190574c9884b (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-x | CORE/HDD/src/wlan_hdd_main.c | 9 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c | 6 | ||||
| -rw-r--r-- | CORE/VOSS/inc/vos_api.h | 2 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 6 |
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 |
