# 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, sich 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_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