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
diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c
index 2f4e006..42883c1 100644
--- a/core/hdd/src/wlan_hdd_ipa.c
+++ b/core/hdd/src/wlan_hdd_ipa.c
@@ -1237,21 +1237,11 @@
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 @@
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 @@
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);
}