airo: fix resume
Subsystems (3)
PATCH 1/1 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 <[email protected]>
drivers/net/wireless/airo.c +4 -3
@@ -5515,12 +5515,13 @@ static int airo_pci_resume(struct pci_destruct 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 );
Jeff Garzik
Appliedapplied. please CC future patches to [email protected], not [email protected].