--- a/arch/mips/ath79/irq.c +++ b/arch/mips/ath79/irq.c @@ -69,15 +69,21 @@ static void qca953x_ip2_irq_dispatch(str u32 status; status = ath79_reset_rr(QCA953X_RESET_REG_PCIE_WMAC_INT_STATUS); + status &= QCA953X_PCIE_WMAC_INT_PCIE_ALL | QCA953X_PCIE_WMAC_INT_WMAC_ALL; + + if (status == 0) { + spurious_interrupt(); + return; + } if (status & QCA953X_PCIE_WMAC_INT_PCIE_ALL) { ath79_ddr_wb_flush(3); generic_handle_irq(ATH79_IP2_IRQ(0)); - } else if (status & QCA953X_PCIE_WMAC_INT_WMAC_ALL) { + } + + if (status & QCA953X_PCIE_WMAC_INT_WMAC_ALL) { ath79_ddr_wb_flush(4); generic_handle_irq(ATH79_IP2_IRQ(1)); - } else { - spurious_interrupt(); } }