#
61b37dcb |
| 15-Mar-2020 |
thorpej <thorpej@NetBSD.org> |
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.
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.
show more ...
|
#
b2a008ad |
| 27-Nov-2019 |
msaitoh <msaitoh@NetBSD.org> |
- 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
- 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().
show more ...
|
#
71556426 |
| 25-Mar-2019 |
msaitoh <msaitoh@NetBSD.org> |
KNF. No functional change.
|
#
d23de6ff |
| 24-Feb-2019 |
christos <christos@NetBSD.org> |
use a macro to tidy up the phydesc array initialization, from FreeBSD
|
#
d3eb5fe8 |
| 13-Feb-2019 |
msaitoh <msaitoh@NetBSD.org> |
Add ICS1893C support from FreeBSD.
|
#
e746222f |
| 22-Jan-2019 |
msaitoh <msaitoh@NetBSD.org> |
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 (*mi
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
show more ...
|
#
575a7585 |
| 07-Jul-2016 |
msaitoh <msaitoh@NetBSD.org> |
KNF. Remove extra spaces. No functional change.
|
#
a7fbee7b |
| 16-Jun-2014 |
msaitoh <msaitoh@NetBSD.org> |
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.
|
#
6d07b400 |
| 19-Oct-2009 |
bouyer <bouyer@NetBSD.org> |
Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen for the booring work !
|
#
ddbd8176 |
| 17-Nov-2008 |
dyoung <dyoung@NetBSD.org> |
Reduce code duplication: most PHY drivers call mii_phy_add_media() when they attach to the device tree, so call pmf_device_register(9) once there instead of once in more than twenty drivers.
|
#
7db0e577 |
| 04-May-2008 |
xtraeme <xtraeme@NetBSD.org> |
device_t/softc split for all mii(4) devices, and other related cosmetic changes.
|
#
ce099b40 |
| 28-Apr-2008 |
martin <martin@NetBSD.org> |
Remove clause 3 and 4 from TNF licenses
|
#
cf417aad |
| 08-Apr-2008 |
cegger <cegger@NetBSD.org> |
use aprint_*_dev and device_xname
|
#
401b2c34 |
| 29-Dec-2007 |
dyoung <dyoung@NetBSD.org> |
Remove the device_is_active() check from each individual PHY's service routine. Add a wrapper for PHY_SERVICE(), called phy_service(), and check device_is_active() there. Make the mii_*() routines
Remove the device_is_active() check from each individual PHY's service routine. Add a wrapper for PHY_SERVICE(), called phy_service(), and check device_is_active() there. Make the mii_*() routines call the PHY service routines thorugh phy_service() instead of PHY_SERVICE().
In mii_phy_resume(), restore a PHY's state after resetting it by sending a MII_MEDIACHG command. This change makes bnx(4) resume more reliably and more quickly; it should help other NICs to resume, too, if they attach PHYs through MII.
show more ...
|
#
4c1d81b2 |
| 09-Dec-2007 |
jmcneill <jmcneill@NetBSD.org> |
Merge jmcneill-pm branch.
|
#
5e16b778 |
| 16-Nov-2006 |
christos <christos@NetBSD.org> |
- don't hardcode 5, 10 define and use MII_ANEGTICKS{,_GIGE} - instead of != limit, use <= limit (conservative)
|
#
168cd830 |
| 16-Nov-2006 |
christos <christos@NetBSD.org> |
__unused removal on arguments; approved by core.
|
#
4d595fd7 |
| 12-Oct-2006 |
christos <christos@NetBSD.org> |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
#
838ee1e0 |
| 29-Mar-2006 |
thorpej <thorpej@NetBSD.org> |
Use device_private().
|
#
3ddf2677 |
| 20-Feb-2006 |
thorpej <thorpej@NetBSD.org> |
Use device_is_active() rather than testing dv_flags for DVF_ACTIVE directly.
|
#
95e1ffb1 |
| 11-Dec-2005 |
christos <christos@NetBSD.org> |
merge ktrace-lwp.
|
#
f31bd063 |
| 27-Feb-2005 |
perry <perry@NetBSD.org> |
nuke trailing whitespace
|
#
1efb3da0 |
| 23-Aug-2004 |
thorpej <thorpej@NetBSD.org> |
Make use of static.
|
#
d8a4a08a |
| 01-Jul-2003 |
msaitoh <msaitoh@NetBSD.org> |
- last commit (rev. 1.32) fixes icsphy_reset()'s problem. ICSphys don't restart auto negotiation, so it kick. - add comment in icsphy_reset()
|
#
5af1b693 |
| 01-Jul-2003 |
msaitoh <msaitoh@NetBSD.org> |
Add ICS1889 and 1892
|