summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2008-11-26 15:30:48 -0800
committerDavid S. Miller <davem@davemloft.net>2008-11-26 15:30:48 -0800
commitefbbced361f3ff4ff9e85310ccff894185c4d904 (patch)
tree75d01067543302efebf5c254c3c4887da26138c3
parent7e5ab54296a41f590c9cbc976e1c86272f3a7e00 (diff)
downloadlinux-efbbced361f3ff4ff9e85310ccff894185c4d904.tar.gz
linux-efbbced361f3ff4ff9e85310ccff894185c4d904.tar.bz2
linux-efbbced361f3ff4ff9e85310ccff894185c4d904.zip
macvlan: don't broadcast PAUSE frames to macvlan devices
PAUSE frames are only relevant for the real device, broadcasting them to all macvlan devices can cause a significant load increase. Reported-by: Ben Greear <greearb@candelatech.com> Tested-by: Ben Greear <greearb@candelatech.com> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/macvlan.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 42394505bb50..590039cbb146 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -70,6 +70,9 @@ static void macvlan_broadcast(struct sk_buff *skb,
struct sk_buff *nskb;
unsigned int i;
+ if (skb->protocol == htons(ETH_P_PAUSE))
+ return;
+
for (i = 0; i < MACVLAN_HASH_SIZE; i++) {
hlist_for_each_entry_rcu(vlan, n, &port->vlan_hash[i], hlist) {
dev = vlan->dev;