aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/mv643xx_eth.c
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@wantstofly.org>2008-08-28 05:39:13 +0200
committerLennert Buytenhek <buytenh@marvell.com>2008-09-05 06:33:59 +0200
commit4fdeca3f4e7e35f6c19e87617c23fbb59dfb1a63 (patch)
tree6c02b3edeadf5f9ed842102604e692b2e7d5abd3 /drivers/net/mv643xx_eth.c
parentac840605f3b1d9b99e1e6629a54994f8e003ff91 (diff)
mv643xx_eth: get rid of netif_{stop,wake}_queue() calls on link down/up
There is no need to call netif_{stop,wake}_queue() when the link goes down/up, as the networking already takes care of this internally. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Diffstat (limited to 'drivers/net/mv643xx_eth.c')
-rw-r--r--drivers/net/mv643xx_eth.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index b4850cf2a8c..bd3ca470916 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -631,11 +631,9 @@ static int mv643xx_eth_poll(struct napi_struct *napi, int budget)
for (i = 0; i < mp->txq_count; i++)
txq_reclaim(mp->txq + i, 0);
- if (netif_carrier_ok(mp->dev)) {
- spin_lock_irq(&mp->lock);
- __txq_maybe_wake(mp->txq);
- spin_unlock_irq(&mp->lock);
- }
+ spin_lock_irq(&mp->lock);
+ __txq_maybe_wake(mp->txq);
+ spin_unlock_irq(&mp->lock);
}
#endif
@@ -1765,7 +1763,6 @@ static void handle_link_event(struct mv643xx_eth_private *mp)
printk(KERN_INFO "%s: link down\n", dev->name);
netif_carrier_off(dev);
- netif_stop_queue(dev);
for (i = 0; i < mp->txq_count; i++) {
struct tx_queue *txq = mp->txq + i;
@@ -1799,10 +1796,8 @@ static void handle_link_event(struct mv643xx_eth_private *mp)
speed, duplex ? "full" : "half",
fc ? "en" : "dis");
- if (!netif_carrier_ok(dev)) {
+ if (!netif_carrier_ok(dev))
netif_carrier_on(dev);
- netif_wake_queue(dev);
- }
}
static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
@@ -1851,11 +1846,9 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
* Enough space again in the primary TX queue for a
* full packet?
*/
- if (netif_carrier_ok(dev)) {
- spin_lock(&mp->lock);
- __txq_maybe_wake(mp->txq);
- spin_unlock(&mp->lock);
- }
+ spin_lock(&mp->lock);
+ __txq_maybe_wake(mp->txq);
+ spin_unlock(&mp->lock);
}
/*
@@ -2060,7 +2053,6 @@ static int mv643xx_eth_open(struct net_device *dev)
}
netif_carrier_off(dev);
- netif_stop_queue(dev);
port_start(mp);
@@ -2123,7 +2115,6 @@ static int mv643xx_eth_stop(struct net_device *dev)
del_timer_sync(&mp->rx_oom);
netif_carrier_off(dev);
- netif_stop_queue(dev);
free_irq(dev->irq, dev);
@@ -2184,11 +2175,9 @@ static void tx_timeout_task(struct work_struct *ugly)
mp = container_of(ugly, struct mv643xx_eth_private, tx_timeout_task);
if (netif_running(mp->dev)) {
netif_stop_queue(mp->dev);
-
port_reset(mp);
port_start(mp);
-
- __txq_maybe_wake(mp->txq);
+ netif_wake_queue(mp->dev);
}
}