diff options
author | Marek Vasut <marex@denx.de> | 2018-12-15 01:58:06 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-12-16 23:23:33 +0100 |
commit | 8a75b9d4c9d32c88b487bd98bf8019f029215165 (patch) | |
tree | 494b5d79b5760377b1648769e98a716c62939d0b /net/dsa | |
parent | net: dsa: ksz: Factor out common tag code (diff) | |
download | linux-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.c | 4 |
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; |