aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorGabriel Paubert <paubert@iram.es>2009-01-19 20:18:09 -0500
committerDavid S. Miller <davem@davemloft.net>2009-01-19 20:58:07 -0500
commitfe65e704534de5d0661ebc3466a2b9018945f694 (patch)
treedc2cf1570a191641ec17bb537869e55c724d9702 /drivers
parent2b448334a255d34401562229f467ffd95d8ed6ef (diff)
mv643xx_eth: prevent interrupt storm on ifconfig down
Contrary to what the docs say, the 'extended interrupt cause' bit in the interrupt cause register (bit 1) appears to not be maskable on at least some of the mv643xx_eth platforms, making writing zeroes to the interrupt mask register but not the extended interrupt mask register insufficient to stop interrupts from occuring. Therefore, also write zeroes to the extended interrupt mask register when shutting down the port. This fixes the interrupt storm seen on the Pegasos board when shutting down the interface. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mv643xx_eth.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index 8c6979a26d61..5f31bbb614af 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -2212,6 +2212,7 @@ static int mv643xx_eth_stop(struct net_device *dev)
2212 struct mv643xx_eth_private *mp = netdev_priv(dev); 2212 struct mv643xx_eth_private *mp = netdev_priv(dev);
2213 int i; 2213 int i;
2214 2214
2215 wrlp(mp, INT_MASK_EXT, 0x00000000);
2215 wrlp(mp, INT_MASK, 0x00000000); 2216 wrlp(mp, INT_MASK, 0x00000000);
2216 rdlp(mp, INT_MASK); 2217 rdlp(mp, INT_MASK);
2217 2218