summaryrefslogtreecommitdiffstats
path: root/net/dsa
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2018-12-15 01:58:06 +0100
committerDavid S. Miller <davem@davemloft.net>2018-12-16 23:23:33 +0100
commit8a75b9d4c9d32c88b487bd98bf8019f029215165 (patch)
tree494b5d79b5760377b1648769e98a716c62939d0b /net/dsa
parentnet: dsa: ksz: Factor out common tag code (diff)
downloadlinux-8a75b9d4c9d32c88b487bd98bf8019f029215165.tar.xz
linux-8a75b9d4c9d32c88b487bd98bf8019f029215165.zip
net: dsa: ksz: Add STP multicast handling
In case the destination address is link local, add override bit into the switch tag to let such a packet through the switch even if the port is blocked. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Tristram Ha <Tristram.Ha@microchip.com> Cc: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Cc: Woojung Huh <woojung.huh@microchip.com> Cc: David S. Miller <davem@davemloft.net> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa')
-rw-r--r--net/dsa/tag_ksz.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/dsa/tag_ksz.c b/net/dsa/tag_ksz.c
index c98b53f691bd..da71b9e2af52 100644
--- a/net/dsa/tag_ksz.c
+++ b/net/dsa/tag_ksz.c
@@ -110,6 +110,10 @@ static struct sk_buff *ksz9477_xmit(struct sk_buff *skb,
addr = skb_mac_header(nskb);
*tag = BIT(dp->index);
+
+ if (is_link_local_ether_addr(addr))
+ *tag |= KSZ9477_TAIL_TAG_OVERRIDE;
+
*tag = cpu_to_be16(*tag);
return nskb;