patch-2.4.20 linux-2.4.20/drivers/net/3c59x.c
Next file: linux-2.4.20/drivers/net/7990.c
Previous file: linux-2.4.20/drivers/net/3c509.c
Back to the patch index
Back to the overall index
- Lines: 56
- Date:
Thu Nov 28 15:53:13 2002
- Orig file:
linux-2.4.19/drivers/net/3c59x.c
- Orig date:
Fri Dec 21 09:41:54 2001
diff -urN linux-2.4.19/drivers/net/3c59x.c linux-2.4.20/drivers/net/3c59x.c
@@ -1444,11 +1444,14 @@
/* Read BMSR (reg1) only to clear old status. */
mii_reg1 = mdio_read(dev, vp->phys[0], 1);
mii_reg5 = mdio_read(dev, vp->phys[0], 5);
- if (mii_reg5 == 0xffff || mii_reg5 == 0x0000)
- ; /* No MII device or no link partner report */
- else if ((mii_reg5 & 0x0100) != 0 /* 100baseTx-FD */
+ if (mii_reg5 == 0xffff || mii_reg5 == 0x0000) {
+ netif_carrier_off(dev); /* No MII device or no link partner report */
+ } else {
+ if ((mii_reg5 & 0x0100) != 0 /* 100baseTx-FD */
|| (mii_reg5 & 0x00C0) == 0x0040) /* 10T-FD, but not 100-HD */
- vp->full_duplex = 1;
+ vp->full_duplex = 1;
+ netif_carrier_on(dev);
+ }
vp->partner_flow_ctrl = ((mii_reg5 & 0x0400) != 0);
if (vortex_debug > 1)
printk(KERN_INFO "%s: MII #%d status %4.4x, link partner capability %4.4x,"
@@ -1651,13 +1654,16 @@
switch (dev->if_port) {
case XCVR_10baseT: case XCVR_100baseTx: case XCVR_100baseFx:
if (media_status & Media_LnkBeat) {
+ netif_carrier_on(dev);
ok = 1;
if (vortex_debug > 1)
printk(KERN_DEBUG "%s: Media %s has link beat, %x.\n",
dev->name, media_tbl[dev->if_port].name, media_status);
- } else if (vortex_debug > 1)
+ } else if (vortex_debug > 1) {
+ netif_carrier_off(dev);
printk(KERN_DEBUG "%s: Media %s has no link beat, %x.\n",
dev->name, media_tbl[dev->if_port].name, media_status);
+ }
break;
case XCVR_MII: case XCVR_NWAY:
{
@@ -1666,7 +1672,7 @@
if (vortex_debug > 2)
printk(KERN_DEBUG "%s: MII transceiver has status %4.4x.\n",
dev->name, mii_status);
- if (mii_status & 0x0004) {
+ if (mii_status & BMSR_LSTATUS) {
int mii_reg5 = mdio_read(dev, vp->phys[0], 5);
if (! vp->force_fd && mii_reg5 != 0xffff) {
int duplex = (mii_reg5&0x0100) ||
@@ -1688,6 +1694,9 @@
/* AKPM: bug: should reset Tx and Rx after setting Duplex. Page 180 */
}
}
+ netif_carrier_on(dev);
+ } else {
+ netif_carrier_off(dev);
}
}
break;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)