qcacld-3.0: Use sync API for target assert and dump collection

In internal builds, to catch all fw timeout issues, host-initiated
self-recovery is not enabled. To avoid a race between cld driver
triggering assert and RDDM dump collection, use the CNSS-provided
sync API, which guarantees target assert and dump collection before
returning.

Change-Id: Ib702bfa17616a100913f501f850d5c0b74ad39bb
CRs-Fixed: 2790271
This commit is contained in:
Alan Chen 2020-10-09 12:40:02 -07:00 • committed by snandini
commit d2bcfc241e
2 changed files with 5 additions and 16 deletions

View file

@ -1976,8 +1976,6 @@ static void cds_trigger_recovery_work(void *context)
void __cds_trigger_recovery(enum qdf_hang_reason reason, const char *func,
const uint32_t line)
{
bool is_work_queue_needed = false;
if (!gp_cds_context) {
cds_err("gp_cds_context is null");
return;
@ -1985,19 +1983,10 @@ void __cds_trigger_recovery(enum qdf_hang_reason reason, const char *func,
gp_cds_context->recovery_reason = reason;
if (in_atomic() ||
(QDF_RESUME_TIMEOUT == reason || QDF_SUSPEND_TIMEOUT == reason))
is_work_queue_needed = true;
if (is_work_queue_needed) {
__cds_recovery_caller.func = func;
__cds_recovery_caller.line = line;
qdf_queue_work(0, gp_cds_context->cds_recovery_wq,
&gp_cds_context->cds_recovery_work);
return;
}
cds_trigger_recovery_handler(func, line);
__cds_recovery_caller.func = func;
__cds_recovery_caller.line = line;
qdf_queue_work(0, gp_cds_context->cds_recovery_wq,
&gp_cds_context->cds_recovery_work);
}
void cds_trigger_recovery_psoc(void *psoc, enum qdf_hang_reason reason,

View file

@ -625,7 +625,7 @@ static inline int pld_pcie_idle_shutdown(struct device *dev)
static inline int pld_pcie_force_assert_target(struct device *dev)
{
return cnss_force_fw_assert(dev);
return cnss_force_collect_rddm(dev);
}
static inline int pld_pcie_get_user_msi_assignment(struct device *dev,