
Add support for tag_sja1105 running on non-sja1105 DSA ports, by making sure that every time we dereference dp->priv, we check the switch's dsa_switch_ops (otherwise we access a struct sja1105_port structure that is in fact something else). This adds an unconditional build-time dependency between sja1105 being built as module => tag_sja1105 must also be built as module. This was there only for PTP before. Some sane defaults must also take place when not running on sja1105 hardware. These are: - sja1105_xmit_tpid: the sja1105 driver uses different VLAN protocols depending on VLAN awareness and switch revision (when an encapsulated VLAN must be sent). Default to 0x8100. - sja1105_rcv_meta_state_machine: this aggregates PTP frames with their metadata timestamp frames. When running on non-sja1105 hardware, don't do that and accept all frames unmodified. - sja1105_defer_xmit: calls sja1105_port_deferred_xmit in sja1105_main.c which writes a management route over SPI. When not running on sja1105 hardware, bypass the SPI write and send the frame as-is. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
5.4 KiB
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_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)
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" depends on NET_DSA_SJA1105 || !NET_DSA_SJA1105 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