aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-10-31 14:25:33 -0400
committerDavid S. Miller <davem@davemloft.net>2012-10-31 14:26:44 -0400
commit810b6d7638a288216f99bd190470d67061c8bd88 (patch)
tree5c8dd20b10cf4d7d40d286c9b3dd71d6dedaf78c /net/bridge
parentf7b4fb22b838f895ce9fa994f0ef4f7f541f5266 (diff)
parentac61d515f14fd205d8c917a34b27a767b4fe9e05 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
Jeff Kirsher says: ==================== This series contains updates to ixgbe, ixgbevf, igbvf, igb and networking core (bridge). Most notably is the addition of support for local link multicast addresses in SR-IOV mode to the networking core. Also note, the ixgbe patch "ixgbe: Add support for pipeline reset" and "ixgbe: Fix return value from macvlan filter function" is revised based on community feedback. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r--net/bridge/br_device.c2
-rw-r--r--net/bridge/br_input.c15
-rw-r--r--net/bridge/br_private.h1
-rw-r--r--net/bridge/br_sysfs_br.c3
4 files changed, 3 insertions, 18 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 63b5b088e80f..4245e991dd98 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -358,7 +358,7 @@ void br_dev_setup(struct net_device *dev)
358 br->bridge_id.prio[0] = 0x80; 358 br->bridge_id.prio[0] = 0x80;
359 br->bridge_id.prio[1] = 0x00; 359 br->bridge_id.prio[1] = 0x00;
360 360
361 memcpy(br->group_addr, br_group_address, ETH_ALEN); 361 memcpy(br->group_addr, br_reserved_address, ETH_ALEN);
362 362
363 br->stp_enabled = BR_NO_STP; 363 br->stp_enabled = BR_NO_STP;
364 br->group_fwd_mask = BR_GROUPFWD_DEFAULT; 364 br->group_fwd_mask = BR_GROUPFWD_DEFAULT;
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 76f15fda0212..d047978bf025 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -19,9 +19,6 @@
19#include <linux/export.h> 19#include <linux/export.h>
20#include "br_private.h" 20#include "br_private.h"
21 21
22/* Bridge group multicast address 802.1d (pg 51). */
23const u8 br_group_address[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };
24
25/* Hook for brouter */ 22/* Hook for brouter */
26br_should_route_hook_t __rcu *br_should_route_hook __read_mostly; 23br_should_route_hook_t __rcu *br_should_route_hook __read_mostly;
27EXPORT_SYMBOL(br_should_route_hook); 24EXPORT_SYMBOL(br_should_route_hook);
@@ -127,18 +124,6 @@ static int br_handle_local_finish(struct sk_buff *skb)
127 return 0; /* process further */ 124 return 0; /* process further */
128} 125}
129 126
130/* Does address match the link local multicast address.
131 * 01:80:c2:00:00:0X
132 */
133static inline int is_link_local(const unsigned char *dest)
134{
135 __be16 *a = (__be16 *)dest;
136 static const __be16 *b = (const __be16 *)br_group_address;
137 static const __be16 m = cpu_to_be16(0xfff0);
138
139 return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | ((a[2] ^ b[2]) & m)) == 0;
140}
141
142/* 127/*
143 * Return NULL if skb is handled 128 * Return NULL if skb is handled
144 * note: already called with rcu_read_lock 129 * note: already called with rcu_read_lock
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 6f40c14a2a65..d5efa57a2c20 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -290,7 +290,6 @@ struct br_input_skb_cb {
290 pr_debug("%s: " format, (br)->dev->name, ##args) 290 pr_debug("%s: " format, (br)->dev->name, ##args)
291 291
292extern struct notifier_block br_device_notifier; 292extern struct notifier_block br_device_notifier;
293extern const u8 br_group_address[ETH_ALEN];
294 293
295/* called under bridge lock */ 294/* called under bridge lock */
296static inline int br_is_root_bridge(const struct net_bridge *br) 295static inline int br_is_root_bridge(const struct net_bridge *br)
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index c5c059333eab..e157b0dbcd82 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -14,6 +14,7 @@
14#include <linux/capability.h> 14#include <linux/capability.h>
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/netdevice.h> 16#include <linux/netdevice.h>
17#include <linux/etherdevice.h>
17#include <linux/if_bridge.h> 18#include <linux/if_bridge.h>
18#include <linux/rtnetlink.h> 19#include <linux/rtnetlink.h>
19#include <linux/spinlock.h> 20#include <linux/spinlock.h>
@@ -310,7 +311,7 @@ static ssize_t store_group_addr(struct device *d,
310 311
311 /* Must be 01:80:c2:00:00:0X */ 312 /* Must be 01:80:c2:00:00:0X */
312 for (i = 0; i < 5; i++) 313 for (i = 0; i < 5; i++)
313 if (new_addr[i] != br_group_address[i]) 314 if (new_addr[i] != br_reserved_address[i])
314 return -EINVAL; 315 return -EINVAL;
315 316
316 if (new_addr[5] & ~0xf) 317 if (new_addr[5] & ~0xf)