]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: txgbe: Fix pending interrupt
authorJiawen Wu <jiawenwu@trustnetic.com>
Mon, 12 May 2025 10:06:52 +0000 (18:06 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 13 May 2025 22:38:26 +0000 (15:38 -0700)
For unknown reasons, sometimes the value of MISC interrupt is 0 in the
IRQ handle function. In this case, wx_intr_enable() is also should be
invoked to clear the interrupt. Otherwise, the next interrupt would
never be reported.

Fixes: a9843689e2de ("net: txgbe: add sriov function support")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/F4F708403CE7090B+20250512100652.139510-1-jiawenwu@trustnetic.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c

index 3b9e831cf0ef3264025b310c11c294788d7f0e9a..19878f02d956586bce4aa3df09c150f6ebd52363 100644 (file)
@@ -112,8 +112,6 @@ static irqreturn_t txgbe_misc_irq_handle(int irq, void *data)
 
        if (wx->pdev->msix_enabled) {
                eicr = wx_misc_isb(wx, WX_ISB_MISC);
-               if (!eicr)
-                       return IRQ_NONE;
                txgbe->eicr = eicr;
                if (eicr & TXGBE_PX_MISC_IC_VF_MBOX) {
                        wx_msg_task(txgbe->wx);
@@ -139,10 +137,7 @@ static irqreturn_t txgbe_misc_irq_handle(int irq, void *data)
        q_vector = wx->q_vector[0];
        napi_schedule_irqoff(&q_vector->napi);
 
-       eicr = wx_misc_isb(wx, WX_ISB_MISC);
-       if (!eicr)
-               return IRQ_NONE;
-       txgbe->eicr = eicr;
+       txgbe->eicr = wx_misc_isb(wx, WX_ISB_MISC);
 
        return IRQ_WAKE_THREAD;
 }