Commit graph

1306 commits

Author SHA1 Message Date
Fin Maaß
38fb41a9cb drivers: ethernet: phy_mii: check condition explicitly
check condition explicitly.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-17 16:08:22 +02:00
Fin Maaß
6838c57679 drivers: ethernet: phy_mii: add support for disabling auto-neg
Adds support for disabling auto-negotiation.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-17 16:08:22 +02:00
Fin Maaß
f24426b31f drivers: net: ethernet: phy: add support for disabling auto-negotiation
Add option in enum phy_link_speed to disable auto-negotiation.
This allows PHY drivers to support disabling auto-negotiation.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-17 16:08:22 +02:00
Fin Maaß
847be49dbd drivers: ethernet: phy: add common functions for PHYs
This commit adds common functions for PHYs to the mii driver.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-17 16:08:22 +02:00
Fin Maaß
b051c7e550 drivers: ethernet: phy: remove unused/wrong cfg_link
if we can't use cfg_link to (re-)configure the link,
we don't need it and shouldn't have it.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-17 16:08:22 +02:00
Venkatesh Odela
b052a086a4 ethernet: phy: dp83867: Add support for configurable internal RGMII delays
Add support for setting RGMII RX and TX internal delays via DT properties:
`ti,rx-internal-delay` and `ti,tx-internal-delay`.

Signed-off-by: Venkatesh Odela <venkatesh.odela@amd.com>
2025-06-17 16:07:42 +02:00
Benjamin Cabé
c2d52c7f4b drivers: ethernet: remove stray semicolon vnd,ethernet
Fix trivial typo

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-06-16 10:43:20 -04:00
Fin Maaß
c481fedc5b drivers: ethernet: phy: only use one worker
only use one worker for monitoring and
autoneg.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-13 10:12:46 -07:00
Fin Maaß
b0048e34cd drivers: ethernet: phy: use kernel timepoint api
use kernel timepoint api.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-13 10:12:46 -07:00
Adib Taraben
9b8be4971e drivers: ethernet: nxp: timestamping to all potential packets.
add timestamping on Tx to packets marked for timestamping
add timestamping on Rx to all packets for later use
fix race condidition on adding timestamp when sending delay_req

Signed-off-by: Adib Taraben <theadib@gmail.com>
2025-06-13 10:40:49 -04:00
Fin Maaß
242d348fca drivers: ethernet: stm32: stop hal before config
make sure the hal is stopped, before
configuring the link. The phy can change the
speed without notifying a link down in between.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-13 07:39:42 +02:00
Kevin Shaju
7e56d134c2 drivers: net: phy: Add tja11xx driver
Adds the c22 tja11xx driver.

Signed-off-by: Kevin Shaju <kevin.shaju@accenture.com>
2025-06-12 15:04:32 -07:00
Fin Maaß
dfb5a31b3e drivers: ethernet: phy: add dt prop for default speeds
add dt prop for default speeds, that the phy is
configured on init by default.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-12 11:44:46 +02:00
Stanislav Poboril
34f9cd9490 drivers: ethernet: eth_nxp_enet_qos: increase default buffer descriptors
Increased the default number of TX and RX buffer descriptors from 4 to
16. Since the current default buffer size (CONFIG_NET_BUF_DATA_SIZE) is
128, increasing the number of RX buffers is needed to be able to receive
at least one frame of a maximum size split between multiple buffers.

The default number of TX buffers was increased to match the number of RX
buffers and to be able to transmit large frames with many fragments.

Added build-time configuration validation to ensure that the combined
size of all RX buffers is sufficient to receive a maximum-sized Ethernet
frame.

Signed-off-by: Stanislav Poboril <stanislav.poboril@nxp.com>
2025-06-11 16:23:37 -07:00
Stanislav Poboril
4b06f2306d drivers: ethernet: eth_nxp_enet_qos: reassemble split frames
DMA copies frames which cannot fit into a single buffer into
multiple receive buffers. Updated the receiving code to combine
these buffers into a net_pkt with multiple fragments.

This allows the driver to handle larger Ethernet frames that
span across multiple DMA buffers.

Signed-off-by: Stanislav Poboril <stanislav.poboril@nxp.com>
2025-06-11 16:23:37 -07:00
Stanislav Poboril
f2378172d5 drivers: ethernet: eth_nxp_enet_qos: fix rx buffer processing order
Always reading from descriptor with index 0 could cause processing
of the buffers in a different order than they were received. Fixed by
reading from the next unprocessed position in the ring of descriptors
instead.

Fixed unused variable warnings.

Signed-off-by: Stanislav Poboril <stanislav.poboril@nxp.com>
2025-06-11 16:23:37 -07:00
Fin Maaß
f569bb523d drivers: ethernet: phy_mii: restart autoneg after phy_configure_link
make sure that autonegotiation is restarted, after
changing the speeds. Also make sure to only write
the changed registers, as mdio is pretty slow.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-11 10:21:21 -07:00
Fin Maaß
b1483a69d6 drivers: ethernet: phy_mii: correct indentation
correct indentation

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-11 10:21:21 -07:00
Fin Maaß
ed4d421ace drivers: ethernet: remove phy related configs from eth config
remove phy related configs from eth config.
phy related configs chould go directly into the phy.
Most ethernet drivers didn't support the now removed
functions yet. Users should instead use `phy_configure_link()`
together with the `net_eth_get_phy()` function.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-11 10:17:37 -07:00
Fin Maaß
c169ac07a0 drivers: ethernet: remove get configs that are unused
remove get configs that are unused by the
ethernet mgmt api.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-11 10:17:37 -07:00
Fin Maaß
7505ef3f04 drivers: ethernet: phy: mii: simplify if all are fixed link
If all instances are fixed link, remove code that is
not needed for that.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-06-06 08:42:41 +02:00
Derek Snell
c65100b521 drivers: ethernet: eth_nxp_enet_qos_mac: remove unused variables
Read MAC registers to clear flags without using variables to avoid
compiler warnings.

Signed-off-by: Derek Snell <derek.snell@nxp.com>
2025-06-06 08:41:29 +02:00
Adib Taraben
293b8d6003 drivers: enet: eth_nxp_enet_qos_mac: handle errors in RX queue worker
Handle each error individually.
Do not skip RX loop on first error.
Revise DMA buf size to CONFIG_NET_BUF_DATA_SIZE.

Signed-off-by: Adib Taraben <theadib@gmail.com>
2025-06-02 22:10:27 +02:00
Tu Nguyen Van
0e8fdf6b56 drivers: ethernet: adapt code with new RTD 2.0.1
update members in struct Netc_Eth_Ip_StationInterfaceConfigType
in RTD 2.0.1 for both psi and vsi driver code.

Netc_Eth_Ip_VsiToPsiMsgType need to relocate nocache section
in RTD 2.0.1

Signed-off-by: Tu Nguyen Van <tu.nguyenvan@nxp.com>
2025-05-28 05:54:38 +02:00
Yangbo Lu
2da6257bec drivers: eth_nxp_enet: support handling ENET timestamp events
The ENET timestamp events may be via ENET IRQ rather than ENET
timer IRQ handled in ptp driver for some platforms like i.MX RT1060.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-05-21 08:02:22 +02:00
Frank Duerr
3cd795ba59 drivers: ethernet: fixed calling mutex from ISR
The NXP ENET driver used a mutex inside an ISR.
Since mutexes are not allowed in ISR, an assertion had been triggered.
The mutex is not required since a semaphore ensures sequential writing
(in ISR) and subsequent reading (after eth_wait_for_ptp_ts()).
Fixed by removing calls to mutex.

Signed-off-by: Frank Duerr <frank.duerr@ipvs.uni-stuttgart.de>
2025-05-16 19:00:38 +02:00
Fin Maaß
003aa520d0 drivers: ethernet: litex: add length to log
log the length, if obtaining a rx buffer fails.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-05-12 16:47:41 +02:00
Alberto Escolar Piedras
f01a96c2f3 drivers/ethernet/eth_native_tap: Avoid reusing tag name
Don't use the same name for the structure instance and type.
As that is a violation of MISRA-C 2012 rule 5.7.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-05-12 09:47:59 +02:00
Seppo Takalo
673853ae5a drivers: eth: native_tap: Init MAC properly
Set static or random MAC before calling net_linkaddr_set().

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
2025-05-08 15:56:27 +02:00
Dean Sellers
be894849f1 drivers: ethernet: enc28j60: Add set config for runtime macaddr
Allow runtime setting of the MAC address for this driver.

Signed-off-by: Dean Sellers <dsellers@evos.com.au>
2025-05-07 11:44:50 +02:00
Immo Birnbaum
3dcc1d2dd6 drivers: ethernet: xlnx_gem: add set_config function
Add an implementation for the Ethernet API's set_config
hook. Supported features:
- change MAC address at run-time
- enable/disable promiscuous mode if enabled at system level

Signed-off-by: Immo Birnbaum <mail@birnbaum.immo>
2025-05-07 03:59:23 +02:00
Robert Hancock
3a0f26f02a drivers: ethernet: vsc8541: add RGMII clock delay configuration
As the code noted, the RGMII RX and TX clock delay values may need to
change depending on the MAC configuration or the PCB layout. Add
properties to allow configuring these in the device tree, defaulting to
the previous hard-coded values if not present.

Signed-off-by: Robert Hancock <robert.hancock@calian.com>
2025-05-05 21:57:05 +02:00
Fin Maaß
1736736454 drivers: ethernet: stm32: remove asserts and move var initialization
remove unneded asserts and move variables initialization

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-05-02 15:20:45 +02:00
Fin Maaß
745d76292a eth: stm32: streamline eth_initialize function
streamline eth_initialize function by removing
redundant variable assignments

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-05-02 15:20:45 +02:00
Fin Maaß
bccd8abe0e ethernet: stm32: use HAL_ETH_SetMACFilterConfig
use HAL_ETH_SetMACFilterConfig for all soc, that
support hal api v2

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-05-02 15:20:45 +02:00
Fin Maaß
6978f24e61 ethernet: stm32: use DEVICE_DT_GET(STM32_CLOCK_CONTROL_NODE)
use DEVICE_DT_GET(STM32_CLOCK_CONTROL_NODE) directly.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-05-02 15:20:45 +02:00
Fin Maaß
d1f63abc78 ethernet: stm32: use DT_INST_*
use DT_INST_* where possible

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-05-02 15:20:45 +02:00
Yangbo Lu
383d4f499e drivers: eth_nxp_enet: fix data share with ptp driver
The enet handle in mac driver was not shared with ptp driver
properly. This was causing wrong TX timestamp.
This patch is to fix it.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-05-02 09:17:12 +02:00
Cliff Brake
346bd7d16d drivers: eth/mdio: esp32: enable GPIO0 for phy clock out
Currently, GPIO16/17 are supported for Ethernet phy
clock out, but some boards are also using GPIO0.
This change allows GPIO0 to be configured.

Signed-off-by: Cliff Brake <cbrake@bec-systems.com>
2025-05-01 09:34:13 +02:00
Fin Maaß
3a195a08da drivers: net: ethernet: change ETHERNET_LINK_*BASE_T
change ETHERNET_LINK_*BASE_T to ETHERNET_LINK_*BASE.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-04-28 09:22:09 +01:00
Fin Maaß
203ca6fcde drivers: ethernet: phy: rename LINK_*_*BASE_T
rename  LINK_*_*BASE_T to  LINK_*_*BASE

speed options for ethernet drivers shouldn't end with a _T, implying
that ethernet is only supported via a twisted pair cable.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-04-28 09:22:09 +01:00
Fin Maaß
780379e333 drivers: nxp_enet: move phy_link_callback_set()
move phy_link_callback_set() to the iface init,
so we don't have to manually check the link state,
as phy_link_callback_set() will also invoke the callback.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-04-25 18:58:35 +02:00
Jukka Rissanen
f3cd029cce drivers: eth: e1000: Add Ethernet statistics support
Support e1000 driver Ethernet statistics if relevant config
options are enabled.

Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
2025-04-24 20:27:58 +02:00
Yangbo Lu
12ccaa1b46 drivers: ethernet: dsa_nxp_imx_netc: adapt to new DSA framework
Adapted to use new DSA framework. And related platforms converted
in samples too.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-04-24 01:26:46 +02:00
Yangbo Lu
2967b8db7e drivers: ethernet: eth_nxp_imx_netc: support no-tag type DSA conduit
Added support for no-tag type DSA conduit.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-04-24 01:26:46 +02:00
Yangbo Lu
f0b1cb578f net: dsa: introduce new DSA framework
The new DSA framework purpose and changes are as below.

- Aligned to Linux DSA framework which has been already mature framework
  for many years, For now in zephyr, the DSA components were splited
  as: switch, port, master(not need driver file for now), slave, and tag.
  Seperated drivers were used for maintaining and developing new
  features.

- The unified dts bindings (aligned to linux) were supported. The port
  driver would parse DTS to decide the port type (master port, slave
  port, or cpu port) to set up the switch. All the ports registered as
  standard ethernet devices. (dsa port and dsa switch tree was not
  supported.)

- How to add DSA device driver based on the framework? All the device
  driver needing to do is providing dsa_spi implementation and private
  data, and calling below initialization.

    DSA_INIT_INSTANCE(n, _dapi, data)

- For switch tag case, recv/xmit helpers in dsa_api could be used for
  taging/untagging. No modified ethernet drivers.
  For no-tag type case, ethernet driver of master port should support
  packet injection/extraction for slave ports leaving NULL recv/xmit.

The dsa_nxp_imx_netc.c driver will be the first example of the new DSA
framework.

The future work for DSA will be supporting bridge for ports. We may align
Linux to give users two options to use DSA device:

- Standalone mode: the switch ports work as regular ethernet ports.

- Bridge mode: switch mode with virtual bridge device which could be
  assigned IP address.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-04-24 01:26:46 +02:00
Yangbo Lu
b22db75cec include: ethernet: rename dsa master/slave to conduit/user
Renamed dsa master/slave to conduit/user for capabilities.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-04-24 01:26:46 +02:00
Yangbo Lu
018a718e12 net: dsa: make current DSA core driver obsolete
Current DSA TX/RX way was hard-coded in ethernet devices driver
with ETH_DSA_SUPPORT and NET_DSA.
This patch is to make such way obsolete, as we actually will support
a better DSA framework to handle this in NET/DSA core driver.
To make legacy devices not affected, below options are used instead.

- ETH_DSA_SUPPORT_DEPRECATED
- NET_DSA_DEPRECATED

Once the legacy devices are converted to new DSA framework, this code
could be removed.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-04-24 01:26:46 +02:00
Fin Maaß
3237fd2a54 drivers: ethernet: atmel_sam_gmac: move net_if_carrier_off()
move net_if_carrier_off() before
phy_link_callback_set() to ensure the carrier is
not truned off, when the link is already up.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-04-23 10:03:55 +02:00
Fin Maaß
ddfb3909f6 drivers: ethernet: nxp_imx_netc_psi: move net_if_carrier_off()
move net_if_carrier_off() before
phy_link_callback_set() to ensure the carrier is
not truned off, when the link is already up.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-04-23 10:03:55 +02:00