aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ipg.c
diff options
context:
space:
mode:
authorFrancois Romieu <romieu@fr.zoreil.com>2008-01-10 17:25:30 -0500
committerFrancois Romieu <romieu@fr.zoreil.com>2008-01-17 17:35:09 -0500
commit227bc24d675d80de1cfb3ab72891cc932dadbc3b (patch)
treeb84be422da6ae646f0a21de4937ab6cae18ae5a9 /drivers/net/ipg.c
parentd8c89eb3a12f0da96d049bd515c7fa3702e511c5 (diff)
ipg: balance locking in irq handler
Spotted-by: <linux@horizon.com> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Diffstat (limited to 'drivers/net/ipg.c')
-rw-r--r--drivers/net/ipg.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ipg.c b/drivers/net/ipg.c
index dbd23bb65d1e..cd1650e99369 100644
--- a/drivers/net/ipg.c
+++ b/drivers/net/ipg.c
@@ -1630,6 +1630,8 @@ static irqreturn_t ipg_interrupt_handler(int irq, void *dev_inst)
1630#ifdef JUMBO_FRAME 1630#ifdef JUMBO_FRAME
1631 ipg_nic_rxrestore(dev); 1631 ipg_nic_rxrestore(dev);
1632#endif 1632#endif
1633 spin_lock(&sp->lock);
1634
1633 /* Get interrupt source information, and acknowledge 1635 /* Get interrupt source information, and acknowledge
1634 * some (i.e. TxDMAComplete, RxDMAComplete, RxEarly, 1636 * some (i.e. TxDMAComplete, RxDMAComplete, RxEarly,
1635 * IntRequested, MacControlFrame, LinkEvent) interrupts 1637 * IntRequested, MacControlFrame, LinkEvent) interrupts
@@ -1647,9 +1649,7 @@ static irqreturn_t ipg_interrupt_handler(int irq, void *dev_inst)
1647 handled = 1; 1649 handled = 1;
1648 1650
1649 if (unlikely(!netif_running(dev))) 1651 if (unlikely(!netif_running(dev)))
1650 goto out; 1652 goto out_unlock;
1651
1652 spin_lock(&sp->lock);
1653 1653
1654 /* If RFDListEnd interrupt, restore all used RFDs. */ 1654 /* If RFDListEnd interrupt, restore all used RFDs. */
1655 if (status & IPG_IS_RFD_LIST_END) { 1655 if (status & IPG_IS_RFD_LIST_END) {
@@ -1733,9 +1733,9 @@ out_enable:
1733 ipg_w16(IPG_IE_TX_DMA_COMPLETE | IPG_IE_RX_DMA_COMPLETE | 1733 ipg_w16(IPG_IE_TX_DMA_COMPLETE | IPG_IE_RX_DMA_COMPLETE |
1734 IPG_IE_HOST_ERROR | IPG_IE_INT_REQUESTED | IPG_IE_TX_COMPLETE | 1734 IPG_IE_HOST_ERROR | IPG_IE_INT_REQUESTED | IPG_IE_TX_COMPLETE |
1735 IPG_IE_LINK_EVENT | IPG_IE_UPDATE_STATS, INT_ENABLE); 1735 IPG_IE_LINK_EVENT | IPG_IE_UPDATE_STATS, INT_ENABLE);
1736 1736out_unlock:
1737 spin_unlock(&sp->lock); 1737 spin_unlock(&sp->lock);
1738out: 1738
1739 return IRQ_RETVAL(handled); 1739 return IRQ_RETVAL(handled);
1740} 1740}
1741 1741