freebsd-dev/sys/dev/mii
Marius Strobl f0e531572d DP83840A on hme(4) don't advertise their media capabilities themselves
properly. This causes the autonegotiation to e.g. never establish a
100baseTX full-duplex link. The solution to this problem is to manually
write the capabilities from the BMSR to the ANAR every time a media
change occurs, even when already in autonegotiation mode.
The NetBSD way of doing this is to set their MIIF_FORCEANEG flag in the
NIC driver. This causes mii_phy_setmedia() to call mii_phy_auto() (which
will set the ANAR according to the BMSR) even when the PHY alread is in
autonegotiation mode. However, while doing the same on FreeBSD (which
involves porting the MIIF_FORCEANEG flag and converting nsphy.c to use
mii_phy_setmedia()) fixes autonegotiation, using mii_phy_setmedia()
causes this driver to no longer work properly in the other modes.
Another drawback of that approach is that this will also force writing
the ANAR on other PHYs whose drivers use mii_phy_setmedia() and which
are used with a NIC whose driver sets MIIF_FORCEANEG (e.g. hme(4) is
known to be used together with 3 different PHYs while only the DP83840A
require this workaround).
So instead of moving to MIIF_FORCEANEG, just call mii_phy_auto() in
nsphy_service() unconditionally when hanging off of a hme(4) and serving
a media change

This is part 1/2 of fixing autonegotiation on hme(4) using DP83840A PHYs.
2004-05-29 18:23:26 +00:00
..
acphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
acphyreg.h
amphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
amphyreg.h
bmtphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
bmtphyreg.h
brgphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
brgphyreg.h Fix bge at 10Mbit. The defines for 10-Half and 10-Full were swapped. 2003-06-17 15:02:28 +00:00
dcphy.c Spelling fix in a comment. 2004-05-29 18:13:44 +00:00
e1000phy.c Move __FBSDID out from under a comment. 2004-05-29 17:45:45 +00:00
e1000phyreg.h Add support for SK-9521 V2.0 and 3COM 3C940. 2003-09-20 10:53:08 +00:00
exphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
inphy.c Use __FBSDID(). 2003-08-24 17:55:58 +00:00
inphyreg.h
lxtphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
lxtphyreg.h
mii_physubr.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
mii.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
mii.h
miibus_if.m
miidevs Add support for SK-9521 V2.0 and 3COM 3C940. 2003-09-20 10:53:08 +00:00
miivar.h
mlphy.c Correct the phy_service() routine case MII_TICK to correctly track 2004-05-03 13:01:34 +00:00
nsgphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
nsgphyreg.h
nsphy.c DP83840A on hme(4) don't advertise their media capabilities themselves 2004-05-29 18:23:26 +00:00
nsphyreg.h
pnaphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
pnphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
qsphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
qsphyreg.h
rgephy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
rgephyreg.h Add a PHY driver to support the built-in gigE PHY in the 8169S/8110S 2003-09-11 03:53:46 +00:00
rlphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
ruephy.c Correct the phy_service() routine case MII_TICK to correctly track 2004-05-03 13:01:34 +00:00
ruephyreg.h Add RealTek RTL8150 USB to fast Ethernet controller driver. 2003-05-03 10:16:56 +00:00
tdkphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
tdkphyreg.h
tlphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
tlphyreg.h
ukphy_subr.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
ukphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
xmphy.c Remove double __FBSDID and move the remaining one into a common place after 2004-05-29 18:09:10 +00:00
xmphyreg.h