diff options
author | Mike McCormack <mikem@ring3k.org> | 2010-02-12 06:58:05 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-12 16:21:03 -0800 |
commit | f2b31cb3ae491f9e82443cf25cc5a9ebdbc63619 (patch) | |
tree | 39dfc2cbc2e083d87cffb368f1cea77c58ec24a5 | |
parent | ea0f71e59c20ea1e413cacfc971e051b3d6c6f64 (diff) |
sky2: Refactor sky2_down into two functions
Create a sky2_hw_down that brings the hardware down.
Signed-off-by: Mike McCormack <mikem@ring3k.org>
Acked-by: Stephen Hemminber <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/sky2.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 1f0180f1f0c3..61a0451957b0 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -1908,21 +1908,12 @@ static void sky2_tx_reset(struct sky2_hw *hw, unsigned port) sky2_write8(hw, SK_REG(port, TX_GMF_CTRL_T), GMF_RST_SET); } -/* Network shutdown */ -static int sky2_down(struct net_device *dev) +static void sky2_hw_down(struct sky2_port *sky2) { - struct sky2_port *sky2 = netdev_priv(dev); struct sky2_hw *hw = sky2->hw; unsigned port = sky2->port; - u16 ctrl; u32 imask; - - /* Never really got started! */ - if (!sky2->tx_le) - return 0; - - if (netif_msg_ifdown(sky2)) - printk(KERN_INFO PFX "%s: disabling interface\n", dev->name); + u16 ctrl; /* Force flow control off */ sky2_write8(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_OFF); @@ -1972,6 +1963,21 @@ static int sky2_down(struct net_device *dev) /* Free any pending frames stuck in HW queue */ sky2_tx_complete(sky2, sky2->tx_prod); +} + +/* Network shutdown */ +static int sky2_down(struct net_device *dev) +{ + struct sky2_port *sky2 = netdev_priv(dev); + + /* Never really got started! */ + if (!sky2->tx_le) + return 0; + + if (netif_msg_ifdown(sky2)) + printk(KERN_INFO PFX "%s: disabling interface\n", dev->name); + + sky2_hw_down(sky2); sky2_free_buffers(sky2); |