mirror of https://gitee.com/openkylin/linux.git
i40e: Fix the EMPR interrupt received handling
We shouldn't trigger another EMPR when we receive an EMPR event. This patch handles EMPR event reception with a different state so that we can do the right thing for NVM. Change-ID: I9cac70b3658600f016a65beb6fb157e1c1f9adf9 Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com> Tested-by: Jim Young <james.m.young@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
5098850c9b
commit
9df42d1a8f
|
@ -140,6 +140,7 @@ enum i40e_state_t {
|
|||
__I40E_CORE_RESET_REQUESTED,
|
||||
__I40E_GLOBAL_RESET_REQUESTED,
|
||||
__I40E_EMP_RESET_REQUESTED,
|
||||
__I40E_EMP_RESET_INTR_RECEIVED,
|
||||
__I40E_FILTER_OVERFLOW_PROMISC,
|
||||
__I40E_SUSPENDED,
|
||||
__I40E_PTP_TX_IN_PROGRESS,
|
||||
|
|
|
@ -3171,7 +3171,7 @@ static irqreturn_t i40e_intr(int irq, void *data)
|
|||
pf->globr_count++;
|
||||
} else if (val == I40E_RESET_EMPR) {
|
||||
pf->empr_count++;
|
||||
set_bit(__I40E_EMP_RESET_REQUESTED, &pf->state);
|
||||
set_bit(__I40E_EMP_RESET_INTR_RECEIVED, &pf->state);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6179,10 +6179,8 @@ static void i40e_reset_and_rebuild(struct i40e_pf *pf, bool reinit)
|
|||
}
|
||||
|
||||
/* re-verify the eeprom if we just had an EMP reset */
|
||||
if (test_bit(__I40E_EMP_RESET_REQUESTED, &pf->state)) {
|
||||
clear_bit(__I40E_EMP_RESET_REQUESTED, &pf->state);
|
||||
if (test_and_clear_bit(__I40E_EMP_RESET_INTR_RECEIVED, &pf->state))
|
||||
i40e_verify_eeprom(pf);
|
||||
}
|
||||
|
||||
i40e_clear_pxe_mode(hw);
|
||||
ret = i40e_get_capabilities(pf);
|
||||
|
|
Loading…
Reference in New Issue