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
@@ -949,9 +949,6 @@ static inline void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
|
||||
struct i40e_hw *hw = &pf->hw;
|
||||
u32 val;
|
||||
|
||||
/* definitely clear the PBA here, as this function is meant to
|
||||
* clean out all previous interrupts AND enable the interrupt
|
||||
*/
|
||||
val = I40E_PFINT_DYN_CTLN_INTENA_MASK |
|
||||
I40E_PFINT_DYN_CTLN_CLEARPBA_MASK |
|
||||
(I40E_ITR_NONE << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT);
|
||||
@@ -960,7 +957,7 @@ static inline void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
|
||||
}
|
||||
|
||||
void i40e_irq_dynamic_disable_icr0(struct i40e_pf *pf);
|
||||
void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf, bool clearpba);
|
||||
void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf);
|
||||
int i40e_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd);
|
||||
int i40e_open(struct net_device *netdev);
|
||||
int i40e_close(struct net_device *netdev);
|
||||
|
Reference in New Issue
Block a user