From 5dab0d80c888df76fab1b356747400ac8a496eeb Mon Sep 17 00:00:00 2001 From: Jingxiang Ge Date: Mon, 12 Aug 2019 13:26:00 +0800 Subject: [PATCH] qcacmn: Cancel sleep_timer completely in pcie bus suspend There is possibility that sleep_timer is in running state, so even in hif_pci_cancel_deferred_target_sleep timer has been stopped, it runs later. Use fake_sleep in hif_sleep_entry to check if timer has been stopped, if yes, without action in hif_sleep_entry. Change-Id: I46f28f8d856b51792e27a1f80f763830956b2868 CRs-Fixed: 2482547 --- hif/src/pcie/if_pci.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/hif/src/pcie/if_pci.c b/hif/src/pcie/if_pci.c index f8ffa0a23140..30e8b6abaaf0 100644 --- a/hif/src/pcie/if_pci.c +++ b/hif/src/pcie/if_pci.c @@ -1491,10 +1491,11 @@ static void hif_sleep_entry(void *arg) return; qdf_spin_lock_irqsave(&hif_state->keep_awake_lock); - if (hif_state->verified_awake == false) { + if (hif_state->fake_sleep) { idle_ms = qdf_system_ticks_to_msecs(qdf_system_ticks() - hif_state->sleep_ticks); - if (idle_ms >= HIF_MIN_SLEEP_INACTIVITY_TIME_MS) { + if (!hif_state->verified_awake && + idle_ms >= HIF_MIN_SLEEP_INACTIVITY_TIME_MS) { if (!qdf_atomic_read(&scn->link_suspended)) { soc_wake_reset(scn); hif_state->fake_sleep = false; @@ -1502,12 +1503,8 @@ static void hif_sleep_entry(void *arg) } else { qdf_timer_stop(&hif_state->sleep_timer); qdf_timer_start(&hif_state->sleep_timer, - HIF_SLEEP_INACTIVITY_TIMER_PERIOD_MS); - } - } else { - qdf_timer_stop(&hif_state->sleep_timer); - qdf_timer_start(&hif_state->sleep_timer, HIF_SLEEP_INACTIVITY_TIMER_PERIOD_MS); + } } qdf_spin_unlock_irqrestore(&hif_state->keep_awake_lock); }