diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 15 |
2 files changed, 26 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index c01ea48da5fe..36bafeb353ce 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -4042,7 +4042,19 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state) | |||
4042 | priv->is_open = 1; | 4042 | priv->is_open = 1; |
4043 | } | 4043 | } |
4044 | 4044 | ||
4045 | pci_save_state(pdev); | 4045 | /* pci driver assumes state will be saved in this function. |
4046 | * pci state is saved and device disabled when interface is | ||
4047 | * stopped, so at this time pci device will always be disabled - | ||
4048 | * whether interface was started or not. saving pci state now will | ||
4049 | * cause saved state be that of a disabled device, which will cause | ||
4050 | * problems during resume in that we will end up with a disabled device. | ||
4051 | * | ||
4052 | * indicate that the current saved state (from when interface was | ||
4053 | * stopped) is valid. if interface was never up at time of suspend | ||
4054 | * then the saved state will still be valid as it was saved during | ||
4055 | * .probe. */ | ||
4056 | pdev->state_saved = true; | ||
4057 | |||
4046 | pci_set_power_state(pdev, PCI_D3hot); | 4058 | pci_set_power_state(pdev, PCI_D3hot); |
4047 | 4059 | ||
4048 | return 0; | 4060 | return 0; |
@@ -4053,7 +4065,6 @@ static int iwl_pci_resume(struct pci_dev *pdev) | |||
4053 | struct iwl_priv *priv = pci_get_drvdata(pdev); | 4065 | struct iwl_priv *priv = pci_get_drvdata(pdev); |
4054 | 4066 | ||
4055 | pci_set_power_state(pdev, PCI_D0); | 4067 | pci_set_power_state(pdev, PCI_D0); |
4056 | pci_restore_state(pdev); | ||
4057 | 4068 | ||
4058 | if (priv->is_open) | 4069 | if (priv->is_open) |
4059 | iwl_mac_start(priv->hw); | 4070 | iwl_mac_start(priv->hw); |
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); |