aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/mv643xx_eth.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-02-24 06:50:29 -0500
committerDavid S. Miller <davem@davemloft.net>2009-02-24 06:50:29 -0500
commite70049b9e74267dd47e1ffa62302073487afcb48 (patch)
tree2cd000c0751ef31c9044b020d63f278cdf4f332d /drivers/net/mv643xx_eth.c
parentd18921a0e319ab512f8186b1b1142c7b8634c779 (diff)
parentf7e603ad8f78cd3b59e33fa72707da0cbabdf699 (diff)
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'drivers/net/mv643xx_eth.c')
-rw-r--r--drivers/net/mv643xx_eth.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index bb9693195242..56912add8b13 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -1263,7 +1263,7 @@ static void mib_counters_update(struct mv643xx_eth_private *mp)
1263{ 1263{
1264 struct mib_counters *p = &mp->mib_counters; 1264 struct mib_counters *p = &mp->mib_counters;
1265 1265
1266 spin_lock(&mp->mib_counters_lock); 1266 spin_lock_bh(&mp->mib_counters_lock);
1267 p->good_octets_received += mib_read(mp, 0x00); 1267 p->good_octets_received += mib_read(mp, 0x00);
1268 p->good_octets_received += (u64)mib_read(mp, 0x04) << 32; 1268 p->good_octets_received += (u64)mib_read(mp, 0x04) << 32;
1269 p->bad_octets_received += mib_read(mp, 0x08); 1269 p->bad_octets_received += mib_read(mp, 0x08);
@@ -1296,7 +1296,7 @@ static void mib_counters_update(struct mv643xx_eth_private *mp)
1296 p->bad_crc_event += mib_read(mp, 0x74); 1296 p->bad_crc_event += mib_read(mp, 0x74);
1297 p->collision += mib_read(mp, 0x78); 1297 p->collision += mib_read(mp, 0x78);
1298 p->late_collision += mib_read(mp, 0x7c); 1298 p->late_collision += mib_read(mp, 0x7c);
1299 spin_unlock(&mp->mib_counters_lock); 1299 spin_unlock_bh(&mp->mib_counters_lock);
1300 1300
1301 mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ); 1301 mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
1302} 1302}
@@ -1831,7 +1831,7 @@ oom:
1831 return; 1831 return;
1832 } 1832 }
1833 1833
1834 mc_spec = kmalloc(0x200, GFP_KERNEL); 1834 mc_spec = kmalloc(0x200, GFP_ATOMIC);
1835 if (mc_spec == NULL) 1835 if (mc_spec == NULL)
1836 goto oom; 1836 goto oom;
1837 mc_other = mc_spec + (0x100 >> 2); 1837 mc_other = mc_spec + (0x100 >> 2);
@@ -2457,8 +2457,6 @@ static int mv643xx_eth_stop(struct net_device *dev)
2457 wrlp(mp, INT_MASK, 0x00000000); 2457 wrlp(mp, INT_MASK, 0x00000000);
2458 rdlp(mp, INT_MASK); 2458 rdlp(mp, INT_MASK);
2459 2459
2460 del_timer_sync(&mp->mib_counters_timer);
2461
2462 napi_disable(&mp->napi); 2460 napi_disable(&mp->napi);
2463 2461
2464 del_timer_sync(&mp->rx_oom); 2462 del_timer_sync(&mp->rx_oom);
@@ -2470,6 +2468,7 @@ static int mv643xx_eth_stop(struct net_device *dev)
2470 port_reset(mp); 2468 port_reset(mp);
2471 mv643xx_eth_get_stats(dev); 2469 mv643xx_eth_get_stats(dev);
2472 mib_counters_update(mp); 2470 mib_counters_update(mp);
2471 del_timer_sync(&mp->mib_counters_timer);
2473 2472
2474 skb_queue_purge(&mp->rx_recycle); 2473 skb_queue_purge(&mp->rx_recycle);
2475 2474