bc41234104
This is a driver for the Synopsys DesignWare MAC. It should work with the "DesignWare Cores Ethernet Quality-of-Service" versions 4.x and 5.x. This driver uses a zero-copy strategy, meaning that the hardware reads and writes data directly from/to packet fragment buffers provided by the network subsystem without first copying the data into a dedicated DMA bounce buffer. Platform specific setup is necessary for the hardware to work. Currently, only the STM32H7X series is implemented and tested. While this part needs refinement, this driver performs better and uses far less code space than the HAL-based alternative. Not yet implemented: - MDIO (it is WIP, currently relying on default PHY config) - PTP support - VLAN support - various hardware offloads (when available) Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
# Synopsys DesignWare MAC configuration options
|
|
|
|
# Copyright (c) 2021 BayLibre SAS
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
DT_COMPAT_SNPS_DESIGNWARE_ETHERNET := snps,designware-ethernet
|
|
|
|
menuconfig ETH_DWMAC
|
|
bool "Synopsys DesignWare MAC driver"
|
|
depends on NET_BUF_FIXED_DATA_SIZE
|
|
depends on (SOC_SERIES_STM32H7X && !ETH_STM32_HAL) || MMU
|
|
default y if $(dt_compat_enabled,$(DT_COMPAT_SNPS_DESIGNWARE_ETHERNET))
|
|
help
|
|
This is a driver for the Synopsys DesignWare MAC, also referred to
|
|
as "DesignWare Cores Ethernet Quality-of-Service". Hardware versions
|
|
4.x and 5.x are supported.
|
|
|
|
Platform specific glue support is also required. This driver is
|
|
currently available on targets using the STM32H7X series as an
|
|
alternative to the eth_stm32_hal driver. Support for a generic DT
|
|
and MMU based platform is also provided.
|
|
|
|
Not yet implemented:
|
|
- MDIO (currently relying on default PHY config)
|
|
- PTP support
|
|
- VLAN support
|
|
- various hardware offloads (when available)
|
|
|
|
if ETH_DWMAC
|
|
|
|
config ETH_DWMAC_STM32H7X
|
|
bool
|
|
depends on SOC_SERIES_STM32H7X
|
|
select NOCACHE_MEMORY
|
|
default y
|
|
|
|
config ETH_DWMAC_MMU
|
|
bool
|
|
depends on MMU
|
|
default y
|
|
|
|
config DWMAC_NB_TX_DESCS
|
|
int "Number of entries in the transmit descriptor ring"
|
|
default 16
|
|
range 4 128
|
|
help
|
|
A higher number allows for more packets to be queued which may
|
|
improve throughput, but that requires more transient memory.
|
|
However there must be enough descriptors to hold all fragments
|
|
of a full-size packet to be transmitted or the packet will be
|
|
dropped.
|
|
|
|
Fragment size is influenced by CONFIG_NET_BUF_DATA_SIZE.
|
|
|
|
config DWMAC_NB_RX_DESCS
|
|
int "Number of entries in the receive descriptor ring"
|
|
default 16
|
|
range 4 128
|
|
help
|
|
Received packets are spread across the required number of fragment
|
|
buffers. Each RX fragment has a size of CONFIG_NET_BUF_DATA_SIZE.
|
|
There is one descriptor entry per fragment.
|
|
|
|
A higher number allows for more packets to be received without
|
|
immediate intervention from the CPU but requires more transient
|
|
memory. A smaller number increases the risk of an overflow and
|
|
dropped packets.
|
|
|
|
endif # ETH_DWMAC
|