# 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_8021Q
	tristate
	select VLAN_8021Q
	help
	  Unlike the other tagging protocols, the 802.1Q config option simply
	  provides helpers for other tagging implementations that might rely on
	  VLAN in one way or another. It is not a complete solution.

	  Drivers which use these helpers should select this as dependency.

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/9477/9893 families of switches"
	help
	  Say Y if you want to enable support for tagging frames for the
	  Microchip 8795/9477/9893 families of 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_OCELOT
	tristate "Tag driver for Ocelot family of switches, using NPI port"
	depends on MSCC_OCELOT_SWITCH_LIB || \
		   (MSCC_OCELOT_SWITCH_LIB=n && COMPILE_TEST)
	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"
	depends on MSCC_OCELOT_SWITCH_LIB || \
	          (MSCC_OCELOT_SWITCH_LIB=n && COMPILE_TEST)
	select NET_DSA_TAG_8021Q
	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_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 NET_DSA_TAG_8021Q
	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
