aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/8139too.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-07-09 18:50:06 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-09 18:50:06 -0400
commitc87fed1546bd00b42ee75f26c6b45393e4bf7559 (patch)
tree2ef383dcd1cb569e1b0da9c26c7e868f114bfd7b /drivers/net/8139too.c
parent84e74f6b770efe7c9beb604118695aa311b969f5 (diff)
parent70f05366b71c51c35c25c0b76b4318fbc26c975a (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (23 commits) [PATCH] 8139too deadlock fix [netdrvr] 3c59x: snip changelog from source code e1000: increase version to 7.1.9-k2 e1000: add ich8lan device ID's e1000: allow user to disable ich8 lock loss workaround e1000: integrate ich8 support into driver e1000: add ich8lan core functions e1000: disable ERT e1000: check return value of _get_speed_and_duplex e1000: M88 PHY workaround e1000: fix adapter led blinking inconsistency e1000: disable CRC stripping workaround e1000: force register write flushes to circumvent broken platforms e1000: rework module param code with uninitialized values e1000: recycle skb e1000: change printk into DPRINTK e1000: add smart power down code e1000: small performance tweak by removing double code e1000: fix CONFIG_PM blocks e1000: Make PHY powerup/down a function ...
Diffstat (limited to 'drivers/net/8139too.c')
-rw-r--r--drivers/net/8139too.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index cd9718512d1c..e4f4eaff7679 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1709,6 +1709,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
1709 void __iomem *ioaddr = tp->mmio_addr; 1709 void __iomem *ioaddr = tp->mmio_addr;
1710 unsigned int entry; 1710 unsigned int entry;
1711 unsigned int len = skb->len; 1711 unsigned int len = skb->len;
1712 unsigned long flags;
1712 1713
1713 /* Calculate the next Tx descriptor entry. */ 1714 /* Calculate the next Tx descriptor entry. */
1714 entry = tp->cur_tx % NUM_TX_DESC; 1715 entry = tp->cur_tx % NUM_TX_DESC;
@@ -1725,7 +1726,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
1725 return 0; 1726 return 0;
1726 } 1727 }
1727 1728
1728 spin_lock_irq(&tp->lock); 1729 spin_lock_irqsave(&tp->lock, flags);
1729 RTL_W32_F (TxStatus0 + (entry * sizeof (u32)), 1730 RTL_W32_F (TxStatus0 + (entry * sizeof (u32)),
1730 tp->tx_flag | max(len, (unsigned int)ETH_ZLEN)); 1731 tp->tx_flag | max(len, (unsigned int)ETH_ZLEN));
1731 1732
@@ -1736,7 +1737,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
1736 1737
1737 if ((tp->cur_tx - NUM_TX_DESC) == tp->dirty_tx) 1738 if ((tp->cur_tx - NUM_TX_DESC) == tp->dirty_tx)
1738 netif_stop_queue (dev); 1739 netif_stop_queue (dev);
1739 spin_unlock_irq(&tp->lock); 1740 spin_unlock_irqrestore(&tp->lock, flags);
1740 1741
1741 if (netif_msg_tx_queued(tp)) 1742 if (netif_msg_tx_queued(tp))
1742 printk (KERN_DEBUG "%s: Queued Tx packet size %u to slot %d.\n", 1743 printk (KERN_DEBUG "%s: Queued Tx packet size %u to slot %d.\n",