qcacmn: Track for unbalanced group irqs enable/disable
In wlan suspend and resume cases it is seen that group irqs are getting disabled multiple times without getting enabled which is causing irqs to be disabled permenantly. Track for unbalanced disabling/enabling group irqs which helps to root cause the issue. Change-Id: Ic1ef637c317f04b3299f17f19208df11ece3c013 CRs-Fixed: 2939809
Этот коммит содержится в:

коммит произвёл
Madan Koyyalamudi

родитель
34bffddfd3
Коммит
4dc1443151
@@ -931,10 +931,34 @@ void hif_allow_link_low_power_states(struct hif_opaque_softc *hif)
|
||||
|
||||
int hif_ipci_enable_grp_irqs(struct hif_softc *scn)
|
||||
{
|
||||
return hif_apps_grp_irqs_enable(GET_HIF_OPAQUE_HDL(scn));
|
||||
struct hif_ipci_softc *ipci_scn = HIF_GET_IPCI_SOFTC(scn);
|
||||
int status;
|
||||
|
||||
if (!ipci_scn->grp_irqs_disabled) {
|
||||
hif_err("Unbalanced group IRQs Enable called");
|
||||
qdf_assert_always(0);
|
||||
}
|
||||
|
||||
status = hif_apps_grp_irqs_enable(GET_HIF_OPAQUE_HDL(scn));
|
||||
if (!status)
|
||||
ipci_scn->grp_irqs_disabled = false;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
int hif_ipci_disable_grp_irqs(struct hif_softc *scn)
|
||||
{
|
||||
return hif_apps_grp_irqs_disable(GET_HIF_OPAQUE_HDL(scn));
|
||||
struct hif_ipci_softc *ipci_scn = HIF_GET_IPCI_SOFTC(scn);
|
||||
int status;
|
||||
|
||||
if (ipci_scn->grp_irqs_disabled) {
|
||||
hif_err("Unbalanced group IRQs disable called");
|
||||
qdf_assert_always(0);
|
||||
}
|
||||
|
||||
status = hif_apps_grp_irqs_disable(GET_HIF_OPAQUE_HDL(scn));
|
||||
if (!status)
|
||||
ipci_scn->grp_irqs_disabled = true;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@@ -89,6 +89,7 @@ struct hif_ipci_softc {
|
||||
uint32_t register_window;
|
||||
qdf_spinlock_t register_access_lock;
|
||||
qdf_spinlock_t irq_lock;
|
||||
bool grp_irqs_disabled;
|
||||
#ifdef FEATURE_RUNTIME_PM
|
||||
struct hif_runtime_pm_ctx rpm_ctx;
|
||||
#endif
|
||||
|
Ссылка в новой задаче
Block a user