History log of /freebsd-current/sys/dev/neta/if_mvneta.c
Revision Date Author Comments
# be82b3a0 26-Dec-2023 Emmanuel Vadot <manu@FreeBSD.org>

clk: Move clock code in dev/clk

We've removed kernel option EXT_RESOURCES almost two years ago.
While it was ok to have some code under a common 'extres' subdirectory
at first, we now have a lot of consumer of it and we made it mandatory
so no need to have it under a cryptic name.

Reviewed by: mhorne
Sponsored by: Beckhoff Automation GmbH & Co. KG
Differential Revision: https://reviews.freebsd.org/D43191


# fdafd315 24-Nov-2023 Warner Losh <imp@FreeBSD.org>

sys: Automated cleanup of cdefs and other formatting

Apply the following automated changes to try to eliminate
no-longer-needed sys/cdefs.h includes as well as now-empty
blank lines in a row.

Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/
Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/
Remove /\n+#if.*\n#endif.*\n+/
Remove /^#if.*\n#endif.*\n/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/

Sponsored by: Netflix


# 685dc743 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: one-line .c pattern

Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/


# 992fa62b 17-Aug-2022 Justin Hibbits <jhibbits@FreeBSD.org>

Mechanically convert neta(4) to IfAPI

Reviewed by: mw
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D37825


# 06c30b2c 06-Sep-2022 Albert Jakieła <aja@semihalf.com>

mvneta: Use clkgen API on armv7

With addition of clkgen devices to the Armada38x we no longer
need to rely on get_tclk() to get the device frequency.
Leave it as a fallback, just in case.

Reviewed by: manu
Obtained from: Semihalf
Differential Revision: https://reviews.freebsd.org/D36465


# 97ecdc00 18-Aug-2022 Kornel Dulęba <kd@FreeBSD.org>

neta: Fix MTU change sequence

The IFF_DRV_RUNNING flag is used to see if the interface needs
to be temporarily brought down during MTU change sequence.
The problem here is that this flag is cleared in mvneta_stop_locked,
resulting in the reinitialization logic never being executed after
MTU has been changed.
Fix that by saving the flag value before the interface is brought down.

Reported by: Jérôme Tomczyk <jerome.tomczyk@stormshield.eu>
Approved by: mw(mentor)
Obtained from: Semihalf
Sponsored by: Stormshield
MFC after: 2 weeks


# 8933f7d6 19-Apr-2022 John Baldwin <jhb@FreeBSD.org>

Remove unused mdio_devclass.


# 3e38757d 19-Apr-2022 John Baldwin <jhb@FreeBSD.org>

Remove unused miibus_devclass and miibus_fdt_devclass.


# fcd0ea3a 13-Apr-2022 John Baldwin <jhb@FreeBSD.org>

if_mvneta: Use __diagused for a variable only used in KASSERT().


# 19ae05aa 08-Apr-2022 Gordon Bergling <gbe@FreeBSD.org>

neta: Fix a typo in a source code comment

- s/maintance/maintenance/

MFC after: 3 days


# 27f889cf 08-Apr-2022 John Baldwin <jhb@FreeBSD.org>

if_mvneta: Remove unused variables.


# 28ea3785 05-Apr-2022 Warner Losh <imp@FreeBSD.org>

neta: remove write only variable

Sponsored by: Netflix


# 592fcf6c 02-Apr-2022 Gordon Bergling <gbe@FreeBSD.org>

neta: Fix a typo in a source code comment

- s/immediatly/immediately/

MFC after: 3 days


# 231237bb 22-Mar-2022 Sebastien Bini <sebastien.bini@stormshield.eu>

neta: split fixed and in-band link status configuration

Fixed-link mode requires different handling than the in-band
managed connection. Update interrupt, link-up/down and
autonegotiation settings for the former.

Reviewed by: mw
MFC after: 1 week
Obtained from: Stormshield
Differential Revision: https://reviews.freebsd.org/D34394


# b4dda138 04-Jan-2022 Warner Losh <imp@FreeBSD.org>

neta: clk code ifdef'd aarch64

So #ifdef the clk.h include aarch64. Otherwise the right kernel options
aren't always present.

Sponsored by: Netflix


# ed166a01 04-Jan-2022 Mark Johnston <markj@FreeBSD.org>

mvneta: Unconditionally print an error message if mii_attach() fails

The error message is useful for diagnosing mvneta_attach() failures.

MFC after: 1 week


# 4885d6f3 23-Aug-2021 Hubert Mazur <hum@semihalf.com>

if_mvneta: Use clock frequency

Make neta use frequency obtained from clock, instead of
hardcoded one. Use default frequency in case of clock
device failure. Remove unnecessary function calls
to obtain frequency and use cached one instead.

Reviewed by: manu
Obtained from: Semihalf
Differential revision: https://reviews.freebsd.org/D32336


# ea68079f 19-Oct-2021 Arnaud Ysmal <arnaud.ysmal@stormshield.eu>

Suport Q-in-Q for mvneta.


# 25adbd0b 28-Sep-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

neta: cleanup warning

mvneta_find_ethernet_prop_switch() is file-local static to
if_mvneta_fdt.c. Normally we would not need a function declararion
but in case MVNETA_DEBUG is set it becomes public. Move the
function declaration from if_mvneta.c to if_mvneta_fdt.c to avoid
a warning during each compile.


# 5572fda3 14-Sep-2021 Wojciech Macek <wma@FreeBSD.org>

mvneta: split to FDT and generic part

Split some missing routines.

Obtained from: Semihalf


# b831f9ce 13-Sep-2021 Hubert Mazur <hum@semihalf.com>

if_mvneta: Build the driver as a kernel module

Fix device detach and attach routine. Add required Makefile
to build as a module. Remove entry from GENERIC, since now
it can be loaded automatically.

Tested on EspressoBin.

Obtained from: Semihalf
Reviewed by: manu
Differential revision: https://reviews.freebsd.org/D31581


# ba4d9d9d 14-Sep-2021 Wojciech Macek <wma@FreeBSD.org>

Revert "if_mvneta: Build the driver as a kernel module"

This reverts commit bcf5c7a8b1dcdcd5f27c1aa694f66208dc07a0dd.


# bcf5c7a8 13-Sep-2021 Hubert Mazur <hum@semihalf.com>

if_mvneta: Build the driver as a kernel module

Fix device detach and attach routine. Add required Makefile
to build as a module. Remove entry from GENERIC, since now
it can be loaded automatically.

Tested on EspressoBin.

Obtained from: Semihalf
Reviewed by: manu
Differential revision: https://reviews.freebsd.org/D31581


# 6e93bdff 12-Sep-2021 Wojciech Macek <wma@FreeBSD.org>

Revert "if_mvneta: Build the driver as a kernel module"

This reverts commit 41b0190cc404e21cb8b430602eabfedc20107471.


# 41b0190c 13-Sep-2021 Hubert Mazur <hum@semihalf.com>

if_mvneta: Build the driver as a kernel module

Fix device detach and attach routine. Add required Makefile
to build as a module. Remove entry from GENERIC, since now
it can be loaded automatically.

Tested on EspressoBin.

Obtained from: Semihalf
Reviewed by: manu
Differential revision: https://reviews.freebsd.org/D31581


# 5438ef47 31-Aug-2021 Kornel Duleba <mindal@semihalf.com>

mvneta: Fix MTU update sequence

After MTU is updated we might start using allocating RX buffers from different pool. (MJUM9BYTES vs MCLBYTES)
Because of that we need to update the RX buffer size in hardware.
Previously it was done only when the interface was up, which is incorrect since MTU can be changed at any time.

Differential revision: https://reviews.freebsd.org/D31724
Sponsored by: Stormshield
Obtained from: Semihalf
MFC after: 2 weeks
Reviewed by: wma


# 109260d2 09-Jan-2021 Mark Johnston <markj@FreeBSD.org>

mvneta: Acquire the softc lock before clearing the MIB

Reported by: Andrei Martin <andrei.cos.martin@gmail.com>
MFC with: caf552a60719


# caf552a6 04-Jan-2021 Mark Johnston <markj@FreeBSD.org>

mvneta: Fix 64-bit MIB reads

It appears we must read MIB values as 2 4-byte words, lower address
first. A single 8-byte MIB read returns the value with the lower 4
bytes copied into the upper 4 bytes, resulting in bogus byte counter
values.

Reviewed by: mw
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (Netgate)
Differential Revision: https://reviews.freebsd.org/D27870


# acdc9154 01-Aug-2020 Marcin Wojtas <mw@FreeBSD.org>

Fix TX csum handling in if_mvneta

The mvneta device requires MVNETA_TX_CMD_L4_CHECKSUM_NONE bit to be set in the tx descriptor is checksum not required. However, mvneta_tx_set_csumflag() is not setting this flag currently, causing the hardware to randomly corrupt IP header during transmission.

This affects injected IPv4 packets that skips kernel IP stack processing (e.g. DHCP), as well as all IPv6 packets, since the driver currently does not offload csum for IPv6.

The fix is to remove all the early return paths from mvneta_tx_set_csumflag() which do not set the MVNETA_TX_CMD_L4_CHECKSUM_NONE flag.

PR: 248306
Submitted by: Mike Cui <cuicui@gmail.com>
Reported by: Mike Cui <cuicui@gmail.com>


# 7029da5c 26-Feb-2020 Pawel Biernacki <kaktus@FreeBSD.org>

Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)

r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are
still not MPSAFE (or already are but aren’t properly marked).
Use it in preparation for a general review of all nodes.

This is non-functional change that adds annotations to SYSCTL_NODE and
SYSCTL_PROC nodes using one of the soon-to-be-required flags.

Mark all obvious cases as MPSAFE. All entries that haven't been marked
as MPSAFE before are by default marked as NEEDGIANT

Approved by: kib (mentor, blanket)
Commented by: kib, gallatin, melifaro
Differential Revision: https://reviews.freebsd.org/D23718


# 73f20bb3 08-Feb-2020 Marcin Wojtas <mw@FreeBSD.org>

Implement jumbo frame support in mvneta driver

This patch introduces processing of the frames
up to 9kB by the mvneta driver. Some versions of
this NIC limit TX checksum offloading, depending
on the frame size, so add appropriate handling
of this feature.

Submitted by: Kornel Duleba
Obtained from: Semihalf
Sponsored by: Stormshield
Differential Revision: https://reviews.freebsd.org/D23225


# 3599e81c 08-Feb-2020 Marcin Wojtas <mw@FreeBSD.org>

Destroy RX DMA tag on detach in mvneta driver

This patch fixes deinitialization sequence of the mvneta
driver by adding missing bus_dma_tag_destroy call.

Submitted by: Kornel Duleba <mindal@semihalf.com>
Obtained from: Semihalf
MFC after: 1 week
Sponsored by: Stormshield


# 0fd68d72 22-Mar-2019 Marcin Wojtas <mw@FreeBSD.org>

Update mvneta/e6000sw for new DSA Device Tree Bindings

In the latest Linux kernel revisions the DSA (Distributed
Switch Architecture) device tree binding was changed.
Instead of the top level dsa@ node, the switch and its
ports is represented as a child node of the mdio bus.
With that other modifications were added, such as
relation with the ethernet port of the SoC. Adjust
e6000sw etherswitch and mvneta drivers to that.

Tested on Armada 3720 EspressoBin and Armada 388 Clearfog Pro boards.

Submitted by: Bert JW Regeer <xistence@0x58.com>
Reviewed by: manu
Differential Revision: https://reviews.freebsd.org/D19036


# e13a20da 14-Aug-2018 Luiz Otavio O Souza <loos@FreeBSD.org>

Disable the auto negotiation if the port is set to fixed-link.

Tested on SG-3100 (ARMADA38X) and Espresso.bin (A37x0). Fixes the network
on espresso.bin.

Sponsored by: Rubicon Communications, LLC (Netgate)


# 3bc4bd5e 28-Sep-2017 Nick Hibma <n_hibma@FreeBSD.org>

Make this compile if NO_SYSCTL_DESCR is defined.

Defining a variable with the description and then only use it in the
SYSCTL declaration led to an unused variable warning. In the SYSCTL the
passed value is discarded using __DESCR.


# 40c2a6da 24-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Fix gcc compilation issues in the mvneta driver

Compiling mvneta driver with gcc unveiled two issues, that
required fixing.

Reported by: andrew
Obtained from: Semihalf


# e314ac07 09-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Add support for Armada 3700 in the NETA driver

This patch enables using NETA driver on Marvell Armada 3700 SoC
by introducing new compatible string, modifying clock source
obtaining and also excluding unnecessary parts.
The driver is added as a build option for arm64 platforms as well.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12258


# e7843f1d 09-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Store virtual address of buffer in mvneta_rx_ring

Now the virtual address of received buffer is taken from a software ring.
Thanks to this, we can use the NETA driver on 64 bits architecture and
avoid 32-bit buf_cookie descriptor field limitation.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12257


# db79a5f9 20-Jun-2017 Luiz Otavio O Souza <loos@FreeBSD.org>

Allow the use of extended media types with if_mvneta, so it can report 2.5G
speeds properly.

While here remove a couple of stray white spaces.

Sponsored by: Rubicon Communications, LLC (Netgate)


# a8d7fc4a 13-Jun-2017 Zbigniew Bodek <zbb@FreeBSD.org>

Introduce Armada 38x/XP network controller support

This patch contains a new driver for the network unit of Marvell
Armada 38x/XP SoCs, called NETA. This support was thoroughly tested
and optimised in terms of stability and performance. Additional
hardware features, like Buffer Management (BM) or Parser and Classifier
(PnC) will be progressively supported as needed.

Submitted by: Fabien Thomas <fabien.thomas@stormshield.eu>
Arnaud Ysmal <arnaud.ysmal@stormshield.eu>
Zbigniew Bodek <zbb@semihalf.com>
Michal Mazur <mkm@semihalf.com>
Bartosz Szczepanek <bsz@semihalf.com>
Marcin Wojtas <mw@semihalf.com>

Obtained from: Semihalf
Sponsored by: Stormshield (main development)
Netgate (cleanup and upstreaming)
Differential revision: https://reviews.freebsd.org/D10706