From c9b52a5e7de7c11e9db048ffd20cc4abbaabab47 Mon Sep 17 00:00:00 2001 From: Yun Park Date: Wed, 2 Dec 2015 15:05:01 -0800 Subject: [PATCH] qcacld-3.0: Fix incorrect completion of pending IPA RM CONS request qcacld-2.0 to qcacld-3.0 propagation Fix incorrect completion of pending CONS RM request/release notification, which is sent when receiving PROD RM notification from IPA. Also cleanup pending CONS request flag when IPA resource loading/unloading is compelted. Change-Id: Ie37b7d21e1ad016dbaf9aa0f89c97402911b4a02 CRs-Fixed: 943635 --- core/hdd/src/wlan_hdd_ipa.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c index 2f4e006b0701..42883c18264f 100644 --- a/core/hdd/src/wlan_hdd_ipa.c +++ b/core/hdd/src/wlan_hdd_ipa.c @@ -1237,21 +1237,11 @@ hdd_ipa_uc_rm_notify_handler(void *context, enum ipa_rm_event event) hdd_ipa_uc_enable_pipes(hdd_ipa); } cdf_mutex_release(&hdd_ipa->ipa_lock); - if (hdd_ipa->pending_cons_req) { - ipa_rm_notify_completion(IPA_RM_RESOURCE_GRANTED, - IPA_RM_RESOURCE_WLAN_CONS); - } - hdd_ipa->pending_cons_req = false; break; case IPA_RM_RESOURCE_RELEASED: /* Differed RM Released */ hdd_ipa->resource_unloading = false; - if (hdd_ipa->pending_cons_req) { - ipa_rm_notify_completion(IPA_RM_RESOURCE_RELEASED, - IPA_RM_RESOURCE_WLAN_CONS); - } - hdd_ipa->pending_cons_req = false; break; default: @@ -1381,6 +1371,7 @@ static void hdd_ipa_uc_op_cb(struct op_msg_type *op_msg, void *usr_ctxt) ipa_rm_notify_completion( IPA_RM_RESOURCE_GRANTED, IPA_RM_RESOURCE_WLAN_CONS); + hdd_ipa->pending_cons_req = false; } cdf_mutex_release(&hdd_ipa->ipa_lock); } @@ -1391,16 +1382,14 @@ static void hdd_ipa_uc_op_cb(struct op_msg_type *op_msg, void *usr_ctxt) hdd_ipa->activated_fw_pipe--; if (!hdd_ipa->activated_fw_pipe) { hdd_ipa_uc_disable_pipes(hdd_ipa); - if ((hdd_ipa_is_rm_enabled(hdd_ipa->hdd_ctx)) && - (!ipa_rm_release_resource(IPA_RM_RESOURCE_WLAN_PROD))) { - /* Sync return success from IPA - * Enable/resume all the PIPEs */ - hdd_ipa->resource_unloading = false; - hdd_ipa_uc_proc_pending_event(hdd_ipa); - } else { - hdd_ipa->resource_unloading = false; - hdd_ipa_uc_proc_pending_event(hdd_ipa); - } + if (hdd_ipa_is_rm_enabled(hdd_ipa->hdd_ctx)) + ipa_rm_release_resource( + IPA_RM_RESOURCE_WLAN_PROD); + /* Sync return success from IPA + * Enable/resume all the PIPEs */ + hdd_ipa->resource_unloading = false; + hdd_ipa_uc_proc_pending_event(hdd_ipa); + hdd_ipa->pending_cons_req = false; } cdf_mutex_release(&hdd_ipa->ipa_lock); }