summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/inc/wlan_hdd_main.h7
-rw-r--r--core/hdd/src/wlan_hdd_driver_ops.c1
-rw-r--r--core/hdd/src/wlan_hdd_main.c9
3 files changed, 17 insertions, 0 deletions
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index 467855a812d2..d0b5bb0eedb3 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/core/hdd/inc/wlan_hdd_main.h
@@ -2728,4 +2728,11 @@ static inline void hdd_update_hlp_info(struct net_device *dev,
tCsrRoamInfo *roam_info)
{}
#endif
+
+/**
+ * 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) */
diff --git a/core/hdd/src/wlan_hdd_driver_ops.c b/core/hdd/src/wlan_hdd_driver_ops.c
index bf3e0c330cfa..b1f5435889ae 100644
--- a/core/hdd/src/wlan_hdd_driver_ops.c
+++ b/core/hdd/src/wlan_hdd_driver_ops.c
@@ -1252,6 +1252,7 @@ static void wlan_hdd_pld_uevent(struct device *dev,
switch (uevent->uevent) {
case PLD_RECOVERY:
cds_set_recovery_in_progress(true);
+ hdd_pld_ipa_uc_shutdown_pipes();
break;
case PLD_FW_DOWN:
cds_set_fw_state(CDS_FW_STATE_DOWN);
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 88ed006012e4..3f7e42124e37 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -12059,6 +12059,15 @@ int hdd_set_limit_off_chan_for_tos(hdd_adapter_t *adapter, enum tos tos,
return ret;
}
+void hdd_pld_ipa_uc_shutdown_pipes(void)
+{
+ hdd_context_t *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);