i40e/i40evf: always set the CLEARPBA flag when re-enabling interrupts
In the past we changed driver behavior to not clear the PBA when
re-enabling interrupts. This change was motivated by the flawed belief
that clearing the PBA would cause a lost interrupt if a receive
interrupt occurred while interrupts were disabled.
According to empirical testing this isn't the case. Additionally, the
data sheet specifically says that we should set the CLEARPBA bit when
re-enabling interrupts in a polling setup.
This reverts commit 40d72a5098 ("i40e/i40evf: don't lose interrupts")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
committed by
Jeff Kirsher
parent
4270255929
commit
dbadbbe235
@@ -2202,9 +2202,7 @@ static u32 i40e_buildreg_itr(const int type, const u16 itr)
|
||||
u32 val;
|
||||
|
||||
val = I40E_PFINT_DYN_CTLN_INTENA_MASK |
|
||||
/* Don't clear PBA because that can cause lost interrupts that
|
||||
* came in while we were cleaning/polling
|
||||
*/
|
||||
I40E_PFINT_DYN_CTLN_CLEARPBA_MASK |
|
||||
(type << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT) |
|
||||
(itr << I40E_PFINT_DYN_CTLN_INTERVAL_SHIFT);
|
||||
|
||||
@@ -2241,7 +2239,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
|
||||
|
||||
/* If we don't have MSIX, then we only need to re-enable icr0 */
|
||||
if (!(vsi->back->flags & I40E_FLAG_MSIX_ENABLED)) {
|
||||
i40e_irq_dynamic_enable_icr0(vsi->back, false);
|
||||
i40e_irq_dynamic_enable_icr0(vsi->back);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user