mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00

The lan969x switch device supports manual frame injection and extraction to and from the switch core, using a number of injection and extraction queues. This technique is currently supported, but delivers poor performance compared to Frame DMA (FDMA). This lan969x implementation of FDMA, hooks into the existing FDMA for Sparx5, but requires its own RX and TX handling, as lan969x does not support the same native cache coherency that Sparx5 does. Effectively, this means that we are going to use the DMA mapping API for mapping and unmapping TX buffers. The RX loop will utilize the page pool API for efficient RX handling. Other than that, the implementation is largely the same, and utilizes the FDMA library for DCB and DB handling. Some numbers: Manual injection/extraction (before this series): // iperf3 -c 1.0.1.1 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.02 sec 345 MBytes 289 Mbits/sec sender [ 5] 0.00-10.06 sec 345 MBytes 288 Mbits/sec receiver FDMA (after this series): // iperf3 -c 1.0.1.1 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.03 sec 1.10 GBytes 940 Mbits/sec sender [ 5] 0.00-10.07 sec 1.10 GBytes 936 Mbits/sec receiver Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com> Signed-off-by: Daniel Machon <daniel.machon@microchip.com> Link: https://patch.msgid.link/20250113-sparx5-lan969x-switch-driver-5-v2-5-c468f02fd623@microchip.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
30 lines
1.1 KiB
Makefile
30 lines
1.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Makefile for the Microchip Sparx5 network device drivers.
|
|
#
|
|
|
|
obj-$(CONFIG_SPARX5_SWITCH) += sparx5-switch.o
|
|
|
|
sparx5-switch-y := sparx5_main.o sparx5_packet.o \
|
|
sparx5_netdev.o sparx5_phylink.o sparx5_port.o sparx5_mactable.o sparx5_vlan.o \
|
|
sparx5_switchdev.o sparx5_calendar.o sparx5_ethtool.o sparx5_fdma.o \
|
|
sparx5_ptp.o sparx5_pgid.o sparx5_tc.o sparx5_qos.o \
|
|
sparx5_vcap_impl.o sparx5_vcap_ag_api.o sparx5_tc_flower.o \
|
|
sparx5_tc_matchall.o sparx5_pool.o sparx5_sdlb.o sparx5_police.o \
|
|
sparx5_psfp.o sparx5_mirror.o sparx5_regs.o
|
|
|
|
sparx5-switch-$(CONFIG_SPARX5_DCB) += sparx5_dcb.o
|
|
sparx5-switch-$(CONFIG_DEBUG_FS) += sparx5_vcap_debugfs.o
|
|
|
|
sparx5-switch-$(CONFIG_LAN969X_SWITCH) += lan969x/lan969x_regs.o \
|
|
lan969x/lan969x.o \
|
|
lan969x/lan969x_calendar.o \
|
|
lan969x/lan969x_vcap_ag_api.o \
|
|
lan969x/lan969x_vcap_impl.o \
|
|
lan969x/lan969x_rgmii.o \
|
|
lan969x/lan969x_fdma.o
|
|
|
|
# Provide include files
|
|
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap
|
|
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|