Disable interrupt in the interrupt handling process will sometimes cause
interrupts to be lost.

Fixes: 2fc745e6b606 ("net/txgbe: add interrupt operation")
Cc: sta...@dpdk.org

Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com>
---
 drivers/net/txgbe/txgbe_ethdev.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index ce7cf2506d..6e939b8ce3 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -2972,9 +2972,6 @@ txgbe_dev_interrupt_get_status(struct rte_eth_dev *dev,
                rte_intr_type_get(intr_handle) != RTE_INTR_HANDLE_VFIO_MSIX)
                wr32(hw, TXGBE_PX_INTA, 1);
 
-       /* clear all cause mask */
-       txgbe_disable_intr(hw);
-
        /* read-on-clear nic registers here */
        eicr = ((u32 *)hw->isb_mem)[TXGBE_ISB_MISC];
        PMD_DRV_LOG(DEBUG, "eicr %x", eicr);
@@ -3000,6 +2997,8 @@ txgbe_dev_interrupt_get_status(struct rte_eth_dev *dev,
        if (eicr & TXGBE_ICRMISC_HEAT)
                intr->flags |= TXGBE_FLAG_OVERHEAT;
 
+       ((u32 *)hw->isb_mem)[TXGBE_ISB_MISC] = 0;
+
        return 0;
 }
 
-- 
2.27.0

Reply via email to