qcacld-3.0: Log runtime suspend resume occurances
Keep track of how many times supesend resume succeeds and fails also mark last busy on a failed runtime suspend or a successful runtime resume. Change-Id: I04df805429e3a9ce91bc3d7f27bfd598396257c9 CRs-Fixed: 935300
This commit is contained in:

committed by
Akash Patel

parent
1dd227691f
commit
692cc05e93
@@ -541,11 +541,14 @@ static int __wlan_hdd_runtime_suspend(void)
|
|||||||
void *hdd_ctx = cds_get_context(CDF_MODULE_ID_HDD);
|
void *hdd_ctx = cds_get_context(CDF_MODULE_ID_HDD);
|
||||||
int status = wlan_hdd_validate_context(hdd_ctx);
|
int status = wlan_hdd_validate_context(hdd_ctx);
|
||||||
|
|
||||||
if (0 != status)
|
if (0 != status) {
|
||||||
|
hif_log_runtime_suspend_failure();
|
||||||
return status;
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
if (!hif_can_suspend_link()) {
|
if (!hif_can_suspend_link()) {
|
||||||
hdd_err("Runtime PM not supported for link up suspend");
|
hdd_err("Runtime PM not supported for link up suspend");
|
||||||
|
hif_log_runtime_suspend_failure();
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -567,6 +570,7 @@ static int __wlan_hdd_runtime_suspend(void)
|
|||||||
goto resume_hif;
|
goto resume_hif;
|
||||||
|
|
||||||
hif_runtime_pm_set_state_suspended();
|
hif_runtime_pm_set_state_suspended();
|
||||||
|
hif_log_runtime_suspend_success();
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
resume_hif:
|
resume_hif:
|
||||||
@@ -576,6 +580,7 @@ resume_wma:
|
|||||||
resume_htc:
|
resume_htc:
|
||||||
CDF_BUG(!htc_runtime_resume());
|
CDF_BUG(!htc_runtime_resume());
|
||||||
set_state:
|
set_state:
|
||||||
|
hif_log_runtime_suspend_failure();
|
||||||
hif_runtime_pm_set_state_on();
|
hif_runtime_pm_set_state_on();
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@@ -615,6 +620,7 @@ static int __wlan_hdd_runtime_resume(void)
|
|||||||
CDF_BUG(!hif_runtime_resume());
|
CDF_BUG(!hif_runtime_resume());
|
||||||
CDF_BUG(!wma_runtime_resume());
|
CDF_BUG(!wma_runtime_resume());
|
||||||
CDF_BUG(!htc_runtime_resume());
|
CDF_BUG(!htc_runtime_resume());
|
||||||
|
hif_log_runtime_resume_success();
|
||||||
hif_runtime_pm_set_state_on();
|
hif_runtime_pm_set_state_on();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -694,6 +694,13 @@ bool hif_can_suspend_link(void);
|
|||||||
void hif_runtime_pm_set_state_inprogress(void);
|
void hif_runtime_pm_set_state_inprogress(void);
|
||||||
void hif_runtime_pm_set_state_on(void);
|
void hif_runtime_pm_set_state_on(void);
|
||||||
void hif_runtime_pm_set_state_suspended(void);
|
void hif_runtime_pm_set_state_suspended(void);
|
||||||
|
|
||||||
|
#ifdef FEATURE_RUNTIME_PM
|
||||||
|
void hif_log_runtime_suspend_success(void);
|
||||||
|
void hif_log_runtime_suspend_failure(void);
|
||||||
|
void hif_log_runtime_resume_success(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
int dump_ce_register(struct ol_softc *scn);
|
int dump_ce_register(struct ol_softc *scn);
|
||||||
int ol_copy_ramdump(struct ol_softc *scn);
|
int ol_copy_ramdump(struct ol_softc *scn);
|
||||||
void hif_pktlogmod_exit(void *hif_ctx);
|
void hif_pktlogmod_exit(void *hif_ctx);
|
||||||
|
@@ -1883,6 +1883,67 @@ void hif_runtime_pm_set_state_suspended(void)
|
|||||||
__hif_runtime_pm_set_state(HIF_PM_RUNTIME_STATE_SUSPENDED);
|
__hif_runtime_pm_set_state(HIF_PM_RUNTIME_STATE_SUSPENDED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FEATURE_RUNTIME_PM
|
||||||
|
static inline struct hif_pci_softc *get_sc(void)
|
||||||
|
{
|
||||||
|
struct ol_softc *scn = cds_get_context(CDF_MODULE_ID_HIF);
|
||||||
|
|
||||||
|
if (NULL == scn) {
|
||||||
|
HIF_ERROR("%s: Could not disable ASPM scn is null",
|
||||||
|
__func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return scn->hif_sc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hif_log_runtime_suspend_success() - log a successful runtime suspend
|
||||||
|
*/
|
||||||
|
void hif_log_runtime_suspend_success(void)
|
||||||
|
{
|
||||||
|
struct hif_pci_softc *sc = get_sc();
|
||||||
|
if (sc == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sc->pm_stats.suspended++;
|
||||||
|
sc->pm_stats.suspend_jiffies = jiffies;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hif_log_runtime_suspend_failure() - log a failed runtime suspend
|
||||||
|
*
|
||||||
|
* log a failed runtime suspend
|
||||||
|
* mark last busy to prevent immediate runtime suspend
|
||||||
|
*/
|
||||||
|
void hif_log_runtime_suspend_failure(void)
|
||||||
|
{
|
||||||
|
struct hif_pci_softc *sc = get_sc();
|
||||||
|
if (sc == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sc->pm_stats.suspend_err++;
|
||||||
|
hif_pm_runtime_mark_last_busy(sc->dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hif_log_runtime_resume_success() - log a successful runtime resume
|
||||||
|
*
|
||||||
|
* log a successfull runtime resume
|
||||||
|
* mark last busy to prevent immediate runtime suspend
|
||||||
|
*/
|
||||||
|
void hif_log_runtime_resume_success(void)
|
||||||
|
{
|
||||||
|
struct hif_pci_softc *sc = get_sc();
|
||||||
|
if (sc == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sc->pm_stats.resumed++;
|
||||||
|
hif_pm_runtime_mark_last_busy(sc->dev);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hif_runtime_suspend() - do the bus suspend part of a runtime suspend
|
* hif_runtime_suspend() - do the bus suspend part of a runtime suspend
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user