aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/8139cp.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index e2cb19b582a1..6f93a765e564 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -765,17 +765,18 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev)
765 struct cp_private *cp = netdev_priv(dev); 765 struct cp_private *cp = netdev_priv(dev);
766 unsigned entry; 766 unsigned entry;
767 u32 eor, flags; 767 u32 eor, flags;
768 unsigned long intr_flags;
768#if CP_VLAN_TAG_USED 769#if CP_VLAN_TAG_USED
769 u32 vlan_tag = 0; 770 u32 vlan_tag = 0;
770#endif 771#endif
771 int mss = 0; 772 int mss = 0;
772 773
773 spin_lock_irq(&cp->lock); 774 spin_lock_irqsave(&cp->lock, intr_flags);
774 775
775 /* This is a hard error, log it. */ 776 /* This is a hard error, log it. */
776 if (TX_BUFFS_AVAIL(cp) <= (skb_shinfo(skb)->nr_frags + 1)) { 777 if (TX_BUFFS_AVAIL(cp) <= (skb_shinfo(skb)->nr_frags + 1)) {
777 netif_stop_queue(dev); 778 netif_stop_queue(dev);
778 spin_unlock_irq(&cp->lock); 779 spin_unlock_irqrestore(&cp->lock, intr_flags);
779 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n", 780 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n",
780 dev->name); 781 dev->name);
781 return 1; 782 return 1;
@@ -908,7 +909,7 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev)
908 if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1)) 909 if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1))
909 netif_stop_queue(dev); 910 netif_stop_queue(dev);
910 911
911 spin_unlock_irq(&cp->lock); 912 spin_unlock_irqrestore(&cp->lock, intr_flags);
912 913
913 cpw8(TxPoll, NormalTxPoll); 914 cpw8(TxPoll, NormalTxPoll);
914 dev->trans_start = jiffies; 915 dev->trans_start = jiffies;