aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tulip/de2104x.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-03-11 13:35:31 -0500
committerJeff Garzik <jeff@garzik.org>2006-03-11 13:35:31 -0500
commit749dfc70554f2c9e6624ac843d66571265ed9338 (patch)
treebf591255b3f158222f90852d53c4279e6e7e9ced /drivers/net/tulip/de2104x.c
parent74f5ec29ae93aa42c49f4285c20c457afe937881 (diff)
parent0992a5d029181421877a716eaf99145828ff7eae (diff)
Merge branch 'upstream-fixes'
Diffstat (limited to 'drivers/net/tulip/de2104x.c')
-rw-r--r--drivers/net/tulip/de2104x.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index d6c3d52d2e86..6299e186c73f 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -1357,7 +1357,6 @@ static int de_open (struct net_device *dev)
1357{ 1357{
1358 struct de_private *de = dev->priv; 1358 struct de_private *de = dev->priv;
1359 int rc; 1359 int rc;
1360 unsigned long flags;
1361 1360
1362 if (netif_msg_ifup(de)) 1361 if (netif_msg_ifup(de))
1363 printk(KERN_DEBUG "%s: enabling interface\n", dev->name); 1362 printk(KERN_DEBUG "%s: enabling interface\n", dev->name);
@@ -1371,18 +1370,20 @@ static int de_open (struct net_device *dev)
1371 return rc; 1370 return rc;
1372 } 1371 }
1373 1372
1374 rc = de_init_hw(de); 1373 dw32(IntrMask, 0);
1375 if (rc) {
1376 printk(KERN_ERR "%s: h/w init failure, err=%d\n",
1377 dev->name, rc);
1378 goto err_out_free;
1379 }
1380 1374
1381 rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); 1375 rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev);
1382 if (rc) { 1376 if (rc) {
1383 printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", 1377 printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n",
1384 dev->name, dev->irq, rc); 1378 dev->name, dev->irq, rc);
1385 goto err_out_hw; 1379 goto err_out_free;
1380 }
1381
1382 rc = de_init_hw(de);
1383 if (rc) {
1384 printk(KERN_ERR "%s: h/w init failure, err=%d\n",
1385 dev->name, rc);
1386 goto err_out_free_irq;
1386 } 1387 }
1387 1388
1388 netif_start_queue(dev); 1389 netif_start_queue(dev);
@@ -1390,11 +1391,8 @@ static int de_open (struct net_device *dev)
1390 1391
1391 return 0; 1392 return 0;
1392 1393
1393err_out_hw: 1394err_out_free_irq:
1394 spin_lock_irqsave(&de->lock, flags); 1395 free_irq(dev->irq, dev);
1395 de_stop_hw(de);
1396 spin_unlock_irqrestore(&de->lock, flags);
1397
1398err_out_free: 1396err_out_free:
1399 de_free_rings(de); 1397 de_free_rings(de);
1400 return rc; 1398 return rc;
@@ -1450,6 +1448,8 @@ static void de_tx_timeout (struct net_device *dev)
1450 synchronize_irq(dev->irq); 1448 synchronize_irq(dev->irq);
1451 de_clean_rings(de); 1449 de_clean_rings(de);
1452 1450
1451 de_init_rings(de);
1452
1453 de_init_hw(de); 1453 de_init_hw(de);
1454 1454
1455 netif_wake_queue(dev); 1455 netif_wake_queue(dev);