aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 5b44d322b99f..93be74a1f139 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -8143,7 +8143,19 @@ static int iwl3945_pci_suspend(struct pci_dev *pdev, pm_message_t state)
8143 priv->is_open = 1; 8143 priv->is_open = 1;
8144 } 8144 }
8145 8145
8146 pci_save_state(pdev); 8146 /* pci driver assumes state will be saved in this function.
8147 * pci state is saved and device disabled when interface is
8148 * stopped, so at this time pci device will always be disabled -
8149 * whether interface was started or not. saving pci state now will
8150 * cause saved state be that of a disabled device, which will cause
8151 * problems during resume in that we will end up with a disabled device.
8152 *
8153 * indicate that the current saved state (from when interface was
8154 * stopped) is valid. if interface was never up at time of suspend
8155 * then the saved state will still be valid as it was saved during
8156 * .probe. */
8157 pdev->state_saved = true;
8158
8147 pci_set_power_state(pdev, PCI_D3hot); 8159 pci_set_power_state(pdev, PCI_D3hot);
8148 8160
8149 return 0; 8161 return 0;
@@ -8154,7 +8166,6 @@ static int iwl3945_pci_resume(struct pci_dev *pdev)
8154 struct iwl3945_priv *priv = pci_get_drvdata(pdev); 8166 struct iwl3945_priv *priv = pci_get_drvdata(pdev);
8155 8167
8156 pci_set_power_state(pdev, PCI_D0); 8168 pci_set_power_state(pdev, PCI_D0);
8157 pci_restore_state(pdev);
8158 8169
8159 if (priv->is_open) 8170 if (priv->is_open)
8160 iwl3945_mac_start(priv->hw); 8171 iwl3945_mac_start(priv->hw);