mirror of
https://github.com/torvalds/linux.git
synced 2024-11-30 16:11:38 +00:00
efd7fe68f0
This implements the known parts of the Realtek 4 byte tag protocol version 0xA, as found in the RTL8366RB DSA switch. It is designated as protocol version 0xA as a different Realtek 4 byte tag format with protocol version 0x9 is known to exist in the Realtek RTL8306 chips. The tag and switch chip lacks public documentation, so the tag format has been reverse-engineered from packet dumps. As only ingress traffic has been available for analysis an egress tag has not been possible to develop (even using educated guesses about bit fields) so this is as far as it gets. It is not known if the switch even supports egress tagging. Excessive attempts to figure out the egress tag format was made. When nothing else worked, I just tried all bit combinations with 0xannp where a is protocol and p is port. I looped through all values several times trying to get a response from ping, without any positive result. Using just these ingress tags however, the switch functionality is vastly improved and the packets find their way into the destination port without any tricky VLAN configuration. On the D-Link DIR-685 the LAN ports now come up and respond to ping without any command line configuration so this is a real improvement for users. Egress packets need to be restricted to the proper target ports using VLAN, which the RTL8366RB DSA switch driver already sets up. Cc: DENG Qingfang <dqfext@gmail.com> Cc: Mauri Sandberg <sandberg@mailfence.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
21 lines
824 B
Makefile
21 lines
824 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# the core
|
|
obj-$(CONFIG_NET_DSA) += dsa_core.o
|
|
dsa_core-y += dsa.o dsa2.o master.o port.o slave.o switch.o
|
|
|
|
# tagging formats
|
|
obj-$(CONFIG_NET_DSA_TAG_8021Q) += tag_8021q.o
|
|
obj-$(CONFIG_NET_DSA_TAG_AR9331) += tag_ar9331.o
|
|
obj-$(CONFIG_NET_DSA_TAG_BRCM_COMMON) += tag_brcm.o
|
|
obj-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o
|
|
obj-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o
|
|
obj-$(CONFIG_NET_DSA_TAG_GSWIP) += tag_gswip.o
|
|
obj-$(CONFIG_NET_DSA_TAG_KSZ) += tag_ksz.o
|
|
obj-$(CONFIG_NET_DSA_TAG_RTL4_A) += tag_rtl4_a.o
|
|
obj-$(CONFIG_NET_DSA_TAG_LAN9303) += tag_lan9303.o
|
|
obj-$(CONFIG_NET_DSA_TAG_MTK) += tag_mtk.o
|
|
obj-$(CONFIG_NET_DSA_TAG_OCELOT) += tag_ocelot.o
|
|
obj-$(CONFIG_NET_DSA_TAG_QCA) += tag_qca.o
|
|
obj-$(CONFIG_NET_DSA_TAG_SJA1105) += tag_sja1105.o
|
|
obj-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o
|