// SPDX-License-Identifier: GPL-2.0 /* * Handler for Realtek 4 byte DSA switch tags * Currently only supports protocol "A" found in RTL8366RB * Copyright (c) 2020 Linus Walleij <[email protected]> * * This "proprietary tag" header looks like so: * * ------------------------------------------------- * | MAC DA | MAC SA | 0x8899 | 2 bytes tag | Type | * ------------------------------------------------- * * The 2 bytes tag form a 16 bit big endian word. The exact * meaning has been guessed from packet dumps from ingress * frames. */ #include <linux/etherdevice.h> #include <linux/bits.h> #include "tag.h" #define RTL4_A_NAME … #define RTL4_A_HDR_LEN … #define RTL4_A_PROTOCOL_SHIFT … /* * 0x1 = Realtek Remote Control protocol (RRCP) * 0x2/0x3 seems to be used for loopback testing * 0x9 = RTL8306 DSA protocol * 0xa = RTL8366RB DSA protocol */ #define RTL4_A_PROTOCOL_RTL8366RB … static struct sk_buff *rtl4a_tag_xmit(struct sk_buff *skb, struct net_device *dev) { … } static struct sk_buff *rtl4a_tag_rcv(struct sk_buff *skb, struct net_device *dev) { … } static const struct dsa_device_ops rtl4a_netdev_ops = …; module_dsa_tag_driver(rtl4a_netdev_ops); MODULE_DESCRIPTION(…) …; MODULE_LICENSE(…) …; MODULE_ALIAS_DSA_TAG_DRIVER(…);