From 5aeae9a956f64ed6c6d027363ce5cc75cfbb63ef Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Wed, 9 Dec 2015 19:01:06 -0800 Subject: [PATCH] qcacld-3.0: Fix the crash in wlan re-initialization Perform cfg download before the SME config update since the SME config update operation accesses the cfg database. Change-Id: Ic2d5b6d192ed164b20011b3eeaea6126951b87e8 CRs-Fixed: 948896 --- core/hdd/src/wlan_hdd_power.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index 479fbb6db690..2c00f1fceedf 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1463,18 +1463,21 @@ CDF_STATUS hdd_wlan_re_init(void *hif_sc) goto err_cds_close; } - /* Set the SME configuration parameters. */ - cdf_status = hdd_set_sme_config(pHddCtx); - if (CDF_STATUS_SUCCESS != cdf_status) { - hddLog(CDF_TRACE_LEVEL_FATAL, "%s: Failed hdd_set_sme_config", - __func__); + cdf_status = cds_pre_enable(pHddCtx->pcds_context); + if (!CDF_IS_STATUS_SUCCESS(cdf_status)) { + hdd_alert("cds_pre_enable failed"); goto err_cds_close; } - cdf_status = cds_pre_enable(pHddCtx->pcds_context); - if (!CDF_IS_STATUS_SUCCESS(cdf_status)) { - hddLog(CDF_TRACE_LEVEL_FATAL, "%s: cds_pre_enable failed", - __func__); + /* + * Note that the cds_pre_enable() sequence triggers the cfg download. + * The cfg download must occur before we update the SME config + * since the SME config operation must access the cfg database. + * Set the SME configuration parameters. + */ + cdf_status = hdd_set_sme_config(pHddCtx); + if (CDF_STATUS_SUCCESS != cdf_status) { + hdd_alert("Failed hdd_set_sme_config"); goto err_cds_close; }