diff options
author | David S. Miller <davem@davemloft.net> | 2012-10-31 14:25:33 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-10-31 14:26:44 -0400 |
commit | 810b6d7638a288216f99bd190470d67061c8bd88 (patch) | |
tree | 5c8dd20b10cf4d7d40d286c9b3dd71d6dedaf78c /net/bridge | |
parent | f7b4fb22b838f895ce9fa994f0ef4f7f541f5266 (diff) | |
parent | ac61d515f14fd205d8c917a34b27a767b4fe9e05 (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.c | 2 | ||||
-rw-r--r-- | net/bridge/br_input.c | 15 | ||||
-rw-r--r-- | net/bridge/br_private.h | 1 | ||||
-rw-r--r-- | net/bridge/br_sysfs_br.c | 3 |
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). */ | ||
23 | const u8 br_group_address[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 }; | ||
24 | |||
25 | /* Hook for brouter */ | 22 | /* Hook for brouter */ |
26 | br_should_route_hook_t __rcu *br_should_route_hook __read_mostly; | 23 | br_should_route_hook_t __rcu *br_should_route_hook __read_mostly; |
27 | EXPORT_SYMBOL(br_should_route_hook); | 24 | EXPORT_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 | */ | ||
133 | static 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 | ||
292 | extern struct notifier_block br_device_notifier; | 292 | extern struct notifier_block br_device_notifier; |
293 | extern const u8 br_group_address[ETH_ALEN]; | ||
294 | 293 | ||
295 | /* called under bridge lock */ | 294 | /* called under bridge lock */ |
296 | static inline int br_is_root_bridge(const struct net_bridge *br) | 295 | static 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) |