mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 16:12:02 +00:00
i40evf: reset on module unload
When the module is being unloaded, don't wait for the PF to politely handle all of our admin queue requests, as that might take forever with a lot of VFs enabled. Instead, just stop everything and request a VF reset. When the original shutdown code was written, VF resets were unreliable, so we avoided them. But with production hardware and firmware, and the 1.x PF driver, this is no longer the case. This fixes a potential multi-minute delay on driver unload, VF disable, or system shutdown. Change-ID: Ib43d6d860ef6b9b8f26e8dce0615a0302608c7d9 Signed-off-by: Mitch Williams <mitch.a.williams@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
3ba9bcb4b6
commit
f4a718810c
@ -2423,7 +2423,6 @@ static void i40evf_remove(struct pci_dev *pdev)
|
||||
struct i40evf_adapter *adapter = netdev_priv(netdev);
|
||||
struct i40evf_mac_filter *f, *ftmp;
|
||||
struct i40e_hw *hw = &adapter->hw;
|
||||
int count = 50;
|
||||
|
||||
cancel_delayed_work_sync(&adapter->init_task);
|
||||
cancel_work_sync(&adapter->reset_task);
|
||||
@ -2432,12 +2431,18 @@ static void i40evf_remove(struct pci_dev *pdev)
|
||||
unregister_netdev(netdev);
|
||||
adapter->netdev_registered = false;
|
||||
}
|
||||
while (count-- && adapter->aq_required)
|
||||
msleep(50);
|
||||
|
||||
if (count < 0)
|
||||
dev_err(&pdev->dev, "Timed out waiting for PF driver.\n");
|
||||
/* Shut down all the garbage mashers on the detention level */
|
||||
adapter->state = __I40EVF_REMOVE;
|
||||
adapter->aq_required = 0;
|
||||
adapter->aq_pending = 0;
|
||||
i40evf_request_reset(adapter);
|
||||
msleep(20);
|
||||
/* If the FW isn't responding, kick it once, but only once. */
|
||||
if (!i40evf_asq_done(hw)) {
|
||||
i40evf_request_reset(adapter);
|
||||
msleep(20);
|
||||
}
|
||||
|
||||
if (adapter->msix_entries) {
|
||||
i40evf_misc_irq_disable(adapter);
|
||||
|
Loading…
Reference in New Issue
Block a user