aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/airo.c
diff options
context:
space:
mode:
authorMichal Schmidt <xschmi00@stud.feec.vutbr.cz>2005-10-04 07:46:21 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-10-04 07:46:21 -0400
commit53232803241ae0f26b39897a4d4b37775837de00 (patch)
treeb4ab0478eb6b32d7c799d6161502c3d6f761e3d9 /drivers/net/wireless/airo.c
parentd5919586265d36c6694a5d10ba589c02806873b6 (diff)
airo: fix resume
Cisco Aironet doesn't resume properly from swsusp, because the resume method confuses a PM_EVENT_* for a PCI power state. It thinks that it is resuming from PCI_D1 and doesn't do the necessary initialization of the card. Signed-off-by: Michal Schmidt <xschmi00@stud.feec.vutbr.cz>
Diffstat (limited to 'drivers/net/wireless/airo.c')
-rw-r--r--drivers/net/wireless/airo.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 746456c34df8..cb429e783749 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -5504,12 +5504,13 @@ static int airo_pci_resume(struct pci_dev *pdev)
5504 struct net_device *dev = pci_get_drvdata(pdev); 5504 struct net_device *dev = pci_get_drvdata(pdev);
5505 struct airo_info *ai = dev->priv; 5505 struct airo_info *ai = dev->priv;
5506 Resp rsp; 5506 Resp rsp;
5507 pci_power_t prev_state = pdev->current_state;
5507 5508
5508 pci_set_power_state(pdev, 0); 5509 pci_set_power_state(pdev, PCI_D0);
5509 pci_restore_state(pdev); 5510 pci_restore_state(pdev);
5510 pci_enable_wake(pdev, pci_choose_state(pdev, ai->power), 0); 5511 pci_enable_wake(pdev, PCI_D0, 0);
5511 5512
5512 if (ai->power.event > 1) { 5513 if (prev_state != PCI_D1) {
5513 reset_card(dev, 0); 5514 reset_card(dev, 0);
5514 mpi_init_descriptors(ai); 5515 mpi_init_descriptors(ai);
5515 setup_card(ai, dev->dev_addr, 0); 5516 setup_card(ai, dev->dev_addr, 0);