summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/src/wlan_hdd_main.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index e78516c0f6f2..ca592f2aa562 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -12929,12 +12929,7 @@ static int __con_mode_handler(const char *kmessage,
hdd_info("con_mode handler: %s", kmessage);
- ret = wlan_hdd_validate_context(hdd_ctx);
- if (ret)
- return ret;
-
qdf_atomic_set(&hdd_ctx->con_mode_flag, 1);
- cds_set_load_in_progress(true);
mutex_lock(&hdd_init_deinit_lock);
ret = param_set_int(kmessage, kp);
@@ -13011,7 +13006,6 @@ static int __con_mode_handler(const char *kmessage,
ret = 0;
reset_flags:
- cds_set_load_in_progress(false);
mutex_unlock(&hdd_init_deinit_lock);
qdf_atomic_set(&hdd_ctx->con_mode_flag, 0);
return ret;
@@ -13028,15 +13022,19 @@ static int con_mode_handler(const char *kmessage, const struct kernel_param *kp)
if (ret)
return ret;
+ cds_set_load_in_progress(true);
if (!cds_wait_for_external_threads_completion(__func__)) {
hdd_warn("External threads are still active, can not change mode");
- return -EAGAIN;
+ ret = -EAGAIN;
+ goto err;
}
cds_ssr_protect(__func__);
ret = __con_mode_handler(kmessage, kp, hdd_ctx);
cds_ssr_unprotect(__func__);
+err:
+ cds_set_load_in_progress(false);
return ret;
}