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.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index d3489a3c4c03..934f7671650a 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -621,6 +621,7 @@ static const struct net_device_ops rhine_netdev_ops = {
621 .ndo_start_xmit = rhine_start_tx, 621 .ndo_start_xmit = rhine_start_tx,
622 .ndo_get_stats = rhine_get_stats, 622 .ndo_get_stats = rhine_get_stats,
623 .ndo_set_multicast_list = rhine_set_rx_mode, 623 .ndo_set_multicast_list = rhine_set_rx_mode,
624 .ndo_change_mtu = eth_change_mtu,
624 .ndo_validate_addr = eth_validate_addr, 625 .ndo_validate_addr = eth_validate_addr,
625 .ndo_set_mac_address = eth_mac_addr, 626 .ndo_set_mac_address = eth_mac_addr,
626 .ndo_do_ioctl = netdev_ioctl, 627 .ndo_do_ioctl = netdev_ioctl,
@@ -1217,6 +1218,7 @@ static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev)
1217 struct rhine_private *rp = netdev_priv(dev); 1218 struct rhine_private *rp = netdev_priv(dev);
1218 void __iomem *ioaddr = rp->base; 1219 void __iomem *ioaddr = rp->base;
1219 unsigned entry; 1220 unsigned entry;
1221 unsigned long flags;
1220 1222
1221 /* Caution: the write order is important here, set the field 1223 /* Caution: the write order is important here, set the field
1222 with the "ownership" bits last. */ 1224 with the "ownership" bits last. */
@@ -1260,7 +1262,7 @@ static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev)
1260 cpu_to_le32(TXDESC | (skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN)); 1262 cpu_to_le32(TXDESC | (skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN));
1261 1263
1262 /* lock eth irq */ 1264 /* lock eth irq */
1263 spin_lock_irq(&rp->lock); 1265 spin_lock_irqsave(&rp->lock, flags);
1264 wmb(); 1266 wmb();
1265 rp->tx_ring[entry].tx_status = cpu_to_le32(DescOwn); 1267 rp->tx_ring[entry].tx_status = cpu_to_le32(DescOwn);
1266 wmb(); 1268 wmb();
@@ -1279,7 +1281,7 @@ static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev)
1279 1281
1280 dev->trans_start = jiffies; 1282 dev->trans_start = jiffies;
1281 1283
1282 spin_unlock_irq(&rp->lock); 1284 spin_unlock_irqrestore(&rp->lock, flags);
1283 1285
1284 if (debug > 4) { 1286 if (debug > 4) {
1285 printk(KERN_DEBUG "%s: Transmit frame #%d queued in slot %d.\n", 1287 printk(KERN_DEBUG "%s: Transmit frame #%d queued in slot %d.\n",