netdev
[Top] [All Lists]

[patch] airo: fix resume

To: Benjamin Reed <breed@xxxxxxxxxxxxxxxxxxxxx>
Subject: [patch] airo: fix resume
From: Michal Schmidt <xschmi00@xxxxxxxxxxxxxxxxxx>
Date: Mon, 03 Oct 2005 13:44:50 +0200
Cc: Jeff Garzik <jgarzik@xxxxxxxxx>, netdev@xxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Debian Thunderbird 1.0.2 (X11/20050817)
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@xxxxxxxxxxxxxxxxxx>

--- linux-vanilla/drivers/net/wireless/airo.c   2005-09-29 20:44:01.000000000 
+0200
+++ linux-mich/drivers/net/wireless/airo.c      2005-10-01 15:07:34.000000000 
+0200
@@ -5515,12 +5515,13 @@ static int airo_pci_resume(struct pci_de
        struct net_device *dev = pci_get_drvdata(pdev);
        struct airo_info *ai = dev->priv;
        Resp rsp;
+       pci_power_t prev_state = pdev->current_state;
 
-       pci_set_power_state(pdev, 0);
+       pci_set_power_state(pdev, PCI_D0);
        pci_restore_state(pdev);
-       pci_enable_wake(pdev, pci_choose_state(pdev, ai->power), 0);
+       pci_enable_wake(pdev, PCI_D0, 0);
 
-       if (ai->power.event > 1) {
+       if (prev_state != PCI_D1) {
                reset_card(dev, 0);
                mpi_init_descriptors(ai);
                setup_card(ai, dev->dev_addr, 0);
<Prev in Thread] Current Thread [Next in Thread>