]> git.droids-corp.org - dpdk.git/blobdiff - drivers/net/ixgbe/ixgbe_ethdev.c
net/ixgbe: fix LSC interrupt
[dpdk.git] / drivers / net / ixgbe / ixgbe_ethdev.c
index ed2baec1c4f5cf8f996cfcf1c10fa52d8ef8f02d..2083cdedc8d927d8c9ab03c155a8d184d1cd66bc 100644 (file)
@@ -4107,14 +4107,15 @@ ixgbe_dev_interrupt_action(struct rte_eth_dev *dev,
                        timeout = IXGBE_LINK_DOWN_CHECK_TIMEOUT;
 
                ixgbe_dev_link_status_print(dev);
-               intr->mask_original = intr->mask;
-               /* only disable lsc interrupt */
-               intr->mask &= ~IXGBE_EIMS_LSC;
                if (rte_eal_alarm_set(timeout * 1000,
                                      ixgbe_dev_interrupt_delayed_handler, (void *)dev) < 0)
                        PMD_DRV_LOG(ERR, "Error setting alarm");
-               else
-                       intr->mask = intr->mask_original;
+               else {
+                       /* remember original mask */
+                       intr->mask_original = intr->mask;
+                       /* only disable lsc interrupt */
+                       intr->mask &= ~IXGBE_EIMS_LSC;
+               }
        }
 
        PMD_DRV_LOG(DEBUG, "enable intr immediately");