aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/via-rhine.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/via-rhine.c')
-rw-r--r--drivers/net/via-rhine.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 081402cb05fd..1fd70583be44 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -1220,6 +1220,7 @@ static netdev_tx_t rhine_start_tx(struct sk_buff *skb,
1220 struct rhine_private *rp = netdev_priv(dev); 1220 struct rhine_private *rp = netdev_priv(dev);
1221 void __iomem *ioaddr = rp->base; 1221 void __iomem *ioaddr = rp->base;
1222 unsigned entry; 1222 unsigned entry;
1223 unsigned long flags;
1223 1224
1224 /* Caution: the write order is important here, set the field 1225 /* Caution: the write order is important here, set the field
1225 with the "ownership" bits last. */ 1226 with the "ownership" bits last. */
@@ -1263,7 +1264,7 @@ static netdev_tx_t rhine_start_tx(struct sk_buff *skb,
1263 cpu_to_le32(TXDESC | (skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN)); 1264 cpu_to_le32(TXDESC | (skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN));
1264 1265
1265 /* lock eth irq */ 1266 /* lock eth irq */
1266 spin_lock_irq(&rp->lock); 1267 spin_lock_irqsave(&rp->lock, flags);
1267 wmb(); 1268 wmb();
1268 rp->tx_ring[entry].tx_status = cpu_to_le32(DescOwn); 1269 rp->tx_ring[entry].tx_status = cpu_to_le32(DescOwn);
1269 wmb(); 1270 wmb();
@@ -1282,7 +1283,7 @@ static netdev_tx_t rhine_start_tx(struct sk_buff *skb,
1282 1283
1283 dev->trans_start = jiffies; 1284 dev->trans_start = jiffies;
1284 1285
1285 spin_unlock_irq(&rp->lock); 1286 spin_unlock_irqrestore(&rp->lock, flags);
1286 1287
1287 if (debug > 4) { 1288 if (debug > 4) {
1288 printk(KERN_DEBUG "%s: Transmit frame #%d queued in slot %d.\n", 1289 printk(KERN_DEBUG "%s: Transmit frame #%d queued in slot %d.\n",