diff options
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 2 | ||||
| -rw-r--r-- | CORE/VOSS/inc/vos_api.h | 3 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 25 |
3 files changed, 29 insertions, 1 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 9087e6705c3f..aaa20d729ded 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -24265,9 +24265,11 @@ int wma_enable_wow_in_fw(WMA_HANDLE handle, int runtime_pm) if (pMac->sme.enableSelfRecovery) { vos_trigger_recovery(false); } else { + vos_force_fw_dump(); VOS_BUG(0); } #else + vos_force_fw_dump(); VOS_BUG(0); #endif } else { diff --git a/CORE/VOSS/inc/vos_api.h b/CORE/VOSS/inc/vos_api.h index 7a039cca636a..26812710b2bf 100644 --- a/CORE/VOSS/inc/vos_api.h +++ b/CORE/VOSS/inc/vos_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -384,4 +384,5 @@ int vos_get_radio_index(void); int vos_set_radio_index(int radio_index); void vos_svc_fw_shutdown_ind(struct device *dev); uint64_t vos_do_div(uint64_t, uint32_t); +VOS_STATUS vos_force_fw_dump(void); #endif // if !defined __VOS_API_H diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c index 93454b4f95a8..96a5dcb9c023 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -3115,3 +3115,28 @@ uint64_t vos_do_div(uint64_t dividend, uint32_t divisor) /*do_div macro updates dividend with Quotient of dividend/divisor */ return dividend; } + +/** + * vos_force_fw_dump() - force target to dump + * + *return + * VOS_STATUS_SUCCESS - Operation completed successfully. + * VOS_STATUS_E_FAILURE - Operation failed. + */ +VOS_STATUS vos_force_fw_dump(void) +{ + struct ol_softc *scn; + + scn = vos_get_context(VOS_MODULE_ID_HIF, gpVosContext); + if (!scn) { + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, + "%s: scn is null!", __func__); + return VOS_STATUS_E_FAILURE; + } + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, + "%s:enter!", __func__); + + ol_target_failure(scn, A_ERROR); + + return VOS_STATUS_SUCCESS; +} |
