qcacld-3.0: Shutdown IPA WDI pipes on PDR event

Shutdown the IPA WDI pipes on PDR event from ICNSS driver to
prevent the possibility of IPA diver invalid access of CE ring
registers.

Change-Id: I19da0c015ba229512f71d7016236b106d9d8ee43
CRs-Fixed: 2072920
This commit is contained in:
Sravan Kumar Kairam 2017-10-03 16:11:05 +05:30 • committed by snandini
commit d80c7669d0
3 changed files with 20 additions and 2 deletions

View file

@ -2871,4 +2871,10 @@ void hdd_start_driver_ops_timer(int drv_op);
*/
void hdd_stop_driver_ops_timer(void);
/**
* hdd_pld_ipa_uc_shutdown_pipes() - Disconnect IPA WDI pipes during PDR
*
* Return: None
*/
void hdd_pld_ipa_uc_shutdown_pipes(void);
#endif /* end #if !defined(WLAN_HDD_MAIN_H) */

View file

@ -1373,10 +1373,12 @@ static void wlan_hdd_pld_notify_handler(struct device *dev,
static void wlan_hdd_pld_uevent(struct device *dev,
struct pld_uevent_data *uevent)
{
if (uevent->uevent == PLD_RECOVERY)
if (uevent->uevent == PLD_RECOVERY) {
cds_set_recovery_in_progress(true);
else if (uevent->uevent == PLD_FW_DOWN)
hdd_pld_ipa_uc_shutdown_pipes();
} else if (uevent->uevent == PLD_FW_DOWN) {
cds_set_fw_state(CDS_FW_STATE_DOWN);
}
}
#ifdef FEATURE_RUNTIME_PM

View file

@ -12738,6 +12738,16 @@ void hdd_drv_ops_inactivity_handler(void)
QDF_BUG(0);
}
void hdd_pld_ipa_uc_shutdown_pipes(void)
{
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
if (!hdd_ctx)
return;
hdd_ipa_uc_force_pipe_shutdown(hdd_ctx);
}
/* Register the module init/exit functions */
module_init(hdd_module_init);
module_exit(hdd_module_exit);