diff options
author | Michal Schmidt <xschmi00@stud.feec.vutbr.cz> | 2005-10-04 07:46:21 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-04 07:46:21 -0400 |
commit | 53232803241ae0f26b39897a4d4b37775837de00 (patch) | |
tree | b4ab0478eb6b32d7c799d6161502c3d6f761e3d9 /drivers/net/wireless/airo.c | |
parent | d5919586265d36c6694a5d10ba589c02806873b6 (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.c | 7 |
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); |