Skip to contentSkip to conversation

eepro100 and IFF_RUNNING under 2.4

PATCH New [email protected] 1 participant 1 message Jul 20, 2001 Networking

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 eepro100 and IFF_RUNNING under 2.4

Hiho.. While working on some code which tries to monitor physical link status for ethernet interfaces, I noticed that apparently under the 2.4 kernel, the eepro100 driver does not reflect link status with the IFF_RUNNING flag as it used to under 2.2.x.

It looks like a bit of the code in eepro100.c didn't get updated to reflect
some interface changes that happened somewhere in 2.3, so here is a patch which
should fix things (It also adds a bit of code to set things properly on startup as well, patch is against kernel 2.4.6).

(I'm not quite sure who to send this to, so I'm sending it to the list)

-alex

net/eepro100.c renamed from net/eepro100.c.orig +7 -2
@@ -976,6 +976,11 @@
 	if ((sp->phy[0] & 0x8000) == 0)
 		sp->advertising = mdio_read(ioaddr, sp->phy[0] & 0x1f, 4);
 
+	if (mdio_read(ioaddr, sp->phy[0], 1) & 0x0004)
+		netif_carrier_on(dev);
+	else
+		netif_carrier_off(dev);
+
 	if (speedo_debug > 2) {
 		printk(KERN_DEBUG "%s: Done speedo_open(), status %8.8x.\n",
 			   dev->name, inw(ioaddr + SCBStatus));
@@ -1088,9 +1093,9 @@
 			mdio_read(ioaddr, phy_num, 1);
 			/* If link beat has returned... */
 			if (mdio_read(ioaddr, phy_num, 1) & 0x0004)
-				dev->flags |= IFF_RUNNING;
+				netif_carrier_on(dev);
 			else
-				dev->flags &= ~IFF_RUNNING;
+				netif_carrier_off(dev);
 		}
 	}
 	if (speedo_debug > 3) {