[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>
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 @@
 		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 @@
 	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 @@
 			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);