[dpdk-dev] i40e: fix of PF interrupt handling
Commit Message
'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>
---
lib/librte_pmd_i40e/i40e_ethdev.c | 3 ---
1 file changed, 3 deletions(-)
Comments
> -----Original Message-----
> From: Zhang, Helin
> Sent: Tuesday, November 04, 2014 4:08 PM
> To: dev@dpdk.org
> Cc: Cao, Waterman; Cao, Min; Xu, HuilongX; Chen, Jing D; Zhang, Helin
> Subject: [PATCH] i40e: fix of PF interrupt handling
>
> '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>
> ---
> lib/librte_pmd_i40e/i40e_ethdev.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c
> b/lib/librte_pmd_i40e/i40e_ethdev.c
> index 661d146..ea10c26 100644
> --- a/lib/librte_pmd_i40e/i40e_ethdev.c
> +++ b/lib/librte_pmd_i40e/i40e_ethdev.c
> @@ -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));
> }
> --
> 1.8.1.4
Acked-by : Jing Chen <jing.d.chen@intel.com>
> > '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>
Applied
Thanks
@@ -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));
}