diff options
author | Patrick McHardy <kaber@trash.net> | 2008-11-26 15:30:48 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-26 15:30:48 -0800 |
commit | efbbced361f3ff4ff9e85310ccff894185c4d904 (patch) | |
tree | 75d01067543302efebf5c254c3c4887da26138c3 /drivers/net | |
parent | 7e5ab54296a41f590c9cbc976e1c86272f3a7e00 (diff) | |
download | linux-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>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/macvlan.c | 3 |
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; |