From fd71b6c21b8687ca25aa804fe58d03859a59ab21 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Tue, 5 Jul 2011 13:58:33 +0000 Subject: [PATCH] --- yaml --- r: 254683 b: refs/heads/master c: 44661462ee1ee3c922754fc1f246867f0d01e7ea h: refs/heads/master i: 254681: 81a8e21fd652beff1ac66f46cfbd9783adc0238f 254679: 121852a68428e9ef974457611c2b6a55bcfb1f86 v: v3 --- [refs] | 2 +- trunk/net/bridge/br_device.c | 4 +++- trunk/net/bridge/br_input.c | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index c4c4eb353e3b..e55a25e7474b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9b9cfe7cf663c16c0d93349cc0094bb28ae7135a +refs/heads/master: 44661462ee1ee3c922754fc1f246867f0d01e7ea diff --git a/trunk/net/bridge/br_device.c b/trunk/net/bridge/br_device.c index c188c803c09c..32b8f9f7f79e 100644 --- a/trunk/net/bridge/br_device.c +++ b/trunk/net/bridge/br_device.c @@ -49,7 +49,9 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) skb_pull(skb, ETH_HLEN); rcu_read_lock(); - if (is_multicast_ether_addr(dest)) { + if (is_broadcast_ether_addr(dest)) + br_flood_deliver(br, skb); + else if (is_multicast_ether_addr(dest)) { if (unlikely(netpoll_tx_running(dev))) { br_flood_deliver(br, skb); goto out; diff --git a/trunk/net/bridge/br_input.c b/trunk/net/bridge/br_input.c index f3ac1e858ee1..f06ee39c73fd 100644 --- a/trunk/net/bridge/br_input.c +++ b/trunk/net/bridge/br_input.c @@ -60,7 +60,7 @@ int br_handle_frame_finish(struct sk_buff *skb) br = p->br; br_fdb_update(br, p, eth_hdr(skb)->h_source); - if (is_multicast_ether_addr(dest) && + if (!is_broadcast_ether_addr(dest) && is_multicast_ether_addr(dest) && br_multicast_rcv(br, p, skb)) goto drop; @@ -77,7 +77,9 @@ int br_handle_frame_finish(struct sk_buff *skb) dst = NULL; - if (is_multicast_ether_addr(dest)) { + if (is_broadcast_ether_addr(dest)) + skb2 = skb; + else if (is_multicast_ether_addr(dest)) { mdst = br_mdb_get(br, skb); if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) { if ((mdst && mdst->mglist) ||