# SPDX-License-Identifier: GPL-2.0-only
menuconfig NET_DSA
tristate "Distributed Switch Architecture"
depends on BRIDGE || BRIDGE=n
depends on HSR || HSR=n
depends on INET && NETDEVICES
select GRO_CELLS
select NET_SWITCHDEV
select PHYLINK
select NET_DEVLINK
imply NET_SELFTESTS
help
Say Y if you want to enable support for the hardware switches supported
by the Distributed Switch Architecture.
if NET_DSA
# Drivers must select the appropriate tagging format(s)
config NET_DSA_TAG_NONE
tristate "No-op tag driver"
help
Say Y or M if you want to enable support for switches which don't tag
frames over the CPU port.
config NET_DSA_TAG_AR9331
tristate "Tag driver for Atheros AR9331 SoC with built-in switch"
help
Say Y or M if you want to enable support for tagging frames for
the Atheros AR9331 SoC with built-in switch.
config NET_DSA_TAG_BRCM_COMMON
tristate
default n
config NET_DSA_TAG_BRCM
tristate "Tag driver for Broadcom switches using in-frame headers"
select NET_DSA_TAG_BRCM_COMMON
help
Say Y if you want to enable support for tagging frames for the
Broadcom switches which place the tag after the MAC source address.
config NET_DSA_TAG_BRCM_LEGACY
tristate "Tag driver for Broadcom legacy switches using in-frame headers"
select NET_DSA_TAG_BRCM_COMMON
help
Say Y if you want to enable support for tagging frames for the
Broadcom legacy switches which place the tag after the MAC source
address.
config NET_DSA_TAG_BRCM_PREPEND
tristate "Tag driver for Broadcom switches using prepended headers"
select NET_DSA_TAG_BRCM_COMMON
help
Say Y if you want to enable support for tagging frames for the
Broadcom switches which places the tag before the Ethernet header
(prepended).
config NET_DSA_TAG_HELLCREEK
tristate "Tag driver for Hirschmann Hellcreek TSN switches"
help
Say Y or M if you want to enable support for tagging frames
for the Hirschmann Hellcreek TSN switches.
config NET_DSA_TAG_GSWIP
tristate "Tag driver for Lantiq / Intel GSWIP switches"
help
Say Y or M if you want to enable support for tagging frames for the
Lantiq / Intel GSWIP switches.
config NET_DSA_TAG_DSA_COMMON
tristate
config NET_DSA_TAG_DSA
tristate "Tag driver for Marvell switches using DSA headers"
select NET_DSA_TAG_DSA_COMMON
help
Say Y or M if you want to enable support for tagging frames for the
Marvell switches which use DSA headers.
config NET_DSA_TAG_EDSA
tristate "Tag driver for Marvell switches using EtherType DSA headers"
select NET_DSA_TAG_DSA_COMMON
help
Say Y or M if you want to enable support for tagging frames for the
Marvell switches which use EtherType DSA headers.
config NET_DSA_TAG_MTK
tristate "Tag driver for Mediatek switches"
help
Say Y or M if you want to enable support for tagging frames for
Mediatek switches.
config NET_DSA_TAG_KSZ
tristate "Tag driver for Microchip 8795/937x/9477/9893 families of switches"
help
Say Y if you want to enable support for tagging frames for the
Microchip 8795/937x/9477/9893 families of switches.
config NET_DSA_TAG_OCELOT
tristate "Tag driver for Ocelot family of switches, using NPI port"
select PACKING
help
Say Y or M if you want to enable NPI tagging for the Ocelot switches
(VSC7511, VSC7512, VSC7513, VSC7514, VSC9953, VSC9959). In this mode,
the frames over the Ethernet CPU port are prepended with a
hardware-defined injection/extraction frame header. Flow control
(PAUSE frames) over the CPU port is not supported when operating in
this mode.
config NET_DSA_TAG_OCELOT_8021Q
tristate "Tag driver for Ocelot family of switches, using VLAN"
help
Say Y or M if you want to enable support for tagging frames with a
custom VLAN-based header. Frames that require timestamping, such as
PTP, are not delivered over Ethernet but over register-based MMIO.
Flow control over the CPU port is functional in this mode. When using
this mode, less TCAM resources (VCAP IS1, IS2, ES0) are available for
use with tc-flower.
config NET_DSA_TAG_QCA
tristate "Tag driver for Qualcomm Atheros QCA8K switches"
help
Say Y or M if you want to enable support for tagging frames for
the Qualcomm Atheros QCA8K switches.
config NET_DSA_TAG_RTL4_A
tristate "Tag driver for Realtek 4 byte protocol A tags"
help
Say Y or M if you want to enable support for tagging frames for the
Realtek switches with 4 byte protocol A tags, such as found in
the Realtek RTL8366RB.
config NET_DSA_TAG_RTL8_4
tristate "Tag driver for Realtek 8 byte protocol 4 tags"
help
Say Y or M if you want to enable support for tagging frames for Realtek
switches with 8 byte protocol 4 tags, such as the Realtek RTL8365MB-VC.
config NET_DSA_TAG_RZN1_A5PSW
tristate "Tag driver for Renesas RZ/N1 A5PSW switch"
help
Say Y or M if you want to enable support for tagging frames for
Renesas RZ/N1 embedded switch that uses an 8 byte tag located after
destination MAC address.
config NET_DSA_TAG_LAN9303
tristate "Tag driver for SMSC/Microchip LAN9303 family of switches"
help
Say Y or M if you want to enable support for tagging frames for the
SMSC/Microchip LAN9303 family of switches.
config NET_DSA_TAG_SJA1105
tristate "Tag driver for NXP SJA1105 switches"
select PACKING
help
Say Y or M if you want to enable support for tagging frames with the
NXP SJA1105 switch family. Both the native tagging protocol (which
is only for link-local traffic) as well as non-native tagging (based
on a custom 802.1Q VLAN header) are available.
config NET_DSA_TAG_TRAILER
tristate "Tag driver for switches using a trailer tag"
help
Say Y or M if you want to enable support for tagging frames at
with a trailed. e.g. Marvell 88E6060.
config NET_DSA_TAG_VSC73XX_8021Q
tristate "Tag driver for Microchip/Vitesse VSC73xx family of switches, using VLAN"
help
Say Y or M if you want to enable support for tagging frames with a
custom VLAN-based header.
config NET_DSA_TAG_XRS700X
tristate "Tag driver for XRS700x switches"
help
Say Y or M if you want to enable support for tagging frames for
Arrow SpeedChips XRS700x switches that use a single byte tag trailer.
endif