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>
This commit is contained in:
parent
d591958626
commit
5323280324
|
@ -5504,12 +5504,13 @@ static int airo_pci_resume(struct pci_dev *pdev)
|
|||
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);
|
||||
|
|
Loading…
Reference in New Issue