diff options
author | Steffen Klassert <klassert@mathematik.tu-chemnitz.de> | 2006-03-26 01:37:41 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-26 08:56:58 -0800 |
commit | e94d10eb0d77ae70378f9218631a7be91e0aecff (patch) | |
tree | 31f9bdce9927be2a8ebc54c9cf9b7acad5e0d262 /drivers/net/3c59x.c | |
parent | b4ff6450f5336c492d1e2f184d3b8186e0716b7a (diff) | |
download | linux-e94d10eb0d77ae70378f9218631a7be91e0aecff.tar.gz linux-e94d10eb0d77ae70378f9218631a7be91e0aecff.tar.bz2 linux-e94d10eb0d77ae70378f9218631a7be91e0aecff.zip |
[PATCH] 3c59x: carriercheck for forced media
Handle netif_carrier_{on,of} also if media is forced to 10baseT/100baseTx.
Signed-off-by: Steffen Klassert <klassert@mathematik.tu-chemnitz.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/net/3c59x.c')
-rw-r--r-- | drivers/net/3c59x.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 3343cbda4197..4655662453ba 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -1907,8 +1907,6 @@ vortex_timer(unsigned long data) printk(KERN_DEBUG "dev->watchdog_timeo=%d\n", dev->watchdog_timeo); } - if (vp->medialock) - goto leave_media_alone; disable_irq(dev->irq); old_window = ioread16(ioaddr + EL3_CMD) >> 13; EL3WINDOW(4); @@ -1947,6 +1945,9 @@ vortex_timer(unsigned long data) if (!netif_carrier_ok(dev)) next_tick = 5*HZ; + if (vp->medialock) + goto leave_media_alone; + if ( ! ok) { unsigned int config; @@ -1980,14 +1981,14 @@ vortex_timer(unsigned long data) printk(KERN_DEBUG "wrote 0x%08x to Wn3_Config\n", config); /* AKPM: FIXME: Should reset Rx & Tx here. P60 of 3c90xc.pdf */ } - EL3WINDOW(old_window); - enable_irq(dev->irq); leave_media_alone: if (vortex_debug > 2) printk(KERN_DEBUG "%s: Media selection timer finished, %s.\n", dev->name, media_tbl[dev->if_port].name); + EL3WINDOW(old_window); + enable_irq(dev->irq); mod_timer(&vp->timer, RUN_AT(next_tick)); if (vp->deferred) iowrite16(FakeIntr, ioaddr + EL3_CMD); |