Commit 6a5706b9 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by Jeff Garzik

[PATCH] sky2: NAPI suspend/resume of dual port cards

The changes to handle suspend/resume didn't handle the case where
a dual port card has the first port down, but the second is running.
In this driver, all NAPI polling is done on the primary port.
Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 59139528
...@@ -3437,17 +3437,14 @@ static int sky2_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -3437,17 +3437,14 @@ static int sky2_suspend(struct pci_dev *pdev, pm_message_t state)
return -EINVAL; return -EINVAL;
del_timer_sync(&hw->idle_timer); del_timer_sync(&hw->idle_timer);
netif_poll_disable(hw->dev[0]);
for (i = 0; i < hw->ports; i++) { for (i = 0; i < hw->ports; i++) {
struct net_device *dev = hw->dev[i]; struct net_device *dev = hw->dev[i];
if (dev) { if (netif_running(dev)) {
if (!netif_running(dev))
continue;
sky2_down(dev); sky2_down(dev);
netif_device_detach(dev); netif_device_detach(dev);
netif_poll_disable(dev);
} }
} }
...@@ -3474,9 +3471,8 @@ static int sky2_resume(struct pci_dev *pdev) ...@@ -3474,9 +3471,8 @@ static int sky2_resume(struct pci_dev *pdev)
for (i = 0; i < hw->ports; i++) { for (i = 0; i < hw->ports; i++) {
struct net_device *dev = hw->dev[i]; struct net_device *dev = hw->dev[i];
if (dev && netif_running(dev)) { if (netif_running(dev)) {
netif_device_attach(dev); netif_device_attach(dev);
netif_poll_enable(dev);
err = sky2_up(dev); err = sky2_up(dev);
if (err) { if (err) {
...@@ -3488,6 +3484,7 @@ static int sky2_resume(struct pci_dev *pdev) ...@@ -3488,6 +3484,7 @@ static int sky2_resume(struct pci_dev *pdev)
} }
} }
netif_poll_enable(hw->dev[0]);
sky2_idle_start(hw); sky2_idle_start(hw);
out: out:
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment