aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/3c59x.c
diff options
context:
space:
mode:
authorSteffen Klassert <klassert@mathematik.tu-chemnitz.de>2006-03-26 01:37:41 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-26 08:56:58 -0800
commite94d10eb0d77ae70378f9218631a7be91e0aecff (patch)
tree31f9bdce9927be2a8ebc54c9cf9b7acad5e0d262 /drivers/net/3c59x.c
parentb4ff6450f5336c492d1e2f184d3b8186e0716b7a (diff)
downloadkernel_samsung_espresso10-e94d10eb0d77ae70378f9218631a7be91e0aecff.zip
kernel_samsung_espresso10-e94d10eb0d77ae70378f9218631a7be91e0aecff.tar.gz
kernel_samsung_espresso10-e94d10eb0d77ae70378f9218631a7be91e0aecff.tar.bz2
[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.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index 3343cbd..4655662 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);