Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4966ffd authored by Komal Seelam's avatar Komal Seelam Committed by Gerrit - the friendly Code Review server
Browse files

cnss: Disable wlan irq when PCIe link down is detected



Interrupt Storm is observed on the APPS side, when PCIe link down is
simulated, as FW keeps generating interrupts to host, as it's not aware
of the PCIe link down.

When PCIe link down is identified, wlan platform driver schedules work
to start recovery. During Recovery we cut down power to Rome, which
stops the interrupt storm. During the window where platform driver
schedule work and the work actually gets schedules, interrupt storm
happened and the APPS triggered watchdog.

Change-Id: Ica3c32007bc9b8acce79c5bb2175790ff27180d0
CRs-Fixed: 967956
Signed-off-by: default avatarKomal Kumar <kseelam@codeaurora.org>
parent fb8a39c1
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1965,6 +1965,13 @@ void cnss_schedule_recovery_work(void)
}
EXPORT_SYMBOL(cnss_schedule_recovery_work);

static inline void __cnss_disable_irq(void *data)
{
	struct pci_dev *pdev = data;

	disable_irq(pdev->irq);
}

void cnss_pci_events_cb(struct msm_pcie_notify *notify)
{
	unsigned long flags;
@@ -1988,6 +1995,7 @@ void cnss_pci_events_cb(struct msm_pcie_notify *notify)
		spin_unlock_irqrestore(&pci_link_down_lock, flags);

		pr_err("PCI link down, schedule recovery\n");
		__cnss_disable_irq(notify->user);
		schedule_work(&cnss_pci_recovery_work);
		break;