diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-03-11 13:35:31 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-03-11 13:35:31 -0500 |
commit | 749dfc70554f2c9e6624ac843d66571265ed9338 (patch) | |
tree | bf591255b3f158222f90852d53c4279e6e7e9ced /drivers/net/tulip | |
parent | 74f5ec29ae93aa42c49f4285c20c457afe937881 (diff) | |
parent | 0992a5d029181421877a716eaf99145828ff7eae (diff) |
Merge branch 'upstream-fixes'
Diffstat (limited to 'drivers/net/tulip')
-rw-r--r-- | drivers/net/tulip/de2104x.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c index d6c3d52d2e8..6299e186c73 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 | ||
1393 | err_out_hw: | 1394 | err_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 | |||
1398 | err_out_free: | 1396 | err_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); |