diff --git a/target/linux/ar71xx/patches-4.14/955-qca953x-fix-potential-missing-irq-dispatch.patch b/target/linux/ar71xx/patches-4.14/955-qca953x-fix-potential-missing-irq-dispatch.patch
new file mode 100644
index 0000000000000000000000000000000000000000..517402998913fbded394f29ade940c3dca7d1cad
--- /dev/null
+++ b/target/linux/ar71xx/patches-4.14/955-qca953x-fix-potential-missing-irq-dispatch.patch
@@ -0,0 +1,27 @@
+--- 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();
+ 	}
+ }
+