diff options
| -rw-r--r-- | core/hdd/src/wlan_hdd_main.c | 12 |
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; } |
