From: Stephen Hemminger Date: Thu, 22 Feb 2007 20:07:11 +0000 (+0100) Subject: sky2: fix for NAPI with dual port boards X-Git-Tag: v2.6.16.42-rc1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=189b9a3bc90ecb79eb82ed4450db177aed7d292d;p=thirdparty%2Fkernel%2Fstable.git sky2: fix for NAPI with dual port boards This driver uses port 0 to handle receives on both ports. So the netif_poll_disable call in dev_close would end up stopping the second port on dual port cards. Signed-off-by: Stephen Hemminger Signed-off-by: Adrian Bunk --- diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index d77358649af7e..171443f9fc74d 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -1402,6 +1402,13 @@ static int sky2_down(struct net_device *dev) /* Stop more packets from being queued */ netif_stop_queue(dev); + /* + * Both ports share the NAPI poll on port 0, so if necessary undo the + * the disable that is done in dev_close. + */ + if (sky2->port == 0 && hw->ports > 1) + netif_poll_enable(dev); + /* Disable port IRQ */ spin_lock_irq(&hw->hw_lock); hw->intr_mask &= ~((sky2->port == 0) ? Y2_IS_IRQ_PHY1 : Y2_IS_IRQ_PHY2);