summaryrefslogtreecommitdiffstats
path: root/sys/dev/nge
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2001-07-08 16:24:01 +0000
committerwpaul <wpaul@FreeBSD.org>2001-07-08 16:24:01 +0000
commit9c963e8d8d8c7de1d41cf6040a71bde41622b5f9 (patch)
tree90b481578f1b2faceff6f732aadf08a32baffd2c /sys/dev/nge
parent0ca9dbc9d1bc8d4221d6ba0a477a6de26e1416a5 (diff)
downloadFreeBSD-src-9c963e8d8d8c7de1d41cf6040a71bde41622b5f9.zip
FreeBSD-src-9c963e8d8d8c7de1d41cf6040a71bde41622b5f9.tar.gz
Do not set the MODE_1000 bit unless we actually have a gigabit link.
Previously, I had the MODE_1000 bit in the global config register set unconditionally, which was wrong: we have to turn it off if we have a 10/100 link. This is now handled in the nge_miibus_statchg() routine. Discovered by: Nathan Binkert <binkertn@eecs.umich.edu> (Note: this commit is being done from JFK airport. :P )
Diffstat (limited to 'sys/dev/nge')
-rw-r--r--sys/dev/nge/if_nge.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/nge/if_nge.c b/sys/dev/nge/if_nge.c
index 65dd718..9d4a876 100644
--- a/sys/dev/nge/if_nge.c
+++ b/sys/dev/nge/if_nge.c
@@ -636,6 +636,14 @@ static void nge_miibus_statchg(dev)
NGE_CLRBIT(sc, NGE_RX_CFG, NGE_RXCFG_RX_FDX);
}
+ /* If we have a 1000Mbps link, set the mode_1000 bit. */
+ if (IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_TX ||
+ IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_SX) {
+ NGE_SETBIT(sc, NGE_CFG, NGE_CFG_MODE_1000);
+ } else {
+ NGE_CLRBIT(sc, NGE_CFG, NGE_CFG_MODE_1000);
+ }
+
return;
}
@@ -1774,7 +1782,7 @@ static void nge_init(xsc)
* extsts field in the DMA descriptors (needed for
* TCP/IP checksum offload on transmit).
*/
- NGE_SETBIT(sc, NGE_CFG, NGE_CFG_PHYINTR_SPD|NGE_CFG_MODE_1000|
+ NGE_SETBIT(sc, NGE_CFG, NGE_CFG_PHYINTR_SPD|
NGE_CFG_PHYINTR_LNK|NGE_CFG_PHYINTR_DUP|NGE_CFG_EXTSTS_ENB);
/*
OpenPOWER on IntegriCloud