summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCNSS_WLAN Service <cnssbldsw@qualcomm.com>2019-07-25 08:18:50 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2019-07-25 08:18:50 -0700
commita3a640df47ba01016a92d091ac8c8f79da4e7270 (patch)
tree60cc866b96faf5699bf7995a0340582a9f0d6b7c
parent3b22a74bb78f7da956155fc2da7c237c6cc9c09b (diff)
parent58c4d2de424dee16d2774a0e875a31062f651fbf (diff)
Merge "qcacld-2.0: Send user space about FW CRASHED indication" into wlan-cld2.driver.lnx.1.0
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h1
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c27
-rw-r--r--CORE/SERVICES/BMI/ol_fw.c13
-rw-r--r--CORE/VOSS/inc/vos_api.h1
-rw-r--r--CORE/VOSS/src/vos_api.c14
5 files changed, 54 insertions, 2 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 1e092c82a838..c5bf533f9e79 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -2726,6 +2726,7 @@ void hdd_sap_restart_handle(struct work_struct *work);
void hdd_set_rps_cpu_mask(hdd_context_t *hdd_ctx);
void hdd_initialize_adapter_common(hdd_adapter_t *adapter);
void hdd_svc_fw_shutdown_ind(struct device *dev);
+void hdd_svc_fw_crashed_ind(struct device *dev);
void wlan_hdd_stop_enter_lowpower(hdd_context_t *hdd_ctx);
void wlan_hdd_init_chan_info(hdd_context_t *hdd_ctx);
void wlan_hdd_deinit_chan_info(hdd_context_t *hdd_ctx);
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 52fc13cdc74f..0a18fe9c641f 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -2029,6 +2029,31 @@ void hdd_svc_fw_shutdown_ind(struct device *dev)
NULL, 0) : 0;
}
+/**
+ * hdd_svc_fw_crashed_ind() - API to send FW CRASHED IND to Userspace
+ *
+ * @dev: Device Pointer
+ *
+ * Return: None
+ */
+void hdd_svc_fw_crashed_ind(struct device *dev)
+{
+ v_CONTEXT_t g_context;
+ hdd_context_t *hdd_ctx;
+
+ g_context = vos_get_global_context(VOS_MODULE_ID_SYS, NULL);
+
+ if(!g_context)
+ return;
+
+ hdd_ctx = (hdd_context_t *)vos_get_context(VOS_MODULE_ID_HDD,
+ g_context);
+
+ hdd_ctx ? wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index,
+ WLAN_SVC_FW_CRASHED_IND,
+ NULL, 0) : 0;
+}
+
#ifdef FEATURE_WLAN_DIAG_SUPPORT
/**
* hdd_wlan_ssr_shutdown_event() - Send ssr shutdown status
diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c
index 3ca65adb8f7f..dcd6ed8fd26d 100644
--- a/CORE/SERVICES/BMI/ol_fw.c
+++ b/CORE/SERVICES/BMI/ol_fw.c
@@ -1194,6 +1194,11 @@ static void ramdump_work_handler(struct work_struct *ramdump)
#if !defined(HIF_SDIO)
ol_copy_ramdump(ramdump_scn);
vos_device_crashed(dev);
+#ifdef TARGET_DUMP_FOR_NON_QC_PLATFORM
+ vos_svc_fw_crashed_ind(dev);
+#endif
+ vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE);
+
return;
#endif
goto out_fail;
@@ -1273,6 +1278,9 @@ out_fail:
#endif
#endif
+#ifdef TARGET_DUMP_FOR_NON_QC_PLATFORM
+ vos_svc_fw_crashed_ind(dev);
+#endif
vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE);
return;
}
@@ -1299,6 +1307,11 @@ static void fw_indication_work_handler(struct work_struct *fw_indication)
}
vos_device_self_recovery(dev);
+
+#ifdef CONFIG_NON_QC_PLATFORM
+ vos_svc_fw_crashed_ind(dev);
+#endif
+ vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE);
}
static DECLARE_WORK(fw_indication_work, fw_indication_work_handler);
diff --git a/CORE/VOSS/inc/vos_api.h b/CORE/VOSS/inc/vos_api.h
index 7f457359c661..0d72908a0cd8 100644
--- a/CORE/VOSS/inc/vos_api.h
+++ b/CORE/VOSS/inc/vos_api.h
@@ -442,6 +442,7 @@ void vos_pkt_stats_to_logger_thread(void *pl_hdr, void *pkt_dump, void *data);
int vos_get_radio_index(void);
int vos_set_radio_index(int radio_index);
void vos_svc_fw_shutdown_ind(struct device *dev);
+void vos_svc_fw_crashed_ind(struct device *dev);
uint64_t vos_do_div(uint64_t, uint32_t);
/**
* vos_do_div64() - Do uint64/64 divsion.
diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c
index 3d24490cb648..a33ae372c6d5 100644
--- a/CORE/VOSS/src/vos_api.c
+++ b/CORE/VOSS/src/vos_api.c
@@ -3368,7 +3368,7 @@ int vos_set_radio_index(int radio_index)
}
/**
- * vos_svc_fw_shutdown_ind() - API to send userspace about FW crash
+ * vos_svc_fw_shutdown_ind() - API to send userspace about FW shutdown
*
* @data: Device Pointer
*
@@ -3379,6 +3379,18 @@ void vos_svc_fw_shutdown_ind(struct device *dev)
hdd_svc_fw_shutdown_ind(dev);
}
+/**
+ * vos_svc_fw_shutdown_ind() - API to send userspace about FW crashed
+ *
+ * @data: Device Pointer
+ *
+ * Return: None
+*/
+void vos_svc_fw_crashed_ind(struct device *dev)
+{
+ hdd_svc_fw_crashed_ind(dev);
+}
+
v_U64_t vos_get_monotonic_boottime_ns(void)
{
struct timespec ts;