History log of /src/sys/dev/mii/ihphy.c |
Revision | | Date | Author | Comments |
1.20 |
| 05-Nov-2021 |
msaitoh | Don't power down the PHY when the interface goes down.
- All of other PHY drivers don't power down the PHY. Do the same way. - At least, keeping the link is required for Intel AMT and WoL.
|
1.19 |
| 04-Nov-2020 |
msaitoh | Fix a bug that "ifconfig xx0 media none" set LINK_STATE_UNKNOWN instead of LINK_STATE_DOWN.
XXX We should check for other PHY drivers, too.
|
1.18 |
| 28-Mar-2020 |
thorpej | branches: 1.18.4; Don't set DVF_DETACH_SHUTDOWN. The MII layer wants to manage the lifecycle of the PHY devices, and if a NIC driver chooses not to detach its PHYs at shutdown, that's the driver's business.
PR kern/55121.
|
1.17 |
| 15-Mar-2020 |
thorpej | Define and implement a locking protocol for the ifmedia / mii layers: - MP-safe drivers provide a mutex to ifmedia that is used to serialize access to media-related structures / hardware regsiters. Converted drivers use the new ifmedia_init_with_lock() function for this. The new name is provided to ease the transition. - Un-converted drivers continue to call ifmedia_init(), which will supply a compatibility lock to be used instead. Several media-related entry points must be aware of this compatibility lock, and are able to acquire it recursively a limited number of times, if needed. This is a SPIN mutex with priority IPL_NET. - This same lock is used to serialize access to PHY registers and other MII-related data structures.
The PHY drivers are modified to acquire and release the lock, as needed, and assert the lock is held as a diagnostic aid.
The "usbnet" framework has had an overhaul of its internal locking protocols to fit in with the media / mii changes, and the drivers adapted.
USB wifi drivers have been changed to provide their own adaptive mutex to the ifmedia later via a new ieee80211_media_init_with_lock() function. This is required because the USB drivers need an adaptive mutex.
Besised "usbnet", a few other drivers are converted: vmx, wm, ixgbe / ixv.
mcx also now calls ifmedia_init_with_lock() because it needs to also use an adaptive mutex. The mcx driver still needs to be fully converted to NET_MPSAFE.
|
1.16 |
| 27-Nov-2019 |
msaitoh | - Simplify sc->mii_anegticks setting. Same as FreeBSD.
Don't set the default value not in the attach function. Instead, set the default value (MII_ANEGTICKS) first in the beginning of the mii_phy_add_media(). The function already has the code to change the value to MII_ANEGTICKS_GIGE if it's gigabit capable.
- Remove extra pmf_device_register() call. It's done in mii_phy_add_media().
|
1.15 |
| 18-Nov-2019 |
msaitoh | Remove extra 10ms delay in ihphy_reset(). The delay are in if_wm.c side. It's required for hardware full reset and it't not requred on soft reset. When ihphy.c was added in 9 years ago, some workaround code were not in if_wm.c yet and the initialization code was not good.
|
1.14 |
| 25-Mar-2019 |
msaitoh | branches: 1.14.4; KNF. No functional change.
|
1.13 |
| 24-Feb-2019 |
christos | use a macro to tidy up the phydesc array initialization, from FreeBSD
|
1.12 |
| 19-Feb-2019 |
msaitoh | Match 82580(I340) and I350.
|
1.11 |
| 22-Jan-2019 |
msaitoh | Change MII PHY read/write API from:
int (*mii_readreg_t)(device_t, int, int); void (*mii_writereg_t)(device_t, int, int, int); to:
int (*mii_readreg_t)(device_t, int, int, uint16_t *); int (*mii_writereg_t)(device_t, int, int, uint16_t);
Now we can test if a read/write operation failed or not by the return value.
In 802.3 spec says that the PHY shall not respond to read/write transaction to the unimplemented register(22.2.4.3). Detecting timeout can be used to check whether a register is implemented or not (if the register conforms to the spec). ukphy(4) can be used this for MII_MMDACR and MII_MMDAADR.
Note that I noticed that the following code do infinite loop in the read/wirte function. If it accesses unimplemented PHY register, it will hang. It should be fixed:
arm/at91/at91emac.c arm/ep93xx/epe.c arm/omap/omapl1x_emac.c mips/ralink/ralink_eth.c arch/powerpc/booke/dev/pq3etsec.c(read) dev/cadence/if_cemac.c <- hkenken dev/ic/lan9118.c
Tested with the following device:
axe+ukphy axe+rgephy axen+rgephy (tested by Andrius V) wm+atphy wm+ukphy wm+igphy wm+ihphy wm+makphy sk+makphy sk+brgphy sk+gentbi msk+makphy sip+icsphy sip+ukphy re+rgephy bge+brgphy bnx+brgphy gsip+gphyter rtk+rlphy fxp+inphy (tested by Andrius V) tlp+acphy ex+exphy epic+qsphy vge+ciphy (tested by Andrius V) vr+ukphy (tested by Andrius V) vte+ukphy (tested by Andrius V)
Not tested (MAC): arm:at91emac arm:cemac arm:epe arm:geminigmac arm:enet arm:cpsw arm:emac(omac) arm:emac(sunxi) arm:npe evbppc:temac macppc:bm macppc:gm mips:aumac mips:ae mips:cnmac mips:reth mips:sbmac playstation2:smap powerpc:tsec powerpc:emac(ibm4xx) sgimips:mec sparc:be sf ne(ax88190, dl10019) awge ep gem hme smsh mtd sm age alc ale bce cas et jme lii nfe pcn ste stge tl xi aue mue smsc udav url
Not tested (PHY): amhphy bmtphy dmphy etphy glxtphy ikphy iophy lxtphy nsphyter pnaphy rdcphy sqphy tlphy tqphy urlphy
|
1.10 |
| 02-Nov-2016 |
msaitoh | branches: 1.10.8; 1.10.14; 1.10.16; Set mii_mpd_{oui,model,rev}.
|
1.9 |
| 07-Jul-2016 |
msaitoh | branches: 1.9.2; KNF. Remove extra spaces. No functional change.
|
1.8 |
| 16-Jun-2014 |
msaitoh | branches: 1.8.2; 1.8.4; 1.8.8; IFM_FDX and IFM_HDX use different bit, so set IFM_HDX bit if it's not full duplex. For many drivers, it recognize half duplex if IFM_FDX isn't set, but not for others. Same as {Free|Open}BSD.
|
1.7 |
| 19-Jun-2013 |
msaitoh | branches: 1.7.6; Use ihphy(4) for I21[78].
|
1.6 |
| 11-Jun-2013 |
msaitoh | branches: 1.6.2; Remove duplicated code. The code to check IFF_UP and autonegotiation is in mii_phy_tick(), too.
|
1.5 |
| 09-Jun-2013 |
msaitoh | Update link status quickly. This change is a part of FreeBSD's mii_physubr.c r158649.
|
1.4 |
| 09-Jun-2013 |
msaitoh | Don't "return" but "break" in MII_TICK when the interface isn't doing autonegotiaton or the link is up to update the status.
|
1.3 |
| 09-Jun-2013 |
msaitoh | atphy, ciphy, ihphy and rgephy are gigabit PHY, so not only check IFM_AUTO for autonegotiation but also check IFM_1000_T, too.
|
1.2 |
| 20-May-2011 |
msaitoh | branches: 1.2.4; 1.2.10; 1.2.14; 82579 support.
|
1.1 |
| 27-Nov-2010 |
christos | branches: 1.1.2; 1.1.6; PR/44080: Grégoire Sutre: Support for the i82577 ethernet PHY
|
1.1.6.3 |
| 31-May-2011 |
rmind | sync with head
|
1.1.6.2 |
| 05-Mar-2011 |
rmind | sync with head
|
1.1.6.1 |
| 27-Nov-2010 |
rmind | file ihphy.c was added on branch rmind-uvmplock on 2011-03-05 20:53:32 +0000
|
1.1.2.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.2.14.3 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.2.14.2 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.2.14.1 |
| 23-Jun-2013 |
tls | resync from head
|
1.2.10.1 |
| 09-Nov-2014 |
martin | Pull up following revision(s) (requested by msaitoh in ticket #1189): sys/dev/pci/if_wm.c: revision 1.270 sys/dev/mii/inphy.c: revision 1.53 sys/dev/mii/glxtphy.c: revision 1.24 sys/dev/mii/tlphy.c: revision 1.62 sys/dev/mii/iophy.c: revision 1.37 sys/dev/mii/brgphy.c: revision 1.70 sys/dev/mii/ihphy.c: revision 1.8 sys/dev/mii/bmtphy.c: revision 1.31 sys/dev/mii/urlphy.c: revision 1.30 sys/dev/mii/makphy.c: revision 1.40 sys/dev/mii/qsphy.c: revision 1.48 sys/dev/mii/igphy.c: revision 1.23 sys/dev/mii/nsphy.c: revision 1.58 sys/dev/mii/mvphy.c: revision 1.10 sys/dev/pci/if_txp.c: revision 1.41 sys/dev/mii/nsphy.c: revision 1.59 sys/dev/mii/rlphy.c: revision 1.28 sys/dev/mii/icsphy.c: revision 1.49 sys/dev/mii/rlphy.c: revision 1.29 sys/dev/mii/lxtphy.c: revision 1.49 sys/dev/mii/ciphyreg.h: revision 1.5 sys/dev/mii/nsphyter.c: revision 1.38 sys/dev/mii/sqphy.c: revision 1.50 sys/dev/mii/gentbi.c: revision 1.26 sys/dev/mii/gentbi.c: revision 1.27 sys/dev/mii/tqphy.c: revision 1.39 sys/dev/mii/ikphy.c: revision 1.10 sys/dev/mii/dmphy.c: revision 1.35 sys/dev/mii/amhphy.c: revision 1.20 sys/dev/mii/acphy.c: revision 1.24 sys/dev/mii/ciphy.c: revision 1.25 sys/dev/mii/brgphyreg.h: revision 1.8 sys/dev/mii/ukphy_subr.c: revision 1.12 sys/dev/ic/rtl80x9.c: revision 1.16 sys/arch/mips/adm5120/dev/if_admsw.c: revision 1.12 sys/dev/pci/if_kse.c: revision 1.28 sys/dev/mii/ukphy_subr.c: revision 1.13 sys/dev/mii/mii.h: revision 1.18 sys/dev/mii/gphyter.c: revision 1.29 No functional change: - Fix typo. - Remove trailing white spaces. - Capitalize comments. - Tabify. - KNF. IFM_FDX and IFM_HDX use different bit, so set IFM_HDX bit if it's not full duplex. For many drivers, it recognize half duplex if IFM_FDX isn't set, but not for others. Same as {Free|Open}BSD.
|
1.2.4.1 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
1.6.2.2 |
| 19-Jun-2013 |
bouyer | Pullup the following revisions via patch, requested by msaitoh in ticket #1850: sys/dev/pci/if_wm.c 1.201, 1.203-1.204, 1.207-1.212, 1.215, 1.217-1.218, 1.220-1.223, 1.228, 1.232-245 sys/dev/pci/if_wmreg.h 1.40-1.45, 1.47-1.48 sys/dev/pci/if_wmvar.h 1.11-1.13 sys/dev/pci/pcidevs 1.1074, 1.1077, 1.1117 sys/dev/pci/pcidevs.h regen sys/dev/pci/pcidevs_data.h regen sys/dev/mii/igphyreg.h 1.6 sys/dev/mii/ihphy.c 1.1-1.2 sys/dev/mii/ihphyreg.h 1.1 sys/dev/mii/inbmphyreg.h 1.3 sys/dev/mii/files.mii 1.47 via patch sys/dev/mii/miidevs 1.97 and 1.100 sys/dev/mii/miidevs.h regen sys/dev/mii/miidevs_data.h regen sys/arch/i386/conf/ALL 1.280 sys/arch/i386/conf/GENERIC 1.1001 sys/arch/i386/conf/INSTALL_FLOPPY 1.11 sys/arch/i386/conf/XEN2_DOM0 patch sys/arch/amd64/conf/GENERIC 1.293 sys/arch/amd64/conf/XEN3_DOM0 1.61 share/man/man4/wm.4 1.21-1.24
Apply almost all fixes and improvements from netbsd-6 except for the rev. 1.196's iqdrops' change.
- Add the detach code. - Add code for WOL, ASF, IPMI and Intel AMT. WOL is disabled by default - Add Yet another workaround for ICH8. - 82576 is dual port, so check the FUNCID and increment the MAC address for the 2nd port. - Fix the names of 82577L[MC] LAN controllers (for mobile). - Fix CTRL_EXT_SWDPIN() and CTRL_EXT_SWDPIO() macros. The bit order of the SW definable pin is not 6543 but 3654!!! - Rewrite the code to read MAC address from eeprom. - Add 82580 support. - 82571 quirk. Only 82571 shares port 0 of EEMNGCTL_CFGDONE. - The document says that the TDH register must be set after TCL.EN is set on 82575 and newer devices. - Fix some register names. No functional change. - Omit U+00AE "REGISTERED SIGN" in a product name due to its non-ASCII nature. - Stop wm(4) from needlessly resetting when you add or delete a vlan(4). - Fix MAC address check on 8257[156] and 80003 case. Some cards have non 0xffff pointer but those don't use alternative MAC address in reality. So we check whether the broadcast bit is set or not like Intel's e1000 driver. Fixes PR kern/44072 reported by Jean-Yves Moulin. - Add PCH2(and 82579) support. Fixes PR#46487 - Add yet another 82567V support. - Add ICH10+HANKSVILL support. - Add support Intel I350 Ethernet. - Make vlan and all ip/ip6 checksum offload work for the I350. - Fix compile error with WM_DEBUG. - Fix a bug that PHY isn't set to low-power mode on PCH and PCH2. - Add WM_DEBUG_NVM. If WM_DEBUG_NVM is enabled, dump the FLASH ROM data. - Skip 64bit BAR correctly. - Fix RAL_TABSIZE for ICH8, 82576, 82580 and I350. - Use 82580(and I350) specific PHY read/write functions. Fixes PR#47542. - Style fix. Fix typo in comment. Fix comments. Add comments.
|
1.6.2.1 |
| 11-Jun-2013 |
bouyer | file ihphy.c was added on branch netbsd-5 on 2013-06-19 07:50:15 +0000
|
1.7.6.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.8.8.1 |
| 18-Jan-2017 |
skrll | Sync with netbsd-5
|
1.8.4.2 |
| 05-Dec-2016 |
skrll | Sync with HEAD
|
1.8.4.1 |
| 09-Jul-2016 |
skrll | Sync with HEAD
|
1.8.2.1 |
| 12-Dec-2016 |
snj | Pull up following revision(s) (requested by msaitoh in ticket #1301): sys/dev/mii/inphy.c: revision 1.55 sys/dev/mii/makphy.c: revision 1.42 sys/dev/mii/ikphy.c: revision 1.12 sys/dev/mii/atphy.c: revision 1.18 sys/dev/mii/ihphy.c: revision 1.10 Set mii_mpd_{oui,model,rev}. -- Set mii_mpd_{oui,model,rev}. -- Set mii_mpd_{oui,model,rev}. -- Set mii_mpd_{oui,rev}.
|
1.9.2.1 |
| 04-Nov-2016 |
pgoyette | Sync with HEAD
|
1.10.16.3 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
1.10.16.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.10.16.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.10.14.1 |
| 26-Jan-2019 |
pgoyette | Sync with HEAD
|
1.10.8.4 |
| 29-Jan-2022 |
martin | Pull up following revision(s) (requested by msaitoh in ticket #1726):
sys/dev/mii/igphy.c: revision 1.37 sys/dev/mii/ihphy.c: revision 1.19 sys/dev/mii/makphy.c: revision 1.68
Fix a bug that "ifconfig xx0 media none" set LINK_STATE_UNKNOWN instead of LINK_STATE_DOWN.
XXX We should check for other PHY drivers, too.
|
1.10.8.3 |
| 20-Nov-2021 |
martin | Pull up the following, requested by msaitoh in ticket #1707:
sys/dev/pci/if_wm.c 1.716-1.718 via patch sys/dev/pci/if_wmreg.h 1.121 sys/dev/mii/ihphy.c 1.20
- Fix a bug that device timeout still happens when the link is down on ICH/PCH. Fixes PR kern/56478. - Add some sysctl info for debugging. - ihphy(4): Don't power down the PHY when the interface goes down. - Use macro. Fix comment.
|
1.10.8.2 |
| 24-Jan-2020 |
martin | Pull up following revision(s) (requested by msaitoh in ticket #1491):
sys/dev/mii/ihphy.c: revision 1.15
Remove extra 10ms delay in ihphy_reset(). The delay are in if_wm.c side. It's required for hardware full reset and it's not required on soft reset.
When ihphy.c was added in 9 years ago, some workaround code were not in if_wm.c yet and the initialization code was not good.
|
1.10.8.1 |
| 01-Aug-2019 |
martin | Pull up the following revision, requested by msaitoh in ticket #1316:
sys/dev/mii/makphy.c 1.54,1.57-1.60 via patch sys/dev/mii/makphyvar.h 1.1-1.2 sys/dev/mii/ihphy.c 1.12,1.14 via patch
- Support Intel I21[01]. - 88E1000(S) has no page select register, so don't access it. Note that qemu doesn't implement the register and the access fails. - Check the result of the ESSR register access because Qemu doesn't implement the register. - KNF.
|
1.14.4.3 |
| 29-Jan-2022 |
martin | Pull up following revision(s) (requested by msaitoh in ticket #1409):
sys/dev/mii/igphy.c: revision 1.37 sys/dev/mii/ihphy.c: revision 1.19 sys/dev/mii/makphy.c: revision 1.68
Fix a bug that "ifconfig xx0 media none" set LINK_STATE_UNKNOWN instead of LINK_STATE_DOWN.
XXX We should check for other PHY drivers, too.
|
1.14.4.2 |
| 20-Nov-2021 |
martin | Pull up the following, requested by msaitoh in ticket #1373:
sys/dev/pci/if_wm.c 1.716-1.718 via patch sys/dev/pci/if_wmreg.h 1.121 sys/dev/mii/ihphy.c 1.20
- Fix a bug that device timeout still happens when the link is down on ICH/PCH. Fixes PR kern/56478. - Add some sysctl info for debugging. - ihphy(4): Don't power down the PHY when the interface goes down. - Use macro. Fix comment.
|
1.14.4.1 |
| 26-Jan-2020 |
martin | Pull up following revision(s) (requested by msaitoh in ticket #649):
sys/dev/mii/ihphy.c: revision 1.15
Remove extra 10ms delay in ihphy_reset(). The delay are in if_wm.c side. It's required for hardware full reset and it't not requred on soft reset.
When ihphy.c was added in 9 years ago, some workaround code were not in if_wm.c yet and the initialization code was not good.
|
1.18.4.1 |
| 14-Dec-2020 |
thorpej | Sync w/ HEAD.
|