162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci
362306a36Sopenharmony_cimenuconfig NET_DSA
462306a36Sopenharmony_ci	tristate "Distributed Switch Architecture"
562306a36Sopenharmony_ci	depends on BRIDGE || BRIDGE=n
662306a36Sopenharmony_ci	depends on HSR || HSR=n
762306a36Sopenharmony_ci	depends on INET && NETDEVICES
862306a36Sopenharmony_ci	select GRO_CELLS
962306a36Sopenharmony_ci	select NET_SWITCHDEV
1062306a36Sopenharmony_ci	select PHYLINK
1162306a36Sopenharmony_ci	select NET_DEVLINK
1262306a36Sopenharmony_ci	imply NET_SELFTESTS
1362306a36Sopenharmony_ci	help
1462306a36Sopenharmony_ci	  Say Y if you want to enable support for the hardware switches supported
1562306a36Sopenharmony_ci	  by the Distributed Switch Architecture.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciif NET_DSA
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci# Drivers must select the appropriate tagging format(s)
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciconfig NET_DSA_TAG_NONE
2262306a36Sopenharmony_ci	tristate "No-op tag driver"
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  Say Y or M if you want to enable support for switches which don't tag
2562306a36Sopenharmony_ci	  frames over the CPU port.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciconfig NET_DSA_TAG_AR9331
2862306a36Sopenharmony_ci	tristate "Tag driver for Atheros AR9331 SoC with built-in switch"
2962306a36Sopenharmony_ci	help
3062306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for
3162306a36Sopenharmony_ci	  the Atheros AR9331 SoC with built-in switch.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciconfig NET_DSA_TAG_BRCM_COMMON
3462306a36Sopenharmony_ci	tristate
3562306a36Sopenharmony_ci	default n
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciconfig NET_DSA_TAG_BRCM
3862306a36Sopenharmony_ci	tristate "Tag driver for Broadcom switches using in-frame headers"
3962306a36Sopenharmony_ci	select NET_DSA_TAG_BRCM_COMMON
4062306a36Sopenharmony_ci	help
4162306a36Sopenharmony_ci	  Say Y if you want to enable support for tagging frames for the
4262306a36Sopenharmony_ci	  Broadcom switches which place the tag after the MAC source address.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciconfig NET_DSA_TAG_BRCM_LEGACY
4562306a36Sopenharmony_ci	tristate "Tag driver for Broadcom legacy switches using in-frame headers"
4662306a36Sopenharmony_ci	select NET_DSA_TAG_BRCM_COMMON
4762306a36Sopenharmony_ci	help
4862306a36Sopenharmony_ci	  Say Y if you want to enable support for tagging frames for the
4962306a36Sopenharmony_ci	  Broadcom legacy switches which place the tag after the MAC source
5062306a36Sopenharmony_ci	  address.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciconfig NET_DSA_TAG_BRCM_PREPEND
5362306a36Sopenharmony_ci	tristate "Tag driver for Broadcom switches using prepended headers"
5462306a36Sopenharmony_ci	select NET_DSA_TAG_BRCM_COMMON
5562306a36Sopenharmony_ci	help
5662306a36Sopenharmony_ci	  Say Y if you want to enable support for tagging frames for the
5762306a36Sopenharmony_ci	  Broadcom switches which places the tag before the Ethernet header
5862306a36Sopenharmony_ci	  (prepended).
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciconfig NET_DSA_TAG_HELLCREEK
6162306a36Sopenharmony_ci	tristate "Tag driver for Hirschmann Hellcreek TSN switches"
6262306a36Sopenharmony_ci	help
6362306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames
6462306a36Sopenharmony_ci	  for the Hirschmann Hellcreek TSN switches.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciconfig NET_DSA_TAG_GSWIP
6762306a36Sopenharmony_ci	tristate "Tag driver for Lantiq / Intel GSWIP switches"
6862306a36Sopenharmony_ci	help
6962306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for the
7062306a36Sopenharmony_ci	  Lantiq / Intel GSWIP switches.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciconfig NET_DSA_TAG_DSA_COMMON
7362306a36Sopenharmony_ci	tristate
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciconfig NET_DSA_TAG_DSA
7662306a36Sopenharmony_ci	tristate "Tag driver for Marvell switches using DSA headers"
7762306a36Sopenharmony_ci	select NET_DSA_TAG_DSA_COMMON
7862306a36Sopenharmony_ci	help
7962306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for the
8062306a36Sopenharmony_ci	  Marvell switches which use DSA headers.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciconfig NET_DSA_TAG_EDSA
8362306a36Sopenharmony_ci	tristate "Tag driver for Marvell switches using EtherType DSA headers"
8462306a36Sopenharmony_ci	select NET_DSA_TAG_DSA_COMMON
8562306a36Sopenharmony_ci	help
8662306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for the
8762306a36Sopenharmony_ci	  Marvell switches which use EtherType DSA headers.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciconfig NET_DSA_TAG_MTK
9062306a36Sopenharmony_ci	tristate "Tag driver for Mediatek switches"
9162306a36Sopenharmony_ci	help
9262306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for
9362306a36Sopenharmony_ci	  Mediatek switches.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciconfig NET_DSA_TAG_KSZ
9662306a36Sopenharmony_ci	tristate "Tag driver for Microchip 8795/937x/9477/9893 families of switches"
9762306a36Sopenharmony_ci	help
9862306a36Sopenharmony_ci	  Say Y if you want to enable support for tagging frames for the
9962306a36Sopenharmony_ci	  Microchip 8795/937x/9477/9893 families of switches.
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciconfig NET_DSA_TAG_OCELOT
10262306a36Sopenharmony_ci	tristate "Tag driver for Ocelot family of switches, using NPI port"
10362306a36Sopenharmony_ci	select PACKING
10462306a36Sopenharmony_ci	help
10562306a36Sopenharmony_ci	  Say Y or M if you want to enable NPI tagging for the Ocelot switches
10662306a36Sopenharmony_ci	  (VSC7511, VSC7512, VSC7513, VSC7514, VSC9953, VSC9959). In this mode,
10762306a36Sopenharmony_ci	  the frames over the Ethernet CPU port are prepended with a
10862306a36Sopenharmony_ci	  hardware-defined injection/extraction frame header.  Flow control
10962306a36Sopenharmony_ci	  (PAUSE frames) over the CPU port is not supported when operating in
11062306a36Sopenharmony_ci	  this mode.
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciconfig NET_DSA_TAG_OCELOT_8021Q
11362306a36Sopenharmony_ci	tristate "Tag driver for Ocelot family of switches, using VLAN"
11462306a36Sopenharmony_ci	help
11562306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames with a
11662306a36Sopenharmony_ci	  custom VLAN-based header. Frames that require timestamping, such as
11762306a36Sopenharmony_ci	  PTP, are not delivered over Ethernet but over register-based MMIO.
11862306a36Sopenharmony_ci	  Flow control over the CPU port is functional in this mode. When using
11962306a36Sopenharmony_ci	  this mode, less TCAM resources (VCAP IS1, IS2, ES0) are available for
12062306a36Sopenharmony_ci	  use with tc-flower.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciconfig NET_DSA_TAG_QCA
12362306a36Sopenharmony_ci	tristate "Tag driver for Qualcomm Atheros QCA8K switches"
12462306a36Sopenharmony_ci	help
12562306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for
12662306a36Sopenharmony_ci	  the Qualcomm Atheros QCA8K switches.
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ciconfig NET_DSA_TAG_RTL4_A
12962306a36Sopenharmony_ci	tristate "Tag driver for Realtek 4 byte protocol A tags"
13062306a36Sopenharmony_ci	help
13162306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for the
13262306a36Sopenharmony_ci	  Realtek switches with 4 byte protocol A tags, sich as found in
13362306a36Sopenharmony_ci	  the Realtek RTL8366RB.
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ciconfig NET_DSA_TAG_RTL8_4
13662306a36Sopenharmony_ci	tristate "Tag driver for Realtek 8 byte protocol 4 tags"
13762306a36Sopenharmony_ci	help
13862306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for Realtek
13962306a36Sopenharmony_ci	  switches with 8 byte protocol 4 tags, such as the Realtek RTL8365MB-VC.
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ciconfig NET_DSA_TAG_RZN1_A5PSW
14262306a36Sopenharmony_ci	tristate "Tag driver for Renesas RZ/N1 A5PSW switch"
14362306a36Sopenharmony_ci	help
14462306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for
14562306a36Sopenharmony_ci	  Renesas RZ/N1 embedded switch that uses an 8 byte tag located after
14662306a36Sopenharmony_ci	  destination MAC address.
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ciconfig NET_DSA_TAG_LAN9303
14962306a36Sopenharmony_ci	tristate "Tag driver for SMSC/Microchip LAN9303 family of switches"
15062306a36Sopenharmony_ci	help
15162306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for the
15262306a36Sopenharmony_ci	  SMSC/Microchip LAN9303 family of switches.
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ciconfig NET_DSA_TAG_SJA1105
15562306a36Sopenharmony_ci	tristate "Tag driver for NXP SJA1105 switches"
15662306a36Sopenharmony_ci	select PACKING
15762306a36Sopenharmony_ci	help
15862306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames with the
15962306a36Sopenharmony_ci	  NXP SJA1105 switch family. Both the native tagging protocol (which
16062306a36Sopenharmony_ci	  is only for link-local traffic) as well as non-native tagging (based
16162306a36Sopenharmony_ci	  on a custom 802.1Q VLAN header) are available.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciconfig NET_DSA_TAG_TRAILER
16462306a36Sopenharmony_ci	tristate "Tag driver for switches using a trailer tag"
16562306a36Sopenharmony_ci	help
16662306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames at
16762306a36Sopenharmony_ci	  with a trailed. e.g. Marvell 88E6060.
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciconfig NET_DSA_TAG_XRS700X
17062306a36Sopenharmony_ci	tristate "Tag driver for XRS700x switches"
17162306a36Sopenharmony_ci	help
17262306a36Sopenharmony_ci	  Say Y or M if you want to enable support for tagging frames for
17362306a36Sopenharmony_ci	  Arrow SpeedChips XRS700x switches that use a single byte tag trailer.
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ciendif
176