net: dsa: {e}dsa: set offload_fwd_mark on received packets
authorAndrew Lunn <andrew@lunn.ch>
Thu, 9 Nov 2017 21:29:52 +0000 (22:29 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 11 Nov 2017 10:33:11 +0000 (19:33 +0900)
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>
net/dsa/tag_dsa.c
net/dsa/tag_edsa.c

index dbbcdafed8c30cfad64e6eb8ae19169eed224599..cd13cfc542ceff0ad969723050330ec853341a52 100644 (file)
@@ -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;
 }
 
index f38a626b3a0554e5b5316f167e944ba7389139d8..4083326b806e848eef3dec04d3e04dede2f4a957 100644 (file)
@@ -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;
 }