In the current implementation INTx interrupt is deasserted after the
control path processing. However this may lead to missed interrupts
from the wireless card. For instance, this may happen as a result
of control path activity, when another interrupt arrives before
INTx is deasserted.

Signed-off-by: Sergey Matyukevich <sergey.matyukevich...@quantenna.com>
---
 drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c 
b/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
index 598edb814421..cbcda57105f3 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/topaz_pcie.c
@@ -559,6 +559,9 @@ static irqreturn_t qtnf_pcie_topaz_interrupt(int irq, void 
*data)
        if (!priv->msi_enabled && !qtnf_topaz_intx_asserted(ts))
                return IRQ_NONE;
 
+       if (!priv->msi_enabled)
+               qtnf_deassert_intx(ts);
+
        priv->pcie_irq_count++;
 
        qtnf_shm_ipc_irq_handler(&priv->shm_ipc_ep_in);
@@ -571,9 +574,6 @@ static irqreturn_t qtnf_pcie_topaz_interrupt(int irq, void 
*data)
 
        tasklet_hi_schedule(&priv->reclaim_tq);
 
-       if (!priv->msi_enabled)
-               qtnf_deassert_intx(ts);
-
        return IRQ_HANDLED;
 }
 
-- 
2.11.0

Reply via email to