From 2b88563ee5aafd9571d965b7f2093a0f58d98a31 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 26 Nov 2020 12:02:21 +0100 Subject: net: dsa: Add rtl838x support for tag trailer * rename the target to realtek * add refactored DSA driver * add latest gpio driver * lots of arch cleanups * new irq driver * additional boards Submitted-by: Bert Vermeulen Submitted-by: Birger Koblitz Submitted-by: Sander Vanheule Submitted-by: Bjørn Mork Submitted-by: John Crispin --- net/dsa/tag_trailer.c | 16 +++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) --- a/net/dsa/tag_trailer.c +++ b/net/dsa/tag_trailer.c @@ -17,7 +17,12 @@ static struct sk_buff *trailer_xmit(stru trailer = skb_put(skb, 4); trailer[0] = 0x80; + +#ifdef CONFIG_NET_DSA_RTL83XX + trailer[1] = dp->index; +#else trailer[1] = 1 << dp->index; +#endif /* CONFIG_NET_DSA_RTL838X */ trailer[2] = 0x10; trailer[3] = 0x00; @@ -33,12 +38,23 @@ static struct sk_buff *trailer_rcv(struc return NULL; trailer = skb_tail_pointer(skb) - 4; + +#ifdef CONFIG_NET_DSA_RTL83XX + if (trailer[0] != 0x80 || (trailer[1] & 0x80) != 0x00 || + (trailer[2] & 0xef) != 0x00 || trailer[3] != 0x00) + return NULL; + + if (trailer[1] & 0x40) + skb->offload_fwd_mark = 1; + + source_port = trailer[1] & 0x3f; +#else if (trailer[0] != 0x80 || (trailer[1] & 0xf8) != 0x00 || (trailer[2] & 0xef) != 0x00 || trailer[3] != 0x00) return NULL; source_port = trailer[1] & 7; - +#endif skb->dev = dsa_master_find_slave(dev, 0, source_port); if (!skb->dev) return NULL;