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
Esse commit está contido em:
@@ -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);
|
||||
}
|
||||
|
Referência em uma nova issue
Block a user