diff options
| author | CNSS_WLAN Service <cnssbldsw@qualcomm.com> | 2019-07-25 08:18:50 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-07-25 08:18:50 -0700 |
| commit | a3a640df47ba01016a92d091ac8c8f79da4e7270 (patch) | |
| tree | 60cc866b96faf5699bf7995a0340582a9f0d6b7c | |
| parent | 3b22a74bb78f7da956155fc2da7c237c6cc9c09b (diff) | |
| parent | 58c4d2de424dee16d2774a0e875a31062f651fbf (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.h | 1 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_early_suspend.c | 27 | ||||
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.c | 13 | ||||
| -rw-r--r-- | CORE/VOSS/inc/vos_api.h | 1 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 14 |
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; |
