History log of /src/sys/dev/mii/etphy.c |
Revision | | Date | Author | Comments |
1.9 |
| 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.8 |
| 28-Feb-2020 |
msaitoh | Move PHY_RESET() in the media change path from if_et.c to etphy.c.
I don't know if the reset is required or not. I tested some media transitions without the reset and it worked. It might be OK to remove but Linux does it only in et1011c_config_aneg(). So move the reset to etphy_service(,,MII_MEDIACHG)'s autonego case. This change is also required for future locking changes.
|
1.7 |
| 27-Nov-2019 |
msaitoh | branches: 1.7.2; - 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.6 |
| 16-Aug-2019 |
msaitoh | From FreeBSD: - Support ET1011. - Use mii_phy_flowstatus() to reflect flow status from negotiated result.
|
1.5 |
| 16-Aug-2019 |
msaitoh | No functional change: - Use static. - KNF.
|
1.4 |
| 25-Mar-2019 |
msaitoh | branches: 1.4.4; KNF. No functional change.
|
1.3 |
| 24-Feb-2019 |
christos | use a macro to tidy up the phydesc array initialization, from FreeBSD
|
1.2 |
| 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.1 |
| 13-Nov-2010 |
jnemeth | branches: 1.1.6; 1.1.54; 1.1.60; 1.1.62; PR/39094 - Kaspar Brand -- Add et (Agere ET1310/ET1301) network driver
The et(4) driver supports PCI Express Ethernet adapters based on the Agere/LSI ET1310/ET1301 integrated MAC/PHY.
The et(4) driver was written by Sepherosa Ziehau for DragonFlyBSD, ported to OpenBSD by Jonathan Gray and subsequently ported to NetBSD by Kaspar Brand.
|
1.1.62.2 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
1.1.62.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.1.60.1 |
| 26-Jan-2019 |
pgoyette | Sync with HEAD
|
1.1.54.1 |
| 14-Apr-2020 |
martin | Pull up the following revisions, requested by msaitoh in ticket #1529:
sys/dev/mii/miidevs 1.154, 1.162-1.167 sys/dev/mii/atphy.c 1.28 via patch sys/dev/mii/brgphy.c 1.87 via patch sys/dev/mii/etphy.c 1.5, 1.6 via patch sys/dev/mii/rdcphy.c 1.6, 1.8 via patch
- Add support Broadcom BCM54213PE and some new RDC devices. - Rename RDC to xxRDC. - Use xxVIA instead of VIA. - etphy(4): - Rename ET1011 to ET1011C and add ET1011 support. - Use mii_phy_flowstatus() to reflect flow status from negotiated result. - Use static. - KNF.
|
1.1.6.2 |
| 05-Mar-2011 |
rmind | sync with head
|
1.1.6.1 |
| 13-Nov-2010 |
rmind | file etphy.c was added on branch rmind-uvmplock on 2011-03-05 20:53:31 +0000
|
1.4.4.1 |
| 01-Sep-2019 |
martin | Pull up following revision(s) (requested by msaitoh in ticket #144):
sys/dev/mii/miidevs: revision 1.154 sys/dev/mii/etphy.c: revision 1.5 sys/dev/mii/etphy.c: revision 1.6
No functional change: - Use static. - KNF.
From FreeBSD: - Rename ET1011 to ET1011C - Add ET1011
From FreeBSD: - Support ET1011. - Use mii_phy_flowstatus() to reflect flow status from negotiated result.
|
1.7.2.1 |
| 29-Feb-2020 |
ad | Sync with head.
|