diff options
Diffstat (limited to 'drivers/net/3c59x.c')
-rw-r--r-- | drivers/net/3c59x.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 43e2ac532f82..b5e076043431 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -1581,7 +1581,8 @@ vortex_up(struct net_device *dev) | |||
1581 | 1581 | ||
1582 | if (VORTEX_PCI(vp)) { | 1582 | if (VORTEX_PCI(vp)) { |
1583 | pci_set_power_state(VORTEX_PCI(vp), PCI_D0); /* Go active */ | 1583 | pci_set_power_state(VORTEX_PCI(vp), PCI_D0); /* Go active */ |
1584 | pci_restore_state(VORTEX_PCI(vp)); | 1584 | if (vp->pm_state_valid) |
1585 | pci_restore_state(VORTEX_PCI(vp)); | ||
1585 | pci_enable_device(VORTEX_PCI(vp)); | 1586 | pci_enable_device(VORTEX_PCI(vp)); |
1586 | } | 1587 | } |
1587 | 1588 | ||
@@ -2741,6 +2742,7 @@ vortex_down(struct net_device *dev, int final_down) | |||
2741 | outl(0, ioaddr + DownListPtr); | 2742 | outl(0, ioaddr + DownListPtr); |
2742 | 2743 | ||
2743 | if (final_down && VORTEX_PCI(vp)) { | 2744 | if (final_down && VORTEX_PCI(vp)) { |
2745 | vp->pm_state_valid = 1; | ||
2744 | pci_save_state(VORTEX_PCI(vp)); | 2746 | pci_save_state(VORTEX_PCI(vp)); |
2745 | acpi_set_WOL(dev); | 2747 | acpi_set_WOL(dev); |
2746 | } | 2748 | } |
@@ -3243,9 +3245,10 @@ static void acpi_set_WOL(struct net_device *dev) | |||
3243 | outw(RxEnable, ioaddr + EL3_CMD); | 3245 | outw(RxEnable, ioaddr + EL3_CMD); |
3244 | 3246 | ||
3245 | pci_enable_wake(VORTEX_PCI(vp), 0, 1); | 3247 | pci_enable_wake(VORTEX_PCI(vp), 0, 1); |
3248 | |||
3249 | /* Change the power state to D3; RxEnable doesn't take effect. */ | ||
3250 | pci_set_power_state(VORTEX_PCI(vp), PCI_D3hot); | ||
3246 | } | 3251 | } |
3247 | /* Change the power state to D3; RxEnable doesn't take effect. */ | ||
3248 | pci_set_power_state(VORTEX_PCI(vp), PCI_D3hot); | ||
3249 | } | 3252 | } |
3250 | 3253 | ||
3251 | 3254 | ||