diff options
author | Andrew Lunn <andrew@lunn.ch> | 2017-11-09 22:29:52 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-11 19:33:11 +0900 |
commit | 13edbdb6ed8b829ab3198a8c7b978c37184317b5 (patch) | |
tree | cfb2e16d596ae29d849a124c2d55a379203a4e62 /net | |
parent | a42c8e33f2044d6b56f167b5506c7e09e5b702c2 (diff) | |
download | linux-13edbdb6ed8b829ab3198a8c7b978c37184317b5.tar.gz linux-13edbdb6ed8b829ab3198a8c7b978c37184317b5.tar.bz2 linux-13edbdb6ed8b829ab3198a8c7b978c37184317b5.zip |
net: dsa: {e}dsa: set offload_fwd_mark on received packets
The software bridge needs to know if a packet has already been bridged
by hardware offload to ports in the same hardware offload, in order
that it does not re-flood them, causing duplicates. This is
particularly true for broadcast and multicast traffic which the host
has requested.
By setting offload_fwd_mark in the skb the bridge will only flood to
ports in other offloads and other netifs. Set this flag in the DSA and
EDSA tag driver.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/dsa/tag_dsa.c | 2 | ||||
-rw-r--r-- | net/dsa/tag_edsa.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/net/dsa/tag_dsa.c b/net/dsa/tag_dsa.c index dbbcdafed8c3..cd13cfc542ce 100644 --- a/net/dsa/tag_dsa.c +++ b/net/dsa/tag_dsa.c @@ -141,6 +141,8 @@ static struct sk_buff *dsa_rcv(struct sk_buff *skb, struct net_device *dev, 2 * ETH_ALEN); } + skb->offload_fwd_mark = 1; + return skb; } diff --git a/net/dsa/tag_edsa.c b/net/dsa/tag_edsa.c index f38a626b3a05..4083326b806e 100644 --- a/net/dsa/tag_edsa.c +++ b/net/dsa/tag_edsa.c @@ -160,6 +160,8 @@ static struct sk_buff *edsa_rcv(struct sk_buff *skb, struct net_device *dev, 2 * ETH_ALEN); } + skb->offload_fwd_mark = 1; + return skb; } |