From 7855b64b8533ce99c66f364b3cb4c7169da37689 Mon Sep 17 00:00:00 2001 From: Manikandan Mohan Date: Tue, 3 Nov 2020 12:06:27 -0800 Subject: [PATCH] cnss2: Handle resume request while suspend in progress PCIE callback for wake IRQ can occur during suspend in progress. Update cnss2 driver to handle resume request in this scenario. Change-Id: Ia76fd4b2d14e00ba5cad41018bda081d8b7dde83 Signed-off-by: Manikandan Mohan --- drivers/net/wireless/cnss2/pci.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index 349655eaad93..d767f62b3f48 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -2532,6 +2532,7 @@ static void cnss_pci_event_cb(struct msm_pcie_notify *notify) { struct pci_dev *pci_dev; struct cnss_pci_data *pci_priv; + struct device *dev; if (!notify) return; @@ -2543,6 +2544,7 @@ static void cnss_pci_event_cb(struct msm_pcie_notify *notify) pci_priv = cnss_get_pci_priv(pci_dev); if (!pci_priv) return; + dev = &pci_priv->pci_dev->dev; switch (notify->event) { case MSM_PCIE_EVENT_LINKDOWN: @@ -2551,8 +2553,9 @@ static void cnss_pci_event_cb(struct msm_pcie_notify *notify) break; case MSM_PCIE_EVENT_WAKEUP: complete(&pci_priv->wake_event); - if (cnss_pci_get_monitor_wake_intr(pci_priv) && - cnss_pci_get_auto_suspended(pci_priv)) { + if ((cnss_pci_get_monitor_wake_intr(pci_priv) && + cnss_pci_get_auto_suspended(pci_priv)) || + dev->power.runtime_status == RPM_SUSPENDING) { cnss_pci_set_monitor_wake_intr(pci_priv, false); cnss_pci_pm_request_resume(pci_priv); }