i40evf: stop the watchdog for shutdown
authorMitch Williams <mitch.a.williams@intel.com>
Fri, 9 Jan 2015 11:18:18 +0000 (11:18 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 9 Feb 2015 05:08:42 +0000 (21:08 -0800)
Stop the watchdog during shutdown. Failing to do this causes a log full
of admin queue errors and the occasional hang when the system is shut
down.

Change-ID: Ib2fd11213cca2fa589eb68577e86b1000c23c250
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>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index 38126f5d6fd9ba3c1f31a3b33947245f5dd07ed5..8d8c201c63c1cde7f798e657bcbfc15cd9f8858c 100644 (file)
@@ -2213,12 +2213,18 @@ err:
 static void i40evf_shutdown(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
+       struct i40evf_adapter *adapter = netdev_priv(netdev);
 
        netif_device_detach(netdev);
 
        if (netif_running(netdev))
                i40evf_close(netdev);
 
+       /* Prevent the watchdog from running. */
+       adapter->state = __I40EVF_REMOVE;
+       adapter->aq_required = 0;
+       adapter->aq_pending = 0;
+
 #ifdef CONFIG_PM
        pci_save_state(pdev);