summaryrefslogtreecommitdiff
path: root/drivers/net/8390.c
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2006-09-29 09:01:08 (GMT)
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-29 16:18:20 (GMT)
commite8106b941ceab68cc5ff713df7b1276484554584 (patch)
tree6d8ad676796f4469aa334589565e971932049bc4 /drivers/net/8390.c
parent6ea36ddbd1abfe867f1e874a8312bfd811e5fd2c (diff)
downloadlinux-e8106b941ceab68cc5ff713df7b1276484554584.tar.xz
[PATCH] lockdep: core, add enable/disable_irq_irqsave/irqrestore() APIs
Introduce the disable_irq_nosync_lockdep_irqsave() and enable_irq_lockdep_irqrestore() APIs. These are needed for NE2000; basically NE2000 calls disable_irq and enable_irq as locking against the IRQ handler, but both in cases where interrupts are on and off. This means that lockdep needs to track the old state of the virtual irq flags on disable_irq, and restore these at enable_irq time. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/net/8390.c')
-rw-r--r--drivers/net/8390.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/8390.c b/drivers/net/8390.c
index 5b6b05e..9d34056 100644
--- a/drivers/net/8390.c
+++ b/drivers/net/8390.c
@@ -299,7 +299,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
* Slow phase with lock held.
*/
- disable_irq_nosync_lockdep(dev->irq);
+ disable_irq_nosync_lockdep_irqsave(dev->irq, &flags);
spin_lock(&ei_local->page_lock);
@@ -338,7 +338,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
netif_stop_queue(dev);
outb_p(ENISR_ALL, e8390_base + EN0_IMR);
spin_unlock(&ei_local->page_lock);
- enable_irq_lockdep(dev->irq);
+ enable_irq_lockdep_irqrestore(dev->irq, &flags);
ei_local->stat.tx_errors++;
return 1;
}
@@ -379,7 +379,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
outb_p(ENISR_ALL, e8390_base + EN0_IMR);
spin_unlock(&ei_local->page_lock);
- enable_irq_lockdep(dev->irq);
+ enable_irq_lockdep_irqrestore(dev->irq, &flags);
dev_kfree_skb (skb);
ei_local->stat.tx_bytes += send_length;