aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2011-11-18 19:38:19 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2011-11-18 19:38:19 +0000
commit89b2411bc3b8d8efe9e4337974dcd029d639cf38 (patch)
tree43a5e2c28fc8ce54392101b0054d9da85fb7deaa
parent7bbcd22d38c689b92e7fe9d2487e4e18258147a1 (diff)
downloadsrc-89b2411bc3b8d8efe9e4337974dcd029d639cf38.tar.gz
src-89b2411bc3b8d8efe9e4337974dcd029d639cf38.zip
Partially revert r218788. r218788 removed calling dc_setcfg() for
!DC_IS_ADMTEK in dc_miibus_statchg(). This change broke link establishment of Intel 21143 with dcphy(4) where it stuck in "ability detect" state without completing auto-negotiation. Also nuke dc_if_media as it's not actually used. Submitted by: marius
Notes
Notes: svn path=/head/; revision=227675
-rw-r--r--sys/dev/dc/if_dc.c16
-rw-r--r--sys/dev/dc/if_dcreg.h1
2 files changed, 3 insertions, 14 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c
index 57acb3974cad..803d115f4aaf 100644
--- a/sys/dev/dc/if_dc.c
+++ b/sys/dev/dc/if_dc.c
@@ -860,12 +860,11 @@ dc_miibus_statchg(device_t dev)
return;
ifm = &mii->mii_media;
- if (DC_IS_DAVICOM(sc) &&
- IFM_SUBTYPE(ifm->ifm_media) == IFM_HPNA_1) {
+ if (DC_IS_DAVICOM(sc) && IFM_SUBTYPE(ifm->ifm_media) == IFM_HPNA_1) {
dc_setcfg(sc, ifm->ifm_media);
- sc->dc_if_media = ifm->ifm_media;
return;
- }
+ } else if (!DC_IS_ADMTEK(sc))
+ dc_setcfg(sc, mii->mii_media_active);
sc->dc_link = 0;
if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
@@ -875,17 +874,8 @@ dc_miibus_statchg(device_t dev)
case IFM_100_TX:
sc->dc_link = 1;
break;
- default:
- break;
}
}
- if (sc->dc_link == 0)
- return;
-
- sc->dc_if_media = mii->mii_media_active;
- if (DC_IS_ADMTEK(sc))
- return;
- dc_setcfg(sc, mii->mii_media_active);
}
/*
diff --git a/sys/dev/dc/if_dcreg.h b/sys/dev/dc/if_dcreg.h
index cbbe39f6c3bf..e290881fa017 100644
--- a/sys/dev/dc/if_dcreg.h
+++ b/sys/dev/dc/if_dcreg.h
@@ -760,7 +760,6 @@ struct dc_softc {
int dc_pnic_rx_bug_save;
unsigned char *dc_pnic_rx_buf;
int dc_if_flags;
- int dc_if_media;
uint32_t dc_flags;
uint32_t dc_txthresh;
uint32_t dc_eaddr[2];