| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | |
| 3 | menuconfig NET_DSA |
| 4 | tristate "Distributed Switch Architecture" |
| 5 | depends on BRIDGE || BRIDGE=n |
| 6 | depends on HSR || HSR=n |
| 7 | depends on INET && NETDEVICES |
| 8 | select GRO_CELLS |
| 9 | select NET_SWITCHDEV |
| 10 | select PHYLINK |
| 11 | select NET_DEVLINK |
| 12 | imply NET_SELFTESTS |
| 13 | help |
| 14 | Say Y if you want to enable support for the hardware switches supported |
| 15 | by the Distributed Switch Architecture. |
| 16 | |
| 17 | if NET_DSA |
| 18 | |
| 19 | # Drivers must select the appropriate tagging format(s) |
| 20 | |
| 21 | config NET_DSA_TAG_NONE |
| 22 | tristate "No-op tag driver" |
| 23 | help |
| 24 | Say Y or M if you want to enable support for switches which don't tag |
| 25 | frames over the CPU port. |
| 26 | |
| 27 | config NET_DSA_TAG_AR9331 |
| 28 | tristate "Tag driver for Atheros AR9331 SoC with built-in switch" |
| 29 | help |
| 30 | Say Y or M if you want to enable support for tagging frames for |
| 31 | the Atheros AR9331 SoC with built-in switch. |
| 32 | |
| 33 | config NET_DSA_TAG_BRCM_COMMON |
| 34 | tristate |
| 35 | default n |
| 36 | |
| 37 | config NET_DSA_TAG_BRCM |
| 38 | tristate "Tag driver for Broadcom switches using in-frame headers" |
| 39 | select NET_DSA_TAG_BRCM_COMMON |
| 40 | help |
| 41 | Say Y if you want to enable support for tagging frames for the |
| 42 | Broadcom switches which place the tag after the MAC source address. |
| 43 | |
| 44 | config NET_DSA_TAG_BRCM_LEGACY |
| 45 | tristate "Tag driver for BCM63xx legacy switches using in-frame headers" |
| 46 | select NET_DSA_TAG_BRCM_COMMON |
| 47 | help |
| 48 | Say Y if you want to enable support for tagging frames for the |
| 49 | BCM63xx legacy switches which place the tag after the MAC source |
| 50 | address. |
| 51 | This tag is used in BCM63xx legacy switches which work without the |
| 52 | original FCS and length before the tag insertion. |
| 53 | |
| 54 | config NET_DSA_TAG_BRCM_LEGACY_FCS |
| 55 | tristate "Tag driver for BCM53xx legacy switches using in-frame headers" |
| 56 | select NET_DSA_TAG_BRCM_COMMON |
| 57 | help |
| 58 | Say Y if you want to enable support for tagging frames for the |
| 59 | BCM53xx legacy switches which place the tag after the MAC source |
| 60 | address. |
| 61 | This tag is used in BCM53xx legacy switches which expect original |
| 62 | FCS and length before the tag insertion to be present. |
| 63 | |
| 64 | config NET_DSA_TAG_BRCM_PREPEND |
| 65 | tristate "Tag driver for Broadcom switches using prepended headers" |
| 66 | select NET_DSA_TAG_BRCM_COMMON |
| 67 | help |
| 68 | Say Y if you want to enable support for tagging frames for the |
| 69 | Broadcom switches which places the tag before the Ethernet header |
| 70 | (prepended). |
| 71 | |
| 72 | config NET_DSA_TAG_HELLCREEK |
| 73 | tristate "Tag driver for Hirschmann Hellcreek TSN switches" |
| 74 | help |
| 75 | Say Y or M if you want to enable support for tagging frames |
| 76 | for the Hirschmann Hellcreek TSN switches. |
| 77 | |
| 78 | config NET_DSA_TAG_GSWIP |
| 79 | tristate "Tag driver for Lantiq / Intel GSWIP switches" |
| 80 | help |
| 81 | Say Y or M if you want to enable support for tagging frames for the |
| 82 | Lantiq / Intel GSWIP switches. |
| 83 | |
| 84 | config NET_DSA_TAG_DSA_COMMON |
| 85 | tristate |
| 86 | |
| 87 | config NET_DSA_TAG_DSA |
| 88 | tristate "Tag driver for Marvell switches using DSA headers" |
| 89 | select NET_DSA_TAG_DSA_COMMON |
| 90 | help |
| 91 | Say Y or M if you want to enable support for tagging frames for the |
| 92 | Marvell switches which use DSA headers. |
| 93 | |
| 94 | config NET_DSA_TAG_EDSA |
| 95 | tristate "Tag driver for Marvell switches using EtherType DSA headers" |
| 96 | select NET_DSA_TAG_DSA_COMMON |
| 97 | help |
| 98 | Say Y or M if you want to enable support for tagging frames for the |
| 99 | Marvell switches which use EtherType DSA headers. |
| 100 | |
| 101 | config NET_DSA_TAG_MT7628 |
| 102 | tristate "Tag driver for the MT7628 embedded switch" |
| 103 | help |
| 104 | Say Y or M if you want to enable support for tagging frames for the |
| 105 | switch embedded in the MT7628 SoC. |
| 106 | |
| 107 | config NET_DSA_TAG_MTK |
| 108 | tristate "Tag driver for Mediatek switches" |
| 109 | help |
| 110 | Say Y or M if you want to enable support for tagging frames for |
| 111 | Mediatek switches. |
| 112 | |
| 113 | config NET_DSA_TAG_MXL_862XX |
| 114 | tristate "Tag driver for MaxLinear MxL862xx switches" |
| 115 | help |
| 116 | Say Y or M if you want to enable support for tagging frames for the |
| 117 | MaxLinear MxL86252 and MxL86282 switches using their native 8-byte |
| 118 | tagging protocol. |
| 119 | |
| 120 | config NET_DSA_TAG_MXL_GSW1XX |
| 121 | tristate "Tag driver for MaxLinear GSW1xx switches" |
| 122 | help |
| 123 | The GSW1xx family of switches supports an 8-byte special tag which |
| 124 | can be used on the CPU port of the switch. |
| 125 | Say Y or M if you want to enable support for tagging frames for |
| 126 | MaxLinear GSW1xx switches. |
| 127 | |
| 128 | config NET_DSA_TAG_KSZ |
| 129 | tristate "Tag driver for Microchip 8795/937x/9477/9893 families of switches" |
| 130 | help |
| 131 | Say Y if you want to enable support for tagging frames for the |
| 132 | Microchip 8795/937x/9477/9893 families of switches. |
| 133 | |
| 134 | config NET_DSA_TAG_NETC |
| 135 | tristate "Tag driver for NXP NETC switches" |
| 136 | help |
| 137 | Say Y or M if you want to enable support for the NXP Switch Tag (NST), |
| 138 | as implemented by NXP NETC switches having version 4.3 or later. The |
| 139 | switch tag is a proprietary header added to frames after the source |
| 140 | MAC address, it has 3 types and each type has different subtypes, so |
| 141 | its length depends on the type and subtype of the tag, the maximum |
| 142 | length is 14 bytes. |
| 143 | |
| 144 | config NET_DSA_TAG_OCELOT |
| 145 | tristate "Tag driver for Ocelot family of switches, using NPI port" |
| 146 | select PACKING |
| 147 | help |
| 148 | Say Y or M if you want to enable NPI tagging for the Ocelot switches |
| 149 | (VSC7511, VSC7512, VSC7513, VSC7514, VSC9953, VSC9959). In this mode, |
| 150 | the frames over the Ethernet CPU port are prepended with a |
| 151 | hardware-defined injection/extraction frame header. Flow control |
| 152 | (PAUSE frames) over the CPU port is not supported when operating in |
| 153 | this mode. |
| 154 | |
| 155 | config NET_DSA_TAG_OCELOT_8021Q |
| 156 | tristate "Tag driver for Ocelot family of switches, using VLAN" |
| 157 | help |
| 158 | Say Y or M if you want to enable support for tagging frames with a |
| 159 | custom VLAN-based header. Frames that require timestamping, such as |
| 160 | PTP, are not delivered over Ethernet but over register-based MMIO. |
| 161 | Flow control over the CPU port is functional in this mode. When using |
| 162 | this mode, less TCAM resources (VCAP IS1, IS2, ES0) are available for |
| 163 | use with tc-flower. |
| 164 | |
| 165 | config NET_DSA_TAG_QCA |
| 166 | tristate "Tag driver for Qualcomm Atheros QCA8K switches" |
| 167 | help |
| 168 | Say Y or M if you want to enable support for tagging frames for |
| 169 | the Qualcomm Atheros QCA8K switches. |
| 170 | |
| 171 | config NET_DSA_TAG_RTL4_A |
| 172 | tristate "Tag driver for Realtek 4 byte protocol A tags" |
| 173 | help |
| 174 | Say Y or M if you want to enable support for tagging frames for the |
| 175 | Realtek switches with 4 byte protocol A tags, such as found in |
| 176 | the Realtek RTL8366RB. |
| 177 | |
| 178 | config NET_DSA_TAG_RTL8_4 |
| 179 | tristate "Tag driver for Realtek 8 byte protocol 4 tags" |
| 180 | help |
| 181 | Say Y or M if you want to enable support for tagging frames for Realtek |
| 182 | switches with 8 byte protocol 4 tags, such as the Realtek RTL8365MB-VC. |
| 183 | |
| 184 | config NET_DSA_TAG_RZN1_A5PSW |
| 185 | tristate "Tag driver for Renesas RZ/N1 A5PSW switch" |
| 186 | help |
| 187 | Say Y or M if you want to enable support for tagging frames for |
| 188 | Renesas RZ/N1 embedded switch that uses an 8 byte tag located after |
| 189 | destination MAC address. |
| 190 | |
| 191 | config NET_DSA_TAG_LAN9303 |
| 192 | tristate "Tag driver for SMSC/Microchip LAN9303 family of switches" |
| 193 | help |
| 194 | Say Y or M if you want to enable support for tagging frames for the |
| 195 | SMSC/Microchip LAN9303 family of switches. |
| 196 | |
| 197 | config NET_DSA_TAG_SJA1105 |
| 198 | tristate "Tag driver for NXP SJA1105 switches" |
| 199 | select PACKING |
| 200 | help |
| 201 | Say Y or M if you want to enable support for tagging frames with the |
| 202 | NXP SJA1105 switch family. Both the native tagging protocol (which |
| 203 | is only for link-local traffic) as well as non-native tagging (based |
| 204 | on a custom 802.1Q VLAN header) are available. |
| 205 | |
| 206 | config NET_DSA_TAG_TRAILER |
| 207 | tristate "Tag driver for switches using a trailer tag" |
| 208 | help |
| 209 | Say Y or M if you want to enable support for tagging frames at |
| 210 | with a trailed. e.g. Marvell 88E6060. |
| 211 | |
| 212 | config NET_DSA_TAG_VSC73XX_8021Q |
| 213 | tristate "Tag driver for Microchip/Vitesse VSC73xx family of switches, using VLAN" |
| 214 | help |
| 215 | Say Y or M if you want to enable support for tagging frames with a |
| 216 | custom VLAN-based header. |
| 217 | |
| 218 | config NET_DSA_TAG_XRS700X |
| 219 | tristate "Tag driver for XRS700x switches" |
| 220 | help |
| 221 | Say Y or M if you want to enable support for tagging frames for |
| 222 | Arrow SpeedChips XRS700x switches that use a single byte tag trailer. |
| 223 | |
| 224 | config NET_DSA_TAG_YT921X |
| 225 | tristate "Tag driver for Motorcomm YT921x switches" |
| 226 | help |
| 227 | Say Y or M if you want to enable support for tagging frames for |
| 228 | Motorcomm YT921x switches. |
| 229 | |
| 230 | endif |