|
|
@@ -3842,6 +3842,12 @@ static void i40e_clear_interrupt_scheme(struct i40e_pf *pf)
|
|
|
{
|
|
|
int i;
|
|
|
|
|
|
+ i40e_stop_misc_vector(pf);
|
|
|
+ if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
|
|
|
+ synchronize_irq(pf->msix_entries[0].vector);
|
|
|
+ free_irq(pf->msix_entries[0].vector, pf);
|
|
|
+ }
|
|
|
+
|
|
|
i40e_put_lump(pf->irq_pile, 0, I40E_PILE_VALID_BIT-1);
|
|
|
for (i = 0; i < pf->num_alloc_vsi; i++)
|
|
|
if (pf->vsi[i])
|
|
|
@@ -9578,12 +9584,6 @@ static void i40e_remove(struct pci_dev *pdev)
|
|
|
if (pf->vsi[pf->lan_vsi])
|
|
|
i40e_vsi_release(pf->vsi[pf->lan_vsi]);
|
|
|
|
|
|
- i40e_stop_misc_vector(pf);
|
|
|
- if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
|
|
|
- synchronize_irq(pf->msix_entries[0].vector);
|
|
|
- free_irq(pf->msix_entries[0].vector, pf);
|
|
|
- }
|
|
|
-
|
|
|
/* shutdown and destroy the HMC */
|
|
|
if (pf->hw.hmc.hmc_obj) {
|
|
|
ret_code = i40e_shutdown_lan_hmc(&pf->hw);
|
|
|
@@ -9737,6 +9737,8 @@ static void i40e_shutdown(struct pci_dev *pdev)
|
|
|
wr32(hw, I40E_PFPM_APM, (pf->wol_en ? I40E_PFPM_APM_APME_MASK : 0));
|
|
|
wr32(hw, I40E_PFPM_WUFC, (pf->wol_en ? I40E_PFPM_WUFC_MAG_MASK : 0));
|
|
|
|
|
|
+ i40e_clear_interrupt_scheme(pf);
|
|
|
+
|
|
|
if (system_state == SYSTEM_POWER_OFF) {
|
|
|
pci_wake_from_d3(pdev, pf->wol_en);
|
|
|
pci_set_power_state(pdev, PCI_D3hot);
|