#
1.41 |
|
10-Feb-2024 |
andvar |
Fix various typos in comments, log messages and documentation.
|
Revision tags: netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
#
1.40 |
|
04-Apr-2022 |
andvar |
fix various typos, mainly in comments.
|
#
1.39 |
|
16-Feb-2022 |
andvar |
fix various typos, mainly in comments.
|
#
1.38 |
|
12-Feb-2022 |
riastradh |
sys: Fix various abuse of struct device internals.
Will help to make struct device opaque later.
|
#
1.37 |
|
05-Dec-2021 |
msaitoh |
s/sumary/summary/
|
#
1.36 |
|
17-Sep-2021 |
andvar |
some love to double letters (in comments).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.40 |
|
04-Apr-2022 |
andvar |
fix various typos, mainly in comments.
|
#
1.39 |
|
16-Feb-2022 |
andvar |
fix various typos, mainly in comments.
|
#
1.38 |
|
12-Feb-2022 |
riastradh |
sys: Fix various abuse of struct device internals.
Will help to make struct device opaque later.
|
#
1.37 |
|
05-Dec-2021 |
msaitoh |
s/sumary/summary/
|
#
1.36 |
|
17-Sep-2021 |
andvar |
some love to double letters (in comments).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.39 |
|
16-Feb-2022 |
andvar |
fix various typos, mainly in comments.
|
#
1.38 |
|
12-Feb-2022 |
riastradh |
sys: Fix various abuse of struct device internals.
Will help to make struct device opaque later.
|
#
1.37 |
|
05-Dec-2021 |
msaitoh |
s/sumary/summary/
|
#
1.36 |
|
17-Sep-2021 |
andvar |
some love to double letters (in comments).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.38 |
|
12-Feb-2022 |
riastradh |
sys: Fix various abuse of struct device internals.
Will help to make struct device opaque later.
|
#
1.37 |
|
05-Dec-2021 |
msaitoh |
s/sumary/summary/
|
#
1.36 |
|
17-Sep-2021 |
andvar |
some love to double letters (in comments).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.37 |
|
05-Dec-2021 |
msaitoh |
s/sumary/summary/
|
#
1.36 |
|
17-Sep-2021 |
andvar |
some love to double letters (in comments).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.36 |
|
17-Sep-2021 |
andvar |
some love to double letters (in comments).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.35 |
|
13-Aug-2021 |
andvar |
s/fame/frame in mvxpe_mib_def with assumption that it was not intentional typo.
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.34 |
|
02-Aug-2021 |
andvar |
fix various typos in comments and log messages.
|
Revision tags: thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
branches: 1.31.2; Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.33 |
|
05-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.32 |
|
04-Feb-2020 |
skrll |
Adopt <net/if_stats.h>
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.31 |
|
28-Dec-2019 |
gutteridge |
Fix typos in messages.
|
Revision tags: phil-wifi-20191119
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.30 |
|
15-Oct-2019 |
chs |
convert more KM_NOSLEEP to KM_SLEEP and remove code to handle failures.
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.29 |
|
01-Oct-2019 |
chs |
make this compile again: - remove unused config attributes - rename a local variable to avoid a name conflict
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.28 |
|
13-Sep-2019 |
msaitoh |
if_flags is neither int nor short. It's unsigned short.
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
branches: 1.19.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.27 |
|
28-May-2019 |
msaitoh |
Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.26 |
|
24-May-2019 |
msaitoh |
Whilespace fix. No functional change.
|
#
1.25 |
|
23-May-2019 |
msaitoh |
Whitespace fix (mainly tabify).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.24 |
|
23-May-2019 |
msaitoh |
No functional change: - Simplify MII structure initialization and reference. - u_int*_t -> uint*_t. - KNF
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.23 |
|
24-Apr-2019 |
msaitoh |
This driver uses MII(4) and have hook SIOC[GS]IFMEDIA which just pass to ifmedia_ioctl(), the hook is not required because ether_ioctl has it (if_ethersubr.c rev. 1.160). This driver might require some additional fixes for SIOCSIFMTU and other ioctl()s.
|
Revision tags: isaki-audio2-base
|
#
1.22 |
|
18-Mar-2019 |
msaitoh |
s/pakcet/packet/ in comment.
|
Revision tags: pgoyette-compat-20190127
|
#
1.21 |
|
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
|
Revision tags: pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
#
1.20 |
|
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
Revision tags: jdolecek-ncqfixes-base pgoyette-compat-0728 phil-wifi-base
|
#
1.19 |
|
26-Jun-2018 |
msaitoh |
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
Revision tags: pgoyette-compat-0625
|
#
1.18 |
|
01-Jun-2018 |
maxv |
Rename
M_CSUM_DATA_IPv6_HL -> M_CSUM_DATA_IPv6_IPHL M_CSUM_DATA_IPv6_HL_SET -> M_CSUM_DATA_IPv6_SET
Reduces the diff against IPv4. Also, clarify the definitions.
|
Revision tags: netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
branches: 1.17.14; 1.17.16; Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|
#
1.17 |
|
15-Dec-2016 |
ozaki-r |
Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input
The benefits of the change are: - We can reduce codes - We can provide the same behavior between drivers - Where/When if_ipackets is counted up - Note that some drivers still update packet statistics in their own way (periodical update) - Moved bpf_mtap run in softint - This makes it easy to MP-ify bpf
Proposed on tech-kern and tech-net
|
#
1.16 |
|
08-Dec-2016 |
ozaki-r |
Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
#
1.15 |
|
20-Oct-2016 |
skrll |
Fix regisers typo
|
#
1.14 |
|
10-Oct-2016 |
kiyohara |
The bus_dmamap_sync(PREREAD) is unnecessary for sent mbuf. Moreover bus_dmamap_sync(POSTWRITE), before unload.
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.13 |
|
10-Jun-2016 |
ozaki-r |
branches: 1.13.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
#
1.12 |
|
13-Feb-2016 |
hikaru |
Make all packets are enqueued into queue 0. queue 7 is not default, it is caused by the filter tables. The fields are including queue number, not bitfields. So MVXPE_DF_QUEUE_ALL (b111) means queue 7.
And also, pass all unicast addresses if it is promisc mode. MVXPE_PXC_UPM is working in almost cases, but this change is needed for some cases; bridging frames through inter units, using products have consecutive MAC addresses.
|
#
1.11 |
|
13-Feb-2016 |
hikaru |
Fix typo in sysctls.
|
#
1.10 |
|
13-Feb-2016 |
hikaru |
Count up if_{opackets,oerrors,ierrors,collisions}. And also "MAC Transmit Error" is tx error, not rx.
|
#
1.9 |
|
13-Feb-2016 |
hikaru |
Style.
|
#
1.8 |
|
13-Feb-2016 |
hikaru |
Preserve rx csum bad flags.
|
#
1.7 |
|
13-Feb-2016 |
hikaru |
Fix mitake, disable SERDES error interrupts again.
|
#
1.6 |
|
13-Feb-2016 |
hikaru |
Don't use RXTX intr that is excess and requires another IRQ handler, and disable SERDES error interrupts.
|
#
1.5 |
|
13-Feb-2016 |
hikaru |
Correct bus_dmamap_sync operaion.
|
#
1.4 |
|
13-Feb-2016 |
hikaru |
Correct locks and missing breaks.
|
#
1.3 |
|
09-Feb-2016 |
ozaki-r |
Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
Revision tags: nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
#
1.2 |
|
03-Jun-2015 |
hsuenaga |
branches: 1.2.2; separate buffer management codes 'mvxpbm.c' from if_mvxpe.c.
the buffer management(ex. fill the rx descriptors/buffers) is done by H/W in ARMADA XP/380, and is done by S/W in ARMADA 370. the H/W BM support is not yet implemented, so all devices use the S/W management mode at this time.
|
#
1.1 |
|
03-May-2015 |
hsuenaga |
add new ethernet driver mvxpe for recent MARVELL's SoC after ARMADA/XP. this driver supports 'counter mode', and is disabled by default.
ARMADA SoC family has new ethernet controller acceleration mode called 'enhanced mode' or 'counter mode.' it seems that backward compatibility mode used by if_mvgbe is still working, but the specification of the old mode is completely disappeared from SoC's reference manual.
I tested the driver using MIRABOX(ARMADA/370).
|