i40e: fix PF interrupt handler
authorHelin Zhang <helin.zhang@intel.com>
Tue, 4 Nov 2014 08:08:14 +0000 (16:08 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 4 Nov 2014 10:20:11 +0000 (11:20 +0100)
'PFINT_ICR0_ENA' shouldn't be cleared in user space ISR,
otherwise adminq interrupts might be missed during
co-working with VF initialization.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
lib/librte_pmd_i40e/i40e_ethdev.c

index 661d146..ea10c26 100644 (file)
@@ -3574,7 +3574,6 @@ i40e_dev_interrupt_delayed_handler(void *param)
        i40e_dev_link_update(dev, 0);
        _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC);
 
-       I40E_WRITE_REG(hw, I40E_PFINT_ICR0_ENA, I40E_PFINT_ICR0_ENA_MASK);
        i40e_pf_enable_irq0(hw);
        rte_intr_enable(&(dev->pci_dev->intr_handle));
 }
@@ -3601,7 +3600,6 @@ i40e_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle,
 
        /* Disable interrupt */
        i40e_pf_disable_irq0(hw);
-       I40E_WRITE_REG(hw, I40E_PFINT_ICR0_ENA, 0);
 
        /* read out interrupt causes */
        icr0 = I40E_READ_REG(hw, I40E_PFINT_ICR0);
@@ -3663,7 +3661,6 @@ i40e_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle,
 
 done:
        /* Enable interrupt */
-       I40E_WRITE_REG(hw, I40E_PFINT_ICR0_ENA, I40E_PFINT_ICR0_ENA_MASK);
        i40e_pf_enable_irq0(hw);
        rte_intr_enable(&(dev->pci_dev->intr_handle));
 }